ivprog.bundle.js.map 3.2 MB

1
  1. {"version":3,"sources":["webpack://ivprogCore/webpack/universalModuleDefinition","webpack://ivprogCore/webpack/bootstrap","webpack://ivprogCore/./grammar/en/ivprog.g4","webpack://ivprogCore/./grammar/en/langFunctions.js","webpack://ivprogCore/./grammar/en/langLibs.js","webpack://ivprogCore/./grammar/es/ivprog.g4","webpack://ivprogCore/./grammar/es/langFunctions.js","webpack://ivprogCore/./grammar/es/langLibs.js","webpack://ivprogCore/./grammar/index.js","webpack://ivprogCore/./grammar/pt/ivprog.g4","webpack://ivprogCore/./grammar/pt/langFunctions.js","webpack://ivprogCore/./grammar/pt/langLibs.js","webpack://ivprogCore/./i18n/en/index.js","webpack://ivprogCore/./i18n/es/index.js","webpack://ivprogCore/./i18n/index.js","webpack://ivprogCore/./i18n/pt/index.js","webpack://ivprogCore/./js/Sortable.js","webpack://ivprogCore/./js/assessment/ivprogAssessment.js","webpack://ivprogCore/./js/ast/commands/arrayAssign.js","webpack://ivprogCore/./js/ast/commands/arrayDeclaration.js","webpack://ivprogCore/./js/ast/commands/assign.js","webpack://ivprogCore/./js/ast/commands/break.js","webpack://ivprogCore/./js/ast/commands/case.js","webpack://ivprogCore/./js/ast/commands/command.js","webpack://ivprogCore/./js/ast/commands/commandBlock.js","webpack://ivprogCore/./js/ast/commands/declaration.js","webpack://ivprogCore/./js/ast/commands/doWhile.js","webpack://ivprogCore/./js/ast/commands/for.js","webpack://ivprogCore/./js/ast/commands/formalParameter.js","webpack://ivprogCore/./js/ast/commands/function.js","webpack://ivprogCore/./js/ast/commands/ifThenElse.js","webpack://ivprogCore/./js/ast/commands/index.js","webpack://ivprogCore/./js/ast/commands/return.js","webpack://ivprogCore/./js/ast/commands/switch.js","webpack://ivprogCore/./js/ast/commands/sysCall.js","webpack://ivprogCore/./js/ast/commands/while.js","webpack://ivprogCore/./js/ast/error/syntaxError.js","webpack://ivprogCore/./js/ast/error/syntaxErrorFactory.js","webpack://ivprogCore/./js/ast/expressions/arrayAccess.js","webpack://ivprogCore/./js/ast/expressions/arrayLiteral.js","webpack://ivprogCore/./js/ast/expressions/boolLiteral.js","webpack://ivprogCore/./js/ast/expressions/expression.js","webpack://ivprogCore/./js/ast/expressions/functionCall.js","webpack://ivprogCore/./js/ast/expressions/index.js","webpack://ivprogCore/./js/ast/expressions/infixApp.js","webpack://ivprogCore/./js/ast/expressions/intLiteral.js","webpack://ivprogCore/./js/ast/expressions/literal.js","webpack://ivprogCore/./js/ast/expressions/realLiteral.js","webpack://ivprogCore/./js/ast/expressions/stringLiteral.js","webpack://ivprogCore/./js/ast/expressions/unaryApp.js","webpack://ivprogCore/./js/ast/expressions/variableLiteral.js","webpack://ivprogCore/./js/ast/ivprogParser.js","webpack://ivprogCore/./js/ast/operators.js","webpack://ivprogCore/./js/ast/sourceInfo.js","webpack://ivprogCore/./js/io/domConsole.js","webpack://ivprogCore/./js/io/input.js","webpack://ivprogCore/./js/io/output.js","webpack://ivprogCore/./js/main.js","webpack://ivprogCore/./js/processor/compatibilityTable.js","webpack://ivprogCore/./js/processor/context.js","webpack://ivprogCore/./js/processor/definedFunctions.js","webpack://ivprogCore/./js/processor/error/processorErrorFactory.js","webpack://ivprogCore/./js/processor/error/runtimeError.js","webpack://ivprogCore/./js/processor/error/semanticError.js","webpack://ivprogCore/./js/processor/ivprogProcessor.js","webpack://ivprogCore/./js/processor/lib/arrays.js","webpack://ivprogCore/./js/processor/lib/io.js","webpack://ivprogCore/./js/processor/lib/lang.js","webpack://ivprogCore/./js/processor/lib/math.js","webpack://ivprogCore/./js/processor/lib/strings.js","webpack://ivprogCore/./js/processor/modes.js","webpack://ivprogCore/./js/processor/semantic/semanticAnalyser.js","webpack://ivprogCore/./js/processor/store/store.js","webpack://ivprogCore/./js/processor/store/storeObject.js","webpack://ivprogCore/./js/processor/store/storeObjectArray.js","webpack://ivprogCore/./js/processor/store/storeObjectArrayAddress.js","webpack://ivprogCore/./js/processor/store/storeObjectArrayAddressRef.js","webpack://ivprogCore/./js/processor/store/storeObjectRef.js","webpack://ivprogCore/./js/runner.js","webpack://ivprogCore/./js/semantic/semantic.min.js","webpack://ivprogCore/./js/services/i18nHelper.js","webpack://ivprogCore/./js/services/languageService.js","webpack://ivprogCore/./js/services/localizedStringsService.js","webpack://ivprogCore/./js/typeSystem/baseTypes.js","webpack://ivprogCore/./js/typeSystem/compoundType.js","webpack://ivprogCore/./js/typeSystem/multiType.js","webpack://ivprogCore/./js/typeSystem/parsers.js","webpack://ivprogCore/./js/typeSystem/type.js","webpack://ivprogCore/./js/typeSystem/types.js","webpack://ivprogCore/./js/util/config.js","webpack://ivprogCore/./js/util/inputTest.js","webpack://ivprogCore/./js/util/outputTest.js","webpack://ivprogCore/./js/visualUI/algorithm.js","webpack://ivprogCore/./js/visualUI/code_generator.js","webpack://ivprogCore/./js/visualUI/commands.js","webpack://ivprogCore/./js/visualUI/commands/attribution.js","webpack://ivprogCore/./js/visualUI/commands/break.js","webpack://ivprogCore/./js/visualUI/commands/comment.js","webpack://ivprogCore/./js/visualUI/commands/conditional_expression.js","webpack://ivprogCore/./js/visualUI/commands/contextualized_menu.js","webpack://ivprogCore/./js/visualUI/commands/dowhiletrue.js","webpack://ivprogCore/./js/visualUI/commands/functioncall.js","webpack://ivprogCore/./js/visualUI/commands/generic_expression.js","webpack://ivprogCore/./js/visualUI/commands/iftrue.js","webpack://ivprogCore/./js/visualUI/commands/reader.js","webpack://ivprogCore/./js/visualUI/commands/repeatNtimes.js","webpack://ivprogCore/./js/visualUI/commands/return.js","webpack://ivprogCore/./js/visualUI/commands/switch.js","webpack://ivprogCore/./js/visualUI/commands/variable_value_menu.js","webpack://ivprogCore/./js/visualUI/commands/whiletrue.js","webpack://ivprogCore/./js/visualUI/commands/writer.js","webpack://ivprogCore/./js/visualUI/functions.js","webpack://ivprogCore/./js/visualUI/globals.js","webpack://ivprogCore/./js/visualUI/ivprog_elements.js","webpack://ivprogCore/./js/visualUI/types.js","webpack://ivprogCore/./js/visualUI/utils.js","webpack://ivprogCore/./js/visualUI/variables.js","webpack://ivprogCore/./node_modules/antlr4/BufferedTokenStream.js","webpack://ivprogCore/./node_modules/antlr4/CharStreams.js","webpack://ivprogCore/./node_modules/antlr4/CommonTokenFactory.js","webpack://ivprogCore/./node_modules/antlr4/CommonTokenStream.js","webpack://ivprogCore/./node_modules/antlr4/FileStream.js","webpack://ivprogCore/./node_modules/antlr4/InputStream.js","webpack://ivprogCore/./node_modules/antlr4/IntervalSet.js","webpack://ivprogCore/./node_modules/antlr4/LL1Analyzer.js","webpack://ivprogCore/./node_modules/antlr4/Lexer.js","webpack://ivprogCore/./node_modules/antlr4/Parser.js","webpack://ivprogCore/./node_modules/antlr4/ParserRuleContext.js","webpack://ivprogCore/./node_modules/antlr4/PredictionContext.js","webpack://ivprogCore/./node_modules/antlr4/Recognizer.js","webpack://ivprogCore/./node_modules/antlr4/RuleContext.js","webpack://ivprogCore/./node_modules/antlr4/Token.js","webpack://ivprogCore/./node_modules/antlr4/Utils.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATN.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATNConfig.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATNConfigSet.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATNDeserializationOptions.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATNDeserializer.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATNSimulator.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATNState.js","webpack://ivprogCore/./node_modules/antlr4/atn/ATNType.js","webpack://ivprogCore/./node_modules/antlr4/atn/LexerATNSimulator.js","webpack://ivprogCore/./node_modules/antlr4/atn/LexerAction.js","webpack://ivprogCore/./node_modules/antlr4/atn/LexerActionExecutor.js","webpack://ivprogCore/./node_modules/antlr4/atn/ParserATNSimulator.js","webpack://ivprogCore/./node_modules/antlr4/atn/PredictionMode.js","webpack://ivprogCore/./node_modules/antlr4/atn/SemanticContext.js","webpack://ivprogCore/./node_modules/antlr4/atn/Transition.js","webpack://ivprogCore/./node_modules/antlr4/atn/index.js","webpack://ivprogCore/./node_modules/antlr4/dfa/DFA.js","webpack://ivprogCore/./node_modules/antlr4/dfa/DFASerializer.js","webpack://ivprogCore/./node_modules/antlr4/dfa/DFAState.js","webpack://ivprogCore/./node_modules/antlr4/dfa/index.js","webpack://ivprogCore/./node_modules/antlr4/error/DiagnosticErrorListener.js","webpack://ivprogCore/./node_modules/antlr4/error/ErrorListener.js","webpack://ivprogCore/./node_modules/antlr4/error/ErrorStrategy.js","webpack://ivprogCore/./node_modules/antlr4/error/Errors.js","webpack://ivprogCore/./node_modules/antlr4/error/index.js","webpack://ivprogCore/./node_modules/antlr4/index.js","webpack://ivprogCore/./node_modules/antlr4/polyfills/codepointat.js","webpack://ivprogCore/./node_modules/antlr4/polyfills/fromcodepoint.js","webpack://ivprogCore/./node_modules/antlr4/tree/Tree.js","webpack://ivprogCore/./node_modules/antlr4/tree/Trees.js","webpack://ivprogCore/./node_modules/antlr4/tree/index.js","webpack://ivprogCore/./node_modules/decimal.js/decimal.js","webpack://ivprogCore/./node_modules/jquery/dist/jquery.js","webpack://ivprogCore/./node_modules/line-i18n/dist/LanguageService.js","webpack://ivprogCore/./node_modules/line-i18n/dist/LanguageServiceNoLS.js","webpack://ivprogCore/./node_modules/line-i18n/dist/LocalizedStrings.js","webpack://ivprogCore/./node_modules/line-i18n/dist/StringTypes.js","webpack://ivprogCore/./node_modules/line-i18n/dist/index.js","webpack://ivprogCore/./node_modules/melanke-watchjs/src/watch.js"],"names":["main_function","$read","$write","$numElements","$matrixLines","$matrixColumns","$substring","$length","$uppercase","$lowercase","$charAt","$isReal","$isInt","$isBool","$castReal","$castInt","$castBool","$castString","$sin","$cos","$tan","$sqrt","$pow","$log","$abs","$negate","$invert","$max","$min","$mathLib","$ioLib","$strLib","$arrayLib","$langLib","pt","lexer","PT","langFuncs","PTFuncs","langLibs","PTLibs","en","EN","ENFuncs","ENLibs","es","ES","ESFuncs","ESLibs","messages","errors","ui","sortableModule","factory","define","sortableFactory","window","document","sortableError","Error","dragEl","parentEl","ghostEl","cloneEl","rootEl","nextEl","lastDownEl","scrollEl","scrollParentEl","scrollCustomFn","lastEl","lastCSS","lastParentCSS","oldIndex","newIndex","activeGroup","putSortable","autoScroll","tapEvt","touchEvt","moved","R_SPACE","R_FLOAT","expando","Date","getTime","win","parseInt","$","jQuery","Zepto","Polymer","captureMode","supportDraggable","createElement","supportCssPointerEvents","el","navigator","userAgent","match","style","cssText","pointerEvents","_silent","abs","Math","min","savedInputChecked","touchDragOverListeners","_autoScroll","_throttle","evt","options","scroll","_this","rect","sens","scrollSensitivity","speed","scrollSpeed","x","clientX","y","clientY","winWidth","innerWidth","winHeight","innerHeight","vx","vy","scrollOffsetX","scrollOffsetY","scrollFn","offsetWidth","scrollWidth","offsetHeight","scrollHeight","parentNode","getBoundingClientRect","right","left","bottom","top","clearInterval","pid","setInterval","call","scrollTo","pageXOffset","pageYOffset","scrollTop","scrollLeft","_prepareGroup","toFn","value","pull","group","name","to","from","fromGroup","join","indexOf","originalGroup","checkPull","checkPut","put","revertClone","Sortable","nodeType","toString","_extend","defaults","random","sort","disabled","store","handle","draggable","test","nodeName","ghostClass","chosenClass","dragClass","ignore","filter","preventOnFilter","animation","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","fn","charAt","bind","nativeDraggable","_on","_onTapStart","push","_onDragOver","get","prototype","constructor","type","touch","touches","target","originalTarget","shadowRoot","path","startIndex","_saveInputCheckedState","button","_closest","_index","_dispatchEvent","preventDefault","split","some","criteria","trim","_prepareDragStart","ownerDocument","dragStartFn","nextSibling","_lastX","_lastY","_disableDelayedDrag","_toggleClass","_triggerDragStart","forEach","_find","_disableDraggable","_onDrop","_dragStartTimer","setTimeout","clearTimeout","_off","pointerType","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","active","_nulling","_emulateDragOver","_css","elementFromPoint","parent","i","length","_onTouchMove","dx","dy","translate3d","_appendGhost","css","ghostRect","cloneNode","marginTop","marginLeft","width","height","body","appendChild","useFallback","_offUpEvents","_clone","insertBefore","_loopId","effectAllowed","dragRect","targetRect","revert","activeSortable","isOwner","isMovingBetweenSortable","canSort","stopPropagation","animated","contains","lastPullMode","_cloneHide","children","_ghostIsLast","lastElementChild","_onMove","_animate","floating","cssFloat","display","isWide","isLong","halfway","nextElementSibling","after","elTop","offsetTop","tgTop","previousElementSibling","moveVector","_unsilent","prevRect","ms","currentRect","removeChild","save","checked","handleEvent","_globalDragOver","toArray","order","n","getAttribute","_generateId","items","id","set","closest","selector","option","destroy","Array","querySelectorAll","removeAttribute","splice","sortable","state","ctx","_matches","_getParentOrHost","host","dropEffect","event","addEventListener","removeEventListener","classList","className","replace","prop","val","defaultView","getComputedStyle","currentStyle","tagName","iterator","list","getElementsByTagName","targetEl","fromEl","createEvent","onName","toUpperCase","substr","initEvent","item","clone","dispatchEvent","toEl","originalEvt","willInsertAfter","onMoveFn","onMove","retVal","dragged","draggedRect","related","relatedRect","str","src","href","sum","charCodeAt","index","tag","shift","re","RegExp","callback","args","arguments","apply","dst","key","hasOwnProperty","dom","root","inputs","idx","Object","defineProperty","capture","passive","utils","on","off","find","is","extend","throttle","toggleClass","create","version","LocalizedStrings","LocalizedStringsService","IVProgAssessment","textCode","testCases","domConsole","parser","IVProgParser","createParser","semantic","SemanticAnalyser","parseTree","validTree","analyseTree","partialTests","map","t","partialEvaluateTestCase","IVProgProcessor","input","output","testResult","reduce","acc","curr","then","Promise","resolve","total","catch","message","error","prog","inputList","outputList","accumulator","outerThis","InputTest","OutputTest","registerInput","registerOutput","startTime","now","interpretAST","_","millis","showErrorMessage","showMessage","isOk","checkOutput","evaluateTestCase","aList","bList","outValue","castNumberA","parseFloat","Number","isNaN","castNumberB","Decimal","decimalPlaces","dp","Config","rounding","ROUND_FLOOR","toFixed","aEqualsB","eq","ROUND_HALF_UP","errorID","getError","msgID","info","getMessage","ArrayIndexAssign","lineExpression","columnExpression","expression","line","column","Assign","ArrayDeclaration","lines","columns","initial","isConst","Declaration","Command","Break","Case","commands","_sourceInfo","sourceInfo","CommandBlock","variables","DoWhile","condition","commandBlock","While","For","assignment","increment","FormalParameter","byRef","Function","returnType","formalParameters","isCompatible","Types","VOID","IfThenElse","ifTrue","ifFalse","Return","Switch","cases","SysCall","langFunc","SyntaxError","msg","captureStackTrace","SyntaxErrorFactory","freeze","extra_lines","token_missing_one","expected","token","context","text","token_missing_list","expectedList","getOR","id_missing","eos_missing","invalid_array_dimension","typeName","invalid_array_size","invalid_main_return","invalid_var_declaration","invalid_break_command","cmdName","invalid_terminal","invalid_type","const_not_init","invalid_id_format","duplicate_function","main_parameters","duplicate_variable","ArrayAccess","strLine","strColumn","Expression","ArrayLiteral","valid","equalityTest","data","v","old","next","strList","arrayLiteral","element","Literal","BoolLiteral","BOOLEAN","convertBoolToString","FunctionCall","actualParameters","isMainCall","LanguageDefinedFunction","getMainFunctionName","getLocalName","params","strParams","InfixApp","op","l","r","IntLiteral","INTEGER","convertToString","RealLiteral","REAL","StringLiteral","STRING","UnaryApp","VariableLiteral","UNDEFINED","lexerClass","LanguageService","getCurrentLexer","InputStream","tokenStream","CommonTokenStream","fill","pos","variableTypes","RK_INTEGER","RK_REAL","RK_BOOLEAN","RK_STRING","functionTypes","concat","RK_VOID","parsingArrayDimension","scope","getCurrentLangFuncs","definedFuncsNameList","definedVariablesStack","parseProgram","LT","BASE","pop","getToken","fetchedEOF","globalVars","functions","RK_PROGRAM","consumeNewLines","checkOpenCurly","pushVariableStack","RK_CONST","isVariableType","parseGlobalVariables","RK_FUNCTION","parseFunction","popVariableStack","checkCloseCurly","isEOF","global","literalNames","attempt","OPEN_CURLY","CLOSE_CURLY","OPEN_BRACE","CLOSE_BRACE","OPEN_PARENTHESIS","CLOSE_PARENTHESIS","eosToken","EOS","functionID","funcIDToken","variableID","variableIDToken","getCurrentVariableStack","decl","parseMaybeConst","checkEOS","constToken","typeString","parseType","parseDeclaration","getTypeArray","dim1","dim2","idToken","idString","parseID","checkVariableDuplicate","checkOpenBrace","parseArrayDimension","checkCloseBrace","equalsToken","EQUAL","parseExpressionOR","declaration","dimensions","Commands","CompoundType","SourceInfo","createSourceInfo","commaToken","COMMA","dimToken","getIntLiteral","ID","parseVariable","exp","Expressions","toInt","toReal","toBool","beginArray","parseExpressionList","endArray","createSourceInfoFromList","dataDim","pushScope","FUNCTION","formalParams","funType","checkFunctionDuplicate","checkOpenParenthesis","checkCloseParenthesis","parseFormalParameters","commandsBlock","parseCommandBlock","func","isMain","popScope","insideScope","LIB_ID","optionalCurly","variablesDecl","hasOpen","cmd","parseCommand","varType","parseIDCommand","RK_RETURN","parseReturn","RK_WHILE","parseWhile","RK_FOR","parseFor","RK_BREAK","BREAKABLE","parseBreak","RK_SWITCH","parseSwitchCase","RK_DO","parseDoWhile","RK_IF","parseIfThenElse","casesList","parseCases","whileToken","COMMAND","logicalExpression","cmdBlocks","maybeElse","RK_ELSE","maybeIf","elseBlock","attribution","parseForAssign","consumeForSemiColon","refToken","isID","parseMaybeLibID","parseExpression","equalToken","equalOrParenthesis","funcCall","parseFunctionCallCommand","isLast","equal","RK_CASE","nextToken","RK_DEFAULT","colonToken","COLON","block","defaultCase","setCommands","aCase","caseToken","exp1","parseExpressionAND","OR_OPERATOR","opToken","or","convertFromString","exp2","finalExp","parseExpressionNot","AND_OPERATOR","and","maybeNotToken","NOT_OPERATOR","not","parseExpressionRel","RELATIONAL_OPERATOR","relToken","rel","factor","parseFactor","SUM_OP","sumOpToken","factor2","term","parseTerm","MULTI_OP","multOpToken","term2","getRealLiteral","getStringLiteral","RK_TRUE","RK_FALSE","getBoolLiteral","parseArrayLiteral","parseIDTerm","parseParenthesisExp","tokenA","tokenB","firstIndex","secondIndex","parseFunctionCallExpression","getInternalName","parseActualParameters","funcName","getFunctionName","maybeToken","types","Operators","ADD","ord","SUB","MULT","DIV","MOD","GT","GE","LE","EQ","NEQ","AND","OR","NOT","size","tokenIndex","DOMConsole","elementID","needInput","termDiv","anyKey","setup","inputListeners","_setupDom","_setupEvents","keyCode","which","notifyListeners","write","addClass","append","hideInput","_appendText","USER","INFO","ERR","divClass","getClassForType","textDiv","scrollTerm","animate","show","focus","hide","showInput","remove","Input","Output","i18n","i18nHelper","buildInfixAddTable","table","buildInfixMultiDivSubTable","buildInfixEqualityInequalityTable","buildInfixRelationalTable","buildInfixAndOrTable","buildInfixModTable","buildUnarySumSubList","buildUnaryNegList","buildInfixCompatibilityTable","compatibilityMap","WeakMap","buildUnaryCompatibilityTable","infixMap","unaryMap","resultTypeAfterInfixOp","operator","leftExpressionType","rightExpressionType","MultiType","newMulti","typeA","j","typeB","enable_type_casting","resultType","undefined","e","TypeError","resultTypeAfterUnaryOp","Context","Symbol","valueToKey","object","concatObjects","result","obj","libsObject","createSinFun","createCosFun","createTanFun","createSqrtFun","createPowFun","createLogFun","createAbsFun","createNegateFun","createInvertFun","createMaxFun","createMinFun","createInputFun","createOutputFun","createSubstringFun","createLengthFun","createUppercaseFun","createLowercaseFun","createrCharAtFun","createNumElementsFun","createMatrixLinesFun","createMatrixColumnsFun","createIsRealFun","createIsIntFun","createIsBoolFun","createCastRealFun","createCastIntFun","createCastBoolFun","createCastStringFun","funcsObject","localName","names","lib","getCurrentLangLibs","internalName","getFunction","libName","funName","ProcessorErrorFactory","symbol_not_found_full","SemanticError","symbol_not_found","function_missing_full","function_missing","main_missing","array_dimension_not_int_full","array_dimension_not_int","unknown_command_full","RuntimeError","unknown_command","incompatible_types_full","dim","translateType","incompatible_types","incompatible_types_array_full","incompatible_types_array","loop_condition_type_full","loop_condition_type","endless_loop_full","endless_loop","for_condition_type_full","for_condition_type","if_condition_type_full","if_condition_type","invalid_global_var","not_implemented","invalid_case_type_full","invalid_case_type","void_in_expression_full","void_in_expression","invalid_array_access_full","invalid_array_access","invalid_matrix_access_full","invalid_matrix_access","matrix_column_outbounds_full","matrix_column_outbounds","matrix_line_outbounds_full","matrix_line_outbounds","vector_line_outbounds_full","vector_line_outbounds","vector_not_matrix_full","vector_not_matrix","function_no_return","invalid_void_return_full","invalid_void_return","invalid_return_type_full","invalid_return_type","invalid_parameters_size_full","actual","invalid_parameters_size","invalid_parameter_type_full","invalid_parameter_type","invalid_ref_full","invalid_ref","unexpected_break_command_full","unexpected_break_command","invalid_array_literal_type_full","invalid_array_literal_type","invalid_array_literal_line_full","invalid_array_literal_line","invalid_array_literal_column_full","invalid_array_literal_column","invalid_unary_op_full","opName","translateOp","invalid_unary_op","invalid_infix_op_full","typeLeft","dimLeft","typeRight","dimRight","invalid_infix_op","array_dimension_not_positive_full","array_dimension_not_positive","invalid_type_conversion","loopTimeout","setConfig","ast","globalStore","Store","stores","forceKill","loopTimers","mode","Modes","RETURN","BREAK","prepareState","initGlobal","mainFunc","findMainFunction","runFunction","checkContext","executeCommands","fun","MAIN_INTERNAL_ID","funcStore","extendStore","returnStoreObject","StoreObjectArray","StoreObject","insertStore","newFuncStore$","associateParameters","outerRef","sto","variablesDeclarations","stoWithVars","finalSto","formalList","actualList","callerStore","calleeStore","promises$","actualParameter","evaluateExpression","all","values","stoObj","shouldTypeCast","formalParameter","canImplicitTypeCast","inStore","ref","StoreObjectArrayAddress","StoreObjectArrayAddressRef","StoreObjectRef","realValue","parseStoreObjectValue","doImplicitCasting","cmds","partial","lastCommand","nextCommand","executeCommand","reject","PAUSE","executeDeclaration","executeArrayIndexAssign","executeAssign","executeBreak","executeReturn","executeIfThenElse","executeDoWhile","executeWhile","executeFor","executeSwitch","executeFunctionCall","executeSysCall","findFunction","auxCaseFun","promise","switchExp","ignoreSwitchCases","wasTrue","isDefault","$newSto","nSto","$value","vl","breakLoop","$result","RUN","initCmd","whileBlock","forAsWhile","newCmdList","$newStore","time","LOOP_TIMEOUT","funcType","applyStore","stringInfo","updateStore","mustBeArray","line$","column$","value$","results","lineSO","number","columnSO","isVector","newArray","assign","canAccept","innerType","$lines","$columns","temp","refValue","readOnly","typeInfo","evaluateUnaryApp","evaluateInfixApp","evaluateArrayAccess","evaluateVariableLiteral","evaluateLiteral","evaluateArrayLiteral","evaluateFunctionCall","errorHelperFunction","validationResult","errorCode","WRONG_COLUMN_NUMBER","columnValue","arr","WRONG_LINE_NUMBER","lineValue","WRONG_TYPE","strExp","$matrix","evaluateMatrix","checkResult","isValid","evaluateVector","stoArray","exps","vector","$vector","$line","$column","unaryApp","$left","negated","infixApp","$right","shouldImplicitCast","stringInfoLeft","infoLeft","stringInfoRight","infoRight","rightStr","leftStr","plus","minus","times","divToInt","div","leftValue","rightValue","trunc","modulo","gt","gte","lt","lte","numElementsFun","ALL","matrixLinesFun","matrix","matrixColumnsFun","writeFunction","sendOutput","readFunction","request","requestInput","typeToConvert","isRealFun","isIntFun","isBoolFun","castRealFun","toNumber","typeStringInfoArray","castIntFun","floor","castBoolFun","castStringFun","convertToRadians","degrees","acos","sinFun","angle","mod","sin","cosFun","cos","tanFun","tan","sqrtFun","sqrt","powFun","pow","logFun","isNegative","log10","absFun","negateFun","invertFun","dividedBy","maxFun","numbers","max","paramType","minFun","substringFun","start","end","substring","lengthFun","uppercaseFun","lowercaseFun","toLowerCase","charAtFun","symbolMap","currentFunction","symMap","findSymbol","pushMap","assertDeclarations","f","assertFunction","assertDeclaration","lineType","evaluateExpressionType","columnType","insertSymbol","resultTypeLeft","resultTypeRight","evaluateLiteralType","assertParameters","arrayTypeInfo","arrType","literal","console","warn","last","strInfo","formalParam","optional","assertReturn","popMap","checkCommand","checkCommands","sType","hasDefault","caseType","lineExp","columnExp","getMainFunction","actualParametersList","param","shared","castType","sourceType","nextStore","isRef","getRefObj","oldObj","updateRef","setID","oldType","stoType","_type","_value","_readOnly","_id","another","_lines","_columns","mustBeNull","refID","anArray","getArrayObject","refLine","refColumn","address","updateArrayObject","runner","ivprogLexer","editor","JsonEditor","click","analiser","semAna","proc","clear","load","alert","log","a","site","o","s","c","u","d","slice","isPlainObject","settings","m","namespace","g","p","h","b","initialize","instantiate","verbose","normalize","fix","requestAnimationFrame","debug","disable","groupEnd","groupCollapsed","markTimeline","consoleClear","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","moduleExists","enabled","modules","each","change","setting","enable","cache","removeData","internal","performance","Element","Name","Arguments","timer","invoke","method","isFunction","isArray","siteNamespace","namespaceStub","config","sections","section","utilities","expr","createPseudo","self","form","C","w","S","k","T","A","R","P","E","F","O","D","bindEvents","removeEvents","refresh","field","prompt","submit","reset","attachEvents","validate","blur","keyboardShortcuts","keydown","changeEvent","defaultValue","uiCheckbox","uiDropdown","hasClass","removeClass","dropdown","determine","bracketedRule","regExp","bracket","shorthandFields","keys","shorthandRules","blank","checkbox","ctrlKey","one","keyup","validation","revalidate","ancillaryValue","ruleName","inputEvent","oninput","onpropertychange","fieldsFromShorthand","rules","identifier","unspecifiedRule","search","unspecifiedField","oldSyntax","fields","metadata","escape","string","add","radio","has","String","rule","inline","templates","appendTo","html","transition","duration","fadeIn","fadeOut","success","isEmptyObject","onSuccess","stopImmediatePropagation","onFailure","depends","onValid","onInvalid","noRule","silent","htmlID","decimal","email","flags","integer","url","isExactly","notExactly","contain","containExactly","doesntContain","doesntContainExactly","minLength","exactLength","maxLength","different","creditCard","minCount","exactCount","maxCount","label","pressed","containsExactly","visa","pattern","amex","mastercard","discover","unionPay","jcb","maestro","dinersClub","laser","visaElectron","inArray","accordion","title","content","events","observeChanges","MutationObserver","observe","childList","subtree","trigger","toggle","animating","collapsible","close","open","onOpening","onChanging","exclusive","closeOthers","stop","animateChildren","queue","useFailSafe","opacity","resetOpacity","slideDown","easing","onOpen","onChange","onClosing","slideUp","onClose","parents","prev","closeNested","attr","removeAttr","easeOutQuad","tabbable","unbind","reference","initialLoad","indeterminate","check","uncheck","hidden","notFound","link","should","allowCheck","ignoreCallbacks","onChecked","allowUncheck","unchecked","onUnchecked","allowIndeterminate","onIndeterminate","determinate","allowDeterminate","onDeterminate","onEnable","onEnabled","onDisable","onDisabled","radios","otherRadios","forceCallbacks","beforeChecked","beforeUnchecked","beforeIndeterminate","beforeDeterminate","fireOnInit","can","uncheckable","uncheckOthers","prevAll","detach","insertAfter","dimmer","documentElement","preinitialize","dimmerName","variation","dimmable","page","preventScroll","pageDimmer","closable","addContent","template","dimmed","onShow","onHide","useCSS","displayType","onStart","onComplete","fadeTo","q","z","I","M","L","V","N","H","sizer","U","W","icon","B","Q","menu","X","Y","Z","K","J","alreadySetup","layout","refreshData","restore","selected","disconnect","menuObserver","selectObserver","select","mutation","userChoice","userValues","addition","addResult","hideAdditions","userLabels","query","minCharacters","firstUnfiltered","selectedItem","unselectable","nextAvailable","nextAll","api","urlData","returnedObject","multiple","searchSelection","allowTab","selectValues","missingMultiple","prependTo","refreshSelectors","refreshItems","clearData","defaultText","placeholderText","remote","queryRemote","maxSelections","allResultsFiltered","allFiltered","intent","menuSearch","focusSearch","visible","animatingOutward","hideOthers","hideMenu","hideSubMenus","touchEvents","keyboardEvents","inputEvents","mouseEvents","single","mouseenter","mousedown","mouseup","mouseleave","filterActive","activeItem","onNoResults","allowAdditions","noResults","userSuggestion","focusedOnSearch","useLabels","apiSettings","useAPI","filterRemoteData","filterItems","noAPI","errorDuration","onError","serverError","remoteValues","choiceText","fullTextSearch","exactSearch","fuzzySearch","choiceValue","filteredItem","filtered","forceSelection","searchTerm","showOnFocus","activeElement","activeLabel","nextUntil","prevUntil","shiftKey","onLabelSelect","activeLabels","bubbledLabelClick","bubbledIconClick","eventOnElement","eventInModule","addedNodes","removedNodes","siblings","itemTimer","allowCategorySelection","userAddition","scrollPosition","selectAction","inObject","focused","caretPosition","leftArrow","siblingLabel","rightArrow","first","deleteKey","backspace","addBack","delimiter","enter","upArrow","selectOnKeydown","downArrow","pageUp","scrollPage","pageDown","selectedLetter","fromCharCode","action","nothing","activate","hideAndClear","combo","placeholder","searchWidth","ceil","selectionCount","upward","grep","uniqueArray","selectionStart","createRange","moveStart","selectInput","read","remoteData","preserveHTML","menuIcon","sortSelect","itemWithAdditions","labels","saveRemoteData","Storage","sessionStorage","getItem","noStorage","setItem","clearValue","outerHeight","glyphWidth","loading","partialSearch","position","offset","firstLetter","direction","openDownward","leftward","openRightward","allowReselection","extendSelect","optionValue","exactly","count","ignoreCase","onLabelCreate","onAdd","arrayValue","onRemove","userValue","onLabelRemove","valueIgnoringCase","valueMatchingCase","animatingInward","selectMutation","verticallyScrollableContext","horizontallyScrollableContext","above","below","outerWidth","noTransition","quote","keepOnScreen","embed","sources","autoplay","createAndShow","createPlaceholder","generate","createEmbed","onCreate","changeEmbed","source","showPlaceholder","onReset","onDisplay","onPlaceholderDisplay","domain","encode","parameters","encodeURIComponent","iframe","noURL","onEmbed","video","color","hd","brandedUI","youtube","autohide","hq","jsapi","modestbranding","vimeo","byline","portrait","onPause","onPlay","onStop","modal","refreshModals","centered","dimmerSettings","detachable","undetached","scrolling","cacheSizes","screenHeight","approve","deny","resize","onApprove","onDeny","clickaway","allowMultiple","hideAll","debounce","keyboard","showModal","hideModal","showDimmer","others","onVisible","autofocus","hideDimmer","onHidden","bodyStyle","pageHeight","contextHeight","topOffset","fit","padding","modernBrowser","ActiveXObject","inverted","blurring","nag","dismiss","displayTime","storageMethod","storage","persist","storageOptions","expires","localStorage","cookie","noCookieStorage","removeItem","removeCookie","fixed","popup","scrollContext","boundary","createID","exists","preserve","documentChanged","offsetParent","movePopup","reposition","removePopup","hideTimer","showTimer","touchstart","hideGracefully","activator","hoverable","conditions","popupVisible","supports","svg","SVGGraphicsElement","popupOffset","calculations","margin","screen","setFluidWidth","fluid","container","getPropertyValue","rtl","startEvent","scrollEvent","endEvent","distanceFromBoundary","positions","nextPosition","prefer","center","distanceAway","centerArrow","arrowPixelsFromEdge","maxSearchDepth","lastResort","invalidPosition","offstage","cannotPlace","attempts","onUnplaceable","fluidWidth","hideOnScroll","closeOnScroll","touchClose","basic","jitter","addTouchEvents","progress","bar","transitionEvent","interval","nextValue","update","complete","percent","progressPoll","transitionEnd","failSafeTimer","triggerHandler","failSafeDelay","randomValue","normalizedValue","decrement","displayPercent","updateInterval","numericValue","OTransition","MozTransition","WebkitTransition","precision","round","toNextValue","warning","barWidth","tooHigh","tooLow","limitValues","labelInterval","framerate","barLabel","autoSuccess","ratio","showActivity","onLabelUpdate","onActive","onWarning","nonNumeric","variable","rating","interactive","initialRating","maxRating","clearable","clearRating","onRate","slent","noMaximum","searchButton","category","searchFields","refreshResults","automatic","handleKeyboard","searchDelay","searchOnFocus","minimumCharacters","showResults","cancel","hideResults","hideDelay","resultsClicked","inMessage","onSelect","location","buttonPressed","buttonFocus","parse","response","displayMessage","onAbort","searchFullText","oldSearchSyntax","firstResult","addResults","inject","local","onSearchQuery","maxResults","categoryResults","generateResults","beginsWith","merge","onResultsAdd","selectFirstResult","onResultsOpen","onResultsClose","noTemplate","showNoResults","onResults","displayField","logging","noEndpoint","categories","categoryName","description","image","price","actionText","actionURL","standard","shape","sides","side","defaultSide","repaint","beforeChange","currentStageSize","stageSize","nextSide","flip","up","allowRepeats","transform","stage","down","over","behind","back","origin","depth","sidebar","pusher","delaySetup","ios","containScroll","scrollLock","inlineCSS","ie","refreshSidebars","omitted","wrapAll","movedSidebar","pushable","overlay","othersActive","pushPage","pullPage","othersAnimating","othersVisible","scrollToTop","dimPage","returnScroll","mobile","scrollBack","pushed","mobileTransition","defaultTransition","computer","mobileChrome","closed","vertical","sticky","determineContainer","determineContext","checkErrors","scrollchange","changed","invalidContext","elementSize","stick","onScroll","onReposition","supported","lastScroll","elementScroll","standardScroll","fits","sameHeight","containerSize","scrollChange","currentElementScroll","minimumSize","setProperty","initialPosition","bound","pushing","bottomOffset","bindBottom","fixTop","setInitialPosition","fixBottom","bindTop","marginBottom","onTop","onUnstick","onBottom","unfix","setSize","onStick","resetCSS","tab","callbacks","determineTabs","auto","history","initializeHistory","isWindow","childrenOnly","tabs","onTabLoad","onTabInit","onLoad","legacyLoad","onFirstLoad","legacyInit","historyType","changeTab","pathNames","initialPath","determineTitle","tabElement","onRequest","pushState","ignoreFirstLoad","pathToArray","defaultPathArray","arrayToPath","filterArray","navigation","fetch","missingTab","evaluateScripts","cacheType","innerHTML","dataType","encodeParameters","alwaysRefresh","headers","loadOnce","deactivate","navElement","defaultPath","maxDepth","recursion","noContent","loaded","animationEndEvent","forceRepaint","animationDirection","reverse","outward","support","occurring","queuing","noAnimation","animationCallbacks","completeCallback","failSafe","looping","inward","force","userStyle","inlineDisplay","animationClass","transitionExists","currentAnimation","queueCallback","currentDirection","animationStartEvent","OAnimation","MozAnimation","WebkitAnimation","stopAll","repeated","stateContext","decode","json","JSON","cachedResponse","stringify","interruptRequests","abort","defaultData","serializeForm","formData","cancelled","beforeSend","templatedURL","mocked","base","beforeXHR","failure","resolveWith","throttleFirstRequest","send","missingURL","removeError","hideError","expectingJSON","mockResponse","mockResponseAsync","responseAsync","abortedRequest","readyState","validResponse","successTest","was","succesful","required","requiredParameter","urlEncodedValue","serializeObject","serialize","missingSerialize","mockedXHR","xhr","always","done","loadingDuration","onResponse","rejectWith","fail","responseFromXHR","errorFromRequest","status","statusMessage","Deferred","responseText","ajax","legacyParameters","noReturnedValue","decodeURIComponent","missingAction","exitConditions","JSONParse","parseError","timeout","visibility","trackChanges","initialCheck","checkVisibility","resetFixed","contextChanged","refreshOnLoad","refreshOnResize","precache","onload","onerror","enableCallbacks","disableCallbacks","occurred","once","onOnScreen","onAllLoaded","onTopPassed","onTopPassedReverse","zIndex","onFixed","onScreen","elementCalculations","offScreen","checkOnRefresh","onRefresh","passed","passingReverse","topVisibleReverse","bottomVisibleReverse","topPassedReverse","bottomPassedReverse","passing","topVisible","bottomVisible","topPassed","bottomPassed","onUpdate","onPassed","pixelsPassed","execute","onOffScreen","onPassing","onTopVisible","onBottomVisible","onBottomPassed","onPassingReverse","onTopVisibleReverse","onBottomVisibleReverse","onBottomPassedReverse","screenCalculations","continuous","onUnfixed","elementPosition","screenSize","includeMargin","percentagePassed","StringTypes","line_i18n","opts","ERROR","MESSAGE","UI","getUI","getString","LanguageServiceExtended","iLMparameters","default_lang","lang","langInfo","Lexers","getLang","getDefaultLang","LanguageServiceNoLS","IVProgLocalizedStrings","langService","langsJsons","shouldListenToChange","transType","Langs","_instance","getInstance","BaseType","BaseTypes","Type","instance","bool","baseType","ConfigObject","intConvertRoundMode","block_render","renderAlgorithm","draging","program_obj","FunctionsManagement","globals","GlobalsManagement","code","globalsCode","has_error","n_code","functionsCode","function_obj","ret","return_type","TEXT","return_dimensions","parameters_list","parametersCode","variables_list","variablesCode","commandsCode","command_obj","indentation","Models","break","breaksCode","comment","commentsCode","reader","readersCode","writer","writersCode","functioncall","functioncallsCode","attributionsCode","whiletrue","whiletruesCode","dowhiletrue","doWhilesCode","iftrue","iftruesCode","repeatNtimes","repeatNtimesCode","switch","switchsCode","return","returnsCode","variable_value_menu","variableValueMenuCode","switchcasesCode","switchcase","commands_block","var_attribution","expression1","expression2","exp_logic","logicExpressionCode","exp_arithmetic","arithmeticExpressionCode","var_incrementation","expression3","itens","multiplication","division","module","Utils","dom_object","commands_else","first_operand","equals_to","not_equals_to","second_operand","greater_than","less_than","greater_than_or_equals_to","less_than_or_equals_to","elementExpressionCode","expression_obj","type_op","function_called","variable_obj","is_return","row","comment_text","parameter_obj","is_constant","rows","has_element_created_draged","which_element_is_draged","removeCommand","command","dom_obj","function_container_active","createFloatingCommand","function_container","command_type","mouse_event","floatingObject","BreaksManagement","CommentsManagement","ReadersManagement","WritersManagement","AttributionsManagement","IftruesManagement","RepeatNtimesManagement","WhiletruesManagement","DowhiletruesManagement","SwitchesManagement","FunctioncallsManagement","ReturnsManagement","manageCommand","originalEvent","srcElement","addGhostDiv","ghostDiv","pageX","divx","pageY","active_container","addGhostToEmptyBlock","addGhostToNotEmptyBlock","containerIf","containerElse","topIfDistance","bottomIfDistance","topElseDistance","bottomElseDistance","addGhostToFunctionArea","allfilhos","topDistances","bottomDistances","topD","botD","menorTop","indiceTop","menorBot","indiceBot","undermouse","borderMouseDragCommand","objLeft","objTop","objRight","objBottom","renderCommand","element_reference","before_after_inside","createdElement","genericCreateCommand","VariableValueMenuManagement","only_value","only_variable","only_function","sc","variable_and_function","dragTrash","trash","hier","parentsUntil","esta_correto","esta_na_div_correta","new_cmd","findNearbyCommandToAddInFunctionScope","hier_find","hierarquia_bottom_up","is_correct_context","sub_elemento","findBeforeOrAfterCommandToAdd","insertCommandInBlockHierar","hier_dom","hier_obj","el_jq","command_parent","recentComand","findNearbyCommandToAddInBlockScope","addCommandToSwitchCase","findBeforeOrAfterCommandToAddInsertBlock","node_list_commands","all_sub","menor_distancia","elemento_menor_distancia","antes","t_bot","t_top","borda_inferior","command_target","temp_parent","is_in_else","d_top","d_bot","findInBlockCorrectPlace","insertCommandInBlock","correct_div","is_in_if","which_case","case_div","findInBlockCorrectPlaceInSwitchCase","VariableValueMenu","addHandlers","ExpressionManagement","manageExpressionElements","ref_object","menu_var_or_value","expression_element","index_to_move","exp_op_exp","op_exp","par_exp_par","renderExpressionElements","expression_div","command_container","renderElement","renderOperator","temp_op","index_op","context_menu","none","$selectedItem","renderMenuAddExpression","dom_append_menu","expression_append_new_expression","type_exp","temp_exp_1","temp_exp_2","temp_exp","temp_par_1","temp_par_2","renderExpression","menu_add_item","menu_add_item_seq","index_temp","addMenuItens","divs_expression","attribution_dom","CommandsManagement","renderMenuOperations","variable_selected","createExpressionAround","break_dom","renderTextComment","comment_dom","initial_el_to_render","renderStartMenu","main_div","renderLogicExpression","renderArithmeticExpression","restartMenu","renderArithmeticOperator","all_expression","expression_arithmetic","arithmetic_operator","element_to_append","menu_operator","renderLogicOperator","expression_logic","logic_operator","exp_el_par_1","exp_el_expr_el_1","exp_el_expr_operand","exp_el_expr_el_2","exp_el_par_2","start_menu","renderMenu","dom_where_render","dom_command","menu_div","addCaseToSwitch","SwitchManagement","ContextualizedMenu","ConditionalExpressionManagement","dowhiletrue_dom","functioncall_dom","div_to_render","expression_array","WatchJS","unwatch","watch","types_included","exp_conditional","renderElements","open_or_close","div_temp","renderStartAddOperator","renderFinalAddElements","renderParenthesis","renderOperatorMenu","renderAddParenthesis","parentheses_activate","addParentheses","actual_target","renderGhostParentheses","comando_que_esta","comando_certo","open_parentheses","close_parentheses","inserir_open","inserir_close","evts","is_correct","index_in_array","count_opened","count_closed","expression_content","ghost_parenthesis","menu_final","getArithmeticOperators","getLogicOperators","getRelationalOperators","div_higher","sera","arithmetic_operators","logic_operators","relational_operators","iftrue_dom","reader_dom","cond_exp","manageClearExpressionElements","repeatNtimes_dom","return_dom","renderCase","casediv","switch_dom","VAR_OR_VALUE_TYPES","variable_and_value_opt","value_and_function","size_field","variable_and_value","addVariablesToMenu","addFunctionsToMenu","addIVProgFunctionsToMenu","variable_fun","isVarInProgram","renderPreviousContent","appendSelectText","ret_function","isFunctionInProgram","function_called_obj","system_functions","var_obj","var_fun","parameters_menu","AttribuitionsManagement","variable_render","openInputToValue","sub_menu","math","arrangement","conversion","is_there","include_constant","openInputToFunction","openInputToVariable","RepeatNTimesManagement","inputWidth","textWidth","tmpStr","function_selected","rendered","focusout","font","fakeEl","whiletrue_dom","new_div_item","div_parent_with_handler","addHandlerIconAdd","addHandlersManager","writer_dom","item_div","content_element","onEnd","replaceWith","insert_after","after_which","icon_add_item","new_related_menu","ref_object_content","counter_new_functions","counter_new_parameters","ivprog_version","VersionInfo","globalChangeListeners","functionsChangeListeners","studentGrade","program","mainFunction","function_comment","addFunction","generator","CodeManagement","runCodeAssessment","AlgorithmManagement","insertContext","watchW","addFunctionHandler","new_function","newe","renderFunction","addParameter","is_from_click","new_parameter","renderParameter","updateReturnType","new_type","new_dimensions","removeFunction","minimizeFunction","is_hidden","enableNameFunctionUpdate","VariablesManagement","slideToggle","renderFunctionReturn","function_element","tm","cont","appender","is_main","function_index","updateSequenceLocals","addSortableHandler","updateSequenceParameters","teste","isVisible","elementTop","elementHeight","containerTop","containerHeight","evento_drag","updateProgramObjDrag","nodes","start_index","path_target","index_each","path_relative","indice_na_raiz","index_in_block","is_in_case_switch","index_case_of_switch","command_start_point","block_to_insert","command_in_drag","prepareDragHandler","id_function","n_group","itemEl","initVisualUI","mainDiv","runCode","toggleVisualCoding","toggleTextualCoding","is_iassign","toggleConsole","full_screen","ready","time_show","listWithHandle","updateSequenceFunction","listGlobalsHandle","getElementById","updateSequenceGlobals","strCode","runTest","grade","getEvaluationCallback","analyser","is_running","waitToCloseConsole","dispose","removeParameter","parameter_container","updateParameterType","enableNameParameterUpdate","updateParameterName","parameter_var","new_name","parameter_obj_dom","isValidIdentifier","variableNameAlreadyExists","name_var","updateFunctionName","function_var","function_obj_dom","functionNameAlreadyExists","function_name","identifier_str","opened_name_parameter","opened_input_parameter","parent_node","input_field","opened_name_function","opened_input","previousPadding","addFunctionChangeListener","addGlobalChangeListener","removeGlobalListener","removeFunctionListener","counter_new_globals","addGlobal","new_global","renderGlobal","toggleConstant","global_var","updateName","global_obj_dom","globalNameAlreadyExists","global_name","updateType","updateInitialValues","removeGlobal","global_container","alternateBooleanGlobalValue","value_container","alternateBooleanGlobalVectorValue","removeGlobalColumnVector","addGlobalColumnVector","removeColumnGlobalMatrix","addColumnGlobalMatrix","removeLineGlobalMatrix","addLineGlobalMatrix","n_l","alternateBooleanGlobalMatrixValue","renderValues","enableGlobalValueUpdate","enableGlobalVectorValueUpdate","enableGlobalMatrixValueUpdate","updateColumnsAndRowsText","enableNameUpdate","ff","complete_element","opened_name_value_matrix_global_v","opened_input_value_matrix_global_v","opened_name_value_global_var","opened_input_value_global_ar","opened_name_global","opened_input_global","input_name","opened_name_value_vector_global_","opened_input_value_vector_global_","COMMAND_TYPES","function","ARITHMETIC_TYPES","EXPRESSION_ELEMENTS","start_point","EXPRESSION_TYPES","ARITHMETIC_COMPARISON","LOGIC_COMPARISON","SYSTEM_FUNCTIONS_CATEGORIES","Variable","SystemFunction","Comment","Reader","Writer","Attribution","ExpressionOperator","ExpressionElement","ConditionalExpression","LogicExpression","has_neg","ArithmeticExpression","IfTrue","RepeatNTimes","WhileTrue","DoWhileTrue","SwitchCase","FunctionCallMenu","Program","function_to_add","function_to_receive","renderErrorMessage","dom_obj_target","message_text","$module","counter_new_variables","addVariable","is_in_click","new_var","renderVariable","variable_obj_dom","removeVariable","variable_container","function_associated","variable_var","alternateBooleanValue","enableValueUpdate","alternateBooleanVectorValue","enableVectorValueUpdate","removeColumnVector","addColumnVector","removeColumnMatrix","addColumnMatrix","removeLineMatrix","addLineMatrix","alternateBooleanMatrixValue","enableMatrixValueUpdate"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;;;AClFA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA,OAAO,qBAAqB;AAC5B;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sBAAsB;AACjE,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,mEAAmE,sCAAsC,EAAE;;AAE3G;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,OAAO;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;;;AAIA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,iBAAiB,mBAAO,CAAC,oDAAc;;AAEvC,OAAO;AACP,Y;;;;;;;;;;;;ACxfA;AAAA;;AAEe;AACbA,eAAa,EAAE,OADF;AAEbC,OAAK,EAAE,MAFM;AAGbC,QAAM,EAAE,OAHK;AAIbC,cAAY,EAAE,mBAJD;AAKbC,cAAY,EAAE,gBALD;AAMbC,gBAAc,EAAE,kBANH;AAObC,YAAU,EAAE,WAPC;AAQbC,SAAO,EAAE,aARI;AASbC,YAAU,EAAE,YATC;AAUbC,YAAU,EAAE,aAVC;AAWbC,SAAO,EAAE,SAXI;AAYbC,SAAO,EAAE,SAZI;AAabC,QAAM,EAAE,YAbK;AAcbC,SAAO,EAAE,UAdI;AAebC,WAAS,EAAE,SAfE;AAgBbC,UAAQ,EAAE,YAhBG;AAiBbC,WAAS,EAAE,UAjBE;AAkBbC,aAAW,EAAE,WAlBA;AAmBbC,MAAI,EAAE,KAnBO;AAoBbC,MAAI,EAAE,KApBO;AAqBbC,MAAI,EAAE,KArBO;AAsBbC,OAAK,EAAE,MAtBM;AAuBbC,MAAI,EAAE,KAvBO;AAwBbC,MAAI,EAAE,KAxBO;AAyBbC,MAAI,EAAE,KAzBO;AA0BbC,SAAO,EAAE,QA1BI;AA2BbC,SAAO,EAAE,QA3BI;AA4BbC,MAAI,EAAE,SA5BO;AA6BbC,MAAI,EAAE;AA7BO,CAAf,E;;;;;;;;;;;;ACFA;AAAA;;;AAGe;AACbC,UAAQ,EAAE,YADG;AAEbC,QAAM,EAAE,IAFK;AAGbC,SAAO,EAAE,OAHI;AAIbC,WAAS,EAAE,SAJE;AAKbC,UAAQ,EAAE;AALG,CAAf,E;;;;;;;;;;;ACHA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA,OAAO,qBAAqB;AAC5B;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB,gCAAgC;AACjE,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,mEAAmE,sCAAsC,EAAE;;AAE3G;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,OAAO;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;;;AAIA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,iBAAiB,mBAAO,CAAC,oDAAc;;AAEvC,OAAO;AACP,Y;;;;;;;;;;;;AChgBA;AAAA;;AAEe;AACbjC,eAAa,EAAE,QADF;AAEbC,OAAK,EAAE,MAFM;AAGbC,QAAM,EAAE,SAHK;AAIbC,cAAY,EAAE,mBAJD;AAKbC,cAAY,EAAE,gBALD;AAMbC,gBAAc,EAAE,kBANH;AAObC,YAAU,EAAE,WAPC;AAQbC,SAAO,EAAE,aARI;AASbC,YAAU,EAAE,YATC;AAUbC,YAAU,EAAE,aAVC;AAWbC,SAAO,EAAE,SAXI;AAYbC,SAAO,EAAE,SAZI;AAabC,QAAM,EAAE,YAbK;AAcbC,SAAO,EAAE,UAdI;AAebC,WAAS,EAAE,SAfE;AAgBbC,UAAQ,EAAE,YAhBG;AAiBbC,WAAS,EAAE,UAjBE;AAkBbC,aAAW,EAAE,WAlBA;AAmBbC,MAAI,EAAE,KAnBO;AAoBbC,MAAI,EAAE,KApBO;AAqBbC,MAAI,EAAE,KArBO;AAsBbC,OAAK,EAAE,MAtBM;AAuBbC,MAAI,EAAE,KAvBO;AAwBbC,MAAI,EAAE,KAxBO;AAyBbC,MAAI,EAAE,KAzBO;AA0BbC,SAAO,EAAE,QA1BI;AA2BbC,SAAO,EAAE,QA3BI;AA4BbC,MAAI,EAAE,SA5BO;AA6BbC,MAAI,EAAE;AA7BO,CAAf,E;;;;;;;;;;;;ACFA;AAAA;;;AAGe;AACbC,UAAQ,EAAE,YADG;AAEbC,QAAM,EAAE,IAFK;AAGbC,SAAO,EAAE,OAHI;AAIbC,WAAS,EAAE,SAJE;AAKbC,UAAQ,EAAE;AALG,CAAf,E;;;;;;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEe;AACbC,IAAE,EAAE;AAACC,SAAK,EAAEC,oDAAR;AAAmBC,aAAS,EAAEC,yDAA9B;AAAuCC,YAAQ,EAAEC,oDAAMA;AAAvD,GADS;AAEbC,IAAE,EAAE;AAACN,SAAK,EAAEO,oDAAR;AAAmBL,aAAS,EAAEM,yDAA9B;AAAuCJ,YAAQ,EAAEK,oDAAMA;AAAvD,GAFS;AAGbC,IAAE,EAAE;AAACV,SAAK,EAAEW,oDAAR;AAAmBT,aAAS,EAAEU,yDAA9B;AAAuCR,YAAQ,EAAES,oDAAMA;AAAvD;AAHS,CAAf,E;;;;;;;;;;;ACVA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA,OAAO,qBAAqB;AAC5B;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB,gCAAgC;AACjE,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,mEAAmE,sCAAsC,EAAE;;AAE3G;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,OAAO;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;;;AAIA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,iBAAiB,mBAAO,CAAC,oDAAc;;AAEvC,OAAO;AACP,Y;;;;;;;;;;;;AChgBA;AAAA;;AAEe;AACbhD,eAAa,EAAE,QADF;AAEbC,OAAK,EAAE,MAFM;AAGbC,QAAM,EAAE,SAHK;AAIbC,c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C;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,QAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA,oBAAoB,wBAAwB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtXA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,mBAAO,CAAC,2DAAe;;AAEzC;AACA,oBAAoB,mBAAO,CAAC,0DAAI;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,mBAAmB;AACtD,IAAI,kBAAkB;AACtB;;AAEA,kBAAkB,mBAAO,CAAC,+CAAS;;AAEnC;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,2BAA2B;AACrD;AACA;AACA;AACA,0BAA0B,0BAA0B;AACpD,QAAQ,2BAA2B;AACnC,QAAQ,oCAAoC;AAC5C,eAAe,qBAAqB;AACpC;AACA;AACA;AACA,6BAA6B,YAAY;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,0BAA0B;AACjD;AACA,IAAI,wBAAwB;AAC5B;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC,+CAA+C,WAAW,GAAG,WAAW;AACxE,IAAI,WAAW;AACf;AACA;AACA;AACA,KAAK,6BAA6B;AAClC,IAAI,wBAAwB;AAC5B,SAAS,wBAAwB;AACjC;AACA;AACA;AACA,oCAAoC,aAAa;AACjD,IAAI,kBAAkB;AACtB;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,+CAAS;AAC7B,0BAA0B,mBAAO,CAAC,2EAAuB;;AAEzD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8C;;;;;;;;;;;ACvGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,2DAAe;AACzC;AACA,oBAAoB,mBAAO,CAAC,0DAAI;;AAEhC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,+CAAS;AAC7B,mBAAO,CAAC,+EAAyB;AACjC,mBAAO,CAAC,mFAA2B;;AAEnC;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;AACA,EAAE;AACF,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,cAAc;AACd;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,sBAAsB,WAAW;AACjC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtIA;AACA;AACA;AACA;;AAEA;;AAEA,YAAY,mBAAO,CAAC,+CAAS;;AAE7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,4BAA4B;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,iBAAiB;AACnD;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,KAAK;AACL;AACA,oBAAoB,yBAAyB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,EAAE;AACF;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,2BAA2B;AAC3C;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW,yBAAyB;AACpC,EAAE;AACF;AACA;AACA;;;AAGA;AACA;AACA,gBAAgB,2BAA2B;AAC3C;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW,yBAAyB;AACpC,EAAE;AACF;AACA;AACA;;;AAGA;AACA;AACA,gBAAgB,2BAA2B;AAC3C;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA,WAAW,yBAAyB;AACpC,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACzSA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,mBAAO,CAAC,+CAAS;AAC3B,aAAa,mBAAO,CAAC,+CAAS;AAC9B,YAAY,mBAAO,CAAC,+CAAS;AAC7B,gBAAgB,mBAAO,CAAC,+DAAiB;AACzC,eAAe,mBAAO,CAAC,2DAAe;AACtC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,oBAAoB,mBAAO,CAAC,6DAAgB;AAC5C,qBAAqB,mBAAO,CAAC,iEAAkB;AAC/C,uBAAuB,mBAAO,CAAC,iEAAkB;AACjD,yBAAyB,mBAAO,CAAC,iEAAkB;AACnD,kCAAkC,mBAAO,CAAC,iEAAkB;;AAE5D,SAAS,mBAAO,CAAC,uEAAqB;AACtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC,0BAA0B;AAC9D;AACA;;;AAGA;AACA;AACA,UAAU,eAAe;AACzB,2BAA2B,QAAQ;AACnC;AACA,sDAAsD,WAAW;AACjE;AACA;AACA,iEAAiE,QAAQ;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,QAAQ;AAClD,cAAc,UAAU;AACxB;AACA,UAAU,UAAU,KAAK,WAAW;AACpC,IAAI,QAAQ,cAAc,qBAAqB;AAC/C,OAAO,UAAU,SAAS,WAAW;AACrC,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA,IAAI,oBAAoB;AACxB,+CAA+C,WAAW;AAC1D;AACA;AACA,8CAA8C,QAAQ;AACtD,cAAc,UAAU;AACxB;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,QAAQ;AAClD,cAAc,UAAU;AACxB;AACA,UAAU,UAAU,KAAK,WAAW,MAAM,gBAAgB;AAC1D,oBAAoB,QAAQ,cAAc,qBAAqB;AAC/D,uBAAuB,UAAU,SAAS,WAAW,MAAM,aAAa;AACxE,IAAI,WAAW,MAAM,gBAAgB;AACrC,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA,IAAI,oBAAoB;AACxB,qCAAqC,WAAW;AAChD;AACA;AACA;AACA;AACA,IAAI,yBAAyB;AAC7B;AACA;AACA,IAAI,mBAAmB;AACvB,wBAAwB,WAAW;AACnC,eAAe,WAAW,oCAAoC;AAC9D,mDAAmD,iBAAiB;AACpE;AACA,sBAAsB,iBAAiB;AACvC,kEAAkE;AAClE,OAAO,WAAW;AAClB;AACA;AACA,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACrMA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,+CAAS;AAC7B,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,yBAAyB,mBAAO,CAAC,yEAAsB;AACvD,4BAA4B,mBAAO,CAAC,6DAAgB;AACpD,gCAAgC,mBAAO,CAAC,6DAAgB;;AAExD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,4BAA4B;AAC5B;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gDAAgD;AAChD;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClXA;AACA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,+CAAS;AAC7B,wBAAwB,mBAAO,CAAC,uDAAa;AAC7C,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,2BAA2B,mBAAO,CAAC,2EAAuB;AAC1D,sBAAsB,mBAAO,CAAC,2EAAuB;AACrD,gCAAgC,mBAAO,CAAC,+FAAiC;AACzE,mBAAmB,mBAAO,CAAC,uDAAa;AACxC,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA,SAAS,wBAAwB;AACjC;AACA;AACA;AACA,+CAA+C,WAAW;AAC1D;AACA,UAAU,kBAAkB,aAAa;AACzC,KAAK,oBAAoB;AACzB,mBAAmB,kBAAkB,cAAc;AACnD;AACA;AACA;AACA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uEAAuE;AACvE,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,YAAY;AACnD,aAAa,sCAAsC,MAAM,gBAAgB;AACzE;AACA;AACA;AACA,IAAI,wCAAwC;AAC5C,qCAAqC,0BAA0B;AAC/D,IAAI,WAAW;AACf,IAAI,wCAAwC;AAC5C,8BAA8B,sCAAsC;AACpE;AACA;AACA;AACA;AACA,IAAI,YAAY;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,QAAQ,gBAAgB;AACxB;AACA;AACA,IAAI,wCAAwC;AAC5C,qCAAqC,0BAA0B;AAC/D,IAAI,WAAW;AACf,IAAI,wCAAwC;AAC5C,8BAA8B,sCAAsC;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc,eAAe;AAC7B;AACA;AACA;AACA;AACA;AACA,IAAI,+BAA+B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,MAAM,cAAc;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B;AACA,UAAU,eAAe,KAAK,WAAW;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA4D,MAAM;AAClE;AACA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,+CAAS;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,4CAA4C;AACvE;AACA,4CAA4C,QAAQ;AACpD,wDAAwD,QAAQ;AAChE,IAAI,QAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yCAAyC;AACrE,IAAI,uCAAuC;AAC3C;AACA;AACA,IAAI,6CAA6C;AACjD,IAAI,wCAAwC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI,aAAa;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA,SAAS,kBAAkB;;AAE3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,aAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,WAAW,KAAK,aAAa;AACzC,uBAAuB,YAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA,mCAAmC,iBAAiB,MAAM,mBAAmB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,oBAAoB;AAClD;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA,kBAAkB,UAAU;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uCAAuC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B,iCAAiC,gDAAgD,EAAE;AACnF,+BAA+B,wCAAwC,EAAE;AACzE,MAAM;AACN;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wB;;;;;;;;;;;ACjqBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,WAAW,mBAAO,CAAC,uDAAa;AAChC;AACA;AACA;AACA;AACA,eAAe,mBAAO,CAAC,2DAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,WAAW;AACtC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,cAAc,wBAAwB;AACtC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,cAAc,wBAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,cAAc,wBAAwB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8C;;;;;;;;;;;AChOA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;AACA;;AAEA,eAAe,QAAQ;AACvB,IAAI,cAAc;AAClB;AACA;;AAEA,eAAe,QAAQ,yCAAyC;AAChE,2BAA2B,oBAAoB;AAC/C,IAAI,QAAQ,IAAI,2BAA2B;AAC3C;AACA;;AAEA;AACA;;AAEA,0CAA0C,wBAAwB;AAClE;AACA;AACA;AACA;AACA,eAAe,mDAAmD,EAAE;AACpE,kBAAkB;AAClB;AACA,kBAAkB,OAAO,EAAE,gBAAgB;AAC3C,WAAW,2CAA2C,QAAQ;AAC9D,aAAa;AACb;AACA;AACA,kBAAkB,OAAO,EAAE,gBAAgB;AAC3C,WAAW,2CAA2C,QAAQ;AAC9D,mCAAmC;AACnC;AACA;AACA,WAAW,2CAA2C,YAAY;AAClE,YAAY;AACZ;AACA;AACA;AACA;;AAEA,wBAAwB,cAAc;AACtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,wBAAwB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF,eAAe;AACf,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU,cAAc,0BAA0B,cAAc;AAChE;AACA,oBAAoB,2BAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF,eAAe;AACf,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA,iBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,kBAAkB,YAAY,wBAAwB;AACpE,WAAW,cAAc,KAAK,mBAAmB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,iCAAiC;AAC/C;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,wBAAwB;AACxB,0BAA0B,WAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO;AACT;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,QAAQ,KAAK,QAAQ;AAC3D,IAAI,cAAc,yCAAyC,QAAQ;AACnE,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA,OAAO,cAAc,0BAA0B,SAAS,cAAc;AACtE;AACA;AACA,OAAO,cAAc,kBAAkB,cAAc;AACrD,IAAI,eAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA,6BAA6B,EAAE,cAAc;AAC7C;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,wBAAwB;AACxB,0BAA0B,WAAW;AACrC;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,kCAAkC;AAClC;AACA,EAAE;AACF;AACA,kCAAkC;AAClC,GAAG,0CAA0C;AAC7C;AACA;AACA;AACA;AACA,GAAG,0CAA0C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iCAAiC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,WAAW;AACX,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA,gCAAgC;AAChC;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA,UAAU;AACV,UAAU;AACV,GAAG,kDAAkD;AACrD;AACA;AACA;AACA,GAAG,OAAO;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;AACA,EAAE;AACF,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gCAAgC;AAChE,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,eAAe,YAAY;AAC7D;AACA;AACA;AACA;;AAEA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1tBA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,+CAAS;AAC7B,2BAA2B,mBAAO,CAAC,2EAAuB;AAC1D,yBAAyB,mBAAO,CAAC,2EAAuB;;AAExD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,UAAU,EAAE;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,UAAU,EAAE;AACjE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA,IAAI,iDAAiD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;;;AAGD;;;;;;;;;;;;AClJA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,uDAAa;AACpC,uBAAuB,mBAAO,CAAC,uDAAa;AAC5C,yBAAyB,mBAAO,CAAC,mDAAW;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,2BAA2B;;AAE5E;AACA;AACA;AACA;AACA;AACA,0DAA0D;;AAE1D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAY,mBAAO,CAAC,yDAAc;;;AAGlC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC3JA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB,qBAAqB;AACrB,mBAAmB,aAAa;AAChC,kBAAkB,aAAa;AAC/B,wBAAwB;AACxB,kBAAkB;AAClB,oBAAoB;AACpB,mBAAmB;AACnB;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,+CAA+C,UAAU;AACzD,IAAI,WAAW,QAAQ,gBAAgB;AACvC;AACA;AACA,mDAAmD,WAAW;AAC9D;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;;AAEA,aAAa,WAAW;AACxB,IAAI,eAAe;AACnB;;AAEA,qBAAqB,kBAAkB,uBAAuB,YAAY;AAC1E;AACA;AACA,OAAO,eAAe,YAAY,kBAAkB;AACpD,oDAAoD,aAAa;AACjE,QAAQ,WAAW,YAAY,eAAe,cAAc,aAAa;AACzE,sCAAsC,gBAAgB,OAAO;AAC7D,2CAA2C,4BAA4B;AACvE,IAAI,4BAA4B;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACtJA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,aAAa,iCAAiC;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qBAAqB;AAC3C;AACA,KAAK;AACL,+BAA+B,qBAAqB;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA,iBAAiB,sCAAsC;AACvD,KAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7bA;AACA;AACA;AACA;;AAEA,kBAAkB,mBAAO,CAAC,8DAAkB;AAC5C,kBAAkB,mBAAO,CAAC,8DAAkB;;AAE5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,4CAA4C,qBAAqB,WAAW;AAC5E;AACA,4CAA4C,kBAAkB;AAC9D;AACA;AACA;;AAEA;AACA;;AAEA,qEAAqE,QAAQ;AAC7E,QAAQ,UAAU;AAClB,0BAA0B,QAAQ;AAClC,mDAAmD,QAAQ;AAC3D;AACA;AACA;AACA;;AAEA,+DAA+D,QAAQ;AACvE,0BAA0B,qBAAqB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,IAAI,kBAAkB,wBAAwB,cAAc;AAC5D;AACA;AACA;AACA,IAAI,oBAAoB;AACxB,aAAa,iBAAiB;AAC9B;AACA,UAAU,cAAc,KAAK,WAAW;AACxC,IAAI,+BAA+B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,YAAY,mBAAO,CAAC,kDAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,kB;;;;;;;;;;;AC7IA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,mBAAO,CAAC,yDAAY;AACxC,sBAAsB,mBAAO,CAAC,uEAAmB;AACjD,WAAW,mBAAO,CAAC,gDAAU;;;AAG7B;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,sCAAsC,+BAA+B;AACrE;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,wC;;;;;;;;;;;AC/KA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,WAAW,SAAS,iBAAiB,QAAQ;AAC7D;AACA;AACA;;AAEA,UAAU,mBAAO,CAAC,+CAAO;AACzB,YAAY,mBAAO,CAAC,kDAAY;AAChC;AACA;AACA,sBAAsB,mBAAO,CAAC,uEAAmB;AACjD,YAAY,mBAAO,CAAC,0EAAwB;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,KAAK,qBAAqB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA,WAAW;AACX;AACA;AACA,oDAAoD;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,IAAI,oBAAoB,SAAS,QAAQ;AACzC,IAAI,uBAAuB,GAAG,QAAQ,SAAS,qBAAqB;AACpE,IAAI,SAAS,SAAS,iCAAiC;AACvD,IAAI,eAAe;AACnB;AACA,2BAA2B,6BAA6B;AACxD,IAAI,2BAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,oBAAoB;AAC/C;AACA;;AAEA;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;AC9PA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,kDAAY;AAChC,UAAU,mBAAO,CAAC,+CAAO;AACzB,cAAc,mBAAO,CAAC,uDAAW;AACjC,gBAAgB,mBAAO,CAAC,yDAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,6DAAc;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,8DAAkB;AAC5C,eAAe,mBAAO,CAAC,8DAAkB;AACzC,gCAAgC,mBAAO,CAAC,2FAA6B;AACrE,mBAAmB,mBAAO,CAAC,+DAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,cAAc;AAC3C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,uBAAuB,WAAW;AAClC;AACA,0BAA0B,WAAW;AACrC;AACA,YAAY,WAAW,SAAS,iBAAiB;AACjD,yDAAyD,cAAc;AACvE,cAAc,aAAa,YAAY;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,+BAA+B;AAC5C;AACA;AACA;;AAEA,aAAa,0BAA0B;AACvC;AACA;AACA;;AAEA;AACA,aAAa,sBAAsB;AACnC;AACA;AACA;;AAEA;AACA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,UAAU;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,KAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA,iBAAiB,4BAA4B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,aAAa,qBAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4BAA4B;AACjD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qBAAqB,4BAA4B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,YAAY,qBAAqB;AACjC;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,gBAAgB,yBAAyB;AACzC,QAAQ,+CAA+C;AACvD;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC,yBAAyB;AAClE,8CAA8C,6BAA6B;AAC3E,+CAA+C,mCAAmC;AAClF,oDAAoD,kCAAkC;AACtF,oDAAoD,kCAAkC;AACtF,+CAA+C,+BAA+B;AAC9E,6CAA6C,4BAA4B;AACzE,6CAA6C,4BAA4B;AACzE,kDAAkD,gCAAgC;AAClF,mDAAmD,iCAAiC;AACpF,kDAAkD,gCAAgC;AAClF,4CAA4C,2BAA2B;AACvE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8DAA8D,sCAAsC;AACpG,6DAA6D,4CAA4C;AACzG,2DAA2D,mCAAmC;AAC9F,2DAA2D,iCAAiC;AAC5F,+DAA+D,oCAAoC;AACnG,gEAAgE,uCAAuC;AACvG,2DAA2D,iCAAiC;AAC5F,2DAA2D,mCAAmC;AAC9F;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;AAGA,0C;;;;;;;;;;;ACrqBA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,gEAAmB;AAC1C,mBAAmB,mBAAO,CAAC,iEAAgB;AAC3C,iCAAiC,mBAAO,CAAC,0EAAwB;;AAEjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI,4BAA4B;AAChC;AACA;AACA;AACA,0CAA0C;AAC1C,IAAI,wBAAwB;AAC5B;AACA;AACA,IAAI,iBAAiB;AACrB;AACA;AACA,IAAI,iBAAiB;AACrB;AACA;AACA,4DAA4D,UAAU;AACtE,gEAAgE,UAAU;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,aAAa;AACrC;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA,yBAAyB,aAAa;AACtC;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA,qCAAqC,cAAc;AACnD;AACA;AACA;AACA,6BAA6B,cAAc;AAC3C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA,4BAA4B,YAAY;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA,8BAA8B,cAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uBAAuB,SAAS,MAAM,aAAa;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA,aAAa,iBAAiB;AAC9B,qCAAqC;AACrC,0CAA0C,wBAAwB;AAClE,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACrUA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,sBAAsB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,kDAAY;AAChC,YAAY,mBAAO,CAAC,kDAAY;AAChC,UAAU,mBAAO,CAAC,+CAAO;AACzB,mBAAmB,mBAAO,CAAC,iEAAgB;AAC3C,eAAe,mBAAO,CAAC,gEAAmB;AAC1C,mBAAmB,mBAAO,CAAC,iEAAgB;AAC3C,0BAA0B,mBAAO,CAAC,iEAAgB;AAClD,wBAAwB,mBAAO,CAAC,0EAAwB;AACxD,iCAAiC,mBAAO,CAAC,0EAAwB;AACjE,oBAAoB,mBAAO,CAAC,yDAAY;AACxC,qBAAqB,mBAAO,CAAC,2DAAa;AAC1C,iBAAiB,mBAAO,CAAC,6DAAc;AACvC,0BAA0B,mBAAO,CAAC,+EAAuB;AACzD,gCAAgC,mBAAO,CAAC,gEAAmB;;AAE3D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAqC;;AAErC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA;AACA,IAAI,QAAQ,MAAM,WAAW;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,MAAM,QAAQ;AAC1B,YAAY,cAAc;AAC1B;AACA;AACA;AACA;AACA;;AAEA,gCAAgC;AAChC;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,QAAQ,aAAa,YAAY;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,0BAA0B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kCAAkC;AACnD,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,sDAAsD;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,0BAA0B;AAC1C;AACA,sCAAsC,8CAA8C;AACpF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA,YAAY,WAAW;AACvB,IAAI,YAAY;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,oCAAoC,qDAAqD;AACzF;AACA;AACA;AACA;AACA,kBAAkB,2BAA2B;AAC7C;AACA,kDAAkD;AAClD;AACA,+BAA+B,wCAAwC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qCAAqC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wCAAwC;AACrE,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,GAAG,QAAQ,GAAG;;AAE3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,oBAAoB;AACjD;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8DAA8D;AAC3F,GAAG;AACH;AACA,8BAA8B,oBAAoB;AAClD;AACA,EAAE;AACF,4BAA4B,oBAAoB;AAChD,EAAE;AACF;AACA;AACA;AACA;AACA,+BAA+B,qBAAqB;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,kBAAkB,KAAK,WAAW;AAC5C,IAAI,gBAAgB;AACpB,IAAI,gBAAgB;AACpB,gCAAgC,qBAAqB,GAAG,qBAAqB;AAC7E,QAAQ,uBAAuB;AAC/B,4CAA4C,YAAY;AACxD;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA,uBAAuB,WAAW,0BAA0B,YAAY;AACxE;AACA;AACA,YAAY,WAAW;AACvB,IAAI,WAAW;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,0BAA0B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;;;;;;;;;;;;AC3nBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4BAA4B,sBAAsB,yBAAyB;AAC3E,2BAA2B,uBAAuB,wBAAwB;AAC1E,yBAAyB,yBAAyB,sBAAsB;AACxE,yBAAyB,yBAAyB,sBAAsB;AACxE,6BAA6B,qBAAqB,yBAAyB;AAC3E,8BAA8B,oBAAoB,0BAA0B;AAC5E,yBAAyB,yBAAyB,sBAAsB;AACxE,yBAAyB,yBAAyB,sBAAsB;;AAExE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA,mBAAmB,WAAW,0BAA0B,kBAAkB;AAC1E;AACA,WAAW,WAAW;AACtB,mDAAmD,iBAAiB;AACpE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,WAAW,0BAA0B;AACzD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,eAAe;AAClC,IAAI,sBAAsB;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6CAA6C,sBAAsB;AACnE,sBAAsB,gBAAgB;AACtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,mBAAmB,cAAc,0BAA0B,qBAAqB;AAChF;AACA,WAAW,cAAc;AACzB,mDAAmD,iBAAiB;AACpE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,6CAA6C,qBAAqB;AAClE;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,WAAW,0BAA0B,kBAAkB;AAC1E;AACA,WAAW,WAAW;AACtB,mDAAmD,iBAAiB;AACpE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,6CAA6C,qBAAqB;AAClE;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,mBAAmB,WAAW,0BAA0B,kBAAkB;AAC1E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6CAA6C,kBAAkB;AAC/D,sBAAsB,gBAAgB;AACtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8CAA8C,yBAAyB;AACvE;AACA;AACA,OAAO,yBAAyB;AAChC;AACA,wEAAwE,IAAI;AAC5E;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ,yBAAyB;AACjC;AACA,QAAQ,yBAAyB;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iDAAiD,oBAAoB;AACrE;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC,IAAI,wBAAwB;AAC5B,qBAAqB,cAAc;AACnC,gDAAgD,wBAAwB;AACxE;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6CAA6C,wBAAwB;AACrE,sBAAsB,mBAAmB;AACzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B,kBAAkB;AAC7C,4CAA4C,0BAA0B;AACtE;AACA;AACA;AACA;AACA,uBAAuB,kCAAkC;AACzD,IAAI,gDAAgD;;AAEpD;AACA,WAAW,kBAAkB;AAC7B;AACA;AACA,IAAI,uCAAuC,UAAU,WAAW;AAChE;AACA,4CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB,gBAAgB,mBAAmB;AAC5D,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0C;;;;;;;;;;;AC7WA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU;;AAExC,gBAAgB,mBAAO,CAAC,gDAAU;AAClC,+BAA+B,mBAAO,CAAC,+DAAe;;AAEtD;AACA;AACA,0BAA0B,iBAAiB;AAC3C,iCAAiC,+BAA+B;AAChE,+CAA+C;AAC/C;AACA;AACA;;AAEA,cAAc,0BAA0B;AACxC,cAAc,0BAA0B;AACxC,IAAI,kBAAkB;AACtB;AACA;AACA;AACA,IAAI,qBAAqB,cAAc,WAAW;AAClD;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA,cAAc,0BAA0B;AACxC,OAAO,0BAA0B,MAAM,kBAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,0BAA0B;AACxC;AACA;AACA;AACA,IAAI,uCAAuC,UAAU,WAAW;AAChE,IAAI,sBAAsB,eAAe,iBAAiB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,WAAW;AACpE;AACA;AACA;AACA;AACA,cAAc,0BAA0B;AACxC;AACA;AACA;AACA;AACA,gBAAgB,8BAA8B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA,eAAe,YAAY;AAC3B;AACA,yBAAyB,sBAAsB;AAC/C,IAAI,YAAY,EAAE,iBAAiB;AACnC,IAAI,2BAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA,4CAA4C,uBAAuB;AACnE,IAAI,YAAY;AAChB;AACA;AACA,IAAI,sBAAsB,aAAa,YAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB;AAC/B,IAAI,6BAA6B;AACjC,IAAI,wBAAwB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yBAAyB,eAAe,sBAAsB;AACtE,4CAA4C;AAC5C;AACA,IAAI,sBAAsB,SAAS,oBAAoB;AACvD;AACA;AACA;AACA;AACA,IAAI,oBAAoB;AACxB;AACA,oBAAoB,wBAAwB;AAC5C;AACA;AACA,IAAI,gBAAgB,+BAA+B,eAAe;AAClE,IAAI,WAAW;AACf,IAAI,kBAAkB,sBAAsB,sBAAsB;AAClE,gDAAgD,sBAAsB;AACtE,IAAI,WAAW,aAAa,WAAW,MAAM,mBAAmB;AAChE,IAAI,mBAAmB;AACvB,IAAI,mBAAmB;AACvB,8CAA8C,KAAK,WAAW;AAC9D,iDAAiD,mBAAmB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA,WAAW,gDAAgD,EAAE,6CAA6C,SAAS,2BAA2B;AAC9I,WAAW,8CAA8C,MAAM,wBAAwB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,OAAO,SAAS;AAC5E,yDAAyD,OAAO,MAAM;AACtE;AACA,kBAAkB,OAAO,MAAM,KAAK,OAAO,MAAM;AACjD;AACA,0BAA0B,OAAO,GAAG,KAAK,OAAO,GAAG;AACnD,4BAA4B,OAAO,GAAG;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,kDAAY;AAChC;AACA;AACA;AACA,UAAU,mBAAO,CAAC,+CAAO;AACzB,eAAe,mBAAO,CAAC,yDAAY;AACnC,gBAAgB,mBAAO,CAAC,2DAAa;AACrC,mBAAmB,mBAAO,CAAC,iEAAgB;AAC3C,YAAY,mBAAO,CAAC,kDAAY;AAChC,eAAe,mBAAO,CAAC,gEAAmB;AAC1C,qBAAqB,mBAAO,CAAC,gEAAmB;AAChD,mBAAmB,mBAAO,CAAC,iEAAgB;AAC3C,qBAAqB,mBAAO,CAAC,qEAAkB;AAC/C,kBAAkB,mBAAO,CAAC,8DAAkB;AAC5C,wBAAwB,mBAAO,CAAC,0EAAwB;AACxD,sBAAsB,mBAAO,CAAC,uEAAmB;AACjD,yBAAyB,mBAAO,CAAC,yDAAY;AAC7C,oBAAoB,mBAAO,CAAC,yDAAY;AACxC,wBAAwB,mBAAO,CAAC,0EAAwB;AACxD,eAAe,mBAAO,CAAC,8DAAkB;AACzC,kBAAkB,mBAAO,CAAC,6DAAc;AACxC;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAO,CAAC,gEAAmB;;AAEtD,iCAAiC,mBAAO,CAAC,0EAAwB;AACjE,uCAAuC,mBAAO,CAAC,0EAAwB;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,sEAAsE;AACtE;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA;AACA,IAAI,QAAQ,MAAM,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,MAAM,QAAQ;AAC1B,YAAY,cAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,KAAK;AACL;AACA,oCAAoC,EAAE;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6BAA6B;AACjD;AACA;AACA;AACA,yCAAyC,aAAa;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6BAA6B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4BAA4B;AACjD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,iBAAiB,oBAAoB;AACvD,sBAAsB,cAAc;AACpC,0BAA0B,cAAc;AACxC;AACA,YAAY,sBAAsB;AAClC,IAAI,sBAAsB,4BAA4B,cAAc;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc;AAClB;AACA,YAAY,cAAc,2BAA2B,cAAc;AACnE;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,qBAAqB;AAC/D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA,+BAA+B,gDAAgD;AAC/E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI,0BAA0B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,sCAAsC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,UAAU,KAAK,cAAc;AAC3C;AACA,IAAI,gBAAgB;AACpB;AACA,yBAAyB,WAAW,uBAAuB;AAC3D;AACA;AACA;AACA;AACA,IAAI,0BAA0B;AAC9B;AACA;AACA,YAAY,4BAA4B;AACxC;AACA;AACA;AACA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,+BAA+B;AACxE,SAAS;AACT;AACA;AACA;AACA,YAAY,wBAAwB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,2BAA2B;AAC/B,IAAI,cAAc;AAClB;AACA;AACA;AACA;AACA;AACA,IAAI,wBAAwB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,8BAA8B;AACxD;AACA;AACA;AACA;AACA,uCAAuC,+BAA+B;AACtE;AACA;AACA;AACA,IAAI,wBAAwB;AAC5B,IAAI,2BAA2B;AAC/B,IAAI,+BAA+B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,cAAc;AACtB;AACA;AACA;AACA,qCAAqC,wBAAwB;AAC7D,IAAI,8BAA8B;AAClC,mBAAmB,wBAAwB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA,mDAAmD,oDAAoD;AACvG;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,WAAW,OAAO;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,WAAW,OAAO;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,gBAAgB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAA0B,eAAe;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB,UAAU;AAC7D;AACA,SAAS;AACT;AACA,+BAA+B,2CAA2C;AAC1E;AACA,KAAK;AACL,2BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB,UAAU;AAC7D;AACA,SAAS;AACT;AACA,+BAA+B,2CAA2C;AAC1E;AACA,KAAK;AACL,2BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mCAAmC;AAC7D;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,eAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI,oBAAoB,gBAAgB,SAAS;AACjD,YAAY,WAAW,KAAK,WAAW,SAAS,QAAQ;AACxD;AACA;AACA;AACA,UAAU,SAAS,KAAK,WAAW,uBAAuB,WAAW;AACrE,uCAAuC,eAAe;AACtD,IAAI,oBAAoB,UAAU,SAAS;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS,KAAK,WAAW,uBAAuB;AAC/D,wDAAwD;AACxD,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,oEAAoE;AACpE;AACA,mBAAmB,QAAQ;AAC3B;AACA,UAAU,QAAQ,KAAK,cAAc,uBAAuB,cAAc;AAC1E;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ,4BAA4B,QAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gD;;;;;;;;;;;AC/rDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,mBAAO,CAAC,kDAAY;AAC9B,UAAU,mBAAO,CAAC,kDAAY;AAC9B,aAAa,mBAAO,CAAC,kDAAY;AACjC,cAAc,mBAAO,CAAC,kDAAY;AAClC,UAAU,mBAAO,CAAC,+CAAO;AACzB,oBAAoB,mBAAO,CAAC,yDAAY;AACxC,mBAAmB,mBAAO,CAAC,iEAAgB;AAC3C,gBAAgB,mBAAO,CAAC,2DAAa;AACrC,sBAAsB,mBAAO,CAAC,uEAAmB;AACjD,WAAW,mBAAO,CAAC,gDAAU;AAC7B,gBAAgB,mBAAO,CAAC,kDAAY;AACpC,kBAAkB,mBAAO,CAAC,kDAAY;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW;AACf,+CAA+C,YAAY;AAC3D;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,WAAW;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,KAAK,MAAM,OAAO,KAAK;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,sDAAsD,IAAI;AACjE;AACA,wDAAwD,QAAQ,EAAE;AAClE,+BAA+B,iCAAiC;AAChE,IAAI,cAAc,MAAM,cAAc;AACtC;AACA,QAAQ,eAAe;AACvB;AACA;AACA;AACA,OAAO,iDAAiD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA,OAAO,kBAAkB,eAAe,EAAE,EAAE;AAC5C;AACA;AACA,IAAI,QAAQ,MAAM,SAAS;AAC3B,yBAAyB,kBAAkB;AAC3C;AACA;AACA,OAAO,kBAAkB,eAAe,EAAE,iBAAiB,EAAE;AAC7D;AACA;AACA,IAAI,uCAAuC;AAC3C;AACA,IAAI,mBAAmB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA,mCAAmC,qCAAqC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC,cAAc;AACjD,IAAI,oBAAoB;AACxB;AACA;AACA;AACA;AACA,YAAY,WAAW,0BAA0B,cAAc;AAC/D,IAAI,oBAAoB,aAAa;AACrC;AACA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,cAAc;AAClD,IAAI,oBAAoB;AACxB;AACA;AACA;AACA;AACA,YAAY,WAAW,2BAA2B,cAAc;AAChE,IAAI,oBAAoB,aAAa;AACrC;AACA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,QAAQ;AACpE,wBAAwB,qBAAqB;AAC7C;AACA,cAAc,uBAAuB,MAAM,yBAAyB;AACpE,kBAAkB,qBAAqB,cAAc;AACrD,QAAQ,qBAAqB,MAAM,WAAW;AAC9C;AACA;AACA;AACA;AACA,OAAO,iBAAiB,oBAAoB;AAC5C,IAAI,QAAQ,UAAU,QAAQ,MAAM,UAAU;AAC9C;AACA,iDAAiD,QAAQ,KAAK,QAAQ;AACtE;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA,qBAAqB,UAAU,iBAAiB,cAAc;AAC9D;AACA,UAAU,kBAAkB;AAC5B,IAAI,QAAQ,MAAM,UAAU;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gBAAgB,MAAM,iBAAiB;AACjE,SAAS,WAAW,MAAM,WAAW;AACrC,IAAI,gBAAgB;AACpB,SAAS,QAAQ,uCAAuC,QAAQ;AAChE,IAAI,QAAQ;AACZ,wDAAwD,QAAQ;AAChE,IAAI,SAAS;AACb,6DAA6D,QAAQ;AACrE,IAAI,SAAS,UAAU,QAAQ,qCAAqC;AACpE,0BAA0B,QAAQ;AAClC,sBAAsB,aAAa,uBAAuB,QAAQ;AAClE,oBAAoB,UAAU;AAC9B,IAAI,QAAQ,sCAAsC,QAAQ;AAC1D;AACA;AACA,0DAA0D,QAAQ;AAClE,IAAI,SAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,sBAAsB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,SAAS,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB;AAC/D,IAAI,iBAAiB,GAAG,iBAAiB;AACzC,IAAI,OAAO,GAAG,qBAAqB,WAAW,IAAI,EAAE,IAAI,WAAW,IAAI,EAAE;AACzE,IAAI,OAAO,KAAK,MAAM;AACtB;AACA;AACA,QAAQ,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB;AAC/D,IAAI,iBAAiB,GAAG,kBAAkB;AAC1C,IAAI,OAAO,GAAG,qBAAqB,WAAW,IAAI,EAAE,IAAI,WAAW,IAAI,EAAE;AACzE,IAAI,OAAO,GAAG,MAAM;AACpB;AACA,QAAQ,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB;AAC/D,IAAI,iBAAiB,mCAAmC,OAAO,GAAG;AAClE,IAAI,OAAO,GAAG,IAAI,OAAO,GAAG,MAAM;AAClC,cAAc,OAAO,KAAK;AAC1B;AACA,QAAQ,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB;AAC/D,IAAI,iBAAiB,mCAAmC,OAAO,GAAG;AAClE,IAAI,OAAO,GAAG,IAAI,OAAO,KAAK,MAAM;AACpC;AACA,QAAQ,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB;AAC/D,IAAI,iBAAiB,mCAAmC,OAAO,GAAG;AAClE,IAAI,OAAO,GAAG,IAAI,OAAO,KAAK,MAAM;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,iEAAiE;AACjE,2CAA2C,UAAU;AACrD,IAAI,UAAU,IAAI,GAAG,MAAM;AAC3B,gCAAgC,OAAO,GAAG;AAC1C;AACA;AACA;AACA,IAAI,UAAU,MAAM,KAAK,QAAQ,IAAI,EAAE,MAAM;AAC7C;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA,YAAY,WAAW,WAAW,aAAa,KAAK,cAAc;AAClE,IAAI,sCAAsC,KAAK,eAAe;AAC9D;AACA;AACA;AACA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA,YAAY,WAAW,KAAK,cAAc,aAAa,aAAa;AACpE,IAAI,sCAAsC,eAAe;AACzD;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA,YAAY,WAAW,KAAK,cAAc,aAAa,aAAa;AACpE,IAAI,sCAAsC,KAAK,eAAe;AAC9D;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA,YAAY,WAAW,qBAAqB,cAAc;AAC1D,sBAAsB;AACtB;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI,cAAc;AAClB,IAAI,8BAA8B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,+DAA+D;AAC/D,OAAO,cAAc;AACrB;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA,iCAAiC,cAAc,EAAE;AACjD;AACA;;AAEA;AACA;AACA,2BAA2B,QAAQ,KAAK,cAAc;AACtD;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA;;AAEA;AACA;AACA,+CAA+C,+CAA+C;AAC9F,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA,kBAAkB,QAAQ,KAAK,cAAc;AAC7C;AACA;AACA,UAAU,6BAA6B,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA,SAAS,2BAA2B;AACpC;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9iBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,aAAa,wBAAwB,aAAa;AACrE;AACA,0BAA0B,UAAU,GAAG,SAAS,OAAO,gBAAgB;AACvE,KAAK,sBAAsB;AAC3B;;AAEA,UAAU,mBAAO,CAAC,kDAAY;AAC9B,WAAW,mBAAO,CAAC,kDAAY;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,aAAa,kCAAkC,WAAW;AAClE;AACA,QAAQ,WAAW,kCAAkC,YAAY;AACjE;AACA,QAAQ,WAAW;AACnB;AACA,cAAc,WAAW,EAAE,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E;AACA;;AAEA;AACA;;AAEA,eAAe,sBAAsB;AACrC,2BAA2B,OAAO,KAAK,EAAE;AACzC;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,8CAA8C;AACxD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA,UAAU,0BAA0B;AACpC;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACnZA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,kDAAY;AAChC,eAAe,mBAAO,CAAC,8DAAkB;AACzC,kBAAkB,mBAAO,CAAC,8DAAkB;AAC5C,gBAAgB,mBAAO,CAAC,uEAAmB;AAC3C,0BAA0B,mBAAO,CAAC,uEAAmB;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,WAAW,oBAAoB;AACxD;AACA;AACA,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,qBAAqB,sCAAsC;AAC3D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B;AACA,mCAAmC;AACnC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kE;;;;;;;;;;;AC3TA;AACA;AACA;AACA;;AAEA,cAAc,mBAAO,CAAC,+CAAO;AAC7B,0BAA0B,mBAAO,CAAC,uEAAmB;AACrD,4BAA4B,mBAAO,CAAC,2EAAqB;AACzD,6BAA6B,mBAAO,CAAC,6EAAsB;AAC3D,yBAAyB,mBAAO,CAAC,qEAAkB;;;;;;;;;;;;ACTnD;AACA;AACA;AACA;AACA;;AAEA,UAAU,mBAAO,CAAC,gDAAU;AAC5B,eAAe,mBAAO,CAAC,yDAAY;AACnC,yBAAyB,mBAAO,CAAC,8DAAiB;AAClD,mBAAmB,mBAAO,CAAC,wEAAuB;AAClD,oBAAoB,mBAAO,CAAC,mEAAiB;AAC7C,yBAAyB,mBAAO,CAAC,mEAAiB;;;;AAIlD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,UAAU;AAC5C,MAAM,UAAU;AAChB;AACA;AACA,KAAK,WAAW,0CAA0C;AAC1D,KAAK,YAAY,iCAAiC,wBAAwB;AAC1E,KAAK,yBAAyB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI,WAAW;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,eAAe;AAC3B,WAAW,oBAAoB,KAAK,YAAY;AAChD,IAAI,WAAW,YAAY,YAAY;AACvC,IAAI,eAAe,yBAAyB,sBAAsB;AAClE;AACA,YAAY,sBAAsB;AAClC;AACA;AACA,yBAAyB,WAAW,6BAA6B;AACjE,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxJA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,wEAAuB;AAClD,YAAY,mBAAO,CAAC,kDAAY;AAChC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,oBAAoB;AACzB,KAAK,iBAAiB,UAAU,eAAe;AAC/C;AACA;AACA;AACA,oBAAoB,8BAA8B,OAAO;AACzD,kBAAkB,aAAa;AAC/B,KAAK,4BAA4B;AACjC;AACA;AACA;AACA;AACA,KAAK,kCAAkC;AACvC;AACA;AACA;AACA;AACA,KAAK,4BAA4B,KAAK,YAAY;AAClD;AACA,2CAA2C,mBAAmB;AAC9D,KAAK,8BAA8B;AACnC;AACA,kCAAkC,4BAA4B;AAC9D;AACA;AACA;AACA;AACA,iCAAiC;AACjC,0CAA0C;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA,QAAQ,eAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,sCAAsC;AAC1C;AACA,IAAI,oBAAoB;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACvJA;AACA;AACA;AACA;;AAEA,cAAc,mBAAO,CAAC,+CAAO;AAC7B,wBAAwB,mBAAO,CAAC,mEAAiB;AACjD,6BAA6B,mBAAO,CAAC,mEAAiB;AACtD,yBAAyB,mBAAO,CAAC,yDAAY;;;;;;;;;;;;ACR7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,yBAAyB;AACpD;AACA,wBAAwB,mCAAmC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,mBAAO,CAAC,kDAAY;AACjC,oBAAoB,mBAAO,CAAC,qEAAiB;AAC7C,eAAe,mBAAO,CAAC,8DAAkB;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB,eAAe,WAAW;AACjE,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,0BAA0B;AAC1C;AACA;AACA,UAAU,mCAAmC;AAC7C;;AAEA,0D;;;;;;;;;;;AC9GA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD,yBAAyB;AACzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC,2BAA2B;AAC9D;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA,2CAA2C,kBAAkB;AAC7D,cAAc,WAAW,GAAG,yBAAyB,OAAO,UAAU;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,kEAAkE,EAAE;AACxG;;AAEA;AACA,oCAAoC,sFAAsF,EAAE;AAC5H;;AAEA;AACA,iCAAiC,iGAAiG,EAAE;AACpI;;AAEA;AACA,iCAAiC,yFAAyF,EAAE;AAC5H;;AAEA;AACA;AACA;;;;;;;;;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,kDAAY;AAChC,aAAa,mBAAO,CAAC,uDAAU;AAC/B;AACA;AACA;AACA;AACA,eAAe,mBAAO,CAAC,gEAAmB;AAC1C,eAAe,mBAAO,CAAC,8DAAkB;AACzC,kBAAkB,mBAAO,CAAC,8DAAkB;;AAE5C;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;AAIA,0CAA0C,yBAAyB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+CAA+C,0BAA0B;AACzE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA,+CAA+C,0BAA0B;AACzE;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA,gDAAgD;AAChD,mEAAmE;AACnE;AACA;AACA;AACA,QAAQ,2BAA2B;AACnC,IAAI,kCAAkC;AACtC,QAAQ,6BAA6B;AACrC,IAAI,4BAA4B;AAChC,QAAQ,+BAA+B;AACvC,IAAI,8BAA8B;AAClC,+BAA+B,mCAAmC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,+BAA+B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gCAAgC;AAC3C;AACA;AACA,2CAA2C,aAAa;AACxD;AACA;AACA;AACA;AACA,oCAAoC,aAAa,GAAG,aAAa;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,EAAE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,oBAAoB;AAC1C,IAAI,2BAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,oBAAoB;AAC1C,IAAI,6BAA6B;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,oBAAoB;AAC1C,IAAI,+BAA+B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,YAAY;AAC5C;AACA,IAAI,iBAAiB;AACrB;AACA,kCAAkC,4BAA4B;AAC9D;AACA;AACA;AACA;AACA,6CAA6C,4BAA4B;AACzE;AACA,IAAI,mCAAmC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA;AACA,6CAA6C,4BAA4B;AACzE;AACA,IAAI,mCAAmC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,6BAA6B;AACjC;AACA;AACA;AACA,OAAO,YAAY,qCAAqC,YAAY;AACpE,sCAAsC,YAAY;AAClD;AACA,QAAQ,YAAY;AACpB;AACA,gDAAgD;AAChD,yBAAyB;AACzB;AACA;AACA;AACA,4BAA4B,YAAY;AACxC,uBAAuB,YAAY;AACnC,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA,gDAAgD;AAChD,0BAA0B;AAC1B;AACA;AACA;AACA,0BAA0B,YAAY,yBAAyB,UAAU;AACzE,+CAA+C,WAAW;AAC1D;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA,uCAAuC,UAAU;AACjD;AACA;AACA;AACA,QAAQ,kCAAkC;AAC1C;AACA;AACA;AACA,yBAAyB,UAAU,yBAAyB,QAAQ,EAAE;AACtE,SAAS,sBAAsB,4BAA4B,eAAe;AAC1E,gDAAgD,UAAU;AAC1D,YAAY,WAAW,qCAAqC,UAAU;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA,8BAA8B,sBAAsB;AACpD;AACA,mBAAmB,WAAW,GAAG,iBAAiB;AAClD;AACA;AACA;AACA,oBAAoB,YAAY;AAChC,2BAA2B,YAAY;AACvC,IAAI,WAAW;AACf;AACA;AACA;AACA,YAAY,WAAW;AACvB,yDAAyD;AACzD;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,8BAA8B,sBAAsB;AACpD;AACA;AACA,IAAI,iBAAiB;AACrB;AACA;AACA;AACA,IAAI,4BAA4B;AAChC,IAAI,sBAAsB;AAC1B,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA,qCAAqC,YAAY;AACjD;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,qCAAqC;AACrC;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,QAAQ;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,yBAAyB;AACpD;AACA,IAAI,iCAAiC;AACrC,IAAI,mCAAmC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8BAA8B;AACpD;AACA;AACA;AACA,QAAQ,wBAAwB;AAChC;AACA;AACA;AACA;AACA,IAAI,yDAAyD;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC,QAAQ;AACjD,SAAS,iCAAiC;AAC1C,+BAA+B,4BAA4B;AAC3D,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACnvBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,mBAAO,CAAC,oEAAqB;;AAEvD;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC,iEAAiE;AACjE;AACA;AACA;AACA,sBAAsB,2BAA2B;AACjD,QAAQ,gCAAgC;AACxC,QAAQ,oBAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA,yBAAyB,WAAW;AACpC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,oDAAoD;AACtF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,wDAAwD;AAC1F;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,0FAA0F;AAC5H;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,mCAAmC,kBAAkB;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACxKA;AACA;AACA;AACA;;AAEA,+BAA+B,mBAAO,CAAC,uDAAU;AACjD,+BAA+B,mBAAO,CAAC,uDAAU;AACjD,oCAAoC,mBAAO,CAAC,uDAAU;AACtD,iCAAiC,mBAAO,CAAC,uDAAU;AACnD,mCAAmC,mBAAO,CAAC,uDAAU;AACrD,kCAAkC,mBAAO,CAAC,yFAA2B;AACrE,4BAA4B,mBAAO,CAAC,qEAAiB;AACrD,wBAAwB,mBAAO,CAAC,qEAAiB;;;;;;;;;;;;ACZjD;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,uDAAa;AACnC,sBAAsB,mBAAO,CAAC,+EAAyB;AACvD,cAAc,mBAAO,CAAC,uDAAa;AACnC,wBAAwB,mBAAO,CAAC,mFAA2B;AAC3D,eAAe,mBAAO,CAAC,yDAAc;AACrC,gBAAgB,mBAAO,CAAC,2DAAe;AACvC,gBAAgB,mBAAO,CAAC,+CAAS;AACjC,sBAAsB,mBAAO,CAAC,2DAAe;AAC7C,sBAAsB,mBAAO,CAAC,+CAAS;AACvC,sBAAsB,mBAAO,CAAC,2DAAe;AAC7C,qBAAqB,mBAAO,CAAC,yDAAc;AAC3C,4BAA4B,mBAAO,CAAC,uEAAqB;AACzD,gBAAgB,mBAAO,CAAC,+CAAS;AACjC,iBAAiB,mBAAO,CAAC,iDAAU;AACnC,SAAS,mBAAO,CAAC,uEAAqB;AACtC;AACA,4BAA4B,mBAAO,CAAC,uEAAqB;AACzD,mBAAmB,mBAAO,CAAC,2DAAe;AAC1C,gBAAgB,mBAAO,CAAC,+CAAS;;;;;;;;;;;;ACtBjC;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA,EAAE;AACF;;;;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,KAAK,OAAO,sBAAsB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA,EAAE;AACF;;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,kDAAY;AAChC,eAAe,mBAAO,CAAC,8DAAkB;AACzC;AACA,YAAY,mBAAO,CAAC,mDAAa;;;AAGjC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,wCAAwC;AAC5C,IAAI,kBAAkB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACrOA;AACA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,kDAAY;AAChC,YAAY,mBAAO,CAAC,kDAAY;AAChC,eAAe,mBAAO,CAAC,kDAAQ;AAC/B,gBAAgB,mBAAO,CAAC,kDAAQ;AAChC,mBAAmB,mBAAO,CAAC,kDAAQ;AACnC,wBAAwB,mBAAO,CAAC,0EAAwB;AACxD,kBAAkB,mBAAO,CAAC,8DAAkB;AAC5C,yBAAyB,mBAAO,CAAC,sDAAc;;;AAG/C;AACA;AACA;;AAEA,yCAAyC,oBAAoB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;;;AAGA,sB;;;;;;;;;;;AC3IA;AACA;AACA;AACA;;AAEA,WAAW,mBAAO,CAAC,kDAAQ;AAC3B,gBAAgB,mBAAO,CAAC,oDAAS;AACjC;AACA;AACA;AACA;;;;;;;;;;;;ACVA,mCAAC;AACD;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA,+BAA+B,gBAAgB,EAAE;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,mDAAmD;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;;;AAGT;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,0CAA0C,OAAO;AACjD;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET,gDAAgD,IAAI,OAAO,IAAI;AAC/D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,aAAa;AAChC;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAU,KAAK;AACf;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,eAAe,GAAG;;AAElB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,UAAU;AACpB;AACA;;AAEA;AACA;;AAEA,wCAAwC,0BAA0B;AAClE;;AAEA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,sBAAsB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,sBAAsB,cAAc;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,KAAK;AACtB;;AAEA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,6BAA6B,OAAO;;AAEpC;AACA,uBAAuB,OAAO;;AAE9B;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,iBAAiB;;AAE3B;AACA,UAAU,aAAa;;AAEvB;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,KAAK;AACjB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,gBAAgB;;AAEzC;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA,UAAU,eAAe;AACzB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET,gDAAgD,IAAI,OAAO,IAAI;AAC/D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,KAAK;;AAErB;AACA,iBAAiB,UAAU;AAC3B;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,UAAU;;AAEpB;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,sBAAsB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B,WAAW,OAAO;AAClB;AACA,iDAAiD,GAAG;AACpD,+CAA+C,GAAG;AAClD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,GAAG,SAAS,GAAG;AAC5B;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA,mCAAmC,GAAG;AACtC,qCAAqC,GAAG;AACxC,4CAA4C,GAAG;AAC/C,0CAA0C,GAAG;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,UAAU,cAAc;;AAExB;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,SAAS;;AAE3B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,UAAU;AACpB,6BAA6B,QAAQ;AACrC;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,mBAAmB,KAAK;AACxB;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB,KAAK;AAC9B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,YAAY,MAAM;AAClB;AACA;AACA;AACA;;AAEA;AACA,YAAY,uBAAuB;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,uBAAuB;;AAExC;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,WAAW;;AAE3B;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,WAAW;;AAEX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,8BAA8B,SAAS;AACvC;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,SAAS;AAC1C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;;AAEA;AACA,0BAA0B,SAAS;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,eAAe;;AAEf;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA,uBAAuB,SAAS;;AAEhC;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,eAAe;AACxC;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA,wBAAwB,SAAS;AACjC;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,YAAY,aAAa;;AAEzB;AACA,yBAAyB,SAAS;AAClC;;AAEA;AACA;;;AAGA;AACA;AACA,UAAU,KAAK;AACf;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC;AACrC;;AAEA;;AAEA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,mBAAmB;AAC7B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,eAAe,0BAA0B;;AAEzC;AACA,0BAA0B,gCAAgC;AAC1D;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B,SAAS;AACtC;AACA;AACA,OAAO;AACP;AACA;;AAEA,YAAY,KAAK;AACjB;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2CAA2C,kBAAkB;AAC7D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAK;AACf;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,YAAY,gBAAgB;;AAE5B;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,cAAc;;AAE3C;AACA,6BAA6B,SAAS;;AAEtC;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS;AAClC;AACA,mCAAmC,cAAc;;AAEjD;AACA,qCAAqC,SAAS;AAC9C,aAAa;AACb;AACA;AACA;;AAEA;AACA,SAAS;AACT,gBAAgB,KAAK;AACrB;AACA,SAAS;AACT,uCAAuC,MAAM;AAC7C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;AACR,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,mBAAmB;AACnB,mBAAmB;AACnB,mBAAmB;AACnB,mBAAmB;AACnB,mBAAmB;AACnB,mBAAmB;AACnB,mBAAmB;AACnB,mBAAmB;AACnB;AACA,0BAA0B,6BAA6B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU,sBAAsB;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,4BAA4B,SAAS;;AAErC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,0BAA0B;AAC1B;AACA,0BAA0B;AAC1B;AACA,wBAAwB;AACxB;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,0BAA0B;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,wBAAwB;AACxB;AACA;AACA;AACA,wBAAwB;AACxB,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;AACR,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,eAAe,sBAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;AACR,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;AACR,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,YAAY,OAAO;;AAEnB;AACA,KAAK;AACL;;AAEA,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA,YAAY,OAAO;;AAEnB;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,aAAa;;AAEvB;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,YAAY,aAAa;;AAEzB;AACA,4BAA4B,SAAS;;AAErC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ;AACR,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA;;;AAGA;AACA,MAAM,IAAyC;AAC/C,IAAI,mCAAO;AACX;AACA,KAAK;AAAA,oGAAC;;AAEN;AACA,GAAG,MAAM,EAqBN;AACH,CAAC;;;;;;;;;;;;AChwJD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,MAAM,KAA0B;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,YAAY;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,YAAY;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,YAAY;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS;AAClB;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA,gBAAgB,IAAI;;AAEpB;AACA;;AAEA;;AAEA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS;;AAET;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ,6BAA6B;AAChD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,gCAAgC,MAAM;AACtC;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,eAAe;;AAEf,SAAS;;AAET;AACA,QAAQ,iCAAiC;AACzC,QAAQ,oBAAoB;AAC5B,QAAQ,sCAAsC;AAC9C,QAAQ;AACR,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,gBAAgB,aAAa,EAAE;AAC/B;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,4DAA4D;;AAE5D;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;AACA;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gEAAgE;;AAEhE;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,iEAAiE,UAAU;AAC3E,sCAAsC,2BAA2B;AACjE;AACA,gCAAgC,MAAM;AACtC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,UAAU;AACpB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,UAAU,cAAc;AACxB;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA,YAAY,uEAAuE;AACnF;AACA;AACA,YAAY,4BAA4B;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,2DAA2D;;AAE3D;AACA;AACA,oFAAoF;;AAEpF;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,QAAQ,SAAS;AACjB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iDAAiD;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD;AACjD,UAAU,wCAAwC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA,CAAC;;;;AAID;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,QAAQ,GAAG;AACX;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;;;AAIA;;AAEA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA,cAAc,SAAS;AACvB;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,OAAO;AACjB,0BAA0B,wBAAwB;;AAElD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA,0CAA0C;AAC1C,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;;;AAIA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU,cAAc;AACxB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA,OAAO;AACP,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wCAAwC,sCAAsC;AAC9E,oCAAoC,uCAAuC;AAC3E,oCAAoC,sCAAsC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,OAAO;AACP;AACA,MAAM;AACN,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC,qCAAqC;AACrC,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,EAAE;AACF;;;;;AAKA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,aAAa;AACpC,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD;;AAEA;;AAEA;;;;AAIA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,EAAE;AACF;;AAEA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;AACf;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB;AAClB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA,WAAW;;AAEX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA,oDAAoD;AACpD;;AAEA;AACA;;AAEA,cAAc,sBAAsB;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,+DAA+D;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,cAAc;;AAExB;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uCAAuC;AACjE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,uDAAuD;AAC9E;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;AACtC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC,cAAc;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,OAAO;AACjB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,+BAA+B;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uCAAuC,OAAO;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC,OAAO;AAC/C;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,SAAS,qCAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA,SAAS,8BAA8B;AACvC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAW;AACpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;AAIA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+CAA+C,cAAc,WAAW;AACxE,mBAAmB,UAAU;AAC7B;AACA,sBAAsB,cAAc,sBAAsB,gBAAgB;AAC1E,gBAAgB,WAAW,YAAY;AACvC,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,+DAA+D;AAC3E;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,OAAO;;AAEf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;;AAEA,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,QAAQ,OAAO;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,iDAAiD,0BAA0B;AAC3E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,gBAAgB;AAC1B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,2BAA2B;AAC3B;AACA,qBAAqB;AACrB;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;;AAEA,6CAA6C;AAC7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,gBAAgB;AACzB;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;AACF;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,cAAc;AAClC,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,SAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,UAAU,kBAAkB;AAC5B,WAAW,kBAAkB;AAC7B,cAAc;AACd,CAAC;AACD;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAQ,mBAAmB;AAC3B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;AAKD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA,iCAAiC;AACjC;AACA;;AAEA,IAAI;AACJ;;AAEA,IAAI;AACJ;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA;AACA,WAAW,SAAS;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;;AAGA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,sCAAsC;AACtC;AACA;AACA;;AAEA;;AAEA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA,UAAU,KAAK;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qCAAqC;;AAEpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,KAAK;AACL;;AAEA,WAAW;AACX,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB,gDAAgD;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;;AAEA;AACA;;AAEA;AACA,iBAAiB;AACjB,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC;;AAElC;AACA,sBAAsB;AACtB,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,mDAAmD;AACnD;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,uBAAuB;AAClC,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;AACA;AACA;AACA,EAAE;AACF;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA,cAAc,sDAAsD;AACpE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA,cAAc,mCAAmC;AACjD,eAAe,6DAA6D;AAC5E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,EAAE;AACF,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;;;;AAKD;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK,IAA0C;AAC/C,CAAC,iCAAkB,EAAE,mCAAE;AACvB;AACA,EAAE;AAAA,oGAAE;AACJ;;;;;AAKA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA,CAAC;;;;;;;;;;;;;AC3nUD;AAAA;AAAA;AACA;AACA,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,YAAY,EAAE;AACxE;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC0B;;;;;;;;;;;;;ACpC3B;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA,6CAA6C,YAAY,EAAE;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC8B;;;;;;;;;;;;;ACxB/B;AAAA;AAAA;AAA4C;AAC5C;AACA;AACA,wCAAwC,wBAAwB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6BAA6B;AAClD;AACA;AACA,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C,sCAAsC,wDAAW;AACjD;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C,sCAAsC,wDAAW;AACjD;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C,sCAAsC,wDAAW;AACjD;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,wDAAW;AACvB;AACA;AACA,iBAAiB,wDAAW;AAC5B;AACA;AACA,iBAAiB,wDAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;;;;;;;;;;;;;AC9F5B;AAAA;AAAO;AACP;AACA;AACA;AACA;AACA,CAAC,kCAAkC;;;;;;;;;;;;;ACLnC;AAAA;AAAA;AAAA;AAAA;AAAoD;AACE;AACV;AACgB;AAC7C;AACf,qBAAqB,gEAAe;AACpC,yBAAyB,wEAAmB;AAC5C,sBAAsB,kEAAgB;AACtC,iBAAiB,wDAAW;AAC5B,CAAC,EAAC;;;;;;;;;;;;;ACTF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;AACb;AACA,QAAQ,IAA2B;AACnC;AACA;AACA;AACA;AACA,KAAK,MAAM,EASN;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,4BAA4B;;AAE5B;AACA;AACA,iFAAiF,QAAQ;AACzF,KAAK,YAAY;;AAEjB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,6BAA6B,YAAY;AACzC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,YAAY;AACzC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,oB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,S;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;;;AAGA;;AAEA,sFAAsF;AACtF;AACA;;AAEA;AACA,+DAA+D;AAC/D;AACA,kCAAkC,mBAAmB,UAAU;AAC/D;AACA;AACA;AACA,S;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA,qCAAqC;AACrC;AACA;AACA,8DAA8D;AAC9D;;;AAGA;AACA;AACA;AACA;;;AAGA;;AAEA,sFAAsF;AACtF;AACA;;AAEA,qBAAqB,gBAAgB,OAAO;AAC5C;AACA;AACA;;AAEA;;AAEA;AACA,sFAAsF;AACtF;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA,6EAA6E;AAC7E;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;;AAEA,mFAAmF;AACnF;AACA;;AAEA;AACA;AACA,8BAA8B,mBAAmB,UAAU;AAC3D,iCAAiC;AACjC;AACA,6CAA6C;AAC7C,SAAS;AACT;AACA;AACA,yCAAyC;AACzC;AACA;AACA,8DAA8D;AAC9D,yBAAyB;AACzB,8CAA8C;AAC9C;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;;;AAGA;;AAEA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,4D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6C;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,S;AACA,kD;AACA;AACA;;AAEA;AACA,2E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iB;AACA;AACA,aAAa;;AAEb;AACA;AACA,a;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM;AACzC;AACA;AACA;AACA;AACA;AACA,wCAAwC,qBAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qBAAqB,6BAA6B;AAClD;AACA;AACA;AACA;;AAEA,yCAAyC;;AAEzC;AACA,gC;AACA;AACA,2B;AACA;;AAEA;AACA;AACA,6B;AACA;AACA;AACA;AACA;AACA,yD;AACA,4BAA4B,MAAM;AAClC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA,SAAS;AACT,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA,a;AACA;AACA;AACA,a;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;;AAEA,oDAAoD,KAAK;AACzD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA,mCAAmC,+BAA+B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,oBAAoB,0BAA0B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,S;AACA;;AAEA;;AAEA;AACA,oBAAoB,yBAAyB;;AAE7C;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,aAAa;;AAEb;;AAEA;AACA;AACA,qCAAqC,uCAAuC;AAC5E;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,2BAA2B,2BAA2B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,qBAAqB,yBAAyB;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB,yBAAyB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,M;;AAEA;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B,mCAAmC;;AAEnC;;AAEA,CAAC","file":"ivprog.bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ivprogCore\"] = factory();\n\telse\n\t\troot[\"ivprogCore\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./js/main.js\");\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Generated from /tmp/tmp-8955ezAWNeCZqSsf/ivprog.g4 by ANTLR 4.7\n// jshint ignore: start\nvar antlr4 = __webpack_require__(2);\n\n\nvar serializedATN = [\"\\u0003\\u608b\\ua72a\\u8133\\ub9ed\\u417c\\u3be7\\u7786\\u5964\",\n \"\\u0002/\\u01d1\\b\\u0001\\u0004\\u0002\\t\\u0002\\u0004\\u0003\\t\\u0003\\u0004\",\n \"\\u0004\\t\\u0004\\u0004\\u0005\\t\\u0005\\u0004\\u0006\\t\\u0006\\u0004\\u0007\\t\",\n \"\\u0007\\u0004\\b\\t\\b\\u0004\\t\\t\\t\\u0004\\n\\t\\n\\u0004\\u000b\\t\\u000b\\u0004\",\n \"\\f\\t\\f\\u0004\\r\\t\\r\\u0004\\u000e\\t\\u000e\\u0004\\u000f\\t\\u000f\\u0004\\u0010\",\n \"\\t\\u0010\\u0004\\u0011\\t\\u0011\\u0004\\u0012\\t\\u0012\\u0004\\u0013\\t\\u0013\",\n \"\\u0004\\u0014\\t\\u0014\\u0004\\u0015\\t\\u0015\\u0004\\u0016\\t\\u0016\\u0004\\u0017\",\n \"\\t\\u0017\\u0004\\u0018\\t\\u0018\\u0004\\u0019\\t\\u0019\\u0004\\u001a\\t\\u001a\",\n \"\\u0004\\u001b\\t\\u001b\\u0004\\u001c\\t\\u001c\\u0004\\u001d\\t\\u001d\\u0004\\u001e\",\n \"\\t\\u001e\\u0004\\u001f\\t\\u001f\\u0004 \\t \\u0004!\\t!\\u0004\\\"\\t\\\"\\u0004#\",\n \"\\t#\\u0004$\\t$\\u0004%\\t%\\u0004&\\t&\\u0004\\'\\t\\'\\u0004(\\t(\\u0004)\\t)\\u0004\",\n \"*\\t*\\u0004+\\t+\\u0004,\\t,\\u0004-\\t-\\u0004.\\t.\\u0004/\\t/\\u00040\\t0\\u0004\",\n \"1\\t1\\u00042\\t2\\u00043\\t3\\u00044\\t4\\u00045\\t5\\u00046\\t6\\u00047\\t7\\u0004\",\n \"8\\t8\\u00049\\t9\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\",\n \"\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0003\\u0003\\u0003\\u0003\",\n \"\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\",\n \"\\u0004\\u0003\\u0004\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\",\n \"\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0006\\u0003\\u0006\\u0003\",\n \"\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0007\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\",\n \"\\u0007\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\",\n \"\\b\\u0003\\b\\u0003\\b\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\",\n \"\\t\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\u000b\\u0003\\u000b\\u0003\",\n \"\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\",\n \"\\u000b\\u0003\\u000b\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\",\n \"\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\",\n \"\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\",\n \"\\u000e\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0011\\u0003\",\n \"\\u0011\\u0003\\u0011\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\\u0014\\u0003\",\n \"\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0015\\u0003\\u0015\\u0003\",\n \"\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0016\\u0003\\u0016\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0019\\u0003\",\n \"\\u0019\\u0003\\u0019\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\\u001b\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001d\\u0003\\u001d\\u0003\\u001e\\u0003\\u001e\\u0003\",\n \"\\u001f\\u0003\\u001f\\u0003 \\u0003 \\u0003!\\u0003!\\u0003\\\"\\u0003\\\"\\u0003\",\n \"#\\u0003#\\u0003$\\u0003$\\u0003%\\u0003%\\u0003&\\u0003&\\u0003&\\u0003&\\u0003\",\n \"&\\u0003&\\u0003&\\u0003&\\u0003&\\u0005&\\u0125\\n&\\u0003\\'\\u0003\\'\\u0003\",\n \"(\\u0003(\\u0003)\\u0003)\\u0007)\\u012d\\n)\\f)\\u000e)\\u0130\\u000b)\\u0003\",\n \"*\\u0003*\\u0003*\\u0003*\\u0003+\\u0006+\\u0137\\n+\\r+\\u000e+\\u0138\\u0003\",\n \"+\\u0003+\\u0003+\\u0003+\\u0005+\\u013f\\n+\\u0003+\\u0006+\\u0142\\n+\\r+\\u000e\",\n \"+\\u0143\\u0003+\\u0003+\\u0003+\\u0003+\\u0005+\\u014a\\n+\\u0003+\\u0006+\\u014d\",\n \"\\n+\\r+\\u000e+\\u014e\\u0005+\\u0151\\n+\\u0003,\\u0006,\\u0154\\n,\\r,\\u000e\",\n \",\\u0155\\u0003,\\u0003,\\u0006,\\u015a\\n,\\r,\\u000e,\\u015b\\u0003,\\u0006,\",\n \"\\u015f\\n,\\r,\\u000e,\\u0160\\u0003,\\u0003,\\u0007,\\u0165\\n,\\f,\\u000e,\\u0168\",\n \"\\u000b,\\u0003,\\u0005,\\u016b\\n,\\u0003-\\u0003-\\u0005-\\u016f\\n-\\u0003-\",\n \"\\u0006-\\u0172\\n-\\r-\\u000e-\\u0173\\u0003.\\u0003.\\u0007.\\u0178\\n.\\f.\\u000e\",\n \".\\u017b\\u000b.\\u0003.\\u0003.\\u0003/\\u0003/\\u0005/\\u0181\\n/\\u00030\\u0003\",\n \"0\\u00030\\u00050\\u0186\\n0\\u00030\\u00030\\u00031\\u00031\\u00031\\u00031\\u0003\",\n \"2\\u00032\\u00033\\u00063\\u0191\\n3\\r3\\u000e3\\u0192\\u00033\\u00053\\u0196\",\n \"\\n3\\u00034\\u00034\\u00035\\u00035\\u00036\\u00036\\u00036\\u00036\\u00056\\u01a0\",\n \"\\n6\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u0003\",\n \"7\\u00037\\u00057\\u01ad\\n7\\u00038\\u00038\\u00038\\u00038\\u00038\\u00038\\u0003\",\n \"8\\u00039\\u00039\\u00039\\u00039\\u00079\\u01ba\\n9\\f9\\u000e9\\u01bd\\u000b\",\n \"9\\u00039\\u00059\\u01c0\\n9\\u00039\\u00039\\u00039\\u00039\\u00039\\u00079\\u01c7\",\n \"\\n9\\f9\\u000e9\\u01ca\\u000b9\\u00039\\u00039\\u00059\\u01ce\\n9\\u00039\\u0003\",\n \"9\\u0003\\u01c8\\u0002:\\u0003\\u0003\\u0005\\u0004\\u0007\\u0005\\t\\u0006\\u000b\",\n \"\\u0007\\r\\b\\u000f\\t\\u0011\\n\\u0013\\u000b\\u0015\\f\\u0017\\r\\u0019\\u000e\\u001b\",\n \"\\u000f\\u001d\\u0010\\u001f\\u0011!\\u0012#\\u0013%\\u0014\\'\\u0015)\\u0016+\",\n \"\\u0017-\\u0002/\\u00021\\u00023\\u00185\\u00197\\u001a9\\u001b;\\u001c=\\u001d\",\n \"?\\u001eA\\u001fC E!G\\\"I#K$M%O&Q\\'S(U)W*Y\\u0002[+]\\u0002_,a-c\\u0002e.\",\n \"g\\u0002i\\u0002k\\u0002m\\u0002o\\u0002q/\\u0003\\u0002\\u0012\\u0004\\u0002\",\n \"--//\\u0005\\u0002\\'\\',,11\\u0004\\u0002>>@@\\u0005\\u0002C\\\\aac|\\u0006\\u0002\",\n \"2;C\\\\aac|\\u0003\\u00022;\\u0003\\u000223\\u0004\\u0002GGgg\\u0006\\u0002\\f\",\n \"\\f\\u000f\\u000f$$^^\\u0006\\u0002\\f\\f\\u000f\\u000f))^^\\u0004\\u0002\\u000b\",\n \"\\u000b\\\"\\\"\\u0004\\u0002\\f\\f\\u000f\\u000f\\u0005\\u00022;CHch\\u0003\\u0002\",\n \"29\\n\\u0002$$))^^ddhhppttvv\\u0003\\u000225\\u0002\\u01e5\\u0002\\u0003\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0005\\u0003\\u0002\\u0002\\u0002\\u0002\\u0007\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\t\\u0003\\u0002\\u0002\\u0002\\u0002\\u000b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\r\\u0003\\u0002\\u0002\\u0002\\u0002\\u000f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0011\\u0003\\u0002\\u0002\\u0002\\u0002\\u0013\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0015\\u0003\\u0002\\u0002\\u0002\\u0002\\u0017\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0019\\u0003\\u0002\\u0002\\u0002\\u0002\\u001b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u001d\\u0003\\u0002\\u0002\\u0002\\u0002\\u001f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002!\\u0003\\u0002\\u0002\\u0002\\u0002#\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002%\\u0003\\u0002\\u0002\\u0002\\u0002\\'\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002)\\u0003\\u0002\\u0002\\u0002\\u0002+\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00023\\u0003\\u0002\\u0002\\u0002\\u00025\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"7\\u0003\\u0002\\u0002\\u0002\\u00029\\u0003\\u0002\\u0002\\u0002\\u0002;\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002=\\u0003\\u0002\\u0002\\u0002\\u0002?\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002A\\u0003\\u0002\\u0002\\u0002\\u0002C\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002E\\u0003\\u0002\\u0002\\u0002\\u0002G\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002I\\u0003\\u0002\\u0002\\u0002\\u0002K\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"M\\u0003\\u0002\\u0002\\u0002\\u0002O\\u0003\\u0002\\u0002\\u0002\\u0002Q\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002S\\u0003\\u0002\\u0002\\u0002\\u0002U\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002W\\u0003\\u0002\\u0002\\u0002\\u0002[\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002_\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002e\\u0003\\u0002\\u0002\\u0002\\u0002q\\u0003\\u0002\\u0002\\u0002\\u0003\",\n \"s\\u0003\\u0002\\u0002\\u0002\\u0005{\\u0003\\u0002\\u0002\\u0002\\u0007\\u0080\",\n \"\\u0003\\u0002\\u0002\\u0002\\t\\u0085\\u0003\\u0002\\u0002\\u0002\\u000b\\u008d\",\n \"\\u0003\\u0002\\u0002\\u0002\\r\\u0094\\u0003\\u0002\\u0002\\u0002\\u000f\\u009c\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0011\\u00a6\\u0003\\u0002\\u0002\\u0002\\u0013\\u00ad\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0015\\u00b2\\u0003\\u0002\\u0002\\u0002\\u0017\\u00bc\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0019\\u00c2\\u0003\\u0002\\u0002\\u0002\\u001b\\u00cb\",\n \"\\u0003\\u0002\\u0002\\u0002\\u001d\\u00d2\\u0003\\u0002\\u0002\\u0002\\u001f\\u00d6\",\n \"\\u0003\\u0002\\u0002\\u0002!\\u00dc\\u0003\\u0002\\u0002\\u0002#\\u00df\\u0003\",\n \"\\u0002\\u0002\\u0002%\\u00e5\\u0003\\u0002\\u0002\\u0002\\'\\u00e8\\u0003\\u0002\",\n \"\\u0002\\u0002)\\u00ed\\u0003\\u0002\\u0002\\u0002+\\u00f3\\u0003\\u0002\\u0002\",\n \"\\u0002-\\u00f8\\u0003\\u0002\\u0002\\u0002/\\u00fc\\u0003\\u0002\\u0002\\u0002\",\n \"1\\u0100\\u0003\\u0002\\u0002\\u00023\\u0103\\u0003\\u0002\\u0002\\u00025\\u0105\",\n \"\\u0003\\u0002\\u0002\\u00027\\u0107\\u0003\\u0002\\u0002\\u00029\\u0109\\u0003\",\n \"\\u0002\\u0002\\u0002;\\u010b\\u0003\\u0002\\u0002\\u0002=\\u010d\\u0003\\u0002\",\n \"\\u0002\\u0002?\\u010f\\u0003\\u0002\\u0002\\u0002A\\u0111\\u0003\\u0002\\u0002\",\n \"\\u0002C\\u0113\\u0003\\u0002\\u0002\\u0002E\\u0115\\u0003\\u0002\\u0002\\u0002\",\n \"G\\u0117\\u0003\\u0002\\u0002\\u0002I\\u0119\\u0003\\u0002\\u0002\\u0002K\\u0124\",\n \"\\u0003\\u0002\\u0002\\u0002M\\u0126\\u0003\\u0002\\u0002\\u0002O\\u0128\\u0003\",\n \"\\u0002\\u0002\\u0002Q\\u012a\\u0003\\u0002\\u0002\\u0002S\\u0131\\u0003\\u0002\",\n \"\\u0002\\u0002U\\u0150\\u0003\\u0002\\u0002\\u0002W\\u016a\\u0003\\u0002\\u0002\",\n \"\\u0002Y\\u016c\\u0003\\u0002\\u0002\\u0002[\\u0175\\u0003\\u0002\\u0002\\u0002\",\n \"]\\u0180\\u0003\\u0002\\u0002\\u0002_\\u0182\\u0003\\u0002\\u0002\\u0002a\\u0189\",\n \"\\u0003\\u0002\\u0002\\u0002c\\u018d\\u0003\\u0002\\u0002\\u0002e\\u0195\\u0003\",\n \"\\u0002\\u0002\\u0002g\\u0197\\u0003\\u0002\\u0002\\u0002i\\u0199\\u0003\\u0002\",\n \"\\u0002\\u0002k\\u019f\\u0003\\u0002\\u0002\\u0002m\\u01ac\\u0003\\u0002\\u0002\",\n \"\\u0002o\\u01ae\\u0003\\u0002\\u0002\\u0002q\\u01cd\\u0003\\u0002\\u0002\\u0002\",\n \"st\\u0007r\\u0002\\u0002tu\\u0007t\\u0002\\u0002uv\\u0007q\\u0002\\u0002vw\\u0007\",\n \"i\\u0002\\u0002wx\\u0007t\\u0002\\u0002xy\\u0007c\\u0002\\u0002yz\\u0007o\\u0002\",\n \"\\u0002z\\u0004\\u0003\\u0002\\u0002\\u0002{|\\u0007t\\u0002\\u0002|}\\u0007g\",\n \"\\u0002\\u0002}~\\u0007c\\u0002\\u0002~\\u007f\\u0007n\\u0002\\u0002\\u007f\\u0006\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0080\\u0081\\u0007x\\u0002\\u0002\\u0081\\u0082\",\n \"\\u0007q\\u0002\\u0002\\u0082\\u0083\\u0007k\\u0002\\u0002\\u0083\\u0084\\u0007\",\n \"f\\u0002\\u0002\\u0084\\b\\u0003\\u0002\\u0002\\u0002\\u0085\\u0086\\u0007d\\u0002\",\n \"\\u0002\\u0086\\u0087\\u0007q\\u0002\\u0002\\u0087\\u0088\\u0007q\\u0002\\u0002\",\n \"\\u0088\\u0089\\u0007n\\u0002\\u0002\\u0089\\u008a\\u0007g\\u0002\\u0002\\u008a\",\n \"\\u008b\\u0007c\\u0002\\u0002\\u008b\\u008c\\u0007p\\u0002\\u0002\\u008c\\n\\u0003\",\n \"\\u0002\\u0002\\u0002\\u008d\\u008e\\u0007u\\u0002\\u0002\\u008e\\u008f\\u0007\",\n \"v\\u0002\\u0002\\u008f\\u0090\\u0007t\\u0002\\u0002\\u0090\\u0091\\u0007k\\u0002\",\n \"\\u0002\\u0091\\u0092\\u0007p\\u0002\\u0002\\u0092\\u0093\\u0007i\\u0002\\u0002\",\n \"\\u0093\\f\\u0003\\u0002\\u0002\\u0002\\u0094\\u0095\\u0007k\\u0002\\u0002\\u0095\",\n \"\\u0096\\u0007p\\u0002\\u0002\\u0096\\u0097\\u0007v\\u0002\\u0002\\u0097\\u0098\",\n \"\\u0007g\\u0002\\u0002\\u0098\\u0099\\u0007i\\u0002\\u0002\\u0099\\u009a\\u0007\",\n \"g\\u0002\\u0002\\u009a\\u009b\\u0007t\\u0002\\u0002\\u009b\\u000e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u009c\\u009d\\u0007e\\u0002\\u0002\\u009d\\u009e\\u0007j\\u0002\",\n \"\\u0002\\u009e\\u009f\\u0007c\\u0002\\u0002\\u009f\\u00a0\\u0007t\\u0002\\u0002\",\n \"\\u00a0\\u00a1\\u0007c\\u0002\\u0002\\u00a1\\u00a2\\u0007e\\u0002\\u0002\\u00a2\",\n \"\\u00a3\\u0007v\\u0002\\u0002\\u00a3\\u00a4\\u0007g\\u0002\\u0002\\u00a4\\u00a5\",\n \"\\u0007t\\u0002\\u0002\\u00a5\\u0010\\u0003\\u0002\\u0002\\u0002\\u00a6\\u00a7\",\n \"\\u0007u\\u0002\\u0002\\u00a7\\u00a8\\u0007y\\u0002\\u0002\\u00a8\\u00a9\\u0007\",\n \"k\\u0002\\u0002\\u00a9\\u00aa\\u0007v\\u0002\\u0002\\u00aa\\u00ab\\u0007e\\u0002\",\n \"\\u0002\\u00ab\\u00ac\\u0007j\\u0002\\u0002\\u00ac\\u0012\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00ad\\u00ae\\u0007e\\u0002\\u0002\\u00ae\\u00af\\u0007c\\u0002\\u0002\",\n \"\\u00af\\u00b0\\u0007u\\u0002\\u0002\\u00b0\\u00b1\\u0007g\\u0002\\u0002\\u00b1\",\n \"\\u0014\\u0003\\u0002\\u0002\\u0002\\u00b2\\u00b3\\u0007q\\u0002\\u0002\\u00b3\",\n \"\\u00b4\\u0007v\\u0002\\u0002\\u00b4\\u00b5\\u0007j\\u0002\\u0002\\u00b5\\u00b6\",\n \"\\u0007g\\u0002\\u0002\\u00b6\\u00b7\\u0007t\\u0002\\u0002\\u00b7\\u00b8\\u0007\",\n \"y\\u0002\\u0002\\u00b8\\u00b9\\u0007k\\u0002\\u0002\\u00b9\\u00ba\\u0007u\\u0002\",\n \"\\u0002\\u00ba\\u00bb\\u0007g\\u0002\\u0002\\u00bb\\u0016\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00bc\\u00bd\\u0007e\\u0002\\u0002\\u00bd\\u00be\\u0007q\\u0002\\u0002\",\n \"\\u00be\\u00bf\\u0007p\\u0002\\u0002\\u00bf\\u00c0\\u0007u\\u0002\\u0002\\u00c0\",\n \"\\u00c1\\u0007v\\u0002\\u0002\\u00c1\\u0018\\u0003\\u0002\\u0002\\u0002\\u00c2\",\n \"\\u00c3\\u0007h\\u0002\\u0002\\u00c3\\u00c4\\u0007w\\u0002\\u0002\\u00c4\\u00c5\",\n \"\\u0007p\\u0002\\u0002\\u00c5\\u00c6\\u0007e\\u0002\\u0002\\u00c6\\u00c7\\u0007\",\n \"v\\u0002\\u0002\\u00c7\\u00c8\\u0007k\\u0002\\u0002\\u00c8\\u00c9\\u0007q\\u0002\",\n \"\\u0002\\u00c9\\u00ca\\u0007p\\u0002\\u0002\\u00ca\\u001a\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00cb\\u00cc\\u0007t\\u0002\\u0002\\u00cc\\u00cd\\u0007g\\u0002\\u0002\",\n \"\\u00cd\\u00ce\\u0007v\\u0002\\u0002\\u00ce\\u00cf\\u0007w\\u0002\\u0002\\u00cf\",\n \"\\u00d0\\u0007t\\u0002\\u0002\\u00d0\\u00d1\\u0007p\\u0002\\u0002\\u00d1\\u001c\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00d2\\u00d3\\u0007h\\u0002\\u0002\\u00d3\\u00d4\",\n \"\\u0007q\\u0002\\u0002\\u00d4\\u00d5\\u0007t\\u0002\\u0002\\u00d5\\u001e\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00d6\\u00d7\\u0007d\\u0002\\u0002\\u00d7\\u00d8\\u0007\",\n \"t\\u0002\\u0002\\u00d8\\u00d9\\u0007g\\u0002\\u0002\\u00d9\\u00da\\u0007c\\u0002\",\n \"\\u0002\\u00da\\u00db\\u0007m\\u0002\\u0002\\u00db \\u0003\\u0002\\u0002\\u0002\",\n \"\\u00dc\\u00dd\\u0007f\\u0002\\u0002\\u00dd\\u00de\\u0007q\\u0002\\u0002\\u00de\",\n \"\\\"\\u0003\\u0002\\u0002\\u0002\\u00df\\u00e0\\u0007y\\u0002\\u0002\\u00e0\\u00e1\",\n \"\\u0007j\\u0002\\u0002\\u00e1\\u00e2\\u0007k\\u0002\\u0002\\u00e2\\u00e3\\u0007\",\n \"n\\u0002\\u0002\\u00e3\\u00e4\\u0007g\\u0002\\u0002\\u00e4$\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00e5\\u00e6\\u0007k\\u0002\\u0002\\u00e6\\u00e7\\u0007h\\u0002\\u0002\",\n \"\\u00e7&\\u0003\\u0002\\u0002\\u0002\\u00e8\\u00e9\\u0007g\\u0002\\u0002\\u00e9\",\n \"\\u00ea\\u0007n\\u0002\\u0002\\u00ea\\u00eb\\u0007u\\u0002\\u0002\\u00eb\\u00ec\",\n \"\\u0007g\\u0002\\u0002\\u00ec(\\u0003\\u0002\\u0002\\u0002\\u00ed\\u00ee\\u0007\",\n \"h\\u0002\\u0002\\u00ee\\u00ef\\u0007c\\u0002\\u0002\\u00ef\\u00f0\\u0007n\\u0002\",\n \"\\u0002\\u00f0\\u00f1\\u0007u\\u0002\\u0002\\u00f1\\u00f2\\u0007g\\u0002\\u0002\",\n \"\\u00f2*\\u0003\\u0002\\u0002\\u0002\\u00f3\\u00f4\\u0007v\\u0002\\u0002\\u00f4\",\n \"\\u00f5\\u0007t\\u0002\\u0002\\u00f5\\u00f6\\u0007w\\u0002\\u0002\\u00f6\\u00f7\",\n \"\\u0007g\\u0002\\u0002\\u00f7,\\u0003\\u0002\\u0002\\u0002\\u00f8\\u00f9\\u0007\",\n \"p\\u0002\\u0002\\u00f9\\u00fa\\u0007q\\u0002\\u0002\\u00fa\\u00fb\\u0007v\\u0002\",\n \"\\u0002\\u00fb.\\u0003\\u0002\\u0002\\u0002\\u00fc\\u00fd\\u0007C\\u0002\\u0002\",\n \"\\u00fd\\u00fe\\u0007P\\u0002\\u0002\\u00fe\\u00ff\\u0007F\\u0002\\u0002\\u00ff\",\n \"0\\u0003\\u0002\\u0002\\u0002\\u0100\\u0101\\u0007Q\\u0002\\u0002\\u0101\\u0102\",\n \"\\u0007T\\u0002\\u0002\\u01022\\u0003\\u0002\\u0002\\u0002\\u0103\\u0104\\u0007\",\n \"*\\u0002\\u0002\\u01044\\u0003\\u0002\\u0002\\u0002\\u0105\\u0106\\u0007+\\u0002\",\n \"\\u0002\\u01066\\u0003\\u0002\\u0002\\u0002\\u0107\\u0108\\u0007]\\u0002\\u0002\",\n \"\\u01088\\u0003\\u0002\\u0002\\u0002\\u0109\\u010a\\u0007_\\u0002\\u0002\\u010a\",\n \":\\u0003\\u0002\\u0002\\u0002\\u010b\\u010c\\u0007}\\u0002\\u0002\\u010c<\\u0003\",\n \"\\u0002\\u0002\\u0002\\u010d\\u010e\\u0007\\u007f\\u0002\\u0002\\u010e>\\u0003\",\n \"\\u0002\\u0002\\u0002\\u010f\\u0110\\u0007.\\u0002\\u0002\\u0110@\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0111\\u0112\\u0007?\\u0002\\u0002\\u0112B\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0113\\u0114\\t\\u0002\\u0002\\u0002\\u0114D\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0115\\u0116\\t\\u0003\\u0002\\u0002\\u0116F\\u0003\\u0002\\u0002\\u0002\\u0117\",\n \"\\u0118\\u0005/\\u0018\\u0002\\u0118H\\u0003\\u0002\\u0002\\u0002\\u0119\\u011a\",\n \"\\u00051\\u0019\\u0002\\u011aJ\\u0003\\u0002\\u0002\\u0002\\u011b\\u011c\\u0007\",\n \"@\\u0002\\u0002\\u011c\\u0125\\u0007?\\u0002\\u0002\\u011d\\u011e\\u0007?\\u0002\",\n \"\\u0002\\u011e\\u0125\\u0007?\\u0002\\u0002\\u011f\\u0120\\u0007>\\u0002\\u0002\",\n \"\\u0120\\u0125\\u0007?\\u0002\\u0002\\u0121\\u0125\\t\\u0004\\u0002\\u0002\\u0122\",\n \"\\u0123\\u0007#\\u0002\\u0002\\u0123\\u0125\\u0007?\\u0002\\u0002\\u0124\\u011b\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0124\\u011d\\u0003\\u0002\\u0002\\u0002\\u0124\\u011f\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0124\\u0121\\u0003\\u0002\\u0002\\u0002\\u0124\\u0122\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0125L\\u0003\\u0002\\u0002\\u0002\\u0126\\u0127\",\n \"\\u0007<\\u0002\\u0002\\u0127N\\u0003\\u0002\\u0002\\u0002\\u0128\\u0129\\u0005\",\n \"-\\u0017\\u0002\\u0129P\\u0003\\u0002\\u0002\\u0002\\u012a\\u012e\\t\\u0005\\u0002\",\n \"\\u0002\\u012b\\u012d\\t\\u0006\\u0002\\u0002\\u012c\\u012b\\u0003\\u0002\\u0002\",\n \"\\u0002\\u012d\\u0130\\u0003\\u0002\\u0002\\u0002\\u012e\\u012c\\u0003\\u0002\\u0002\",\n \"\\u0002\\u012e\\u012f\\u0003\\u0002\\u0002\\u0002\\u012fR\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0130\\u012e\\u0003\\u0002\\u0002\\u0002\\u0131\\u0132\\u0005Q)\\u0002\",\n \"\\u0132\\u0133\\u00070\\u0002\\u0002\\u0133\\u0134\\u0005Q)\\u0002\\u0134T\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0135\\u0137\\t\\u0007\\u0002\\u0002\\u0136\\u0135\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0137\\u0138\\u0003\\u0002\\u0002\\u0002\\u0138\\u0136\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0138\\u0139\\u0003\\u0002\\u0002\\u0002\\u0139\\u0151\\u0003\",\n \"\\u0002\\u0002\\u0002\\u013a\\u013b\\u00072\\u0002\\u0002\\u013b\\u013f\\u0007\",\n \"z\\u0002\\u0002\\u013c\\u013d\\u00072\\u0002\\u0002\\u013d\\u013f\\u0007Z\\u0002\",\n \"\\u0002\\u013e\\u013a\\u0003\\u0002\\u0002\\u0002\\u013e\\u013c\\u0003\\u0002\\u0002\",\n \"\\u0002\\u013f\\u0141\\u0003\\u0002\\u0002\\u0002\\u0140\\u0142\\u0005g4\\u0002\",\n \"\\u0141\\u0140\\u0003\\u0002\\u0002\\u0002\\u0142\\u0143\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0143\\u0141\\u0003\\u0002\\u0002\\u0002\\u0143\\u0144\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0144\\u0151\\u0003\\u0002\\u0002\\u0002\\u0145\\u0146\\u00072\\u0002\\u0002\",\n \"\\u0146\\u014a\\u0007d\\u0002\\u0002\\u0147\\u0148\\u00072\\u0002\\u0002\\u0148\",\n \"\\u014a\\u0007D\\u0002\\u0002\\u0149\\u0145\\u0003\\u0002\\u0002\\u0002\\u0149\",\n \"\\u0147\\u0003\\u0002\\u0002\\u0002\\u014a\\u014c\\u0003\\u0002\\u0002\\u0002\\u014b\",\n \"\\u014d\\t\\b\\u0002\\u0002\\u014c\\u014b\\u0003\\u0002\\u0002\\u0002\\u014d\\u014e\",\n \"\\u0003\\u0002\\u0002\\u0002\\u014e\\u014c\\u0003\\u0002\\u0002\\u0002\\u014e\\u014f\",\n \"\\u0003\\u0002\\u0002\\u0002\\u014f\\u0151\\u0003\\u0002\\u0002\\u0002\\u0150\\u0136\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0150\\u013e\\u0003\\u0002\\u0002\\u0002\\u0150\\u0149\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0151V\\u0003\\u0002\\u0002\\u0002\\u0152\\u0154\",\n \"\\t\\u0007\\u0002\\u0002\\u0153\\u0152\\u0003\\u0002\\u0002\\u0002\\u0154\\u0155\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0155\\u0153\\u0003\\u0002\\u0002\\u0002\\u0155\\u0156\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0156\\u0157\\u0003\\u0002\\u0002\\u0002\\u0157\\u0159\",\n \"\\u00070\\u0002\\u0002\\u0158\\u015a\\t\\u0007\\u0002\\u0002\\u0159\\u0158\\u0003\",\n \"\\u0002\\u0002\\u0002\\u015a\\u015b\\u0003\\u0002\\u0002\\u0002\\u015b\\u0159\\u0003\",\n \"\\u0002\\u0002\\u0002\\u015b\\u015c\\u0003\\u0002\\u0002\\u0002\\u015c\\u016b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u015d\\u015f\\t\\u0007\\u0002\\u0002\\u015e\\u015d\\u0003\",\n \"\\u0002\\u0002\\u0002\\u015f\\u0160\\u0003\\u0002\\u0002\\u0002\\u0160\\u015e\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0160\\u0161\\u0003\\u0002\\u0002\\u0002\\u0161\\u0162\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0162\\u0166\\u00070\\u0002\\u0002\\u0163\\u0165\\t\\u0007\",\n \"\\u0002\\u0002\\u0164\\u0163\\u0003\\u0002\\u0002\\u0002\\u0165\\u0168\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0166\\u0164\\u0003\\u0002\\u0002\\u0002\\u0166\\u0167\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0167\\u0169\\u0003\\u0002\\u0002\\u0002\\u0168\\u0166\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0169\\u016b\\u0005Y-\\u0002\\u016a\\u0153\\u0003\\u0002\\u0002\",\n \"\\u0002\\u016a\\u015e\\u0003\\u0002\\u0002\\u0002\\u016bX\\u0003\\u0002\\u0002\",\n \"\\u0002\\u016c\\u016e\\t\\t\\u0002\\u0002\\u016d\\u016f\\t\\u0002\\u0002\\u0002\\u016e\",\n \"\\u016d\\u0003\\u0002\\u0002\\u0002\\u016e\\u016f\\u0003\\u0002\\u0002\\u0002\\u016f\",\n \"\\u0171\\u0003\\u0002\\u0002\\u0002\\u0170\\u0172\\t\\u0007\\u0002\\u0002\\u0171\",\n \"\\u0170\\u0003\\u0002\\u0002\\u0002\\u0172\\u0173\\u0003\\u0002\\u0002\\u0002\\u0173\",\n \"\\u0171\\u0003\\u0002\\u0002\\u0002\\u0173\\u0174\\u0003\\u0002\\u0002\\u0002\\u0174\",\n \"Z\\u0003\\u0002\\u0002\\u0002\\u0175\\u0179\\u0007$\\u0002\\u0002\\u0176\\u0178\",\n \"\\u0005]/\\u0002\\u0177\\u0176\\u0003\\u0002\\u0002\\u0002\\u0178\\u017b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0179\\u0177\\u0003\\u0002\\u0002\\u0002\\u0179\\u017a\\u0003\",\n \"\\u0002\\u0002\\u0002\\u017a\\u017c\\u0003\\u0002\\u0002\\u0002\\u017b\\u0179\\u0003\",\n \"\\u0002\\u0002\\u0002\\u017c\\u017d\\u0007$\\u0002\\u0002\\u017d\\\\\\u0003\\u0002\",\n \"\\u0002\\u0002\\u017e\\u0181\\n\\n\\u0002\\u0002\\u017f\\u0181\\u0005k6\\u0002\\u0180\",\n \"\\u017e\\u0003\\u0002\\u0002\\u0002\\u0180\\u017f\\u0003\\u0002\\u0002\\u0002\\u0181\",\n \"^\\u0003\\u0002\\u0002\\u0002\\u0182\\u0185\\u0007)\\u0002\\u0002\\u0183\\u0186\",\n \"\\u0005k6\\u0002\\u0184\\u0186\\n\\u000b\\u0002\\u0002\\u0185\\u0183\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0185\\u0184\\u0003\\u0002\\u0002\\u0002\\u0186\\u0187\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0187\\u0188\\u0007)\\u0002\\u0002\\u0188`\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0189\\u018a\\t\\f\\u0002\\u0002\\u018a\\u018b\\u0003\\u0002\\u0002\\u0002\",\n \"\\u018b\\u018c\\b1\\u0002\\u0002\\u018cb\\u0003\\u0002\\u0002\\u0002\\u018d\\u018e\",\n \"\\u0007=\\u0002\\u0002\\u018ed\\u0003\\u0002\\u0002\\u0002\\u018f\\u0191\\t\\r\\u0002\",\n \"\\u0002\\u0190\\u018f\\u0003\\u0002\\u0002\\u0002\\u0191\\u0192\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0192\\u0190\\u0003\\u0002\\u0002\\u0002\\u0192\\u0193\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0193\\u0196\\u0003\\u0002\\u0002\\u0002\\u0194\\u0196\\u0005c2\\u0002\",\n \"\\u0195\\u0190\\u0003\\u0002\\u0002\\u0002\\u0195\\u0194\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0196f\\u0003\\u0002\\u0002\\u0002\\u0197\\u0198\\t\\u000e\\u0002\\u0002\\u0198\",\n \"h\\u0003\\u0002\\u0002\\u0002\\u0199\\u019a\\t\\u000f\\u0002\\u0002\\u019aj\\u0003\",\n \"\\u0002\\u0002\\u0002\\u019b\\u019c\\u0007^\\u0002\\u0002\\u019c\\u01a0\\t\\u0010\",\n \"\\u0002\\u0002\\u019d\\u01a0\\u0005o8\\u0002\\u019e\\u01a0\\u0005m7\\u0002\\u019f\",\n \"\\u019b\\u0003\\u0002\\u0002\\u0002\\u019f\\u019d\\u0003\\u0002\\u0002\\u0002\\u019f\",\n \"\\u019e\\u0003\\u0002\\u0002\\u0002\\u01a0l\\u0003\\u0002\\u0002\\u0002\\u01a1\",\n \"\\u01a2\\u0007^\\u0002\\u0002\\u01a2\\u01a3\\t\\u0011\\u0002\\u0002\\u01a3\\u01a4\",\n \"\\u0005i5\\u0002\\u01a4\\u01a5\\u0005i5\\u0002\\u01a5\\u01ad\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01a6\\u01a7\\u0007^\\u0002\\u0002\\u01a7\\u01a8\\u0005i5\\u0002\\u01a8\",\n \"\\u01a9\\u0005i5\\u0002\\u01a9\\u01ad\\u0003\\u0002\\u0002\\u0002\\u01aa\\u01ab\",\n \"\\u0007^\\u0002\\u0002\\u01ab\\u01ad\\u0005i5\\u0002\\u01ac\\u01a1\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01ac\\u01a6\\u0003\\u0002\\u0002\\u0002\\u01ac\\u01aa\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01adn\\u0003\\u0002\\u0002\\u0002\\u01ae\\u01af\\u0007^\\u0002\",\n \"\\u0002\\u01af\\u01b0\\u0007w\\u0002\\u0002\\u01b0\\u01b1\\u0005g4\\u0002\\u01b1\",\n \"\\u01b2\\u0005g4\\u0002\\u01b2\\u01b3\\u0005g4\\u0002\\u01b3\\u01b4\\u0005g4\\u0002\",\n \"\\u01b4p\\u0003\\u0002\\u0002\\u0002\\u01b5\\u01b6\\u00071\\u0002\\u0002\\u01b6\",\n \"\\u01b7\\u00071\\u0002\\u0002\\u01b7\\u01bb\\u0003\\u0002\\u0002\\u0002\\u01b8\",\n \"\\u01ba\\n\\r\\u0002\\u0002\\u01b9\\u01b8\\u0003\\u0002\\u0002\\u0002\\u01ba\\u01bd\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01bb\\u01b9\\u0003\\u0002\\u0002\\u0002\\u01bb\\u01bc\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01bc\\u01bf\\u0003\\u0002\\u0002\\u0002\\u01bd\\u01bb\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01be\\u01c0\\u0007\\u000f\\u0002\\u0002\\u01bf\\u01be\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01bf\\u01c0\\u0003\\u0002\\u0002\\u0002\\u01c0\\u01c1\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c1\\u01ce\\u0007\\f\\u0002\\u0002\\u01c2\\u01c3\",\n \"\\u00071\\u0002\\u0002\\u01c3\\u01c4\\u0007,\\u0002\\u0002\\u01c4\\u01c8\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01c5\\u01c7\\u000b\\u0002\\u0002\\u0002\\u01c6\\u01c5\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01c7\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01c8\\u01c9\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01c8\\u01c6\\u0003\\u0002\\u0002\\u0002\\u01c9\\u01cb\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01ca\\u01c8\\u0003\\u0002\\u0002\\u0002\\u01cb\\u01cc\\u0007\",\n \",\\u0002\\u0002\\u01cc\\u01ce\\u00071\\u0002\\u0002\\u01cd\\u01b5\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01cd\\u01c2\\u0003\\u0002\\u0002\\u0002\\u01ce\\u01cf\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01cf\\u01d0\\b9\\u0003\\u0002\\u01d0r\\u0003\\u0002\\u0002\\u0002\",\n \"\\u001d\\u0002\\u0124\\u012e\\u0138\\u013e\\u0143\\u0149\\u014e\\u0150\\u0155\\u015b\",\n \"\\u0160\\u0166\\u016a\\u016e\\u0173\\u0179\\u0180\\u0185\\u0192\\u0195\\u019f\\u01ac\",\n \"\\u01bb\\u01bf\\u01c8\\u01cd\\u0004\\b\\u0002\\u0002\\u0002\\u0003\\u0002\"].join(\"\");\n\n\nvar atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nvar decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });\n\nfunction ivprog(input) {\n\tantlr4.Lexer.call(this, input);\n this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n return this;\n}\n\nivprog.prototype = Object.create(antlr4.Lexer.prototype);\nivprog.prototype.constructor = ivprog;\n\nivprog.EOF = antlr4.Token.EOF;\nivprog.RK_PROGRAM = 1;\nivprog.RK_REAL = 2;\nivprog.RK_VOID = 3;\nivprog.RK_BOOLEAN = 4;\nivprog.RK_STRING = 5;\nivprog.RK_INTEGER = 6;\nivprog.RK_CHARACTER = 7;\nivprog.RK_SWITCH = 8;\nivprog.RK_CASE = 9;\nivprog.RK_DEFAULT = 10;\nivprog.RK_CONST = 11;\nivprog.RK_FUNCTION = 12;\nivprog.RK_RETURN = 13;\nivprog.RK_FOR = 14;\nivprog.RK_BREAK = 15;\nivprog.RK_DO = 16;\nivprog.RK_WHILE = 17;\nivprog.RK_IF = 18;\nivprog.RK_ELSE = 19;\nivprog.RK_FALSE = 20;\nivprog.RK_TRUE = 21;\nivprog.OPEN_PARENTHESIS = 22;\nivprog.CLOSE_PARENTHESIS = 23;\nivprog.OPEN_BRACE = 24;\nivprog.CLOSE_BRACE = 25;\nivprog.OPEN_CURLY = 26;\nivprog.CLOSE_CURLY = 27;\nivprog.COMMA = 28;\nivprog.EQUAL = 29;\nivprog.SUM_OP = 30;\nivprog.MULTI_OP = 31;\nivprog.AND_OPERATOR = 32;\nivprog.OR_OPERATOR = 33;\nivprog.RELATIONAL_OPERATOR = 34;\nivprog.COLON = 35;\nivprog.NOT_OPERATOR = 36;\nivprog.ID = 37;\nivprog.LIB_ID = 38;\nivprog.INTEGER = 39;\nivprog.REAL = 40;\nivprog.STRING = 41;\nivprog.CHARACTER = 42;\nivprog.WHITESPACE = 43;\nivprog.EOS = 44;\nivprog.COMMENTS = 45;\n\nivprog.prototype.channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\" ];\n\nivprog.prototype.modeNames = [ \"DEFAULT_MODE\" ];\n\nivprog.prototype.literalNames = [ null, \"'program'\", \"'real'\", \"'void'\", \n \"'boolean'\", \"'string'\", \"'integer'\", \n \"'character'\", \"'switch'\", \"'case'\", \"'otherwise'\", \n \"'const'\", \"'function'\", \"'return'\", \"'for'\", \n \"'break'\", \"'do'\", \"'while'\", \"'if'\", \n \"'else'\", \"'false'\", \"'true'\", \"'('\", \n \"')'\", \"'['\", \"']'\", \"'{'\", \"'}'\", \"','\", \n \"'='\", null, null, null, null, null, \"':'\" ];\n\nivprog.prototype.symbolicNames = [ null, \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \n \"RK_BOOLEAN\", \"RK_STRING\", \"RK_INTEGER\", \n \"RK_CHARACTER\", \"RK_SWITCH\", \"RK_CASE\", \n \"RK_DEFAULT\", \"RK_CONST\", \"RK_FUNCTION\", \n \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \"RK_DO\", \n \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"OPEN_PARENTHESIS\", \"CLOSE_PARENTHESIS\", \n \"OPEN_BRACE\", \"CLOSE_BRACE\", \"OPEN_CURLY\", \n \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \"SUM_OP\", \n \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"STRING\", \n \"CHARACTER\", \"WHITESPACE\", \"EOS\", \"COMMENTS\" ];\n\nivprog.prototype.ruleNames = [ \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \"RK_BOOLEAN\", \n \"RK_STRING\", \"RK_INTEGER\", \"RK_CHARACTER\", \n \"RK_SWITCH\", \"RK_CASE\", \"RK_DEFAULT\", \"RK_CONST\", \n \"RK_FUNCTION\", \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \n \"RK_DO\", \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \n \"RK_FALSE\", \"RK_TRUE\", \"RK_LOGICAL_NOT\", \n \"RK_LOGICAL_AND\", \"RK_LOGICAL_OR\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \n \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"ExponentPart\", \n \"STRING\", \"STRING_CHARACTER\", \"CHARACTER\", \n \"WHITESPACE\", \"SEMICOLON\", \"EOS\", \"HEX_DIGIT\", \n \"OCTAL_DIGIT\", \"ESC_SEQ\", \"ESC_OCTAL\", \"ESC_UNICODE\", \n \"COMMENTS\" ];\n\nivprog.prototype.grammarFileName = \"ivprog.g4\";\n\n\n\nexports.ivprog = ivprog;\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = {\nivprog: __webpack_require__(0).ivprog\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"antlr4/index\");\n\n/***/ })\n/******/ ]);","/* This is a dictionary of the language defined functions\n**/\nexport default {\n main_function: \"start\",\n $read: \"read\",\n $write: \"write\",\n $numElements: \"total_of_elements\",\n $matrixLines: \"total_of_lines\",\n $matrixColumns: \"total_of_columns\",\n $substring: \"subcadeia\",\n $length: \"comprimento\",\n $uppercase: \"caixa_alta\",\n $lowercase: \"caixa_baixa\",\n $charAt: \"char_at\",\n $isReal: \"is_real\",\n $isInt: \"is_integer\",\n $isBool: \"is_logic\",\n $castReal: \"to_real\",\n $castInt: \"to_integer\",\n $castBool: \"to_logic\",\n $castString: \"to_string\",\n $sin: \"sin\",\n $cos: \"cos\",\n $tan: \"tan\",\n $sqrt: \"sqrt\",\n $pow: \"pow\",\n $log: \"log\",\n $abs: \"abs\",\n $negate: \"negate\",\n $invert: \"invert\",\n $max: \"maximum\",\n $min: \"minimum\"\n\n}","/**\n * This is the dictionary of the language defined libraries\n */\nexport default {\n $mathLib: \"Mathematic\",\n $ioLib: \"ES\",\n $strLib: \"Texto\",\n $arrayLib: \"Arranjo\",\n $langLib: \"Conversion\"\n}","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Generated from /tmp/tmp-8955jN02K9nWoTjp/ivprog.g4 by ANTLR 4.7\n// jshint ignore: start\nvar antlr4 = __webpack_require__(2);\n\n\nvar serializedATN = [\"\\u0003\\u608b\\ua72a\\u8133\\ub9ed\\u417c\\u3be7\\u7786\\u5964\",\n \"\\u0002/\\u01dc\\b\\u0001\\u0004\\u0002\\t\\u0002\\u0004\\u0003\\t\\u0003\\u0004\",\n \"\\u0004\\t\\u0004\\u0004\\u0005\\t\\u0005\\u0004\\u0006\\t\\u0006\\u0004\\u0007\\t\",\n \"\\u0007\\u0004\\b\\t\\b\\u0004\\t\\t\\t\\u0004\\n\\t\\n\\u0004\\u000b\\t\\u000b\\u0004\",\n \"\\f\\t\\f\\u0004\\r\\t\\r\\u0004\\u000e\\t\\u000e\\u0004\\u000f\\t\\u000f\\u0004\\u0010\",\n \"\\t\\u0010\\u0004\\u0011\\t\\u0011\\u0004\\u0012\\t\\u0012\\u0004\\u0013\\t\\u0013\",\n \"\\u0004\\u0014\\t\\u0014\\u0004\\u0015\\t\\u0015\\u0004\\u0016\\t\\u0016\\u0004\\u0017\",\n \"\\t\\u0017\\u0004\\u0018\\t\\u0018\\u0004\\u0019\\t\\u0019\\u0004\\u001a\\t\\u001a\",\n \"\\u0004\\u001b\\t\\u001b\\u0004\\u001c\\t\\u001c\\u0004\\u001d\\t\\u001d\\u0004\\u001e\",\n \"\\t\\u001e\\u0004\\u001f\\t\\u001f\\u0004 \\t \\u0004!\\t!\\u0004\\\"\\t\\\"\\u0004#\",\n \"\\t#\\u0004$\\t$\\u0004%\\t%\\u0004&\\t&\\u0004\\'\\t\\'\\u0004(\\t(\\u0004)\\t)\\u0004\",\n \"*\\t*\\u0004+\\t+\\u0004,\\t,\\u0004-\\t-\\u0004.\\t.\\u0004/\\t/\\u00040\\t0\\u0004\",\n \"1\\t1\\u00042\\t2\\u00043\\t3\\u00044\\t4\\u00045\\t5\\u00046\\t6\\u00047\\t7\\u0004\",\n \"8\\t8\\u00049\\t9\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\",\n \"\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0003\\u0003\",\n \"\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0004\\u0003\\u0004\\u0003\",\n \"\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0005\\u0003\\u0005\\u0003\",\n \"\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0006\\u0003\",\n \"\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\",\n \"\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\",\n \"\\t\\u0003\\t\\u0003\\t\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\u000b\",\n \"\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\",\n \"\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\",\n \"\\u0003\\f\\u0003\\f\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\",\n \"\\r\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\",\n \"\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\",\n \"\\u000f\\u0003\\u000f\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\",\n \"\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\",\n \"\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0019\\u0003\",\n \"\\u0019\\u0003\\u0019\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\\u001b\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001d\\u0003\\u001d\\u0003\\u001e\\u0003\\u001e\\u0003\",\n \"\\u001f\\u0003\\u001f\\u0003 \\u0003 \\u0003!\\u0003!\\u0003\\\"\\u0003\\\"\\u0003\",\n \"#\\u0003#\\u0003$\\u0003$\\u0003%\\u0003%\\u0003&\\u0003&\\u0003&\\u0003&\\u0003\",\n \"&\\u0003&\\u0003&\\u0003&\\u0003&\\u0005&\\u0130\\n&\\u0003\\'\\u0003\\'\\u0003\",\n \"(\\u0003(\\u0003)\\u0003)\\u0007)\\u0138\\n)\\f)\\u000e)\\u013b\\u000b)\\u0003\",\n \"*\\u0003*\\u0003*\\u0003*\\u0003+\\u0006+\\u0142\\n+\\r+\\u000e+\\u0143\\u0003\",\n \"+\\u0003+\\u0003+\\u0003+\\u0005+\\u014a\\n+\\u0003+\\u0006+\\u014d\\n+\\r+\\u000e\",\n \"+\\u014e\\u0003+\\u0003+\\u0003+\\u0003+\\u0005+\\u0155\\n+\\u0003+\\u0006+\\u0158\",\n \"\\n+\\r+\\u000e+\\u0159\\u0005+\\u015c\\n+\\u0003,\\u0006,\\u015f\\n,\\r,\\u000e\",\n \",\\u0160\\u0003,\\u0003,\\u0006,\\u0165\\n,\\r,\\u000e,\\u0166\\u0003,\\u0006,\",\n \"\\u016a\\n,\\r,\\u000e,\\u016b\\u0003,\\u0003,\\u0007,\\u0170\\n,\\f,\\u000e,\\u0173\",\n \"\\u000b,\\u0003,\\u0005,\\u0176\\n,\\u0003-\\u0003-\\u0005-\\u017a\\n-\\u0003-\",\n \"\\u0006-\\u017d\\n-\\r-\\u000e-\\u017e\\u0003.\\u0003.\\u0007.\\u0183\\n.\\f.\\u000e\",\n \".\\u0186\\u000b.\\u0003.\\u0003.\\u0003/\\u0003/\\u0005/\\u018c\\n/\\u00030\\u0003\",\n \"0\\u00030\\u00050\\u0191\\n0\\u00030\\u00030\\u00031\\u00031\\u00031\\u00031\\u0003\",\n \"2\\u00032\\u00033\\u00063\\u019c\\n3\\r3\\u000e3\\u019d\\u00033\\u00053\\u01a1\",\n \"\\n3\\u00034\\u00034\\u00035\\u00035\\u00036\\u00036\\u00036\\u00036\\u00056\\u01ab\",\n \"\\n6\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u0003\",\n \"7\\u00037\\u00057\\u01b8\\n7\\u00038\\u00038\\u00038\\u00038\\u00038\\u00038\\u0003\",\n \"8\\u00039\\u00039\\u00039\\u00039\\u00079\\u01c5\\n9\\f9\\u000e9\\u01c8\\u000b\",\n \"9\\u00039\\u00059\\u01cb\\n9\\u00039\\u00039\\u00039\\u00039\\u00039\\u00079\\u01d2\",\n \"\\n9\\f9\\u000e9\\u01d5\\u000b9\\u00039\\u00039\\u00059\\u01d9\\n9\\u00039\\u0003\",\n \"9\\u0003\\u01d3\\u0002:\\u0003\\u0003\\u0005\\u0004\\u0007\\u0005\\t\\u0006\\u000b\",\n \"\\u0007\\r\\b\\u000f\\t\\u0011\\n\\u0013\\u000b\\u0015\\f\\u0017\\r\\u0019\\u000e\\u001b\",\n \"\\u000f\\u001d\\u0010\\u001f\\u0011!\\u0012#\\u0013%\\u0014\\'\\u0015)\\u0016+\",\n \"\\u0017-\\u0002/\\u00021\\u00023\\u00185\\u00197\\u001a9\\u001b;\\u001c=\\u001d\",\n \"?\\u001eA\\u001fC E!G\\\"I#K$M%O&Q\\'S(U)W*Y\\u0002[+]\\u0002_,a-c\\u0002e.\",\n \"g\\u0002i\\u0002k\\u0002m\\u0002o\\u0002q/\\u0003\\u0002\\u0012\\u0004\\u0002\",\n \"--//\\u0005\\u0002\\'\\',,11\\u0004\\u0002>>@@\\u0005\\u0002C\\\\aac|\\u0006\\u0002\",\n \"2;C\\\\aac|\\u0003\\u00022;\\u0003\\u000223\\u0004\\u0002GGgg\\u0006\\u0002\\f\",\n \"\\f\\u000f\\u000f$$^^\\u0006\\u0002\\f\\f\\u000f\\u000f))^^\\u0004\\u0002\\u000b\",\n \"\\u000b\\\"\\\"\\u0004\\u0002\\f\\f\\u000f\\u000f\\u0005\\u00022;CHch\\u0003\\u0002\",\n \"29\\n\\u0002$$))^^ddhhppttvv\\u0003\\u000225\\u0002\\u01f0\\u0002\\u0003\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0005\\u0003\\u0002\\u0002\\u0002\\u0002\\u0007\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\t\\u0003\\u0002\\u0002\\u0002\\u0002\\u000b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\r\\u0003\\u0002\\u0002\\u0002\\u0002\\u000f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0011\\u0003\\u0002\\u0002\\u0002\\u0002\\u0013\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0015\\u0003\\u0002\\u0002\\u0002\\u0002\\u0017\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0019\\u0003\\u0002\\u0002\\u0002\\u0002\\u001b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u001d\\u0003\\u0002\\u0002\\u0002\\u0002\\u001f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002!\\u0003\\u0002\\u0002\\u0002\\u0002#\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002%\\u0003\\u0002\\u0002\\u0002\\u0002\\'\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002)\\u0003\\u0002\\u0002\\u0002\\u0002+\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00023\\u0003\\u0002\\u0002\\u0002\\u00025\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"7\\u0003\\u0002\\u0002\\u0002\\u00029\\u0003\\u0002\\u0002\\u0002\\u0002;\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002=\\u0003\\u0002\\u0002\\u0002\\u0002?\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002A\\u0003\\u0002\\u0002\\u0002\\u0002C\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002E\\u0003\\u0002\\u0002\\u0002\\u0002G\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002I\\u0003\\u0002\\u0002\\u0002\\u0002K\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"M\\u0003\\u0002\\u0002\\u0002\\u0002O\\u0003\\u0002\\u0002\\u0002\\u0002Q\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002S\\u0003\\u0002\\u0002\\u0002\\u0002U\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002W\\u0003\\u0002\\u0002\\u0002\\u0002[\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002_\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002e\\u0003\\u0002\\u0002\\u0002\\u0002q\\u0003\\u0002\\u0002\\u0002\\u0003\",\n \"s\\u0003\\u0002\\u0002\\u0002\\u0005|\\u0003\\u0002\\u0002\\u0002\\u0007\\u0081\",\n \"\\u0003\\u0002\\u0002\\u0002\\t\\u0087\\u0003\\u0002\\u0002\\u0002\\u000b\\u008e\",\n \"\\u0003\\u0002\\u0002\\u0002\\r\\u0095\\u0003\\u0002\\u0002\\u0002\\u000f\\u009d\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0011\\u00a7\\u0003\\u0002\\u0002\\u0002\\u0013\\u00af\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0015\\u00b4\\u0003\\u0002\\u0002\\u0002\\u0017\\u00be\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0019\\u00c4\\u0003\\u0002\\u0002\\u0002\\u001b\\u00cb\",\n \"\\u0003\\u0002\\u0002\\u0002\\u001d\\u00d3\\u0003\\u0002\\u0002\\u0002\\u001f\\u00d8\",\n \"\\u0003\\u0002\\u0002\\u0002!\\u00dd\\u0003\\u0002\\u0002\\u0002#\\u00e2\\u0003\",\n \"\\u0002\\u0002\\u0002%\\u00eb\\u0003\\u0002\\u0002\\u0002\\'\\u00ee\\u0003\\u0002\",\n \"\\u0002\\u0002)\\u00f4\\u0003\\u0002\\u0002\\u0002+\\u00fa\\u0003\\u0002\\u0002\",\n \"\\u0002-\\u0105\\u0003\\u0002\\u0002\\u0002/\\u0109\\u0003\\u0002\\u0002\\u0002\",\n \"1\\u010b\\u0003\\u0002\\u0002\\u00023\\u010e\\u0003\\u0002\\u0002\\u00025\\u0110\",\n \"\\u0003\\u0002\\u0002\\u00027\\u0112\\u0003\\u0002\\u0002\\u00029\\u0114\\u0003\",\n \"\\u0002\\u0002\\u0002;\\u0116\\u0003\\u0002\\u0002\\u0002=\\u0118\\u0003\\u0002\",\n \"\\u0002\\u0002?\\u011a\\u0003\\u0002\\u0002\\u0002A\\u011c\\u0003\\u0002\\u0002\",\n \"\\u0002C\\u011e\\u0003\\u0002\\u0002\\u0002E\\u0120\\u0003\\u0002\\u0002\\u0002\",\n \"G\\u0122\\u0003\\u0002\\u0002\\u0002I\\u0124\\u0003\\u0002\\u0002\\u0002K\\u012f\",\n \"\\u0003\\u0002\\u0002\\u0002M\\u0131\\u0003\\u0002\\u0002\\u0002O\\u0133\\u0003\",\n \"\\u0002\\u0002\\u0002Q\\u0135\\u0003\\u0002\\u0002\\u0002S\\u013c\\u0003\\u0002\",\n \"\\u0002\\u0002U\\u015b\\u0003\\u0002\\u0002\\u0002W\\u0175\\u0003\\u0002\\u0002\",\n \"\\u0002Y\\u0177\\u0003\\u0002\\u0002\\u0002[\\u0180\\u0003\\u0002\\u0002\\u0002\",\n \"]\\u018b\\u0003\\u0002\\u0002\\u0002_\\u018d\\u0003\\u0002\\u0002\\u0002a\\u0194\",\n \"\\u0003\\u0002\\u0002\\u0002c\\u0198\\u0003\\u0002\\u0002\\u0002e\\u01a0\\u0003\",\n \"\\u0002\\u0002\\u0002g\\u01a2\\u0003\\u0002\\u0002\\u0002i\\u01a4\\u0003\\u0002\",\n \"\\u0002\\u0002k\\u01aa\\u0003\\u0002\\u0002\\u0002m\\u01b7\\u0003\\u0002\\u0002\",\n \"\\u0002o\\u01b9\\u0003\\u0002\\u0002\\u0002q\\u01d8\\u0003\\u0002\\u0002\\u0002\",\n \"st\\u0007r\\u0002\\u0002tu\\u0007t\\u0002\\u0002uv\\u0007q\\u0002\\u0002vw\\u0007\",\n \"i\\u0002\\u0002wx\\u0007t\\u0002\\u0002xy\\u0007c\\u0002\\u0002yz\\u0007o\\u0002\",\n \"\\u0002z{\\u0007c\\u0002\\u0002{\\u0004\\u0003\\u0002\\u0002\\u0002|}\\u0007t\",\n \"\\u0002\\u0002}~\\u0007g\\u0002\\u0002~\\u007f\\u0007c\\u0002\\u0002\\u007f\\u0080\",\n \"\\u0007n\\u0002\\u0002\\u0080\\u0006\\u0003\\u0002\\u0002\\u0002\\u0081\\u0082\",\n \"\\u0007x\\u0002\\u0002\\u0082\\u0083\\u0007c\\u0002\\u0002\\u0083\\u0084\\u0007\",\n \"|\\u0002\\u0002\\u0084\\u0085\\u0007k\\u0002\\u0002\\u0085\\u0086\\u0007q\\u0002\",\n \"\\u0002\\u0086\\b\\u0003\\u0002\\u0002\\u0002\\u0087\\u0088\\u0007n\\u0002\\u0002\",\n \"\\u0088\\u0089\\u0007q\\u0002\\u0002\\u0089\\u008a\\u0007i\\u0002\\u0002\\u008a\",\n \"\\u008b\\u0007k\\u0002\\u0002\\u008b\\u008c\\u0007e\\u0002\\u0002\\u008c\\u008d\",\n \"\\u0007q\\u0002\\u0002\\u008d\\n\\u0003\\u0002\\u0002\\u0002\\u008e\\u008f\\u0007\",\n \"e\\u0002\\u0002\\u008f\\u0090\\u0007c\\u0002\\u0002\\u0090\\u0091\\u0007f\\u0002\",\n \"\\u0002\\u0091\\u0092\\u0007g\\u0002\\u0002\\u0092\\u0093\\u0007k\\u0002\\u0002\",\n \"\\u0093\\u0094\\u0007c\\u0002\\u0002\\u0094\\f\\u0003\\u0002\\u0002\\u0002\\u0095\",\n \"\\u0096\\u0007k\\u0002\\u0002\\u0096\\u0097\\u0007p\\u0002\\u0002\\u0097\\u0098\",\n \"\\u0007v\\u0002\\u0002\\u0098\\u0099\\u0007g\\u0002\\u0002\\u0099\\u009a\\u0007\",\n \"k\\u0002\\u0002\\u009a\\u009b\\u0007t\\u0002\\u0002\\u009b\\u009c\\u0007q\\u0002\",\n \"\\u0002\\u009c\\u000e\\u0003\\u0002\\u0002\\u0002\\u009d\\u009e\\u0007e\\u0002\",\n \"\\u0002\\u009e\\u009f\\u0007c\\u0002\\u0002\\u009f\\u00a0\\u0007t\\u0002\\u0002\",\n \"\\u00a0\\u00a1\\u0007c\\u0002\\u0002\\u00a1\\u00a2\\u0007e\\u0002\\u0002\\u00a2\",\n \"\\u00a3\\u0007v\\u0002\\u0002\\u00a3\\u00a4\\u0007g\\u0002\\u0002\\u00a4\\u00a5\",\n \"\\u0007t\\u0002\\u0002\\u00a5\\u00a6\\u0007g\\u0002\\u0002\\u00a6\\u0010\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00a7\\u00a8\\u0007g\\u0002\\u0002\\u00a8\\u00a9\\u0007\",\n \"u\\u0002\\u0002\\u00a9\\u00aa\\u0007e\\u0002\\u0002\\u00aa\\u00ab\\u0007q\\u0002\",\n \"\\u0002\\u00ab\\u00ac\\u0007n\\u0002\\u0002\\u00ac\\u00ad\\u0007j\\u0002\\u0002\",\n \"\\u00ad\\u00ae\\u0007c\\u0002\\u0002\\u00ae\\u0012\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00af\\u00b0\\u0007e\\u0002\\u0002\\u00b0\\u00b1\\u0007c\\u0002\\u0002\\u00b1\",\n \"\\u00b2\\u0007u\\u0002\\u0002\\u00b2\\u00b3\\u0007q\\u0002\\u0002\\u00b3\\u0014\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00b4\\u00b5\\u0007e\\u0002\\u0002\\u00b5\\u00b6\",\n \"\\u0007q\\u0002\\u0002\\u00b6\\u00b7\\u0007p\\u0002\\u0002\\u00b7\\u00b8\\u0007\",\n \"v\\u0002\\u0002\\u00b8\\u00b9\\u0007t\\u0002\\u0002\\u00b9\\u00ba\\u0007c\\u0002\",\n \"\\u0002\\u00ba\\u00bb\\u0007t\\u0002\\u0002\\u00bb\\u00bc\\u0007k\\u0002\\u0002\",\n \"\\u00bc\\u00bd\\u0007q\\u0002\\u0002\\u00bd\\u0016\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00be\\u00bf\\u0007e\\u0002\\u0002\\u00bf\\u00c0\\u0007q\\u0002\\u0002\\u00c0\",\n \"\\u00c1\\u0007p\\u0002\\u0002\\u00c1\\u00c2\\u0007u\\u0002\\u0002\\u00c2\\u00c3\",\n \"\\u0007v\\u0002\\u0002\\u00c3\\u0018\\u0003\\u0002\\u0002\\u0002\\u00c4\\u00c5\",\n \"\\u0007h\\u0002\\u0002\\u00c5\\u00c6\\u0007w\\u0002\\u0002\\u00c6\\u00c7\\u0007\",\n \"p\\u0002\\u0002\\u00c7\\u00c8\\u0007e\\u0002\\u0002\\u00c8\\u00c9\\u0007c\\u0002\",\n \"\\u0002\\u00c9\\u00ca\\u0007q\\u0002\\u0002\\u00ca\\u001a\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00cb\\u00cc\\u0007t\\u0002\\u0002\\u00cc\\u00cd\\u0007g\\u0002\\u0002\",\n \"\\u00cd\\u00ce\\u0007v\\u0002\\u0002\\u00ce\\u00cf\\u0007q\\u0002\\u0002\\u00cf\",\n \"\\u00d0\\u0007t\\u0002\\u0002\\u00d0\\u00d1\\u0007p\\u0002\\u0002\\u00d1\\u00d2\",\n \"\\u0007g\\u0002\\u0002\\u00d2\\u001c\\u0003\\u0002\\u0002\\u0002\\u00d3\\u00d4\",\n \"\\u0007r\\u0002\\u0002\\u00d4\\u00d5\\u0007c\\u0002\\u0002\\u00d5\\u00d6\\u0007\",\n \"t\\u0002\\u0002\\u00d6\\u00d7\\u0007c\\u0002\\u0002\\u00d7\\u001e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00d8\\u00d9\\u0007r\\u0002\\u0002\\u00d9\\u00da\\u0007c\\u0002\",\n \"\\u0002\\u00da\\u00db\\u0007t\\u0002\\u0002\\u00db\\u00dc\\u0007g\\u0002\\u0002\",\n \"\\u00dc \\u0003\\u0002\\u0002\\u0002\\u00dd\\u00de\\u0007h\\u0002\\u0002\\u00de\",\n \"\\u00df\\u0007c\\u0002\\u0002\\u00df\\u00e0\\u0007e\\u0002\\u0002\\u00e0\\u00e1\",\n \"\\u0007c\\u0002\\u0002\\u00e1\\\"\\u0003\\u0002\\u0002\\u0002\\u00e2\\u00e3\\u0007\",\n \"g\\u0002\\u0002\\u00e3\\u00e4\\u0007p\\u0002\\u0002\\u00e4\\u00e5\\u0007s\\u0002\",\n \"\\u0002\\u00e5\\u00e6\\u0007w\\u0002\\u0002\\u00e6\\u00e7\\u0007c\\u0002\\u0002\",\n \"\\u00e7\\u00e8\\u0007p\\u0002\\u0002\\u00e8\\u00e9\\u0007v\\u0002\\u0002\\u00e9\",\n \"\\u00ea\\u0007q\\u0002\\u0002\\u00ea$\\u0003\\u0002\\u0002\\u0002\\u00eb\\u00ec\",\n \"\\u0007u\\u0002\\u0002\\u00ec\\u00ed\\u0007g\\u0002\\u0002\\u00ed&\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00ee\\u00ef\\u0007u\\u0002\\u0002\\u00ef\\u00f0\\u0007g\\u0002\",\n \"\\u0002\\u00f0\\u00f1\\u0007p\\u0002\\u0002\\u00f1\\u00f2\\u0007c\\u0002\\u0002\",\n \"\\u00f2\\u00f3\\u0007q\\u0002\\u0002\\u00f3(\\u0003\\u0002\\u0002\\u0002\\u00f4\",\n \"\\u00f5\\u0007h\\u0002\\u0002\\u00f5\\u00f6\\u0007c\\u0002\\u0002\\u00f6\\u00f7\",\n \"\\u0007n\\u0002\\u0002\\u00f7\\u00f8\\u0007u\\u0002\\u0002\\u00f8\\u00f9\\u0007\",\n \"q\\u0002\\u0002\\u00f9*\\u0003\\u0002\\u0002\\u0002\\u00fa\\u00fb\\u0007x\\u0002\",\n \"\\u0002\\u00fb\\u00fc\\u0007g\\u0002\\u0002\\u00fc\\u00fd\\u0007t\\u0002\\u0002\",\n \"\\u00fd\\u00fe\\u0007f\\u0002\\u0002\\u00fe\\u00ff\\u0007c\\u0002\\u0002\\u00ff\",\n \"\\u0100\\u0007f\\u0002\\u0002\\u0100\\u0101\\u0007g\\u0002\\u0002\\u0101\\u0102\",\n \"\\u0007k\\u0002\\u0002\\u0102\\u0103\\u0007t\\u0002\\u0002\\u0103\\u0104\\u0007\",\n \"q\\u0002\\u0002\\u0104,\\u0003\\u0002\\u0002\\u0002\\u0105\\u0106\\u0007p\\u0002\",\n \"\\u0002\\u0106\\u0107\\u0007c\\u0002\\u0002\\u0107\\u0108\\u0007q\\u0002\\u0002\",\n \"\\u0108.\\u0003\\u0002\\u0002\\u0002\\u0109\\u010a\\u0007G\\u0002\\u0002\\u010a\",\n \"0\\u0003\\u0002\\u0002\\u0002\\u010b\\u010c\\u0007Q\\u0002\\u0002\\u010c\\u010d\",\n \"\\u0007W\\u0002\\u0002\\u010d2\\u0003\\u0002\\u0002\\u0002\\u010e\\u010f\\u0007\",\n \"*\\u0002\\u0002\\u010f4\\u0003\\u0002\\u0002\\u0002\\u0110\\u0111\\u0007+\\u0002\",\n \"\\u0002\\u01116\\u0003\\u0002\\u0002\\u0002\\u0112\\u0113\\u0007]\\u0002\\u0002\",\n \"\\u01138\\u0003\\u0002\\u0002\\u0002\\u0114\\u0115\\u0007_\\u0002\\u0002\\u0115\",\n \":\\u0003\\u0002\\u0002\\u0002\\u0116\\u0117\\u0007}\\u0002\\u0002\\u0117<\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0118\\u0119\\u0007\\u007f\\u0002\\u0002\\u0119>\\u0003\",\n \"\\u0002\\u0002\\u0002\\u011a\\u011b\\u0007.\\u0002\\u0002\\u011b@\\u0003\\u0002\",\n \"\\u0002\\u0002\\u011c\\u011d\\u0007?\\u0002\\u0002\\u011dB\\u0003\\u0002\\u0002\",\n \"\\u0002\\u011e\\u011f\\t\\u0002\\u0002\\u0002\\u011fD\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0120\\u0121\\t\\u0003\\u0002\\u0002\\u0121F\\u0003\\u0002\\u0002\\u0002\\u0122\",\n \"\\u0123\\u0005/\\u0018\\u0002\\u0123H\\u0003\\u0002\\u0002\\u0002\\u0124\\u0125\",\n \"\\u00051\\u0019\\u0002\\u0125J\\u0003\\u0002\\u0002\\u0002\\u0126\\u0127\\u0007\",\n \"@\\u0002\\u0002\\u0127\\u0130\\u0007?\\u0002\\u0002\\u0128\\u0129\\u0007?\\u0002\",\n \"\\u0002\\u0129\\u0130\\u0007?\\u0002\\u0002\\u012a\\u012b\\u0007>\\u0002\\u0002\",\n \"\\u012b\\u0130\\u0007?\\u0002\\u0002\\u012c\\u0130\\t\\u0004\\u0002\\u0002\\u012d\",\n \"\\u012e\\u0007#\\u0002\\u0002\\u012e\\u0130\\u0007?\\u0002\\u0002\\u012f\\u0126\",\n \"\\u0003\\u0002\\u0002\\u0002\\u012f\\u0128\\u0003\\u0002\\u0002\\u0002\\u012f\\u012a\",\n \"\\u0003\\u0002\\u0002\\u0002\\u012f\\u012c\\u0003\\u0002\\u0002\\u0002\\u012f\\u012d\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0130L\\u0003\\u0002\\u0002\\u0002\\u0131\\u0132\",\n \"\\u0007<\\u0002\\u0002\\u0132N\\u0003\\u0002\\u0002\\u0002\\u0133\\u0134\\u0005\",\n \"-\\u0017\\u0002\\u0134P\\u0003\\u0002\\u0002\\u0002\\u0135\\u0139\\t\\u0005\\u0002\",\n \"\\u0002\\u0136\\u0138\\t\\u0006\\u0002\\u0002\\u0137\\u0136\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0138\\u013b\\u0003\\u0002\\u0002\\u0002\\u0139\\u0137\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0139\\u013a\\u0003\\u0002\\u0002\\u0002\\u013aR\\u0003\\u0002\\u0002\",\n \"\\u0002\\u013b\\u0139\\u0003\\u0002\\u0002\\u0002\\u013c\\u013d\\u0005Q)\\u0002\",\n \"\\u013d\\u013e\\u00070\\u0002\\u0002\\u013e\\u013f\\u0005Q)\\u0002\\u013fT\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0140\\u0142\\t\\u0007\\u0002\\u0002\\u0141\\u0140\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0142\\u0143\\u0003\\u0002\\u0002\\u0002\\u0143\\u0141\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0143\\u0144\\u0003\\u0002\\u0002\\u0002\\u0144\\u015c\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0145\\u0146\\u00072\\u0002\\u0002\\u0146\\u014a\\u0007\",\n \"z\\u0002\\u0002\\u0147\\u0148\\u00072\\u0002\\u0002\\u0148\\u014a\\u0007Z\\u0002\",\n \"\\u0002\\u0149\\u0145\\u0003\\u0002\\u0002\\u0002\\u0149\\u0147\\u0003\\u0002\\u0002\",\n \"\\u0002\\u014a\\u014c\\u0003\\u0002\\u0002\\u0002\\u014b\\u014d\\u0005g4\\u0002\",\n \"\\u014c\\u014b\\u0003\\u0002\\u0002\\u0002\\u014d\\u014e\\u0003\\u0002\\u0002\\u0002\",\n \"\\u014e\\u014c\\u0003\\u0002\\u0002\\u0002\\u014e\\u014f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u014f\\u015c\\u0003\\u0002\\u0002\\u0002\\u0150\\u0151\\u00072\\u0002\\u0002\",\n \"\\u0151\\u0155\\u0007d\\u0002\\u0002\\u0152\\u0153\\u00072\\u0002\\u0002\\u0153\",\n \"\\u0155\\u0007D\\u0002\\u0002\\u0154\\u0150\\u0003\\u0002\\u0002\\u0002\\u0154\",\n \"\\u0152\\u0003\\u0002\\u0002\\u0002\\u0155\\u0157\\u0003\\u0002\\u0002\\u0002\\u0156\",\n \"\\u0158\\t\\b\\u0002\\u0002\\u0157\\u0156\\u0003\\u0002\\u0002\\u0002\\u0158\\u0159\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0159\\u0157\\u0003\\u0002\\u0002\\u0002\\u0159\\u015a\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015a\\u015c\\u0003\\u0002\\u0002\\u0002\\u015b\\u0141\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015b\\u0149\\u0003\\u0002\\u0002\\u0002\\u015b\\u0154\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015cV\\u0003\\u0002\\u0002\\u0002\\u015d\\u015f\",\n \"\\t\\u0007\\u0002\\u0002\\u015e\\u015d\\u0003\\u0002\\u0002\\u0002\\u015f\\u0160\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0160\\u015e\\u0003\\u0002\\u0002\\u0002\\u0160\\u0161\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0161\\u0162\\u0003\\u0002\\u0002\\u0002\\u0162\\u0164\",\n \"\\u00070\\u0002\\u0002\\u0163\\u0165\\t\\u0007\\u0002\\u0002\\u0164\\u0163\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0165\\u0166\\u0003\\u0002\\u0002\\u0002\\u0166\\u0164\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0166\\u0167\\u0003\\u0002\\u0002\\u0002\\u0167\\u0176\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0168\\u016a\\t\\u0007\\u0002\\u0002\\u0169\\u0168\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016a\\u016b\\u0003\\u0002\\u0002\\u0002\\u016b\\u0169\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016b\\u016c\\u0003\\u0002\\u0002\\u0002\\u016c\\u016d\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016d\\u0171\\u00070\\u0002\\u0002\\u016e\\u0170\\t\\u0007\",\n \"\\u0002\\u0002\\u016f\\u016e\\u0003\\u0002\\u0002\\u0002\\u0170\\u0173\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0171\\u016f\\u0003\\u0002\\u0002\\u0002\\u0171\\u0172\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0172\\u0174\\u0003\\u0002\\u0002\\u0002\\u0173\\u0171\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0174\\u0176\\u0005Y-\\u0002\\u0175\\u015e\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0175\\u0169\\u0003\\u0002\\u0002\\u0002\\u0176X\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0177\\u0179\\t\\t\\u0002\\u0002\\u0178\\u017a\\t\\u0002\\u0002\\u0002\\u0179\",\n \"\\u0178\\u0003\\u0002\\u0002\\u0002\\u0179\\u017a\\u0003\\u0002\\u0002\\u0002\\u017a\",\n \"\\u017c\\u0003\\u0002\\u0002\\u0002\\u017b\\u017d\\t\\u0007\\u0002\\u0002\\u017c\",\n \"\\u017b\\u0003\\u0002\\u0002\\u0002\\u017d\\u017e\\u0003\\u0002\\u0002\\u0002\\u017e\",\n \"\\u017c\\u0003\\u0002\\u0002\\u0002\\u017e\\u017f\\u0003\\u0002\\u0002\\u0002\\u017f\",\n \"Z\\u0003\\u0002\\u0002\\u0002\\u0180\\u0184\\u0007$\\u0002\\u0002\\u0181\\u0183\",\n \"\\u0005]/\\u0002\\u0182\\u0181\\u0003\\u0002\\u0002\\u0002\\u0183\\u0186\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0184\\u0182\\u0003\\u0002\\u0002\\u0002\\u0184\\u0185\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0185\\u0187\\u0003\\u0002\\u0002\\u0002\\u0186\\u0184\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0187\\u0188\\u0007$\\u0002\\u0002\\u0188\\\\\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0189\\u018c\\n\\n\\u0002\\u0002\\u018a\\u018c\\u0005k6\\u0002\\u018b\",\n \"\\u0189\\u0003\\u0002\\u0002\\u0002\\u018b\\u018a\\u0003\\u0002\\u0002\\u0002\\u018c\",\n \"^\\u0003\\u0002\\u0002\\u0002\\u018d\\u0190\\u0007)\\u0002\\u0002\\u018e\\u0191\",\n \"\\u0005k6\\u0002\\u018f\\u0191\\n\\u000b\\u0002\\u0002\\u0190\\u018e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0190\\u018f\\u0003\\u0002\\u0002\\u0002\\u0191\\u0192\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0192\\u0193\\u0007)\\u0002\\u0002\\u0193`\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0194\\u0195\\t\\f\\u0002\\u0002\\u0195\\u0196\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0196\\u0197\\b1\\u0002\\u0002\\u0197b\\u0003\\u0002\\u0002\\u0002\\u0198\\u0199\",\n \"\\u0007=\\u0002\\u0002\\u0199d\\u0003\\u0002\\u0002\\u0002\\u019a\\u019c\\t\\r\\u0002\",\n \"\\u0002\\u019b\\u019a\\u0003\\u0002\\u0002\\u0002\\u019c\\u019d\\u0003\\u0002\\u0002\",\n \"\\u0002\\u019d\\u019b\\u0003\\u0002\\u0002\\u0002\\u019d\\u019e\\u0003\\u0002\\u0002\",\n \"\\u0002\\u019e\\u01a1\\u0003\\u0002\\u0002\\u0002\\u019f\\u01a1\\u0005c2\\u0002\",\n \"\\u01a0\\u019b\\u0003\\u0002\\u0002\\u0002\\u01a0\\u019f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01a1f\\u0003\\u0002\\u0002\\u0002\\u01a2\\u01a3\\t\\u000e\\u0002\\u0002\\u01a3\",\n \"h\\u0003\\u0002\\u0002\\u0002\\u01a4\\u01a5\\t\\u000f\\u0002\\u0002\\u01a5j\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01a6\\u01a7\\u0007^\\u0002\\u0002\\u01a7\\u01ab\\t\\u0010\",\n \"\\u0002\\u0002\\u01a8\\u01ab\\u0005o8\\u0002\\u01a9\\u01ab\\u0005m7\\u0002\\u01aa\",\n \"\\u01a6\\u0003\\u0002\\u0002\\u0002\\u01aa\\u01a8\\u0003\\u0002\\u0002\\u0002\\u01aa\",\n \"\\u01a9\\u0003\\u0002\\u0002\\u0002\\u01abl\\u0003\\u0002\\u0002\\u0002\\u01ac\",\n \"\\u01ad\\u0007^\\u0002\\u0002\\u01ad\\u01ae\\t\\u0011\\u0002\\u0002\\u01ae\\u01af\",\n \"\\u0005i5\\u0002\\u01af\\u01b0\\u0005i5\\u0002\\u01b0\\u01b8\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01b1\\u01b2\\u0007^\\u0002\\u0002\\u01b2\\u01b3\\u0005i5\\u0002\\u01b3\",\n \"\\u01b4\\u0005i5\\u0002\\u01b4\\u01b8\\u0003\\u0002\\u0002\\u0002\\u01b5\\u01b6\",\n \"\\u0007^\\u0002\\u0002\\u01b6\\u01b8\\u0005i5\\u0002\\u01b7\\u01ac\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01b7\\u01b1\\u0003\\u0002\\u0002\\u0002\\u01b7\\u01b5\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01b8n\\u0003\\u0002\\u0002\\u0002\\u01b9\\u01ba\\u0007^\\u0002\",\n \"\\u0002\\u01ba\\u01bb\\u0007w\\u0002\\u0002\\u01bb\\u01bc\\u0005g4\\u0002\\u01bc\",\n \"\\u01bd\\u0005g4\\u0002\\u01bd\\u01be\\u0005g4\\u0002\\u01be\\u01bf\\u0005g4\\u0002\",\n \"\\u01bfp\\u0003\\u0002\\u0002\\u0002\\u01c0\\u01c1\\u00071\\u0002\\u0002\\u01c1\",\n \"\\u01c2\\u00071\\u0002\\u0002\\u01c2\\u01c6\\u0003\\u0002\\u0002\\u0002\\u01c3\",\n \"\\u01c5\\n\\r\\u0002\\u0002\\u01c4\\u01c3\\u0003\\u0002\\u0002\\u0002\\u01c5\\u01c8\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c6\\u01c4\\u0003\\u0002\\u0002\\u0002\\u01c6\\u01c7\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c7\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01c8\\u01c6\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c9\\u01cb\\u0007\\u000f\\u0002\\u0002\\u01ca\\u01c9\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01ca\\u01cb\\u0003\\u0002\\u0002\\u0002\\u01cb\\u01cc\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01cc\\u01d9\\u0007\\f\\u0002\\u0002\\u01cd\\u01ce\",\n \"\\u00071\\u0002\\u0002\\u01ce\\u01cf\\u0007,\\u0002\\u0002\\u01cf\\u01d3\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d0\\u01d2\\u000b\\u0002\\u0002\\u0002\\u01d1\\u01d0\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d2\\u01d5\\u0003\\u0002\\u0002\\u0002\\u01d3\\u01d4\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d3\\u01d1\\u0003\\u0002\\u0002\\u0002\\u01d4\\u01d6\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d5\\u01d3\\u0003\\u0002\\u0002\\u0002\\u01d6\\u01d7\\u0007\",\n \",\\u0002\\u0002\\u01d7\\u01d9\\u00071\\u0002\\u0002\\u01d8\\u01c0\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01d8\\u01cd\\u0003\\u0002\\u0002\\u0002\\u01d9\\u01da\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01da\\u01db\\b9\\u0003\\u0002\\u01dbr\\u0003\\u0002\\u0002\\u0002\",\n \"\\u001d\\u0002\\u012f\\u0139\\u0143\\u0149\\u014e\\u0154\\u0159\\u015b\\u0160\\u0166\",\n \"\\u016b\\u0171\\u0175\\u0179\\u017e\\u0184\\u018b\\u0190\\u019d\\u01a0\\u01aa\\u01b7\",\n \"\\u01c6\\u01ca\\u01d3\\u01d8\\u0004\\b\\u0002\\u0002\\u0002\\u0003\\u0002\"].join(\"\");\n\n\nvar atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nvar decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });\n\nfunction ivprog(input) {\n\tantlr4.Lexer.call(this, input);\n this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n return this;\n}\n\nivprog.prototype = Object.create(antlr4.Lexer.prototype);\nivprog.prototype.constructor = ivprog;\n\nivprog.EOF = antlr4.Token.EOF;\nivprog.RK_PROGRAM = 1;\nivprog.RK_REAL = 2;\nivprog.RK_VOID = 3;\nivprog.RK_BOOLEAN = 4;\nivprog.RK_STRING = 5;\nivprog.RK_INTEGER = 6;\nivprog.RK_CHARACTER = 7;\nivprog.RK_SWITCH = 8;\nivprog.RK_CASE = 9;\nivprog.RK_DEFAULT = 10;\nivprog.RK_CONST = 11;\nivprog.RK_FUNCTION = 12;\nivprog.RK_RETURN = 13;\nivprog.RK_FOR = 14;\nivprog.RK_BREAK = 15;\nivprog.RK_DO = 16;\nivprog.RK_WHILE = 17;\nivprog.RK_IF = 18;\nivprog.RK_ELSE = 19;\nivprog.RK_FALSE = 20;\nivprog.RK_TRUE = 21;\nivprog.OPEN_PARENTHESIS = 22;\nivprog.CLOSE_PARENTHESIS = 23;\nivprog.OPEN_BRACE = 24;\nivprog.CLOSE_BRACE = 25;\nivprog.OPEN_CURLY = 26;\nivprog.CLOSE_CURLY = 27;\nivprog.COMMA = 28;\nivprog.EQUAL = 29;\nivprog.SUM_OP = 30;\nivprog.MULTI_OP = 31;\nivprog.AND_OPERATOR = 32;\nivprog.OR_OPERATOR = 33;\nivprog.RELATIONAL_OPERATOR = 34;\nivprog.COLON = 35;\nivprog.NOT_OPERATOR = 36;\nivprog.ID = 37;\nivprog.LIB_ID = 38;\nivprog.INTEGER = 39;\nivprog.REAL = 40;\nivprog.STRING = 41;\nivprog.CHARACTER = 42;\nivprog.WHITESPACE = 43;\nivprog.EOS = 44;\nivprog.COMMENTS = 45;\n\nivprog.prototype.channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\" ];\n\nivprog.prototype.modeNames = [ \"DEFAULT_MODE\" ];\n\nivprog.prototype.literalNames = [ null, \"'programa'\", \"'real'\", \"'vazio'\", \n \"'logico'\", \"'cadeia'\", \"'inteiro'\", \"'caractere'\", \n \"'escolha'\", \"'caso'\", \"'contrario'\", \n \"'const'\", \"'funcao'\", \"'retorne'\", \"'para'\", \n \"'pare'\", \"'faca'\", \"'enquanto'\", \"'se'\", \n \"'senao'\", \"'falso'\", \"'verdadeiro'\", \n \"'('\", \"')'\", \"'['\", \"']'\", \"'{'\", \"'}'\", \n \"','\", \"'='\", null, null, null, null, \n null, \"':'\" ];\n\nivprog.prototype.symbolicNames = [ null, \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \n \"RK_BOOLEAN\", \"RK_STRING\", \"RK_INTEGER\", \n \"RK_CHARACTER\", \"RK_SWITCH\", \"RK_CASE\", \n \"RK_DEFAULT\", \"RK_CONST\", \"RK_FUNCTION\", \n \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \"RK_DO\", \n \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"OPEN_PARENTHESIS\", \"CLOSE_PARENTHESIS\", \n \"OPEN_BRACE\", \"CLOSE_BRACE\", \"OPEN_CURLY\", \n \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \"SUM_OP\", \n \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"STRING\", \n \"CHARACTER\", \"WHITESPACE\", \"EOS\", \"COMMENTS\" ];\n\nivprog.prototype.ruleNames = [ \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \"RK_BOOLEAN\", \n \"RK_STRING\", \"RK_INTEGER\", \"RK_CHARACTER\", \n \"RK_SWITCH\", \"RK_CASE\", \"RK_DEFAULT\", \"RK_CONST\", \n \"RK_FUNCTION\", \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \n \"RK_DO\", \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \n \"RK_FALSE\", \"RK_TRUE\", \"RK_LOGICAL_NOT\", \n \"RK_LOGICAL_AND\", \"RK_LOGICAL_OR\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \n \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"ExponentPart\", \n \"STRING\", \"STRING_CHARACTER\", \"CHARACTER\", \n \"WHITESPACE\", \"SEMICOLON\", \"EOS\", \"HEX_DIGIT\", \n \"OCTAL_DIGIT\", \"ESC_SEQ\", \"ESC_OCTAL\", \"ESC_UNICODE\", \n \"COMMENTS\" ];\n\nivprog.prototype.grammarFileName = \"ivprog.g4\";\n\n\n\nexports.ivprog = ivprog;\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = {\nivprog: __webpack_require__(0).ivprog\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"antlr4/index\");\n\n/***/ })\n/******/ ]);","/* This is a dictionary of the language defined functions\n**/\nexport default {\n main_function: \"inicio\",\n $read: \"leia\",\n $write: \"escreva\",\n $numElements: \"total_of_elements\",\n $matrixLines: \"total_of_lines\",\n $matrixColumns: \"total_of_columns\",\n $substring: \"subcadeia\",\n $length: \"comprimento\",\n $uppercase: \"caixa_alta\",\n $lowercase: \"caixa_baixa\",\n $charAt: \"char_at\",\n $isReal: \"is_real\",\n $isInt: \"is_integer\",\n $isBool: \"is_logic\",\n $castReal: \"to_real\",\n $castInt: \"to_integer\",\n $castBool: \"to_logic\",\n $castString: \"to_string\",\n $sin: \"sin\",\n $cos: \"cos\",\n $tan: \"tan\",\n $sqrt: \"sqrt\",\n $pow: \"pow\",\n $log: \"log\",\n $abs: \"abs\",\n $negate: \"negate\",\n $invert: \"invert\",\n $max: \"maximum\",\n $min: \"minimum\"\n}\n","/**\n * This is the dictionary of the language defined libraries\n */\nexport default {\n $mathLib: \"Mathematic\",\n $ioLib: \"ES\",\n $strLib: \"Texto\",\n $arrayLib: \"Arranjo\",\n $langLib: \"Conversion\"\n}","import * as PT from './pt/ivprog.g4';\nimport PTFuncs from './pt/langFunctions';\nimport PTLibs from './pt/langLibs';\nimport * as EN from './en/ivprog.g4';\nimport ENFuncs from './en/langFunctions';\nimport ENLibs from './en/langLibs';\nimport * as ES from './es/ivprog.g4';\nimport ESFuncs from './es/langFunctions';\nimport ESLibs from './es/langLibs';\n\nexport default {\n pt: {lexer: PT.ivprog, langFuncs: PTFuncs, langLibs: PTLibs},\n en: {lexer: EN.ivprog, langFuncs: ENFuncs, langLibs: ENLibs},\n es: {lexer: ES.ivprog, langFuncs: ESFuncs, langLibs: ESLibs}\n}\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Generated from /tmp/tmp-89559j3WqZYf2bRf/ivprog.g4 by ANTLR 4.7\n// jshint ignore: start\nvar antlr4 = __webpack_require__(2);\n\n\nvar serializedATN = [\"\\u0003\\u608b\\ua72a\\u8133\\ub9ed\\u417c\\u3be7\\u7786\\u5964\",\n \"\\u0002/\\u01dc\\b\\u0001\\u0004\\u0002\\t\\u0002\\u0004\\u0003\\t\\u0003\\u0004\",\n \"\\u0004\\t\\u0004\\u0004\\u0005\\t\\u0005\\u0004\\u0006\\t\\u0006\\u0004\\u0007\\t\",\n \"\\u0007\\u0004\\b\\t\\b\\u0004\\t\\t\\t\\u0004\\n\\t\\n\\u0004\\u000b\\t\\u000b\\u0004\",\n \"\\f\\t\\f\\u0004\\r\\t\\r\\u0004\\u000e\\t\\u000e\\u0004\\u000f\\t\\u000f\\u0004\\u0010\",\n \"\\t\\u0010\\u0004\\u0011\\t\\u0011\\u0004\\u0012\\t\\u0012\\u0004\\u0013\\t\\u0013\",\n \"\\u0004\\u0014\\t\\u0014\\u0004\\u0015\\t\\u0015\\u0004\\u0016\\t\\u0016\\u0004\\u0017\",\n \"\\t\\u0017\\u0004\\u0018\\t\\u0018\\u0004\\u0019\\t\\u0019\\u0004\\u001a\\t\\u001a\",\n \"\\u0004\\u001b\\t\\u001b\\u0004\\u001c\\t\\u001c\\u0004\\u001d\\t\\u001d\\u0004\\u001e\",\n \"\\t\\u001e\\u0004\\u001f\\t\\u001f\\u0004 \\t \\u0004!\\t!\\u0004\\\"\\t\\\"\\u0004#\",\n \"\\t#\\u0004$\\t$\\u0004%\\t%\\u0004&\\t&\\u0004\\'\\t\\'\\u0004(\\t(\\u0004)\\t)\\u0004\",\n \"*\\t*\\u0004+\\t+\\u0004,\\t,\\u0004-\\t-\\u0004.\\t.\\u0004/\\t/\\u00040\\t0\\u0004\",\n \"1\\t1\\u00042\\t2\\u00043\\t3\\u00044\\t4\\u00045\\t5\\u00046\\t6\\u00047\\t7\\u0004\",\n \"8\\t8\\u00049\\t9\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\",\n \"\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0003\\u0003\",\n \"\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0003\\u0004\\u0003\\u0004\\u0003\",\n \"\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0005\\u0003\\u0005\\u0003\",\n \"\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0006\\u0003\",\n \"\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\",\n \"\\u0007\\u0003\\u0007\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\",\n \"\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\",\n \"\\t\\u0003\\t\\u0003\\t\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\u000b\",\n \"\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\",\n \"\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\f\",\n \"\\u0003\\f\\u0003\\f\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\\r\\u0003\",\n \"\\r\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\",\n \"\\u000e\\u0003\\u000e\\u0003\\u000e\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\",\n \"\\u000f\\u0003\\u000f\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\",\n \"\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\",\n \"\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0019\\u0003\",\n \"\\u0019\\u0003\\u0019\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\\u001b\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001d\\u0003\\u001d\\u0003\\u001e\\u0003\\u001e\\u0003\",\n \"\\u001f\\u0003\\u001f\\u0003 \\u0003 \\u0003!\\u0003!\\u0003\\\"\\u0003\\\"\\u0003\",\n \"#\\u0003#\\u0003$\\u0003$\\u0003%\\u0003%\\u0003&\\u0003&\\u0003&\\u0003&\\u0003\",\n \"&\\u0003&\\u0003&\\u0003&\\u0003&\\u0005&\\u0130\\n&\\u0003\\'\\u0003\\'\\u0003\",\n \"(\\u0003(\\u0003)\\u0003)\\u0007)\\u0138\\n)\\f)\\u000e)\\u013b\\u000b)\\u0003\",\n \"*\\u0003*\\u0003*\\u0003*\\u0003+\\u0006+\\u0142\\n+\\r+\\u000e+\\u0143\\u0003\",\n \"+\\u0003+\\u0003+\\u0003+\\u0005+\\u014a\\n+\\u0003+\\u0006+\\u014d\\n+\\r+\\u000e\",\n \"+\\u014e\\u0003+\\u0003+\\u0003+\\u0003+\\u0005+\\u0155\\n+\\u0003+\\u0006+\\u0158\",\n \"\\n+\\r+\\u000e+\\u0159\\u0005+\\u015c\\n+\\u0003,\\u0006,\\u015f\\n,\\r,\\u000e\",\n \",\\u0160\\u0003,\\u0003,\\u0006,\\u0165\\n,\\r,\\u000e,\\u0166\\u0003,\\u0006,\",\n \"\\u016a\\n,\\r,\\u000e,\\u016b\\u0003,\\u0003,\\u0007,\\u0170\\n,\\f,\\u000e,\\u0173\",\n \"\\u000b,\\u0003,\\u0005,\\u0176\\n,\\u0003-\\u0003-\\u0005-\\u017a\\n-\\u0003-\",\n \"\\u0006-\\u017d\\n-\\r-\\u000e-\\u017e\\u0003.\\u0003.\\u0007.\\u0183\\n.\\f.\\u000e\",\n \".\\u0186\\u000b.\\u0003.\\u0003.\\u0003/\\u0003/\\u0005/\\u018c\\n/\\u00030\\u0003\",\n \"0\\u00030\\u00050\\u0191\\n0\\u00030\\u00030\\u00031\\u00031\\u00031\\u00031\\u0003\",\n \"2\\u00032\\u00033\\u00063\\u019c\\n3\\r3\\u000e3\\u019d\\u00033\\u00053\\u01a1\",\n \"\\n3\\u00034\\u00034\\u00035\\u00035\\u00036\\u00036\\u00036\\u00036\\u00056\\u01ab\",\n \"\\n6\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u00037\\u0003\",\n \"7\\u00037\\u00057\\u01b8\\n7\\u00038\\u00038\\u00038\\u00038\\u00038\\u00038\\u0003\",\n \"8\\u00039\\u00039\\u00039\\u00039\\u00079\\u01c5\\n9\\f9\\u000e9\\u01c8\\u000b\",\n \"9\\u00039\\u00059\\u01cb\\n9\\u00039\\u00039\\u00039\\u00039\\u00039\\u00079\\u01d2\",\n \"\\n9\\f9\\u000e9\\u01d5\\u000b9\\u00039\\u00039\\u00059\\u01d9\\n9\\u00039\\u0003\",\n \"9\\u0003\\u01d3\\u0002:\\u0003\\u0003\\u0005\\u0004\\u0007\\u0005\\t\\u0006\\u000b\",\n \"\\u0007\\r\\b\\u000f\\t\\u0011\\n\\u0013\\u000b\\u0015\\f\\u0017\\r\\u0019\\u000e\\u001b\",\n \"\\u000f\\u001d\\u0010\\u001f\\u0011!\\u0012#\\u0013%\\u0014\\'\\u0015)\\u0016+\",\n \"\\u0017-\\u0002/\\u00021\\u00023\\u00185\\u00197\\u001a9\\u001b;\\u001c=\\u001d\",\n \"?\\u001eA\\u001fC E!G\\\"I#K$M%O&Q\\'S(U)W*Y\\u0002[+]\\u0002_,a-c\\u0002e.\",\n \"g\\u0002i\\u0002k\\u0002m\\u0002o\\u0002q/\\u0003\\u0002\\u0012\\u0004\\u0002\",\n \"--//\\u0005\\u0002\\'\\',,11\\u0004\\u0002>>@@\\u0005\\u0002C\\\\aac|\\u0006\\u0002\",\n \"2;C\\\\aac|\\u0003\\u00022;\\u0003\\u000223\\u0004\\u0002GGgg\\u0006\\u0002\\f\",\n \"\\f\\u000f\\u000f$$^^\\u0006\\u0002\\f\\f\\u000f\\u000f))^^\\u0004\\u0002\\u000b\",\n \"\\u000b\\\"\\\"\\u0004\\u0002\\f\\f\\u000f\\u000f\\u0005\\u00022;CHch\\u0003\\u0002\",\n \"29\\n\\u0002$$))^^ddhhppttvv\\u0003\\u000225\\u0002\\u01f0\\u0002\\u0003\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0005\\u0003\\u0002\\u0002\\u0002\\u0002\\u0007\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\t\\u0003\\u0002\\u0002\\u0002\\u0002\\u000b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\r\\u0003\\u0002\\u0002\\u0002\\u0002\\u000f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0011\\u0003\\u0002\\u0002\\u0002\\u0002\\u0013\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0015\\u0003\\u0002\\u0002\\u0002\\u0002\\u0017\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u0019\\u0003\\u0002\\u0002\\u0002\\u0002\\u001b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002\\u001d\\u0003\\u0002\\u0002\\u0002\\u0002\\u001f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002!\\u0003\\u0002\\u0002\\u0002\\u0002#\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002%\\u0003\\u0002\\u0002\\u0002\\u0002\\'\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002)\\u0003\\u0002\\u0002\\u0002\\u0002+\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00023\\u0003\\u0002\\u0002\\u0002\\u00025\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"7\\u0003\\u0002\\u0002\\u0002\\u00029\\u0003\\u0002\\u0002\\u0002\\u0002;\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002=\\u0003\\u0002\\u0002\\u0002\\u0002?\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002A\\u0003\\u0002\\u0002\\u0002\\u0002C\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002E\\u0003\\u0002\\u0002\\u0002\\u0002G\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002I\\u0003\\u0002\\u0002\\u0002\\u0002K\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"M\\u0003\\u0002\\u0002\\u0002\\u0002O\\u0003\\u0002\\u0002\\u0002\\u0002Q\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002S\\u0003\\u0002\\u0002\\u0002\\u0002U\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002W\\u0003\\u0002\\u0002\\u0002\\u0002[\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002_\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002e\\u0003\\u0002\\u0002\\u0002\\u0002q\\u0003\\u0002\\u0002\\u0002\\u0003\",\n \"s\\u0003\\u0002\\u0002\\u0002\\u0005|\\u0003\\u0002\\u0002\\u0002\\u0007\\u0081\",\n \"\\u0003\\u0002\\u0002\\u0002\\t\\u0087\\u0003\\u0002\\u0002\\u0002\\u000b\\u008e\",\n \"\\u0003\\u0002\\u0002\\u0002\\r\\u0095\\u0003\\u0002\\u0002\\u0002\\u000f\\u009d\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0011\\u00a7\\u0003\\u0002\\u0002\\u0002\\u0013\\u00af\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0015\\u00b4\\u0003\\u0002\\u0002\\u0002\\u0017\\u00be\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0019\\u00c4\\u0003\\u0002\\u0002\\u0002\\u001b\\u00cb\",\n \"\\u0003\\u0002\\u0002\\u0002\\u001d\\u00d3\\u0003\\u0002\\u0002\\u0002\\u001f\\u00d8\",\n \"\\u0003\\u0002\\u0002\\u0002!\\u00dd\\u0003\\u0002\\u0002\\u0002#\\u00e2\\u0003\",\n \"\\u0002\\u0002\\u0002%\\u00eb\\u0003\\u0002\\u0002\\u0002\\'\\u00ee\\u0003\\u0002\",\n \"\\u0002\\u0002)\\u00f4\\u0003\\u0002\\u0002\\u0002+\\u00fa\\u0003\\u0002\\u0002\",\n \"\\u0002-\\u0105\\u0003\\u0002\\u0002\\u0002/\\u0109\\u0003\\u0002\\u0002\\u0002\",\n \"1\\u010b\\u0003\\u0002\\u0002\\u00023\\u010e\\u0003\\u0002\\u0002\\u00025\\u0110\",\n \"\\u0003\\u0002\\u0002\\u00027\\u0112\\u0003\\u0002\\u0002\\u00029\\u0114\\u0003\",\n \"\\u0002\\u0002\\u0002;\\u0116\\u0003\\u0002\\u0002\\u0002=\\u0118\\u0003\\u0002\",\n \"\\u0002\\u0002?\\u011a\\u0003\\u0002\\u0002\\u0002A\\u011c\\u0003\\u0002\\u0002\",\n \"\\u0002C\\u011e\\u0003\\u0002\\u0002\\u0002E\\u0120\\u0003\\u0002\\u0002\\u0002\",\n \"G\\u0122\\u0003\\u0002\\u0002\\u0002I\\u0124\\u0003\\u0002\\u0002\\u0002K\\u012f\",\n \"\\u0003\\u0002\\u0002\\u0002M\\u0131\\u0003\\u0002\\u0002\\u0002O\\u0133\\u0003\",\n \"\\u0002\\u0002\\u0002Q\\u0135\\u0003\\u0002\\u0002\\u0002S\\u013c\\u0003\\u0002\",\n \"\\u0002\\u0002U\\u015b\\u0003\\u0002\\u0002\\u0002W\\u0175\\u0003\\u0002\\u0002\",\n \"\\u0002Y\\u0177\\u0003\\u0002\\u0002\\u0002[\\u0180\\u0003\\u0002\\u0002\\u0002\",\n \"]\\u018b\\u0003\\u0002\\u0002\\u0002_\\u018d\\u0003\\u0002\\u0002\\u0002a\\u0194\",\n \"\\u0003\\u0002\\u0002\\u0002c\\u0198\\u0003\\u0002\\u0002\\u0002e\\u01a0\\u0003\",\n \"\\u0002\\u0002\\u0002g\\u01a2\\u0003\\u0002\\u0002\\u0002i\\u01a4\\u0003\\u0002\",\n \"\\u0002\\u0002k\\u01aa\\u0003\\u0002\\u0002\\u0002m\\u01b7\\u0003\\u0002\\u0002\",\n \"\\u0002o\\u01b9\\u0003\\u0002\\u0002\\u0002q\\u01d8\\u0003\\u0002\\u0002\\u0002\",\n \"st\\u0007r\\u0002\\u0002tu\\u0007t\\u0002\\u0002uv\\u0007q\\u0002\\u0002vw\\u0007\",\n \"i\\u0002\\u0002wx\\u0007t\\u0002\\u0002xy\\u0007c\\u0002\\u0002yz\\u0007o\\u0002\",\n \"\\u0002z{\\u0007c\\u0002\\u0002{\\u0004\\u0003\\u0002\\u0002\\u0002|}\\u0007t\",\n \"\\u0002\\u0002}~\\u0007g\\u0002\\u0002~\\u007f\\u0007c\\u0002\\u0002\\u007f\\u0080\",\n \"\\u0007n\\u0002\\u0002\\u0080\\u0006\\u0003\\u0002\\u0002\\u0002\\u0081\\u0082\",\n \"\\u0007x\\u0002\\u0002\\u0082\\u0083\\u0007c\\u0002\\u0002\\u0083\\u0084\\u0007\",\n \"|\\u0002\\u0002\\u0084\\u0085\\u0007k\\u0002\\u0002\\u0085\\u0086\\u0007q\\u0002\",\n \"\\u0002\\u0086\\b\\u0003\\u0002\\u0002\\u0002\\u0087\\u0088\\u0007n\\u0002\\u0002\",\n \"\\u0088\\u0089\\u0007q\\u0002\\u0002\\u0089\\u008a\\u0007i\\u0002\\u0002\\u008a\",\n \"\\u008b\\u0007k\\u0002\\u0002\\u008b\\u008c\\u0007e\\u0002\\u0002\\u008c\\u008d\",\n \"\\u0007q\\u0002\\u0002\\u008d\\n\\u0003\\u0002\\u0002\\u0002\\u008e\\u008f\\u0007\",\n \"e\\u0002\\u0002\\u008f\\u0090\\u0007c\\u0002\\u0002\\u0090\\u0091\\u0007f\\u0002\",\n \"\\u0002\\u0091\\u0092\\u0007g\\u0002\\u0002\\u0092\\u0093\\u0007k\\u0002\\u0002\",\n \"\\u0093\\u0094\\u0007c\\u0002\\u0002\\u0094\\f\\u0003\\u0002\\u0002\\u0002\\u0095\",\n \"\\u0096\\u0007k\\u0002\\u0002\\u0096\\u0097\\u0007p\\u0002\\u0002\\u0097\\u0098\",\n \"\\u0007v\\u0002\\u0002\\u0098\\u0099\\u0007g\\u0002\\u0002\\u0099\\u009a\\u0007\",\n \"k\\u0002\\u0002\\u009a\\u009b\\u0007t\\u0002\\u0002\\u009b\\u009c\\u0007q\\u0002\",\n \"\\u0002\\u009c\\u000e\\u0003\\u0002\\u0002\\u0002\\u009d\\u009e\\u0007e\\u0002\",\n \"\\u0002\\u009e\\u009f\\u0007c\\u0002\\u0002\\u009f\\u00a0\\u0007t\\u0002\\u0002\",\n \"\\u00a0\\u00a1\\u0007c\\u0002\\u0002\\u00a1\\u00a2\\u0007e\\u0002\\u0002\\u00a2\",\n \"\\u00a3\\u0007v\\u0002\\u0002\\u00a3\\u00a4\\u0007g\\u0002\\u0002\\u00a4\\u00a5\",\n \"\\u0007t\\u0002\\u0002\\u00a5\\u00a6\\u0007g\\u0002\\u0002\\u00a6\\u0010\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00a7\\u00a8\\u0007g\\u0002\\u0002\\u00a8\\u00a9\\u0007\",\n \"u\\u0002\\u0002\\u00a9\\u00aa\\u0007e\\u0002\\u0002\\u00aa\\u00ab\\u0007q\\u0002\",\n \"\\u0002\\u00ab\\u00ac\\u0007n\\u0002\\u0002\\u00ac\\u00ad\\u0007j\\u0002\\u0002\",\n \"\\u00ad\\u00ae\\u0007c\\u0002\\u0002\\u00ae\\u0012\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00af\\u00b0\\u0007e\\u0002\\u0002\\u00b0\\u00b1\\u0007c\\u0002\\u0002\\u00b1\",\n \"\\u00b2\\u0007u\\u0002\\u0002\\u00b2\\u00b3\\u0007q\\u0002\\u0002\\u00b3\\u0014\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00b4\\u00b5\\u0007e\\u0002\\u0002\\u00b5\\u00b6\",\n \"\\u0007q\\u0002\\u0002\\u00b6\\u00b7\\u0007p\\u0002\\u0002\\u00b7\\u00b8\\u0007\",\n \"v\\u0002\\u0002\\u00b8\\u00b9\\u0007t\\u0002\\u0002\\u00b9\\u00ba\\u0007c\\u0002\",\n \"\\u0002\\u00ba\\u00bb\\u0007t\\u0002\\u0002\\u00bb\\u00bc\\u0007k\\u0002\\u0002\",\n \"\\u00bc\\u00bd\\u0007q\\u0002\\u0002\\u00bd\\u0016\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00be\\u00bf\\u0007e\\u0002\\u0002\\u00bf\\u00c0\\u0007q\\u0002\\u0002\\u00c0\",\n \"\\u00c1\\u0007p\\u0002\\u0002\\u00c1\\u00c2\\u0007u\\u0002\\u0002\\u00c2\\u00c3\",\n \"\\u0007v\\u0002\\u0002\\u00c3\\u0018\\u0003\\u0002\\u0002\\u0002\\u00c4\\u00c5\",\n \"\\u0007h\\u0002\\u0002\\u00c5\\u00c6\\u0007w\\u0002\\u0002\\u00c6\\u00c7\\u0007\",\n \"p\\u0002\\u0002\\u00c7\\u00c8\\u0007e\\u0002\\u0002\\u00c8\\u00c9\\u0007c\\u0002\",\n \"\\u0002\\u00c9\\u00ca\\u0007q\\u0002\\u0002\\u00ca\\u001a\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00cb\\u00cc\\u0007t\\u0002\\u0002\\u00cc\\u00cd\\u0007g\\u0002\\u0002\",\n \"\\u00cd\\u00ce\\u0007v\\u0002\\u0002\\u00ce\\u00cf\\u0007q\\u0002\\u0002\\u00cf\",\n \"\\u00d0\\u0007t\\u0002\\u0002\\u00d0\\u00d1\\u0007p\\u0002\\u0002\\u00d1\\u00d2\",\n \"\\u0007g\\u0002\\u0002\\u00d2\\u001c\\u0003\\u0002\\u0002\\u0002\\u00d3\\u00d4\",\n \"\\u0007r\\u0002\\u0002\\u00d4\\u00d5\\u0007c\\u0002\\u0002\\u00d5\\u00d6\\u0007\",\n \"t\\u0002\\u0002\\u00d6\\u00d7\\u0007c\\u0002\\u0002\\u00d7\\u001e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00d8\\u00d9\\u0007r\\u0002\\u0002\\u00d9\\u00da\\u0007c\\u0002\",\n \"\\u0002\\u00da\\u00db\\u0007t\\u0002\\u0002\\u00db\\u00dc\\u0007g\\u0002\\u0002\",\n \"\\u00dc \\u0003\\u0002\\u0002\\u0002\\u00dd\\u00de\\u0007h\\u0002\\u0002\\u00de\",\n \"\\u00df\\u0007c\\u0002\\u0002\\u00df\\u00e0\\u0007e\\u0002\\u0002\\u00e0\\u00e1\",\n \"\\u0007c\\u0002\\u0002\\u00e1\\\"\\u0003\\u0002\\u0002\\u0002\\u00e2\\u00e3\\u0007\",\n \"g\\u0002\\u0002\\u00e3\\u00e4\\u0007p\\u0002\\u0002\\u00e4\\u00e5\\u0007s\\u0002\",\n \"\\u0002\\u00e5\\u00e6\\u0007w\\u0002\\u0002\\u00e6\\u00e7\\u0007c\\u0002\\u0002\",\n \"\\u00e7\\u00e8\\u0007p\\u0002\\u0002\\u00e8\\u00e9\\u0007v\\u0002\\u0002\\u00e9\",\n \"\\u00ea\\u0007q\\u0002\\u0002\\u00ea$\\u0003\\u0002\\u0002\\u0002\\u00eb\\u00ec\",\n \"\\u0007u\\u0002\\u0002\\u00ec\\u00ed\\u0007g\\u0002\\u0002\\u00ed&\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00ee\\u00ef\\u0007u\\u0002\\u0002\\u00ef\\u00f0\\u0007g\\u0002\",\n \"\\u0002\\u00f0\\u00f1\\u0007p\\u0002\\u0002\\u00f1\\u00f2\\u0007c\\u0002\\u0002\",\n \"\\u00f2\\u00f3\\u0007q\\u0002\\u0002\\u00f3(\\u0003\\u0002\\u0002\\u0002\\u00f4\",\n \"\\u00f5\\u0007h\\u0002\\u0002\\u00f5\\u00f6\\u0007c\\u0002\\u0002\\u00f6\\u00f7\",\n \"\\u0007n\\u0002\\u0002\\u00f7\\u00f8\\u0007u\\u0002\\u0002\\u00f8\\u00f9\\u0007\",\n \"q\\u0002\\u0002\\u00f9*\\u0003\\u0002\\u0002\\u0002\\u00fa\\u00fb\\u0007x\\u0002\",\n \"\\u0002\\u00fb\\u00fc\\u0007g\\u0002\\u0002\\u00fc\\u00fd\\u0007t\\u0002\\u0002\",\n \"\\u00fd\\u00fe\\u0007f\\u0002\\u0002\\u00fe\\u00ff\\u0007c\\u0002\\u0002\\u00ff\",\n \"\\u0100\\u0007f\\u0002\\u0002\\u0100\\u0101\\u0007g\\u0002\\u0002\\u0101\\u0102\",\n \"\\u0007k\\u0002\\u0002\\u0102\\u0103\\u0007t\\u0002\\u0002\\u0103\\u0104\\u0007\",\n \"q\\u0002\\u0002\\u0104,\\u0003\\u0002\\u0002\\u0002\\u0105\\u0106\\u0007p\\u0002\",\n \"\\u0002\\u0106\\u0107\\u0007c\\u0002\\u0002\\u0107\\u0108\\u0007q\\u0002\\u0002\",\n \"\\u0108.\\u0003\\u0002\\u0002\\u0002\\u0109\\u010a\\u0007G\\u0002\\u0002\\u010a\",\n \"0\\u0003\\u0002\\u0002\\u0002\\u010b\\u010c\\u0007Q\\u0002\\u0002\\u010c\\u010d\",\n \"\\u0007W\\u0002\\u0002\\u010d2\\u0003\\u0002\\u0002\\u0002\\u010e\\u010f\\u0007\",\n \"*\\u0002\\u0002\\u010f4\\u0003\\u0002\\u0002\\u0002\\u0110\\u0111\\u0007+\\u0002\",\n \"\\u0002\\u01116\\u0003\\u0002\\u0002\\u0002\\u0112\\u0113\\u0007]\\u0002\\u0002\",\n \"\\u01138\\u0003\\u0002\\u0002\\u0002\\u0114\\u0115\\u0007_\\u0002\\u0002\\u0115\",\n \":\\u0003\\u0002\\u0002\\u0002\\u0116\\u0117\\u0007}\\u0002\\u0002\\u0117<\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0118\\u0119\\u0007\\u007f\\u0002\\u0002\\u0119>\\u0003\",\n \"\\u0002\\u0002\\u0002\\u011a\\u011b\\u0007.\\u0002\\u0002\\u011b@\\u0003\\u0002\",\n \"\\u0002\\u0002\\u011c\\u011d\\u0007?\\u0002\\u0002\\u011dB\\u0003\\u0002\\u0002\",\n \"\\u0002\\u011e\\u011f\\t\\u0002\\u0002\\u0002\\u011fD\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0120\\u0121\\t\\u0003\\u0002\\u0002\\u0121F\\u0003\\u0002\\u0002\\u0002\\u0122\",\n \"\\u0123\\u0005/\\u0018\\u0002\\u0123H\\u0003\\u0002\\u0002\\u0002\\u0124\\u0125\",\n \"\\u00051\\u0019\\u0002\\u0125J\\u0003\\u0002\\u0002\\u0002\\u0126\\u0127\\u0007\",\n \"@\\u0002\\u0002\\u0127\\u0130\\u0007?\\u0002\\u0002\\u0128\\u0129\\u0007?\\u0002\",\n \"\\u0002\\u0129\\u0130\\u0007?\\u0002\\u0002\\u012a\\u012b\\u0007>\\u0002\\u0002\",\n \"\\u012b\\u0130\\u0007?\\u0002\\u0002\\u012c\\u0130\\t\\u0004\\u0002\\u0002\\u012d\",\n \"\\u012e\\u0007#\\u0002\\u0002\\u012e\\u0130\\u0007?\\u0002\\u0002\\u012f\\u0126\",\n \"\\u0003\\u0002\\u0002\\u0002\\u012f\\u0128\\u0003\\u0002\\u0002\\u0002\\u012f\\u012a\",\n \"\\u0003\\u0002\\u0002\\u0002\\u012f\\u012c\\u0003\\u0002\\u0002\\u0002\\u012f\\u012d\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0130L\\u0003\\u0002\\u0002\\u0002\\u0131\\u0132\",\n \"\\u0007<\\u0002\\u0002\\u0132N\\u0003\\u0002\\u0002\\u0002\\u0133\\u0134\\u0005\",\n \"-\\u0017\\u0002\\u0134P\\u0003\\u0002\\u0002\\u0002\\u0135\\u0139\\t\\u0005\\u0002\",\n \"\\u0002\\u0136\\u0138\\t\\u0006\\u0002\\u0002\\u0137\\u0136\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0138\\u013b\\u0003\\u0002\\u0002\\u0002\\u0139\\u0137\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0139\\u013a\\u0003\\u0002\\u0002\\u0002\\u013aR\\u0003\\u0002\\u0002\",\n \"\\u0002\\u013b\\u0139\\u0003\\u0002\\u0002\\u0002\\u013c\\u013d\\u0005Q)\\u0002\",\n \"\\u013d\\u013e\\u00070\\u0002\\u0002\\u013e\\u013f\\u0005Q)\\u0002\\u013fT\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0140\\u0142\\t\\u0007\\u0002\\u0002\\u0141\\u0140\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0142\\u0143\\u0003\\u0002\\u0002\\u0002\\u0143\\u0141\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0143\\u0144\\u0003\\u0002\\u0002\\u0002\\u0144\\u015c\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0145\\u0146\\u00072\\u0002\\u0002\\u0146\\u014a\\u0007\",\n \"z\\u0002\\u0002\\u0147\\u0148\\u00072\\u0002\\u0002\\u0148\\u014a\\u0007Z\\u0002\",\n \"\\u0002\\u0149\\u0145\\u0003\\u0002\\u0002\\u0002\\u0149\\u0147\\u0003\\u0002\\u0002\",\n \"\\u0002\\u014a\\u014c\\u0003\\u0002\\u0002\\u0002\\u014b\\u014d\\u0005g4\\u0002\",\n \"\\u014c\\u014b\\u0003\\u0002\\u0002\\u0002\\u014d\\u014e\\u0003\\u0002\\u0002\\u0002\",\n \"\\u014e\\u014c\\u0003\\u0002\\u0002\\u0002\\u014e\\u014f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u014f\\u015c\\u0003\\u0002\\u0002\\u0002\\u0150\\u0151\\u00072\\u0002\\u0002\",\n \"\\u0151\\u0155\\u0007d\\u0002\\u0002\\u0152\\u0153\\u00072\\u0002\\u0002\\u0153\",\n \"\\u0155\\u0007D\\u0002\\u0002\\u0154\\u0150\\u0003\\u0002\\u0002\\u0002\\u0154\",\n \"\\u0152\\u0003\\u0002\\u0002\\u0002\\u0155\\u0157\\u0003\\u0002\\u0002\\u0002\\u0156\",\n \"\\u0158\\t\\b\\u0002\\u0002\\u0157\\u0156\\u0003\\u0002\\u0002\\u0002\\u0158\\u0159\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0159\\u0157\\u0003\\u0002\\u0002\\u0002\\u0159\\u015a\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015a\\u015c\\u0003\\u0002\\u0002\\u0002\\u015b\\u0141\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015b\\u0149\\u0003\\u0002\\u0002\\u0002\\u015b\\u0154\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015cV\\u0003\\u0002\\u0002\\u0002\\u015d\\u015f\",\n \"\\t\\u0007\\u0002\\u0002\\u015e\\u015d\\u0003\\u0002\\u0002\\u0002\\u015f\\u0160\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0160\\u015e\\u0003\\u0002\\u0002\\u0002\\u0160\\u0161\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0161\\u0162\\u0003\\u0002\\u0002\\u0002\\u0162\\u0164\",\n \"\\u00070\\u0002\\u0002\\u0163\\u0165\\t\\u0007\\u0002\\u0002\\u0164\\u0163\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0165\\u0166\\u0003\\u0002\\u0002\\u0002\\u0166\\u0164\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0166\\u0167\\u0003\\u0002\\u0002\\u0002\\u0167\\u0176\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0168\\u016a\\t\\u0007\\u0002\\u0002\\u0169\\u0168\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016a\\u016b\\u0003\\u0002\\u0002\\u0002\\u016b\\u0169\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016b\\u016c\\u0003\\u0002\\u0002\\u0002\\u016c\\u016d\\u0003\",\n \"\\u0002\\u0002\\u0002\\u016d\\u0171\\u00070\\u0002\\u0002\\u016e\\u0170\\t\\u0007\",\n \"\\u0002\\u0002\\u016f\\u016e\\u0003\\u0002\\u0002\\u0002\\u0170\\u0173\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0171\\u016f\\u0003\\u0002\\u0002\\u0002\\u0171\\u0172\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0172\\u0174\\u0003\\u0002\\u0002\\u0002\\u0173\\u0171\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0174\\u0176\\u0005Y-\\u0002\\u0175\\u015e\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0175\\u0169\\u0003\\u0002\\u0002\\u0002\\u0176X\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0177\\u0179\\t\\t\\u0002\\u0002\\u0178\\u017a\\t\\u0002\\u0002\\u0002\\u0179\",\n \"\\u0178\\u0003\\u0002\\u0002\\u0002\\u0179\\u017a\\u0003\\u0002\\u0002\\u0002\\u017a\",\n \"\\u017c\\u0003\\u0002\\u0002\\u0002\\u017b\\u017d\\t\\u0007\\u0002\\u0002\\u017c\",\n \"\\u017b\\u0003\\u0002\\u0002\\u0002\\u017d\\u017e\\u0003\\u0002\\u0002\\u0002\\u017e\",\n \"\\u017c\\u0003\\u0002\\u0002\\u0002\\u017e\\u017f\\u0003\\u0002\\u0002\\u0002\\u017f\",\n \"Z\\u0003\\u0002\\u0002\\u0002\\u0180\\u0184\\u0007$\\u0002\\u0002\\u0181\\u0183\",\n \"\\u0005]/\\u0002\\u0182\\u0181\\u0003\\u0002\\u0002\\u0002\\u0183\\u0186\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0184\\u0182\\u0003\\u0002\\u0002\\u0002\\u0184\\u0185\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0185\\u0187\\u0003\\u0002\\u0002\\u0002\\u0186\\u0184\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0187\\u0188\\u0007$\\u0002\\u0002\\u0188\\\\\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0189\\u018c\\n\\n\\u0002\\u0002\\u018a\\u018c\\u0005k6\\u0002\\u018b\",\n \"\\u0189\\u0003\\u0002\\u0002\\u0002\\u018b\\u018a\\u0003\\u0002\\u0002\\u0002\\u018c\",\n \"^\\u0003\\u0002\\u0002\\u0002\\u018d\\u0190\\u0007)\\u0002\\u0002\\u018e\\u0191\",\n \"\\u0005k6\\u0002\\u018f\\u0191\\n\\u000b\\u0002\\u0002\\u0190\\u018e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0190\\u018f\\u0003\\u0002\\u0002\\u0002\\u0191\\u0192\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0192\\u0193\\u0007)\\u0002\\u0002\\u0193`\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0194\\u0195\\t\\f\\u0002\\u0002\\u0195\\u0196\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0196\\u0197\\b1\\u0002\\u0002\\u0197b\\u0003\\u0002\\u0002\\u0002\\u0198\\u0199\",\n \"\\u0007=\\u0002\\u0002\\u0199d\\u0003\\u0002\\u0002\\u0002\\u019a\\u019c\\t\\r\\u0002\",\n \"\\u0002\\u019b\\u019a\\u0003\\u0002\\u0002\\u0002\\u019c\\u019d\\u0003\\u0002\\u0002\",\n \"\\u0002\\u019d\\u019b\\u0003\\u0002\\u0002\\u0002\\u019d\\u019e\\u0003\\u0002\\u0002\",\n \"\\u0002\\u019e\\u01a1\\u0003\\u0002\\u0002\\u0002\\u019f\\u01a1\\u0005c2\\u0002\",\n \"\\u01a0\\u019b\\u0003\\u0002\\u0002\\u0002\\u01a0\\u019f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01a1f\\u0003\\u0002\\u0002\\u0002\\u01a2\\u01a3\\t\\u000e\\u0002\\u0002\\u01a3\",\n \"h\\u0003\\u0002\\u0002\\u0002\\u01a4\\u01a5\\t\\u000f\\u0002\\u0002\\u01a5j\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01a6\\u01a7\\u0007^\\u0002\\u0002\\u01a7\\u01ab\\t\\u0010\",\n \"\\u0002\\u0002\\u01a8\\u01ab\\u0005o8\\u0002\\u01a9\\u01ab\\u0005m7\\u0002\\u01aa\",\n \"\\u01a6\\u0003\\u0002\\u0002\\u0002\\u01aa\\u01a8\\u0003\\u0002\\u0002\\u0002\\u01aa\",\n \"\\u01a9\\u0003\\u0002\\u0002\\u0002\\u01abl\\u0003\\u0002\\u0002\\u0002\\u01ac\",\n \"\\u01ad\\u0007^\\u0002\\u0002\\u01ad\\u01ae\\t\\u0011\\u0002\\u0002\\u01ae\\u01af\",\n \"\\u0005i5\\u0002\\u01af\\u01b0\\u0005i5\\u0002\\u01b0\\u01b8\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01b1\\u01b2\\u0007^\\u0002\\u0002\\u01b2\\u01b3\\u0005i5\\u0002\\u01b3\",\n \"\\u01b4\\u0005i5\\u0002\\u01b4\\u01b8\\u0003\\u0002\\u0002\\u0002\\u01b5\\u01b6\",\n \"\\u0007^\\u0002\\u0002\\u01b6\\u01b8\\u0005i5\\u0002\\u01b7\\u01ac\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01b7\\u01b1\\u0003\\u0002\\u0002\\u0002\\u01b7\\u01b5\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01b8n\\u0003\\u0002\\u0002\\u0002\\u01b9\\u01ba\\u0007^\\u0002\",\n \"\\u0002\\u01ba\\u01bb\\u0007w\\u0002\\u0002\\u01bb\\u01bc\\u0005g4\\u0002\\u01bc\",\n \"\\u01bd\\u0005g4\\u0002\\u01bd\\u01be\\u0005g4\\u0002\\u01be\\u01bf\\u0005g4\\u0002\",\n \"\\u01bfp\\u0003\\u0002\\u0002\\u0002\\u01c0\\u01c1\\u00071\\u0002\\u0002\\u01c1\",\n \"\\u01c2\\u00071\\u0002\\u0002\\u01c2\\u01c6\\u0003\\u0002\\u0002\\u0002\\u01c3\",\n \"\\u01c5\\n\\r\\u0002\\u0002\\u01c4\\u01c3\\u0003\\u0002\\u0002\\u0002\\u01c5\\u01c8\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c6\\u01c4\\u0003\\u0002\\u0002\\u0002\\u01c6\\u01c7\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c7\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01c8\\u01c6\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c9\\u01cb\\u0007\\u000f\\u0002\\u0002\\u01ca\\u01c9\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01ca\\u01cb\\u0003\\u0002\\u0002\\u0002\\u01cb\\u01cc\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01cc\\u01d9\\u0007\\f\\u0002\\u0002\\u01cd\\u01ce\",\n \"\\u00071\\u0002\\u0002\\u01ce\\u01cf\\u0007,\\u0002\\u0002\\u01cf\\u01d3\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d0\\u01d2\\u000b\\u0002\\u0002\\u0002\\u01d1\\u01d0\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d2\\u01d5\\u0003\\u0002\\u0002\\u0002\\u01d3\\u01d4\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d3\\u01d1\\u0003\\u0002\\u0002\\u0002\\u01d4\\u01d6\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01d5\\u01d3\\u0003\\u0002\\u0002\\u0002\\u01d6\\u01d7\\u0007\",\n \",\\u0002\\u0002\\u01d7\\u01d9\\u00071\\u0002\\u0002\\u01d8\\u01c0\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01d8\\u01cd\\u0003\\u0002\\u0002\\u0002\\u01d9\\u01da\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01da\\u01db\\b9\\u0003\\u0002\\u01dbr\\u0003\\u0002\\u0002\\u0002\",\n \"\\u001d\\u0002\\u012f\\u0139\\u0143\\u0149\\u014e\\u0154\\u0159\\u015b\\u0160\\u0166\",\n \"\\u016b\\u0171\\u0175\\u0179\\u017e\\u0184\\u018b\\u0190\\u019d\\u01a0\\u01aa\\u01b7\",\n \"\\u01c6\\u01ca\\u01d3\\u01d8\\u0004\\b\\u0002\\u0002\\u0002\\u0003\\u0002\"].join(\"\");\n\n\nvar atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nvar decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });\n\nfunction ivprog(input) {\n\tantlr4.Lexer.call(this, input);\n this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n return this;\n}\n\nivprog.prototype = Object.create(antlr4.Lexer.prototype);\nivprog.prototype.constructor = ivprog;\n\nivprog.EOF = antlr4.Token.EOF;\nivprog.RK_PROGRAM = 1;\nivprog.RK_REAL = 2;\nivprog.RK_VOID = 3;\nivprog.RK_BOOLEAN = 4;\nivprog.RK_STRING = 5;\nivprog.RK_INTEGER = 6;\nivprog.RK_CHARACTER = 7;\nivprog.RK_SWITCH = 8;\nivprog.RK_CASE = 9;\nivprog.RK_DEFAULT = 10;\nivprog.RK_CONST = 11;\nivprog.RK_FUNCTION = 12;\nivprog.RK_RETURN = 13;\nivprog.RK_FOR = 14;\nivprog.RK_BREAK = 15;\nivprog.RK_DO = 16;\nivprog.RK_WHILE = 17;\nivprog.RK_IF = 18;\nivprog.RK_ELSE = 19;\nivprog.RK_FALSE = 20;\nivprog.RK_TRUE = 21;\nivprog.OPEN_PARENTHESIS = 22;\nivprog.CLOSE_PARENTHESIS = 23;\nivprog.OPEN_BRACE = 24;\nivprog.CLOSE_BRACE = 25;\nivprog.OPEN_CURLY = 26;\nivprog.CLOSE_CURLY = 27;\nivprog.COMMA = 28;\nivprog.EQUAL = 29;\nivprog.SUM_OP = 30;\nivprog.MULTI_OP = 31;\nivprog.AND_OPERATOR = 32;\nivprog.OR_OPERATOR = 33;\nivprog.RELATIONAL_OPERATOR = 34;\nivprog.COLON = 35;\nivprog.NOT_OPERATOR = 36;\nivprog.ID = 37;\nivprog.LIB_ID = 38;\nivprog.INTEGER = 39;\nivprog.REAL = 40;\nivprog.STRING = 41;\nivprog.CHARACTER = 42;\nivprog.WHITESPACE = 43;\nivprog.EOS = 44;\nivprog.COMMENTS = 45;\n\nivprog.prototype.channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\" ];\n\nivprog.prototype.modeNames = [ \"DEFAULT_MODE\" ];\n\nivprog.prototype.literalNames = [ null, \"'programa'\", \"'real'\", \"'vazio'\", \n \"'logico'\", \"'cadeia'\", \"'inteiro'\", \"'caractere'\", \n \"'escolha'\", \"'caso'\", \"'contrario'\", \n \"'const'\", \"'funcao'\", \"'retorne'\", \"'para'\", \n \"'pare'\", \"'faca'\", \"'enquanto'\", \"'se'\", \n \"'senao'\", \"'falso'\", \"'verdadeiro'\", \n \"'('\", \"')'\", \"'['\", \"']'\", \"'{'\", \"'}'\", \n \"','\", \"'='\", null, null, null, null, \n null, \"':'\" ];\n\nivprog.prototype.symbolicNames = [ null, \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \n \"RK_BOOLEAN\", \"RK_STRING\", \"RK_INTEGER\", \n \"RK_CHARACTER\", \"RK_SWITCH\", \"RK_CASE\", \n \"RK_DEFAULT\", \"RK_CONST\", \"RK_FUNCTION\", \n \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \"RK_DO\", \n \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"OPEN_PARENTHESIS\", \"CLOSE_PARENTHESIS\", \n \"OPEN_BRACE\", \"CLOSE_BRACE\", \"OPEN_CURLY\", \n \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \"SUM_OP\", \n \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"STRING\", \n \"CHARACTER\", \"WHITESPACE\", \"EOS\", \"COMMENTS\" ];\n\nivprog.prototype.ruleNames = [ \"RK_PROGRAM\", \"RK_REAL\", \"RK_VOID\", \"RK_BOOLEAN\", \n \"RK_STRING\", \"RK_INTEGER\", \"RK_CHARACTER\", \n \"RK_SWITCH\", \"RK_CASE\", \"RK_DEFAULT\", \"RK_CONST\", \n \"RK_FUNCTION\", \"RK_RETURN\", \"RK_FOR\", \"RK_BREAK\", \n \"RK_DO\", \"RK_WHILE\", \"RK_IF\", \"RK_ELSE\", \n \"RK_FALSE\", \"RK_TRUE\", \"RK_LOGICAL_NOT\", \n \"RK_LOGICAL_AND\", \"RK_LOGICAL_OR\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \"EQUAL\", \n \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \"OR_OPERATOR\", \n \"RELATIONAL_OPERATOR\", \"COLON\", \"NOT_OPERATOR\", \n \"ID\", \"LIB_ID\", \"INTEGER\", \"REAL\", \"ExponentPart\", \n \"STRING\", \"STRING_CHARACTER\", \"CHARACTER\", \n \"WHITESPACE\", \"SEMICOLON\", \"EOS\", \"HEX_DIGIT\", \n \"OCTAL_DIGIT\", \"ESC_SEQ\", \"ESC_OCTAL\", \"ESC_UNICODE\", \n \"COMMENTS\" ];\n\nivprog.prototype.grammarFileName = \"ivprog.g4\";\n\n\n\nexports.ivprog = ivprog;\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = {\nivprog: __webpack_require__(0).ivprog\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"antlr4/index\");\n\n/***/ })\n/******/ ]);","/* This is a dictionary of the language defined functions\n**/\nexport default {\n main_function: \"inicio\",\n $read: \"leia\",\n $write: \"escreva\",\n $numElements: \"total_de_elementos\",\n $matrixLines: \"total_de_linhas\",\n $matrixColumns: \"total_de_colunas\",\n $substring: \"subcadeia\",\n $length: \"comprimento\",\n $uppercase: \"caixa_alta\",\n $lowercase: \"caixa_baixa\",\n $charAt: \"char_at\",\n $isReal: \"e_real\",\n $isInt: \"e_inteiro\",\n $isBool: \"e_logico\",\n $castReal: \"como_real\",\n $castInt: \"como_inteiro\",\n $castBool: \"como_logico\",\n $castString: \"como_cadeia\",\n $sin: \"seno\",\n $cos: \"cosseno\",\n $tan: \"tangente\",\n $sqrt: \"raiz_quadrada\",\n $pow: \"potencia\",\n $log: \"logaritmo\",\n $abs: \"modulo\",\n $negate: \"trocar_sinal\",\n $invert: \"inverter_valor\",\n $max: \"maximo\",\n $min: \"minimo\"\n}","/**\n * This is the dictionary of the language defined libraries\n */\nexport default {\n $mathLib: \"Matematica\",\n $ioLib: \"ES\",\n $strLib: \"Texto\",\n $arrayLib: \"Arranjo\",\n $langLib: \"Conversao\"\n}","import errors from './error.json';\nimport messages from './message.json'\nimport ui from './ui.json';\n\nexport default {\n 'message' : messages,\n 'error': errors,\n 'ui': ui\n}\n","import errors from './error.json';\nimport messages from './message.json'\nimport ui from './ui.json';\n\nexport default {\n 'message' : messages,\n 'error': errors,\n 'ui': ui\n}\n","import EN from './en';\nimport PT from './pt';\nimport ES from './es';\n\nexport default {\n 'en': EN,\n 'pt': PT,\n 'es': ES\n}\n","import errors from './error.json';\nimport messages from './message.json'\nimport ui from './ui.json';\n\nexport default {\n 'message' : messages,\n 'error': errors,\n 'ui': ui\n}\n","/**!\n * Sortable\n * @author\tRubaXa <trash@rubaxa.org>\n * @license MIT\n */\n\n(function sortableModule(factory) {\n\t\"use strict\";\n\n\tif (typeof define === \"function\" && define.amd) {\n\t\tdefine(factory);\n\t}\n\telse if (typeof module != \"undefined\" && typeof module.exports != \"undefined\") {\n\t\tmodule.exports = factory();\n\t}\n\telse {\n\t\t/* jshint sub:true */\n\t\twindow[\"Sortable\"] = factory();\n\t}\n})(function sortableFactory() {\n\t\"use strict\";\n\n\tif (typeof window == \"undefined\" || !window.document) {\n\t\treturn function sortableError() {\n\t\t\tthrow new Error(\"Sortable.js requires a window with a document\");\n\t\t};\n\t}\n\n\tvar dragEl,\n\t\tparentEl,\n\t\tghostEl,\n\t\tcloneEl,\n\t\trootEl,\n\t\tnextEl,\n\t\tlastDownEl,\n\n\t\tscrollEl,\n\t\tscrollParentEl,\n\t\tscrollCustomFn,\n\n\t\tlastEl,\n\t\tlastCSS,\n\t\tlastParentCSS,\n\n\t\toldIndex,\n\t\tnewIndex,\n\n\t\tactiveGroup,\n\t\tputSortable,\n\n\t\tautoScroll = {},\n\n\t\ttapEvt,\n\t\ttouchEvt,\n\n\t\tmoved,\n\n\t\t/** @const */\n\t\tR_SPACE = /\\s+/g,\n\t\tR_FLOAT = /left|right|inline/,\n\n\t\texpando = 'Sortable' + (new Date).getTime(),\n\n\t\twin = window,\n\t\tdocument = win.document,\n\t\tparseInt = win.parseInt,\n\n\t\t$ = win.jQuery || win.Zepto,\n\t\tPolymer = win.Polymer,\n\n\t\tcaptureMode = false,\n\n\t\tsupportDraggable = !!('draggable' in document.createElement('div')),\n\t\tsupportCssPointerEvents = (function (el) {\n\t\t\t// false when IE11\n\t\t\tif (!!navigator.userAgent.match(/Trident.*rv[ :]?11\\./)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tel = document.createElement('x');\n\t\t\tel.style.cssText = 'pointer-events:auto';\n\t\t\treturn el.style.pointerEvents === 'auto';\n\t\t})(),\n\n\t\t_silent = false,\n\n\t\tabs = Math.abs,\n\t\tmin = Math.min,\n\n\t\tsavedInputChecked = [],\n\t\ttouchDragOverListeners = [],\n\n\t\t_autoScroll = _throttle(function (/**Event*/evt, /**Object*/options, /**HTMLElement*/rootEl) {\n\t\t\t// Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n\t\t\tif (rootEl && options.scroll) {\n\t\t\t\tvar _this = rootEl[expando],\n\t\t\t\t\tel,\n\t\t\t\t\trect,\n\t\t\t\t\tsens = options.scrollSensitivity,\n\t\t\t\t\tspeed = options.scrollSpeed,\n\n\t\t\t\t\tx = evt.clientX,\n\t\t\t\t\ty = evt.clientY,\n\n\t\t\t\t\twinWidth = window.innerWidth,\n\t\t\t\t\twinHeight = window.innerHeight,\n\n\t\t\t\t\tvx,\n\t\t\t\t\tvy,\n\n\t\t\t\t\tscrollOffsetX,\n\t\t\t\t\tscrollOffsetY\n\t\t\t\t;\n\n\t\t\t\t// Delect scrollEl\n\t\t\t\tif (scrollParentEl !== rootEl) {\n\t\t\t\t\tscrollEl = options.scroll;\n\t\t\t\t\tscrollParentEl = rootEl;\n\t\t\t\t\tscrollCustomFn = options.scrollFn;\n\n\t\t\t\t\tif (scrollEl === true) {\n\t\t\t\t\t\tscrollEl = rootEl;\n\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tif ((scrollEl.offsetWidth < scrollEl.scrollWidth) ||\n\t\t\t\t\t\t\t\t(scrollEl.offsetHeight < scrollEl.scrollHeight)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/* jshint boss:true */\n\t\t\t\t\t\t} while (scrollEl = scrollEl.parentNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (scrollEl) {\n\t\t\t\t\tel = scrollEl;\n\t\t\t\t\trect = scrollEl.getBoundingClientRect();\n\t\t\t\t\tvx = (abs(rect.right - x) <= sens) - (abs(rect.left - x) <= sens);\n\t\t\t\t\tvy = (abs(rect.bottom - y) <= sens) - (abs(rect.top - y) <= sens);\n\t\t\t\t}\n\n\n\t\t\t\tif (!(vx || vy)) {\n\t\t\t\t\tvx = (winWidth - x <= sens) - (x <= sens);\n\t\t\t\t\tvy = (winHeight - y <= sens) - (y <= sens);\n\n\t\t\t\t\t/* jshint expr:true */\n\t\t\t\t\t(vx || vy) && (el = win);\n\t\t\t\t}\n\n\n\t\t\t\tif (autoScroll.vx !== vx || autoScroll.vy !== vy || autoScroll.el !== el) {\n\t\t\t\t\tautoScroll.el = el;\n\t\t\t\t\tautoScroll.vx = vx;\n\t\t\t\t\tautoScroll.vy = vy;\n\n\t\t\t\t\tclearInterval(autoScroll.pid);\n\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tautoScroll.pid = setInterval(function () {\n\t\t\t\t\t\t\tscrollOffsetY = vy ? vy * speed : 0;\n\t\t\t\t\t\t\tscrollOffsetX = vx ? vx * speed : 0;\n\n\t\t\t\t\t\t\tif ('function' === typeof(scrollCustomFn)) {\n\t\t\t\t\t\t\t\treturn scrollCustomFn.call(_this, scrollOffsetX, scrollOffsetY, evt);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (el === win) {\n\t\t\t\t\t\t\t\twin.scrollTo(win.pageXOffset + scrollOffsetX, win.pageYOffset + scrollOffsetY);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tel.scrollTop += scrollOffsetY;\n\t\t\t\t\t\t\t\tel.scrollLeft += scrollOffsetX;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, 24);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 30),\n\n\t\t_prepareGroup = function (options) {\n\t\t\tfunction toFn(value, pull) {\n\t\t\t\tif (value === void 0 || value === true) {\n\t\t\t\t\tvalue = group.name;\n\t\t\t\t}\n\n\t\t\t\tif (typeof value === 'function') {\n\t\t\t\t\treturn value;\n\t\t\t\t} else {\n\t\t\t\t\treturn function (to, from) {\n\t\t\t\t\t\tvar fromGroup = from.options.group.name;\n\n\t\t\t\t\t\treturn pull\n\t\t\t\t\t\t\t? value\n\t\t\t\t\t\t\t: value && (value.join\n\t\t\t\t\t\t\t\t? value.indexOf(fromGroup) > -1\n\t\t\t\t\t\t\t\t: (fromGroup == value)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar group = {};\n\t\t\tvar originalGroup = options.group;\n\n\t\t\tif (!originalGroup || typeof originalGroup != 'object') {\n\t\t\t\toriginalGroup = {name: originalGroup};\n\t\t\t}\n\n\t\t\tgroup.name = originalGroup.name;\n\t\t\tgroup.checkPull = toFn(originalGroup.pull, true);\n\t\t\tgroup.checkPut = toFn(originalGroup.put);\n\t\t\tgroup.revertClone = originalGroup.revertClone;\n\n\t\t\toptions.group = group;\n\t\t}\n\t;\n\n\n\t/**\n\t * @class Sortable\n\t * @param {HTMLElement} el\n\t * @param {Object} [options]\n\t */\n\tfunction Sortable(el, options) {\n\t\tif (!(el && el.nodeType && el.nodeType === 1)) {\n\t\t\tthrow 'Sortable: `el` must be HTMLElement, and not ' + {}.toString.call(el);\n\t\t}\n\n\t\tthis.el = el; // root element\n\t\tthis.options = options = _extend({}, options);\n\n\n\t\t// Export instance\n\t\tel[expando] = this;\n\n\t\t// Default options\n\t\tvar defaults = {\n\t\t\tgroup: Math.random(),\n\t\t\tsort: true,\n\t\t\tdisabled: false,\n\t\t\tstore: null,\n\t\t\thandle: null,\n\t\t\tscroll: true,\n\t\t\tscrollSensitivity: 30,\n\t\t\tscrollSpeed: 10,\n\t\t\tdraggable: /[uo]l/i.test(el.nodeName) ? 'li' : '>*',\n\t\t\tghostClass: 'sortable-ghost',\n\t\t\tchosenClass: 'sortable-chosen',\n\t\t\tdragClass: 'sortable-drag',\n\t\t\tignore: 'a, img',\n\t\t\tfilter: null,\n\t\t\tpreventOnFilter: true,\n\t\t\tanimation: 0,\n\t\t\tsetData: function (dataTransfer, dragEl) {\n\t\t\t\tdataTransfer.setData('Text', dragEl.textContent);\n\t\t\t},\n\t\t\tdropBubble: false,\n\t\t\tdragoverBubble: false,\n\t\t\tdataIdAttr: 'data-id',\n\t\t\tdelay: 0,\n\t\t\tforceFallback: false,\n\t\t\tfallbackClass: 'sortable-fallback',\n\t\t\tfallbackOnBody: false,\n\t\t\tfallbackTolerance: 0,\n\t\t\tfallbackOffset: {x: 0, y: 0}\n\t\t};\n\n\n\t\t// Set default options\n\t\tfor (var name in defaults) {\n\t\t\t!(name in options) && (options[name] = defaults[name]);\n\t\t}\n\n\t\t_prepareGroup(options);\n\n\t\t// Bind all private methods\n\t\tfor (var fn in this) {\n\t\t\tif (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n\t\t\t\tthis[fn] = this[fn].bind(this);\n\t\t\t}\n\t\t}\n\n\t\t// Setup drag mode\n\t\tthis.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n\t\t// Bind events\n\t\t_on(el, 'mousedown', this._onTapStart);\n\t\t_on(el, 'touchstart', this._onTapStart);\n\t\t_on(el, 'pointerdown', this._onTapStart);\n\n\t\tif (this.nativeDraggable) {\n\t\t\t_on(el, 'dragover', this);\n\t\t\t_on(el, 'dragenter', this);\n\t\t}\n\n\t\ttouchDragOverListeners.push(this._onDragOver);\n\n\t\t// Restore sorting\n\t\toptions.store && this.sort(options.store.get(this));\n\t}\n\n\n\tSortable.prototype = /** @lends Sortable.prototype */ {\n\t\tconstructor: Sortable,\n\n\t\t_onTapStart: function (/** Event|TouchEvent */evt) {\n\t\t\tvar _this = this,\n\t\t\t\tel = this.el,\n\t\t\t\toptions = this.options,\n\t\t\t\tpreventOnFilter = options.preventOnFilter,\n\t\t\t\ttype = evt.type,\n\t\t\t\ttouch = evt.touches && evt.touches[0],\n\t\t\t\ttarget = (touch || evt).target,\n\t\t\t\toriginalTarget = evt.target.shadowRoot && (evt.path && evt.path[0]) || target,\n\t\t\t\tfilter = options.filter,\n\t\t\t\tstartIndex;\n\n\t\t\t_saveInputCheckedState(el);\n\n\n\t\t\t// Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\t\t\tif (dragEl) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n\t\t\t\treturn; // only left button or enabled\n\t\t\t}\n\n\n\t\t\ttarget = _closest(target, options.draggable, el);\n\n\t\t\tif (!target) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (lastDownEl === target) {\n\t\t\t\t// Ignoring duplicate `down`\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Get the index of the dragged element within its parent\n\t\t\tstartIndex = _index(target, options.draggable);\n\n\t\t\t// Check filter\n\t\t\tif (typeof filter === 'function') {\n\t\t\t\tif (filter.call(this, evt, target, this)) {\n\t\t\t\t\t_dispatchEvent(_this, originalTarget, 'filter', target, el, startIndex);\n\t\t\t\t\tpreventOnFilter && evt.preventDefault();\n\t\t\t\t\treturn; // cancel dnd\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (filter) {\n\t\t\t\tfilter = filter.split(',').some(function (criteria) {\n\t\t\t\t\tcriteria = _closest(originalTarget, criteria.trim(), el);\n\n\t\t\t\t\tif (criteria) {\n\t\t\t\t\t\t_dispatchEvent(_this, criteria, 'filter', target, el, startIndex);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (filter) {\n\t\t\t\t\tpreventOnFilter && evt.preventDefault();\n\t\t\t\t\treturn; // cancel dnd\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.handle && !_closest(originalTarget, options.handle, el)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Prepare `dragstart`\n\t\t\tthis._prepareDragStart(evt, touch, target, startIndex);\n\t\t},\n\n\t\t_prepareDragStart: function (/** Event */evt, /** Touch */touch, /** HTMLElement */target, /** Number */startIndex) {\n\t\t\tvar _this = this,\n\t\t\t\tel = _this.el,\n\t\t\t\toptions = _this.options,\n\t\t\t\townerDocument = el.ownerDocument,\n\t\t\t\tdragStartFn;\n\n\t\t\tif (target && !dragEl && (target.parentNode === el)) {\n\t\t\t\ttapEvt = evt;\n\n\t\t\t\trootEl = el;\n\t\t\t\tdragEl = target;\n\t\t\t\tparentEl = dragEl.parentNode;\n\t\t\t\tnextEl = dragEl.nextSibling;\n\t\t\t\tlastDownEl = target;\n\t\t\t\tactiveGroup = options.group;\n\t\t\t\toldIndex = startIndex;\n\n\t\t\t\tthis._lastX = (touch || evt).clientX;\n\t\t\t\tthis._lastY = (touch || evt).clientY;\n\n\t\t\t\tdragEl.style['will-change'] = 'transform';\n\n\t\t\t\tdragStartFn = function () {\n\t\t\t\t\t// Delayed drag has been triggered\n\t\t\t\t\t// we can re-enable the events: touchmove/mousemove\n\t\t\t\t\t_this._disableDelayedDrag();\n\n\t\t\t\t\t// Make the element draggable\n\t\t\t\t\tdragEl.draggable = _this.nativeDraggable;\n\n\t\t\t\t\t// Chosen item\n\t\t\t\t\t_toggleClass(dragEl, options.chosenClass, true);\n\n\t\t\t\t\t// Bind the events: dragstart/dragend\n\t\t\t\t\t_this._triggerDragStart(evt, touch);\n\n\t\t\t\t\t// Drag start event\n\t\t\t\t\t_dispatchEvent(_this, rootEl, 'choose', dragEl, rootEl, oldIndex);\n\t\t\t\t};\n\n\t\t\t\t// Disable \"draggable\"\n\t\t\t\toptions.ignore.split(',').forEach(function (criteria) {\n\t\t\t\t\t_find(dragEl, criteria.trim(), _disableDraggable);\n\t\t\t\t});\n\n\t\t\t\t_on(ownerDocument, 'mouseup', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'touchend', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'touchcancel', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'pointercancel', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'selectstart', _this);\n\n\t\t\t\tif (options.delay) {\n\t\t\t\t\t// If the user moves the pointer or let go the click or touch\n\t\t\t\t\t// before the delay has been reached:\n\t\t\t\t\t// disable the delayed drag\n\t\t\t\t\t_on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'mousemove', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'touchmove', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'pointermove', _this._disableDelayedDrag);\n\n\t\t\t\t\t_this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n\t\t\t\t} else {\n\t\t\t\t\tdragStartFn();\n\t\t\t\t}\n\n\n\t\t\t}\n\t\t},\n\n\t\t_disableDelayedDrag: function () {\n\t\t\tvar ownerDocument = this.el.ownerDocument;\n\n\t\t\tclearTimeout(this._dragStartTimer);\n\t\t\t_off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'touchend', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'mousemove', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'touchmove', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'pointermove', this._disableDelayedDrag);\n\t\t},\n\n\t\t_triggerDragStart: function (/** Event */evt, /** Touch */touch) {\n\t\t\ttouch = touch || (evt.pointerType == 'touch' ? evt : null);\n\n\t\t\tif (touch) {\n\t\t\t\t// Touch device support\n\t\t\t\ttapEvt = {\n\t\t\t\t\ttarget: dragEl,\n\t\t\t\t\tclientX: touch.clientX,\n\t\t\t\t\tclientY: touch.clientY\n\t\t\t\t};\n\n\t\t\t\tthis._onDragStart(tapEvt, 'touch');\n\t\t\t}\n\t\t\telse if (!this.nativeDraggable) {\n\t\t\t\tthis._onDragStart(tapEvt, true);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_on(dragEl, 'dragend', this);\n\t\t\t\t_on(rootEl, 'dragstart', this._onDragStart);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tif (document.selection) {\n\t\t\t\t\t// Timeout neccessary for IE9\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tdocument.selection.empty();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t}\n\t\t},\n\n\t\t_dragStarted: function () {\n\t\t\tif (rootEl && dragEl) {\n\t\t\t\tvar options = this.options;\n\n\t\t\t\t// Apply effect\n\t\t\t\t_toggleClass(dragEl, options.ghostClass, true);\n\t\t\t\t_toggleClass(dragEl, options.dragClass, false);\n\n\t\t\t\tSortable.active = this;\n\n\t\t\t\t// Drag start event\n\t\t\t\t_dispatchEvent(this, rootEl, 'start', dragEl, rootEl, oldIndex);\n\t\t\t} else {\n\t\t\t\tthis._nulling();\n\t\t\t}\n\t\t},\n\n\t\t_emulateDragOver: function () {\n\t\t\tif (touchEvt) {\n\t\t\t\tif (this._lastX === touchEvt.clientX && this._lastY === touchEvt.clientY) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis._lastX = touchEvt.clientX;\n\t\t\t\tthis._lastY = touchEvt.clientY;\n\n\t\t\t\tif (!supportCssPointerEvents) {\n\t\t\t\t\t_css(ghostEl, 'display', 'none');\n\t\t\t\t}\n\n\t\t\t\tvar target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY),\n\t\t\t\t\tparent = target,\n\t\t\t\t\ti = touchDragOverListeners.length;\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tdo {\n\t\t\t\t\t\tif (parent[expando]) {\n\t\t\t\t\t\t\twhile (i--) {\n\t\t\t\t\t\t\t\ttouchDragOverListeners[i]({\n\t\t\t\t\t\t\t\t\tclientX: touchEvt.clientX,\n\t\t\t\t\t\t\t\t\tclientY: touchEvt.clientY,\n\t\t\t\t\t\t\t\t\ttarget: target,\n\t\t\t\t\t\t\t\t\trootEl: parent\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttarget = parent; // store last element\n\t\t\t\t\t}\n\t\t\t\t\t/* jshint boss:true */\n\t\t\t\t\twhile (parent = parent.parentNode);\n\t\t\t\t}\n\n\t\t\t\tif (!supportCssPointerEvents) {\n\t\t\t\t\t_css(ghostEl, 'display', '');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t_onTouchMove: function (/**TouchEvent*/evt) {\n\t\t\tif (tapEvt) {\n\t\t\t\tvar\toptions = this.options,\n\t\t\t\t\tfallbackTolerance = options.fallbackTolerance,\n\t\t\t\t\tfallbackOffset = options.fallbackOffset,\n\t\t\t\t\ttouch = evt.touches ? evt.touches[0] : evt,\n\t\t\t\t\tdx = (touch.clientX - tapEvt.clientX) + fallbackOffset.x,\n\t\t\t\t\tdy = (touch.clientY - tapEvt.clientY) + fallbackOffset.y,\n\t\t\t\t\ttranslate3d = evt.touches ? 'translate3d(' + dx + 'px,' + dy + 'px,0)' : 'translate(' + dx + 'px,' + dy + 'px)';\n\n\t\t\t\t// only set the status to dragging, when we are actually dragging\n\t\t\t\tif (!Sortable.active) {\n\t\t\t\t\tif (fallbackTolerance &&\n\t\t\t\t\t\tmin(abs(touch.clientX - this._lastX), abs(touch.clientY - this._lastY)) < fallbackTolerance\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._dragStarted();\n\t\t\t\t}\n\n\t\t\t\t// as well as creating the ghost element on the document body\n\t\t\t\tthis._appendGhost();\n\n\t\t\t\tmoved = true;\n\t\t\t\ttouchEvt = touch;\n\n\t\t\t\t_css(ghostEl, 'webkitTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'mozTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'msTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'transform', translate3d);\n\n\t\t\t\tevt.preventDefault();\n\t\t\t}\n\t\t},\n\n\t\t_appendGhost: function () {\n\t\t\tif (!ghostEl) {\n\t\t\t\tvar rect = dragEl.getBoundingClientRect(),\n\t\t\t\t\tcss = _css(dragEl),\n\t\t\t\t\toptions = this.options,\n\t\t\t\t\tghostRect;\n\n\t\t\t\tghostEl = dragEl.cloneNode(true);\n\n\t\t\t\t_toggleClass(ghostEl, options.ghostClass, false);\n\t\t\t\t_toggleClass(ghostEl, options.fallbackClass, true);\n\t\t\t\t_toggleClass(ghostEl, options.dragClass, true);\n\n\t\t\t\t_css(ghostEl, 'top', rect.top - parseInt(css.marginTop, 10));\n\t\t\t\t_css(ghostEl, 'left', rect.left - parseInt(css.marginLeft, 10));\n\t\t\t\t_css(ghostEl, 'width', rect.width);\n\t\t\t\t_css(ghostEl, 'height', rect.height);\n\t\t\t\t_css(ghostEl, 'opacity', '0.8');\n\t\t\t\t_css(ghostEl, 'position', 'fixed');\n\t\t\t\t_css(ghostEl, 'zIndex', '100000');\n\t\t\t\t_css(ghostEl, 'pointerEvents', 'none');\n\n\t\t\t\toptions.fallbackOnBody && document.body.appendChild(ghostEl) || rootEl.appendChild(ghostEl);\n\n\t\t\t\t// Fixing dimensions.\n\t\t\t\tghostRect = ghostEl.getBoundingClientRect();\n\t\t\t\t_css(ghostEl, 'width', rect.width * 2 - ghostRect.width);\n\t\t\t\t_css(ghostEl, 'height', rect.height * 2 - ghostRect.height);\n\t\t\t}\n\t\t},\n\n\t\t_onDragStart: function (/**Event*/evt, /**boolean*/useFallback) {\n\t\t\tvar dataTransfer = evt.dataTransfer,\n\t\t\t\toptions = this.options;\n\n\t\t\tthis._offUpEvents();\n\n\t\t\tif (activeGroup.checkPull(this, this, dragEl, evt)) {\n\t\t\t\tcloneEl = _clone(dragEl);\n\n\t\t\t\tcloneEl.draggable = false;\n\t\t\t\tcloneEl.style['will-change'] = '';\n\n\t\t\t\t_css(cloneEl, 'display', 'none');\n\t\t\t\t_toggleClass(cloneEl, this.options.chosenClass, false);\n\n\t\t\t\trootEl.insertBefore(cloneEl, dragEl);\n\t\t\t\t_dispatchEvent(this, rootEl, 'clone', dragEl);\n\t\t\t}\n\n\t\t\t_toggleClass(dragEl, options.dragClass, true);\n\n\t\t\tif (useFallback) {\n\t\t\t\tif (useFallback === 'touch') {\n\t\t\t\t\t// Bind touch events\n\t\t\t\t\t_on(document, 'touchmove', this._onTouchMove);\n\t\t\t\t\t_on(document, 'touchend', this._onDrop);\n\t\t\t\t\t_on(document, 'touchcancel', this._onDrop);\n\t\t\t\t\t_on(document, 'pointermove', this._onTouchMove);\n\t\t\t\t\t_on(document, 'pointerup', this._onDrop);\n\t\t\t\t} else {\n\t\t\t\t\t// Old brwoser\n\t\t\t\t\t_on(document, 'mousemove', this._onTouchMove);\n\t\t\t\t\t_on(document, 'mouseup', this._onDrop);\n\t\t\t\t}\n\n\t\t\t\tthis._loopId = setInterval(this._emulateDragOver, 50);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (dataTransfer) {\n\t\t\t\t\tdataTransfer.effectAllowed = 'move';\n\t\t\t\t\toptions.setData && options.setData.call(this, dataTransfer, dragEl);\n\t\t\t\t}\n\n\t\t\t\t_on(document, 'drop', this);\n\t\t\t\tsetTimeout(this._dragStarted, 0);\n\t\t\t}\n\t\t},\n\n\t\t_onDragOver: function (/**Event*/evt) {\n\t\t\tvar el = this.el,\n\t\t\t\ttarget,\n\t\t\t\tdragRect,\n\t\t\t\ttargetRect,\n\t\t\t\trevert,\n\t\t\t\toptions = this.options,\n\t\t\t\tgroup = options.group,\n\t\t\t\tactiveSortable = Sortable.active,\n\t\t\t\tisOwner = (activeGroup === group),\n\t\t\t\tisMovingBetweenSortable = false,\n\t\t\t\tcanSort = options.sort;\n\n\t\t\tif (evt.preventDefault !== void 0) {\n\t\t\t\tevt.preventDefault();\n\t\t\t\t!options.dragoverBubble && evt.stopPropagation();\n\t\t\t}\n\n\t\t\tif (dragEl.animated) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmoved = true;\n\n\t\t\tif (activeSortable && !options.disabled &&\n\t\t\t\t(isOwner\n\t\t\t\t\t? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n\t\t\t\t\t: (\n\t\t\t\t\t\tputSortable === this ||\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(activeSortable.lastPullMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) &&\n\t\t\t\t\t\t\tgroup.checkPut(this, activeSortable, dragEl, evt)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t) &&\n\t\t\t\t(evt.rootEl === void 0 || evt.rootEl === this.el) // touch fallback\n\t\t\t) {\n\t\t\t\t// Smart auto-scrolling\n\t\t\t\t_autoScroll(evt, options, this.el);\n\n\t\t\t\tif (_silent) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\ttarget = _closest(evt.target, options.draggable, el);\n\t\t\t\tdragRect = dragEl.getBoundingClientRect();\n\n\t\t\t\tif (putSortable !== this) {\n\t\t\t\t\tputSortable = this;\n\t\t\t\t\tisMovingBetweenSortable = true;\n\t\t\t\t}\n\n\t\t\t\tif (revert) {\n\t\t\t\t\t_cloneHide(activeSortable, true);\n\t\t\t\t\tparentEl = rootEl; // actualization\n\n\t\t\t\t\tif (cloneEl || nextEl) {\n\t\t\t\t\t\trootEl.insertBefore(dragEl, cloneEl || nextEl);\n\t\t\t\t\t}\n\t\t\t\t\telse if (!canSort) {\n\t\t\t\t\t\trootEl.appendChild(dragEl);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\n\t\t\t\tif ((el.children.length === 0) || (el.children[0] === ghostEl) ||\n\t\t\t\t\t(el === evt.target) && (_ghostIsLast(el, evt))\n\t\t\t\t) {\n\t\t\t\t\t//assign target only if condition is true\n\t\t\t\t\tif (el.children.length !== 0 && el.children[0] !== ghostEl && el === evt.target) {\n\t\t\t\t\t\ttarget = el.lastElementChild;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (target) {\n\t\t\t\t\t\tif (target.animated) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttargetRect = target.getBoundingClientRect();\n\t\t\t\t\t}\n\n\t\t\t\t\t_cloneHide(activeSortable, isOwner);\n\n\t\t\t\t\tif (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt) !== false) {\n\t\t\t\t\t\tif (!dragEl.contains(el)) {\n\t\t\t\t\t\t\tel.appendChild(dragEl);\n\t\t\t\t\t\t\tparentEl = el; // actualization\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._animate(dragRect, dragEl);\n\t\t\t\t\t\ttarget && this._animate(targetRect, target);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (target && !target.animated && target !== dragEl && (target.parentNode[expando] !== void 0)) {\n\t\t\t\t\tif (lastEl !== target) {\n\t\t\t\t\t\tlastEl = target;\n\t\t\t\t\t\tlastCSS = _css(target);\n\t\t\t\t\t\tlastParentCSS = _css(target.parentNode);\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetRect = target.getBoundingClientRect();\n\n\t\t\t\t\tvar width = targetRect.right - targetRect.left,\n\t\t\t\t\t\theight = targetRect.bottom - targetRect.top,\n\t\t\t\t\t\tfloating = R_FLOAT.test(lastCSS.cssFloat + lastCSS.display)\n\t\t\t\t\t\t\t|| (lastParentCSS.display == 'flex' && lastParentCSS['flex-direction'].indexOf('row') === 0),\n\t\t\t\t\t\tisWide = (target.offsetWidth > dragEl.offsetWidth),\n\t\t\t\t\t\tisLong = (target.offsetHeight > dragEl.offsetHeight),\n\t\t\t\t\t\thalfway = (floating ? (evt.clientX - targetRect.left) / width : (evt.clientY - targetRect.top) / height) > 0.5,\n\t\t\t\t\t\tnextSibling = target.nextElementSibling,\n\t\t\t\t\t\tafter = false\n\t\t\t\t\t;\n\n\t\t\t\t\tif (floating) {\n\t\t\t\t\t\tvar elTop = dragEl.offsetTop,\n\t\t\t\t\t\t\ttgTop = target.offsetTop;\n\n\t\t\t\t\t\tif (elTop === tgTop) {\n\t\t\t\t\t\t\tafter = (target.previousElementSibling === dragEl) && !isWide || halfway && isWide;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (target.previousElementSibling === dragEl || dragEl.previousElementSibling === target) {\n\t\t\t\t\t\t\tafter = (evt.clientY - targetRect.top) / height > 0.5;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tafter = tgTop > elTop;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!isMovingBetweenSortable) {\n\t\t\t\t\t\tafter = (nextSibling !== dragEl) && !isLong || halfway && isLong;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n\t\t\t\t\tif (moveVector !== false) {\n\t\t\t\t\t\tif (moveVector === 1 || moveVector === -1) {\n\t\t\t\t\t\t\tafter = (moveVector === 1);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_silent = true;\n\t\t\t\t\t\tsetTimeout(_unsilent, 30);\n\n\t\t\t\t\t\t_cloneHide(activeSortable, isOwner);\n\n\t\t\t\t\t\tif (!dragEl.contains(el)) {\n\t\t\t\t\t\t\tif (after && !nextSibling) {\n\t\t\t\t\t\t\t\tel.appendChild(dragEl);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttarget.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparentEl = dragEl.parentNode; // actualization\n\n\t\t\t\t\t\tthis._animate(dragRect, dragEl);\n\t\t\t\t\t\tthis._animate(targetRect, target);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_animate: function (prevRect, target) {\n\t\t\tvar ms = this.options.animation;\n\n\t\t\tif (ms) {\n\t\t\t\tvar currentRect = target.getBoundingClientRect();\n\n\t\t\t\tif (prevRect.nodeType === 1) {\n\t\t\t\t\tprevRect = prevRect.getBoundingClientRect();\n\t\t\t\t}\n\n\t\t\t\t_css(target, 'transition', 'none');\n\t\t\t\t_css(target, 'transform', 'translate3d('\n\t\t\t\t\t+ (prevRect.left - currentRect.left) + 'px,'\n\t\t\t\t\t+ (prevRect.top - currentRect.top) + 'px,0)'\n\t\t\t\t);\n\n\t\t\t\ttarget.offsetWidth; // repaint\n\n\t\t\t\t_css(target, 'transition', 'all ' + ms + 'ms');\n\t\t\t\t_css(target, 'transform', 'translate3d(0,0,0)');\n\n\t\t\t\tclearTimeout(target.animated);\n\t\t\t\ttarget.animated = setTimeout(function () {\n\t\t\t\t\t_css(target, 'transition', '');\n\t\t\t\t\t_css(target, 'transform', '');\n\t\t\t\t\ttarget.animated = false;\n\t\t\t\t}, ms);\n\t\t\t}\n\t\t},\n\n\t\t_offUpEvents: function () {\n\t\t\tvar ownerDocument = this.el.ownerDocument;\n\n\t\t\t_off(document, 'touchmove', this._onTouchMove);\n\t\t\t_off(document, 'pointermove', this._onTouchMove);\n\t\t\t_off(ownerDocument, 'mouseup', this._onDrop);\n\t\t\t_off(ownerDocument, 'touchend', this._onDrop);\n\t\t\t_off(ownerDocument, 'pointerup', this._onDrop);\n\t\t\t_off(ownerDocument, 'touchcancel', this._onDrop);\n\t\t\t_off(ownerDocument, 'pointercancel', this._onDrop);\n\t\t\t_off(ownerDocument, 'selectstart', this);\n\t\t},\n\n\t\t_onDrop: function (/**Event*/evt) {\n\t\t\tvar el = this.el,\n\t\t\t\toptions = this.options;\n\n\t\t\tclearInterval(this._loopId);\n\t\t\tclearInterval(autoScroll.pid);\n\t\t\tclearTimeout(this._dragStartTimer);\n\n\t\t\t// Unbind events\n\t\t\t_off(document, 'mousemove', this._onTouchMove);\n\n\t\t\tif (this.nativeDraggable) {\n\t\t\t\t_off(document, 'drop', this);\n\t\t\t\t_off(el, 'dragstart', this._onDragStart);\n\t\t\t}\n\n\t\t\tthis._offUpEvents();\n\n\t\t\tif (evt) {\n\t\t\t\tif (moved) {\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t!options.dropBubble && evt.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n\t\t\t\tif (rootEl === parentEl || Sortable.active.lastPullMode !== 'clone') {\n\t\t\t\t\t// Remove clone\n\t\t\t\t\tcloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n\t\t\t\t}\n\n\t\t\t\tif (dragEl) {\n\t\t\t\t\tif (this.nativeDraggable) {\n\t\t\t\t\t\t_off(dragEl, 'dragend', this);\n\t\t\t\t\t}\n\n\t\t\t\t\t_disableDraggable(dragEl);\n\t\t\t\t\tdragEl.style['will-change'] = '';\n\n\t\t\t\t\t// Remove class's\n\t\t\t\t\t_toggleClass(dragEl, this.options.ghostClass, false);\n\t\t\t\t\t_toggleClass(dragEl, this.options.chosenClass, false);\n\n\t\t\t\t\t// Drag stop event\n\t\t\t\t\t_dispatchEvent(this, rootEl, 'unchoose', dragEl, rootEl, oldIndex);\n\n\t\t\t\t\tif (rootEl !== parentEl) {\n\t\t\t\t\t\tnewIndex = _index(dragEl, options.draggable);\n\n\t\t\t\t\t\tif (newIndex >= 0) {\n\t\t\t\t\t\t\t// Add event\n\t\t\t\t\t\t\t_dispatchEvent(null, parentEl, 'add', dragEl, rootEl, oldIndex, newIndex);\n\n\t\t\t\t\t\t\t// Remove event\n\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'remove', dragEl, rootEl, oldIndex, newIndex);\n\n\t\t\t\t\t\t\t// drag from one list and drop into another\n\t\t\t\t\t\t\t_dispatchEvent(null, parentEl, 'sort', dragEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'sort', dragEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (dragEl.nextSibling !== nextEl) {\n\t\t\t\t\t\t\t// Get the index of the dragged element within its parent\n\t\t\t\t\t\t\tnewIndex = _index(dragEl, options.draggable);\n\n\t\t\t\t\t\t\tif (newIndex >= 0) {\n\t\t\t\t\t\t\t\t// drag & drop within the same list\n\t\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'update', dragEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'sort', dragEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Sortable.active) {\n\t\t\t\t\t\t/* jshint eqnull:true */\n\t\t\t\t\t\tif (newIndex == null || newIndex === -1) {\n\t\t\t\t\t\t\tnewIndex = oldIndex;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'end', dragEl, rootEl, oldIndex, newIndex);\n\n\t\t\t\t\t\t// Save sorting\n\t\t\t\t\t\tthis.save();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._nulling();\n\t\t},\n\n\t\t_nulling: function() {\n\t\t\trootEl =\n\t\t\tdragEl =\n\t\t\tparentEl =\n\t\t\tghostEl =\n\t\t\tnextEl =\n\t\t\tcloneEl =\n\t\t\tlastDownEl =\n\n\t\t\tscrollEl =\n\t\t\tscrollParentEl =\n\n\t\t\ttapEvt =\n\t\t\ttouchEvt =\n\n\t\t\tmoved =\n\t\t\tnewIndex =\n\n\t\t\tlastEl =\n\t\t\tlastCSS =\n\n\t\t\tputSortable =\n\t\t\tactiveGroup =\n\t\t\tSortable.active = null;\n\n\t\t\tsavedInputChecked.forEach(function (el) {\n\t\t\t\tel.checked = true;\n\t\t\t});\n\t\t\tsavedInputChecked.length = 0;\n\t\t},\n\n\t\thandleEvent: function (/**Event*/evt) {\n\t\t\tswitch (evt.type) {\n\t\t\t\tcase 'drop':\n\t\t\t\tcase 'dragend':\n\t\t\t\t\tthis._onDrop(evt);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'dragover':\n\t\t\t\tcase 'dragenter':\n\t\t\t\t\tif (dragEl) {\n\t\t\t\t\t\tthis._onDragOver(evt);\n\t\t\t\t\t\t_globalDragOver(evt);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'selectstart':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Serializes the item into an array of string.\n\t\t * @returns {String[]}\n\t\t */\n\t\ttoArray: function () {\n\t\t\tvar order = [],\n\t\t\t\tel,\n\t\t\t\tchildren = this.el.children,\n\t\t\t\ti = 0,\n\t\t\t\tn = children.length,\n\t\t\t\toptions = this.options;\n\n\t\t\tfor (; i < n; i++) {\n\t\t\t\tel = children[i];\n\t\t\t\tif (_closest(el, options.draggable, this.el)) {\n\t\t\t\t\torder.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn order;\n\t\t},\n\n\n\t\t/**\n\t\t * Sorts the elements according to the array.\n\t\t * @param {String[]} order order of the items\n\t\t */\n\t\tsort: function (order) {\n\t\t\tvar items = {}, rootEl = this.el;\n\n\t\t\tthis.toArray().forEach(function (id, i) {\n\t\t\t\tvar el = rootEl.children[i];\n\n\t\t\t\tif (_closest(el, this.options.draggable, rootEl)) {\n\t\t\t\t\titems[id] = el;\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\torder.forEach(function (id) {\n\t\t\t\tif (items[id]) {\n\t\t\t\t\trootEl.removeChild(items[id]);\n\t\t\t\t\trootEl.appendChild(items[id]);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n\t\t * Save the current sorting\n\t\t */\n\t\tsave: function () {\n\t\t\tvar store = this.options.store;\n\t\t\tstore && store.set(this);\n\t\t},\n\n\n\t\t/**\n\t\t * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n\t\t * @param {HTMLElement} el\n\t\t * @param {String} [selector] default: `options.draggable`\n\t\t * @returns {HTMLElement|null}\n\t\t */\n\t\tclosest: function (el, selector) {\n\t\t\treturn _closest(el, selector || this.options.draggable, this.el);\n\t\t},\n\n\n\t\t/**\n\t\t * Set/get option\n\t\t * @param {string} name\n\t\t * @param {*} [value]\n\t\t * @returns {*}\n\t\t */\n\t\toption: function (name, value) {\n\t\t\tvar options = this.options;\n\n\t\t\tif (value === void 0) {\n\t\t\t\treturn options[name];\n\t\t\t} else {\n\t\t\t\toptions[name] = value;\n\n\t\t\t\tif (name === 'group') {\n\t\t\t\t\t_prepareGroup(options);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Destroy\n\t\t */\n\t\tdestroy: function () {\n\t\t\tvar el = this.el;\n\n\t\t\tel[expando] = null;\n\n\t\t\t_off(el, 'mousedown', this._onTapStart);\n\t\t\t_off(el, 'touchstart', this._onTapStart);\n\t\t\t_off(el, 'pointerdown', this._onTapStart);\n\n\t\t\tif (this.nativeDraggable) {\n\t\t\t\t_off(el, 'dragover', this);\n\t\t\t\t_off(el, 'dragenter', this);\n\t\t\t}\n\n\t\t\t// Remove draggable attributes\n\t\t\tArray.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n\t\t\t\tel.removeAttribute('draggable');\n\t\t\t});\n\n\t\t\ttouchDragOverListeners.splice(touchDragOverListeners.indexOf(this._onDragOver), 1);\n\n\t\t\tthis._onDrop();\n\n\t\t\tthis.el = el = null;\n\t\t}\n\t};\n\n\n\tfunction _cloneHide(sortable, state) {\n\t\tif (sortable.lastPullMode !== 'clone') {\n\t\t\tstate = true;\n\t\t}\n\n\t\tif (cloneEl && (cloneEl.state !== state)) {\n\t\t\t_css(cloneEl, 'display', state ? 'none' : '');\n\n\t\t\tif (!state) {\n\t\t\t\tif (cloneEl.state) {\n\t\t\t\t\tif (sortable.options.group.revertClone) {\n\t\t\t\t\t\trootEl.insertBefore(cloneEl, nextEl);\n\t\t\t\t\t\tsortable._animate(dragEl, cloneEl);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trootEl.insertBefore(cloneEl, dragEl);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcloneEl.state = state;\n\t\t}\n\t}\n\n\n\tfunction _closest(/**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx) {\n\t\tif (el) {\n\t\t\tctx = ctx || document;\n\n\t\t\tdo {\n\t\t\t\tif ((selector === '>*' && el.parentNode === ctx) || _matches(el, selector)) {\n\t\t\t\t\treturn el;\n\t\t\t\t}\n\t\t\t\t/* jshint boss:true */\n\t\t\t} while (el = _getParentOrHost(el));\n\t\t}\n\n\t\treturn null;\n\t}\n\n\n\tfunction _getParentOrHost(el) {\n\t\tvar parent = el.host;\n\n\t\treturn (parent && parent.nodeType) ? parent : el.parentNode;\n\t}\n\n\n\tfunction _globalDragOver(/**Event*/evt) {\n\t\tif (evt.dataTransfer) {\n\t\t\tevt.dataTransfer.dropEffect = 'move';\n\t\t}\n\t\tevt.preventDefault();\n\t}\n\n\n\tfunction _on(el, event, fn) {\n\t\tel.addEventListener(event, fn, captureMode);\n\t}\n\n\n\tfunction _off(el, event, fn) {\n\t\tel.removeEventListener(event, fn, captureMode);\n\t}\n\n\n\tfunction _toggleClass(el, name, state) {\n\t\tif (el) {\n\t\t\tif (el.classList) {\n\t\t\t\tel.classList[state ? 'add' : 'remove'](name);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n\t\t\t\tel.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfunction _css(el, prop, val) {\n\t\tvar style = el && el.style;\n\n\t\tif (style) {\n\t\t\tif (val === void 0) {\n\t\t\t\tif (document.defaultView && document.defaultView.getComputedStyle) {\n\t\t\t\t\tval = document.defaultView.getComputedStyle(el, '');\n\t\t\t\t}\n\t\t\t\telse if (el.currentStyle) {\n\t\t\t\t\tval = el.currentStyle;\n\t\t\t\t}\n\n\t\t\t\treturn prop === void 0 ? val : val[prop];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!(prop in style)) {\n\t\t\t\t\tprop = '-webkit-' + prop;\n\t\t\t\t}\n\n\t\t\t\tstyle[prop] = val + (typeof val === 'string' ? '' : 'px');\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfunction _find(ctx, tagName, iterator) {\n\t\tif (ctx) {\n\t\t\tvar list = ctx.getElementsByTagName(tagName), i = 0, n = list.length;\n\n\t\t\tif (iterator) {\n\t\t\t\tfor (; i < n; i++) {\n\t\t\t\t\titerator(list[i], i);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn list;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\n\n\tfunction _dispatchEvent(sortable, rootEl, name, targetEl, fromEl, startIndex, newIndex) {\n\t\tsortable = (sortable || rootEl[expando]);\n\n\t\tvar evt = document.createEvent('Event'),\n\t\t\toptions = sortable.options,\n\t\t\tonName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n\n\t\tevt.initEvent(name, true, true);\n\n\t\tevt.to = rootEl;\n\t\tevt.from = fromEl || rootEl;\n\t\tevt.item = targetEl || rootEl;\n\t\tevt.clone = cloneEl;\n\n\t\tevt.oldIndex = startIndex;\n\t\tevt.newIndex = newIndex;\n\n\t\trootEl.dispatchEvent(evt);\n\n\t\tif (options[onName]) {\n\t\t\toptions[onName].call(sortable, evt);\n\t\t}\n\t}\n\n\n\tfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvt, willInsertAfter) {\n\t\tvar evt,\n\t\t\tsortable = fromEl[expando],\n\t\t\tonMoveFn = sortable.options.onMove,\n\t\t\tretVal;\n\n\t\tevt = document.createEvent('Event');\n\t\tevt.initEvent('move', true, true);\n\n\t\tevt.to = toEl;\n\t\tevt.from = fromEl;\n\t\tevt.dragged = dragEl;\n\t\tevt.draggedRect = dragRect;\n\t\tevt.related = targetEl || toEl;\n\t\tevt.relatedRect = targetRect || toEl.getBoundingClientRect();\n\t\tevt.willInsertAfter = willInsertAfter;\n\n\t\tfromEl.dispatchEvent(evt);\n\n\t\tif (onMoveFn) {\n\t\t\tretVal = onMoveFn.call(sortable, evt, originalEvt);\n\t\t}\n\n\t\treturn retVal;\n\t}\n\n\n\tfunction _disableDraggable(el) {\n\t\tel.draggable = false;\n\t}\n\n\n\tfunction _unsilent() {\n\t\t_silent = false;\n\t}\n\n\n\t/** @returns {HTMLElement|false} */\n\tfunction _ghostIsLast(el, evt) {\n\t\tvar lastEl = el.lastElementChild,\n\t\t\trect = lastEl.getBoundingClientRect();\n\n\t\t// 5 — min delta\n\t\t// abs — нельзя добавлять, а то глюки при наведении сверху\n\t\treturn (evt.clientY - (rect.top + rect.height) > 5) ||\n\t\t\t(evt.clientX - (rect.left + rect.width) > 5);\n\t}\n\n\n\t/**\n\t * Generate id\n\t * @param {HTMLElement} el\n\t * @returns {String}\n\t * @private\n\t */\n\tfunction _generateId(el) {\n\t\tvar str = el.tagName + el.className + el.src + el.href + el.textContent,\n\t\t\ti = str.length,\n\t\t\tsum = 0;\n\n\t\twhile (i--) {\n\t\t\tsum += str.charCodeAt(i);\n\t\t}\n\n\t\treturn sum.toString(36);\n\t}\n\n\t/**\n\t * Returns the index of an element within its parent for a selected set of\n\t * elements\n\t * @param {HTMLElement} el\n\t * @param {selector} selector\n\t * @return {number}\n\t */\n\tfunction _index(el, selector) {\n\t\tvar index = 0;\n\n\t\tif (!el || !el.parentNode) {\n\t\t\treturn -1;\n\t\t}\n\n\t\twhile (el && (el = el.previousElementSibling)) {\n\t\t\tif ((el.nodeName.toUpperCase() !== 'TEMPLATE') && (selector === '>*' || _matches(el, selector))) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\n\t\treturn index;\n\t}\n\n\tfunction _matches(/**HTMLElement*/el, /**String*/selector) {\n\t\tif (el) {\n\t\t\tselector = selector.split('.');\n\n\t\t\tvar tag = selector.shift().toUpperCase(),\n\t\t\t\tre = new RegExp('\\\\s(' + selector.join('|') + ')(?=\\\\s)', 'g');\n\n\t\t\treturn (\n\t\t\t\t(tag === '' || el.nodeName.toUpperCase() == tag) &&\n\t\t\t\t(!selector.length || ((' ' + el.className + ' ').match(re) || []).length == selector.length)\n\t\t\t);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfunction _throttle(callback, ms) {\n\t\tvar args, _this;\n\n\t\treturn function () {\n\t\t\tif (args === void 0) {\n\t\t\t\targs = arguments;\n\t\t\t\t_this = this;\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tif (args.length === 1) {\n\t\t\t\t\t\tcallback.call(_this, args[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback.apply(_this, args);\n\t\t\t\t\t}\n\n\t\t\t\t\targs = void 0;\n\t\t\t\t}, ms);\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction _extend(dst, src) {\n\t\tif (dst && src) {\n\t\t\tfor (var key in src) {\n\t\t\t\tif (src.hasOwnProperty(key)) {\n\t\t\t\t\tdst[key] = src[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn dst;\n\t}\n\n\tfunction _clone(el) {\n\t\treturn $\n\t\t\t? $(el).clone(true)[0]\n\t\t\t: (Polymer && Polymer.dom\n\t\t\t\t? Polymer.dom(el).cloneNode(true)\n\t\t\t\t: el.cloneNode(true)\n\t\t\t);\n\t}\n\n\tfunction _saveInputCheckedState(root) {\n\t\tvar inputs = root.getElementsByTagName('input');\n\t\tvar idx = inputs.length;\n\n\t\twhile (idx--) {\n\t\t\tvar el = inputs[idx];\n\t\t\tel.checked && savedInputChecked.push(el);\n\t\t}\n\t}\n\n\t// Fixed #973: \n\t_on(document, 'touchmove', function (evt) {\n\t\tif (Sortable.active) {\n\t\t\tevt.preventDefault();\n\t\t}\n\t});\n\n\ttry {\n\t\twindow.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n\t\t\tget: function () {\n\t\t\t\tcaptureMode = {\n\t\t\t\t\tcapture: false,\n\t\t\t\t\tpassive: false\n\t\t\t\t};\n\t\t\t}\n\t\t}));\n\t} catch (err) {}\n\n\t// Export utils\n\tSortable.utils = {\n\t\ton: _on,\n\t\toff: _off,\n\t\tcss: _css,\n\t\tfind: _find,\n\t\tis: function (el, selector) {\n\t\t\treturn !!_closest(el, selector, el);\n\t\t},\n\t\textend: _extend,\n\t\tthrottle: _throttle,\n\t\tclosest: _closest,\n\t\ttoggleClass: _toggleClass,\n\t\tclone: _clone,\n\t\tindex: _index\n\t};\n\n\n\t/**\n\t * Create sortable instance\n\t * @param {HTMLElement} el\n\t * @param {Object} [options]\n\t */\n\tSortable.create = function (el, options) {\n\t\treturn new Sortable(el, options);\n\t};\n\n\n\t// Export\n\tSortable.version = '1.6.1';\n\treturn Sortable;\n});\n","import { IVProgParser } from \"./../ast/ivprogParser\";\nimport { SemanticAnalyser } from \"./../processor/semantic/semanticAnalyser\";\nimport { IVProgProcessor } from \"./../processor/ivprogProcessor\";\nimport { InputTest } from \"./../util/inputTest\";\nimport { OutputTest } from \"./../util/outputTest\";\nimport * as LocalizedStringsService from \"../services/localizedStringsService\";\nimport { Decimal } from 'decimal.js';\nimport { Config } from \"../util/config\";\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nexport class IVProgAssessment {\n\n constructor (textCode, testCases, domConsole) {\n this.textCode = textCode;\n this.testCases = testCases;\n this.domConsole = domConsole;\n }\n\n runTest () {\n try {\n // try and show error messages through domconsole\n const parser = IVProgParser.createParser(this.textCode);\n const semantic = new SemanticAnalyser(parser.parseTree());\n const validTree = semantic.analyseTree();\n // loop test cases and show messages through domconsole\n const partialTests = this.testCases.map( (t, name) => {\n return this.partialEvaluateTestCase(new IVProgProcessor(validTree), t.input, t.output, name);\n });\n const testResult = partialTests.reduce((acc, curr) => acc.then(curr), Promise.resolve(0));\n return testResult.then(total => Promise.resolve(total / this.testCases.length))\n .catch(err => {\n this.domConsole.err(\"Erro durante a execução do programa\");// try and show error messages through domconsole\n this.domConsole.err(err.message);\n return Promise.resolve(0);\n });\n } catch (error) {\n this.domConsole.err(\"Erro durante a execução do programa\");// try and show error messages through domconsole\n this.domConsole.err(error.message);\n return Promise.resolve(0);\n }\n }\n\n evaluateTestCase (prog, inputList, outputList, name, accumulator) {\n const outerThis = this;\n const input = new InputTest(inputList);\n const output = new OutputTest();\n prog.registerInput(input);\n prog.registerOutput(output);\n const startTime = Date.now()\n return prog.interpretAST().then( _ => {\n const millis = Date.now() - startTime;\n if (input.inputList.length !== input.index) {\n outerThis.showErrorMessage('test_case_few_reads', name+1);\n outerThis.showMessage('test_case_duration', millis);\n return Promise.resolve(accumulator + 1 * (input.index/inputList.length));\n } else if (output.list.length < outputList.length) {\n outerThis.showErrorMessage('test_case_failed', name + 1, inputList.join(','),\n outputList.join(','), output.list.join(','));\n outerThis.showMessage('test_case_duration', millis);\n return Promise.resolve(accumulator + 1 * (output.list.length/outputList.length));\n } else if (output.list.length > outputList.length) {\n outerThis.showErrorMessage('test_case_failed', name + 1, inputList.join(','),\n outputList.join(','), output.list.join(','));\n outerThis.showMessage('test_case_duration', millis);\n return Promise.resolve(accumulator + 1 * (outputList.length/output.list.length));\n } else {\n const isOk = outerThis.checkOutput(output.list, outputList);\n if(!isOk) {\n outerThis.showErrorMessage('test_case_failed', name + 1, inputList.join(','),\n outputList.join(','), output.list.join(','));\n outerThis.showMessage('test_case_duration', millis);\n return Promise.resolve(accumulator);\n } else {\n outerThis.showMessage('test_case_success', name + 1);\n outerThis.showMessage('test_case_duration', millis);\n return Promise.resolve(accumulator + 1);\n }\n }\n }).catch( error => {\n outerThis.showErrorMessage('test_case_failed_exception', name + 1, error.message);\n return Promise.resolve(accumulator);\n });\n }\n\n partialEvaluateTestCase (prog, inputList, outputList, name) {\n return this.evaluateTestCase.bind(this, prog, inputList, outputList, name);\n }\n\n checkOutput (aList, bList) {\n for (let i = 0; i < aList.length; i++) {\n const outValue = aList[i];\n let castNumberA = parseFloat(outValue);\n if(!Number.isNaN(castNumberA)) {\n let castNumberB = parseFloat(bList[i]);\n if(Number.isNaN(castNumberB)) {\n return false;\n }\n castNumberA = new Decimal(castNumberA);\n castNumberB = new Decimal(castNumberB);\n const decimalPlaces = Math.min(castNumberB.dp(), Config.decimalPlaces);\n Decimal.set({ rounding: Decimal.ROUND_FLOOR});\n castNumberA = new Decimal(castNumberA.toFixed(decimalPlaces));\n castNumberB = new Decimal(castNumberB.toFixed(decimalPlaces));\n const aEqualsB = castNumberA.eq(castNumberB);\n Decimal.set({ rounding: Decimal.ROUND_HALF_UP});\n if (!aEqualsB) {\n return false;\n }\n } else if(outValue != bList[i]) {\n return false;\n }\n }\n return true;\n }\n\n showErrorMessage (errorID, ...args) {\n this.domConsole.err(LocalizedStrings.getError(errorID, args));\n }\n\n showMessage (msgID, ...args) {\n this.domConsole.info(LocalizedStrings.getMessage(msgID, args));\n }\n}","import { Assign } from './assign';\n\nexport class ArrayIndexAssign extends Assign {\n\n constructor (id, lineExpression, columnExpression, expression) {\n super(id, expression);\n this.line = lineExpression;\n this.column = columnExpression;\n }\n}\n","import { Declaration } from './declaration';\n\nexport class ArrayDeclaration extends Declaration {\n\n constructor (id, type, lines, columns, initial, isConst) {\n super(id, type, initial, isConst);\n this.lines = lines;\n this.columns = columns;\n }\n}","import { Command } from './command';\n\nexport class Assign extends Command {\n \n constructor (id, expression) {\n super();\n this.id = id;\n this.expression = expression;\n }\n}","import { Command } from './command';\n\nexport class Break extends Command {\n\n constructor () {\n super();\n }\n}\n","import { Command } from './command';\n\nexport class Case extends Command {\n\n constructor (expression) {\n super();\n this.expression = expression;\n this.commands = [];\n }\n\n setCommands (commands) {\n this.commands = commands;\n }\n\n get isDefault () {\n return this.expression === null;\n }\n}","export class Command {\n\n constructor () {\n this._sourceInfo = null;\n }\n\n set sourceInfo (sourceInfo) {\n this._sourceInfo = sourceInfo;\n }\n\n get sourceInfo () {\n return this._sourceInfo;\n }\n}\n","export class CommandBlock {\n\t\n\tconstructor(variables, commands) {\n\t\tthis.variables = variables;\n\t\tthis.commands = commands;\n\t\tthis._sourceInfo = null;\n\t}\n\n\tset sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Command } from './command';\n\nexport class Declaration extends Command {\n \n constructor (id, type, initial, isConst) {\n super();\n this.id = id;\n this.type = type;\n this.initial = initial;\n this.isConst = isConst;\n }\n}\n","import { While } from './while';\n\nexport class DoWhile extends While {\n\n constructor(condition, commandBlock) {\n super(condition, commandBlock);\n }\n\n get testFirst () {\n return false;\n }\n \n}","import { Command } from './command';\n\nexport class For extends Command {\n\n constructor (assignment, condition, increment, commandBlock) {\n super();\n this.assignment = assignment;\n this.condition = condition;\n this.increment = increment;\n this.commandBlock = commandBlock;\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n}","export class FormalParameter {\n\n constructor (type, id, byRef = false) {\n this.type = type;\n this.id = id;\n this.byRef = byRef;\n this._sourceInfo = null;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Types } from './../../typeSystem/types';\n\nexport class Function {\n\n constructor(name, returnType, formalParameters, commandBlock) {\n this.name = name;\n this.returnType = returnType;\n this.formalParameters = formalParameters;\n this.commandBlock = commandBlock;\n this._sourceInfo = null;\n }\n\n get isMain () {\n return this.name === null && this.returnType.isCompatible(Types.VOID);\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n\n get variablesDeclarations () {\n return this.commandBlock.variables;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Command } from './command';\n\nexport class IfThenElse extends Command {\n\n constructor (condition, ifTrue, ifFalse) {\n super();\n this.condition = condition;\n this.ifTrue = ifTrue;\n this.ifFalse = ifFalse;\n }\n}","import { Break } from './break';\nimport { Return } from './return';\nimport { Assign } from './assign';\nimport { ArrayIndexAssign } from './arrayAssign';\nimport { Declaration } from './declaration';\nimport { ArrayDeclaration } from './arrayDeclaration';\nimport { While } from './while';\nimport { For } from './for';\nimport { Function } from './function';\nimport { IfThenElse } from './ifThenElse';\nimport { CommandBlock } from './commandBlock';\nimport { DoWhile } from './doWhile';\nimport { Switch } from './switch';\nimport { Case } from './case';\nimport { SysCall } from './sysCall';\nimport { FormalParameter } from './formalParameter';\nimport { FunctionCall } from './../expressions/functionCall'; //Proxy to expression since they do exatcly the same thing\n\nexport {\n Break,\n Return,\n Assign,\n ArrayIndexAssign,\n Declaration,\n ArrayDeclaration,\n While,\n For,\n Function,\n IfThenElse,\n CommandBlock,\n DoWhile,\n Switch,\n Case,\n SysCall,\n FormalParameter,\n FunctionCall\n};","import { Command } from './command';\n\nexport class Return extends Command {\n\n constructor(expression) {\n super();\n this.expression = expression;\n }\n \n}","import { Command } from './command';\n\nexport class Switch extends Command {\n \n constructor (expression, cases) {\n super();\n this.expression = expression;\n this.cases = cases;\n }\n}","/**\n * This class represents all the language defined functions.\n * The language processor uses the id provided here to properly execute the desired function.\n * The function is actually implemented inside the language processor.\n * All the functions can be found at: js/processor/definedFunctions.js\n */\nexport class SysCall {\n\n constructor (langFunc) {\n this.langFunc = langFunc;\n }\n}","import { Command } from './command';\n\nexport class While extends Command {\n\n constructor (expression, commandBlock) {\n super();\n this.expression = expression;\n this.commandBlock = commandBlock;\n }\n\n get commands () {\n return this.commandBlock.commands;\n }\n\n get testFirst () {\n \treturn true;\n }\n}","export class SyntaxError extends Error {\n\n constructor (...msg) {\n super(...msg);\n if(Error.captureStackTrace)\n Error.captureStackTrace(this, SyntaxError);\n }\n}\n","import * as LocalizedStringsService from './../../services/localizedStringsService';\nimport { SyntaxError } from './syntaxError';\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nexport const SyntaxErrorFactory = Object.freeze({\n extra_lines: () => new SyntaxError(LocalizedStrings.getError(\"extra_lines\")),\n token_missing_one: (expected, token) => {\n const context = [expected, token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"token_missing_one\", context));\n },\n token_missing_list: (expectedList, token) => {\n const line = expectedList.join(LocalizedStrings.getOR());\n return SyntaxErrorFactory.token_missing_one(line, token);\n },\n id_missing: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"id_missing\", context));\n },\n eos_missing: (token) => {\n const context = [token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"eos_missing\", context));\n },\n invalid_array_dimension: (typeName, token) => {\n const context = [token.line, token.column, typeName];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_array_dimension\", context));\n },\n invalid_array_size: (token) => {\n const context = [token.line];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_array_size\", context));\n },\n invalid_main_return: (name, typeName, token) => {\n const context = [name, typeName, token.line];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_main_return\", context));\n },\n invalid_var_declaration: (token) => {\n const context = [token.line];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_var_declaration\", context));\n },\n invalid_break_command: (cmdName, token) => {\n const context = [token.line, cmdName];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_break_command\", context));\n },\n invalid_terminal: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError('invalid_terminal', context));\n },\n invalid_type: (list, token) => {\n const line = list.join(LocalizedStrings.getOR());\n const context = [token.text, token.line, token.column, line]\n return new SyntaxError(LocalizedStrings.getError(\"invalid_type\", context));\n },\n const_not_init: (token) => {\n const context = [token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"const_not_init\", context));\n },\n invalid_id_format: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"invalid_id_format\", context));\n },\n duplicate_function: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"duplicate_function\", context));\n },\n main_parameters: () => {\n return new SyntaxError(LocalizedStrings.getError(\"main_parameters\"));\n },\n duplicate_variable: (token) => {\n const context = [token.text, token.line, token.column];\n return new SyntaxError(LocalizedStrings.getError(\"duplicate_variable\", context));\n }\n});\n","import { Expression } from './expression';\n\nexport class ArrayAccess extends Expression {\n\t\n\tconstructor (id, line, column) {\n\t\tsuper();\n\t\tthis.id = id;\n\t\tthis.line = line;\n\t\tthis.column = column;\n\t}\n\n\ttoString () {\n\t\tconst strLine = this.line.toString();\n\t\tlet strColumn = null;\n\t\tif(this.column) {\n\t\t\tstrColumn = this.column.toString();\n\t\t}\n\t\tif(strColumn) {\n\t\t\treturn `${this.id}[${strLine}][${strColumn}]`;\n\t\t} else {\n\t\t\treturn `${this.id}[${strLine}]`;\n\t\t}\n\t}\n}","import { Literal } from './literal';\n\nexport class ArrayLiteral extends Literal {\n \n constructor(type, value) {\n super(type);\n this.value = value;\n }\n\n get subtype () {\n let element = this.value[0];\n if (element instanceof ArrayLiteral) {\n return element.value[0].type;\n } else {\n return element.type;\n }\n }\n\n get lines () {\n return this.value.length;\n }\n\n get columns () {\n let element = this.value[0];\n if (!(element instanceof ArrayLiteral)){\n return null;\n } else {\n return element.value[0].length;\n }\n }\n\n get isVector () {\n return this.columns === null;\n }\n\n get isValid () {\n return true;//this.validateType() && this.validateSize();\n }\n\n validateType () {\n // let valid = true;\n // if(this.columns !== null) {\n // const len = this.columns;\n // const len2 = this.lines;\n // for (let i = len - 1; i >= 0; i--) {\n // for (let j = len2 - 1; j >= 0; j--) {\n // if(this.value[i].value[j].type !== this.subtype) {\n // valid = false;\n // break;\n // }\n // }\n // }\n // } else {\n // const len = this.lines;\n // for (var i = len - 1; i >= 0; i--) {\n // if(this.value[i].type !== this.subtype) {\n // valid = false;\n // break;\n // }\n // }\n // }\n return true;//valid;\n }\n\n validateSize () {\n let valid = true;\n if(this.columns !== null) {\n const equalityTest = data.value.map(v => v.length)\n .reduce((old, next) => {\n if (old === null) {\n return next;\n } else if (old === next) {\n return old\n } else {\n return -1;\n }\n }, null);\n valid = equalityTest !== -1;\n }\n return valid;\n }\n\n toString () {\n const strList = this.value.map(arrayLiteral => arrayLiteral.toString());\n return \"{\" + strList.join(',') + \"}\";\n }\n}\n","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertBoolToString } from \"./../../typeSystem/parsers\";\n\nexport class BoolLiteral extends Literal {\n \n constructor(value) {\n super(Types.BOOLEAN);\n this.value = value;\n }\n\n toString () {\n return convertBoolToString(this.value);\n }\n}","export class Expression {\n\n constructor () {\n this._sourceInfo = null;\n }\n\n set sourceInfo (sourceInfo) {\n\t\tthis._sourceInfo = sourceInfo;\n\t}\n\n\tget sourceInfo () {\n\t\treturn this._sourceInfo;\n\t}\n}","import { Expression } from './expression';\nimport { LanguageDefinedFunction } from '../../processor/definedFunctions';\n\nexport class FunctionCall extends Expression {\n\n\tconstructor (id, actualParameters) {\n\t\tsuper();\n\t\tthis.id = id;\n\t\tthis.actualParameters = actualParameters;\n\t}\n\n\tget isMainCall () {\n\t\treturn this.id === null;\n\t}\n\n\tget parametersSize () {\n\t\treturn this.actualParameters.length;\n\t}\n\n\ttoString () {\n\t\tlet name = null;\n\t\tif(this.isMainCall) {\n\t\t\tname = LanguageDefinedFunction.getMainFunctionName();\n\t\t} else {\n\t\t\tname = LanguageDefinedFunction.getLocalName(this.id);\n\t\t}\n\t\tlet params = null;\n\t\tif(this.actualParameters.length == 0) {\n\t\t\tparams = \"()\";\n\t\t} else {\n\t\t\tconst strParams = this.actualParameters.map(v => v.toString());\n\t\t\tparams = \"(\" + strParams.join(\",\") + \")\";\n\t\t}\n\t\treturn name + params;\n\t}\n}","import { ArrayAccess } from './arrayAccess';\nimport { FunctionCall } from './functionCall';\nimport { IntLiteral } from './intLiteral';\nimport { RealLiteral } from './realLiteral';\nimport { BoolLiteral } from './boolLiteral';\nimport { StringLiteral } from './stringLiteral';\nimport { ArrayLiteral } from './arrayLiteral';\nimport { VariableLiteral } from './variableLiteral';\nimport { InfixApp } from './infixApp';\nimport { UnaryApp } from './unaryApp';\n\nexport {\n\tArrayAccess,\n\tFunctionCall,\n IntLiteral,\n RealLiteral,\n BoolLiteral,\n StringLiteral,\n ArrayLiteral,\n VariableLiteral,\n InfixApp,\n UnaryApp\n};","import { Expression } from './expression';\n\nexport class InfixApp extends Expression {\n\n constructor(op, left, right) {\n super();\n this.op = op;\n this.left = left;\n this.right = right;\n }\n\n toString () {\n const l = this.left.toString();\n const op = this.op.value;\n const r = this.right.toString();\n return l + op + r;\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertToString } from './../../typeSystem/parsers';\n\nexport class IntLiteral extends Literal {\n \n constructor(value) {\n super(Types.INTEGER);\n this.value = value;\n }\n\n toString() {\n return convertToString(this.value, this.type);\n }\n}","import { Expression } from './expression';\n\nexport class Literal extends Expression {\n \n constructor (type) {\n super();\n this.type = type;\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\nimport { convertToString } from './../../typeSystem/parsers';\n\nexport class RealLiteral extends Literal {\n \n constructor(value) {\n super(Types.REAL);\n this.value = value;\n }\n\n toString() {\n return convertToString(this.value, this.type);\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\n\nexport class StringLiteral extends Literal {\n \n constructor(value) {\n super(Types.STRING);\n this.value = value;\n }\n\n toString() {\n return '\"' + this.value + '\"';\n }\n}","import {InfixApp} from './infixApp';\n\nexport class UnaryApp extends InfixApp {\n \n constructor (op, left) {\n super(op, left, null);\n }\n\n toString () {\n const l = this.left.toString();\n const op = this.op.value;\n return op + l;\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\n\nexport class VariableLiteral extends Literal {\n \n constructor(id) {\n super(Types.UNDEFINED);\n this.id = id;\n }\n\n toString () {\n return this.id;\n }\n}","import { CommonTokenStream, InputStream } from 'antlr4/index';\nimport * as Expressions from './expressions/';\nimport * as Commands from './commands/';\nimport { toInt, toString, toBool, toReal } from './../typeSystem/parsers';\nimport { Types } from \"./../typeSystem/types\";\nimport { CompoundType } from \"./../typeSystem/compoundType\";\nimport { SourceInfo } from './sourceInfo';\nimport { convertFromString } from './operators';\nimport { SyntaxErrorFactory } from './error/syntaxErrorFactory';\nimport { LanguageDefinedFunction } from './../processor/definedFunctions';\nimport { LanguageService } from '../services/languageService';\n\nexport class IVProgParser {\n\n static createParser (input) {\n const lexerClass = LanguageService.getCurrentLexer();\n return new IVProgParser(input, lexerClass);\n }\n\n // <BEGIN scope consts>\n static get BASE () {\n return 0;\n }\n static get FUNCTION () {\n return 1;\n }\n static get COMMAND () {\n return 2;\n }\n static get BREAKABLE () {\n return 4;\n }\n // </ END scope consts>\n\n constructor (input, lexerClass) {\n this.lexerClass = lexerClass;\n this.lexer = new lexerClass(new InputStream(input));\n this.tokenStream = new CommonTokenStream(this.lexer);\n this.tokenStream.fill();\n this.pos = 1;\n this.variableTypes = [this.lexerClass.RK_INTEGER,\n this.lexerClass.RK_REAL,\n this.lexerClass.RK_BOOLEAN,\n this.lexerClass.RK_STRING\n ];\n this.functionTypes = this.variableTypes.concat(this.lexerClass.RK_VOID);\n this.parsingArrayDimension = 0;\n this.scope = [];\n this.langFuncs = LanguageService.getCurrentLangFuncs();\n this.definedFuncsNameList = [];\n this.definedVariablesStack = [];\n }\n\n parseTree () {\n return this.parseProgram();\n }\n\n getToken (index = this.pos) {\n // if(index === null)\n // index = this.pos;\n return this.tokenStream.LT(index);\n }\n\n insideScope (scope) {\n if(this.scope.length <= 0) {\n return IVProgParser.BASE === scope;\n } else {\n return this.scope[this.scope.length-1] === scope;\n }\n }\n\n pushScope (scope) {\n this.scope.push(scope);\n }\n\n pushVariableStack () {\n this.definedVariablesStack.push([]);\n }\n\n popScope () {\n return this.scope.pop();\n }\n\n popVariableStack () {\n return this.definedVariablesStack.pop();\n }\n\n getCurrentVariableStack () {\n return this.definedVariablesStack[this.definedVariablesStack.length - 1];\n }\n\n isEOF () {\n this.getToken(this.pos);\n return this.tokenStream.fetchedEOF;\n }\n\n parseProgram () {\n const token = this.getToken();\n let globalVars = [];\n let functions = [];\n\n if(this.lexerClass.RK_PROGRAM === token.type) {\n this.pos++;\n this.consumeNewLines();\n this.checkOpenCurly();\n this.pos++;\n this.pushVariableStack();\n while(true) {\n this.consumeNewLines();\n const token = this.getToken();\n if (token.type === this.lexerClass.RK_CONST || this.isVariableType(token)) {\n globalVars = globalVars.concat(this.parseGlobalVariables());\n } else if (token.type === this.lexerClass.RK_FUNCTION) {\n this.pushVariableStack();\n functions = functions.concat(this.parseFunction());\n this.popVariableStack();\n } else {\n break;\n }\n }\n this.consumeNewLines();\n this.checkCloseCurly();\n this.pos++;\n this.consumeNewLines();\n if(!this.isEOF()) {\n throw SyntaxErrorFactory.extra_lines();\n }\n this.popVariableStack();\n return {global: globalVars, functions: functions};\n } else {\n throw SyntaxErrorFactory.token_missing_one(this.lexer.literalNames[this.lexerClass.RK_PROGRAM], token);\n }\n }\n\n checkOpenCurly (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.OPEN_CURLY !== token.type){\n if(!attempt)\n throw SyntaxErrorFactory.token_missing_one('{', token);\n else\n return false;\n }\n return true;\n }\n\n checkCloseCurly (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.CLOSE_CURLY !== token.type){\n if(!attempt)\n throw SyntaxErrorFactory.token_missing_one('}', token);\n else\n return false;\n }\n return true;\n }\n\n /* It checks if the current token at position pos is a ']'.\n * As a check function it doesn't increment pos.\n *\n * @params bool:attempt, indicates that the token is optional. Defaults: false\n *\n * @returns true if the attempt is true and current token is '[',\n * false is attempt is true and current token is not '['\n **/\n checkOpenBrace (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.OPEN_BRACE !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one('[', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkCloseBrace (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.CLOSE_BRACE !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one(']', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkOpenParenthesis (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.OPEN_PARENTHESIS !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one('(', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkCloseParenthesis (attempt = false) {\n const token = this.getToken();\n if(this.lexerClass.CLOSE_PARENTHESIS !== token.type){\n if (!attempt) {\n throw SyntaxErrorFactory.token_missing_one(')', token);\n } else {\n return false;\n }\n }\n return true;\n }\n\n checkEOS (attempt = false) {\n const eosToken = this.getToken();\n if (eosToken.type !== this.lexerClass.EOS) {\n if (!attempt)\n throw SyntaxErrorFactory.eos_missing(eosToken);\n else\n return false;\n }\n return true;\n }\n\n checkFunctionDuplicate (functionID, funcIDToken) {\n const id = functionID === null ? \"$main\" : functionID;\n const index = this.definedFuncsNameList.indexOf(id);\n if(index !== -1) {\n throw SyntaxErrorFactory.duplicate_function(funcIDToken);\n }\n this.definedFuncsNameList.push(id);\n }\n\n checkVariableDuplicate (variableID, variableIDToken) {\n const index = this.getCurrentVariableStack().indexOf(variableID);\n if(index !== -1) {\n throw SyntaxErrorFactory.duplicate_variable(variableIDToken);\n }\n this.getCurrentVariableStack().push(variableID);\n }\n\n consumeForSemiColon () {\n const eosToken = this.getToken();\n if (eosToken.type === this.lexerClass.EOS && eosToken.text.match(';')) {\n this.pos++;\n return; \n }\n throw SyntaxErrorFactory.token_missing_one(';', eosToken);\n }\n\n parseGlobalVariables () {\n const decl = this.parseMaybeConst();\n this.checkEOS();\n this.pos++;\n return decl;\n }\n\n /*\n * Checks if the next token is PR_CONST. It's only available\n * at global variables declaration level\n * @returns Declararion(const, type, id, initVal?)\n **/\n parseMaybeConst () {\n const constToken = this.getToken();\n if(constToken.type === this.lexerClass.RK_CONST) {\n this.pos++;\n const typeString = this.parseType();\n return this.parseDeclaration(typeString, true);\n } else if(this.isVariableType(constToken)) {\n const typeString = this.parseType();\n return this.parseDeclaration(typeString);\n } else {\n throw SyntaxErrorFactory.token_missing_list(\n [this.lexer.literalNames[this.lexerClass.RK_CONST]].concat(this.getTypeArray()), constToken);\n }\n\n }\n\n /*\n * Parses a declarion of the form: type --- id --- (= --- EAnd)?\n * @returns a list of Declararion(const, type, id, initVal?)\n **/\n parseDeclaration (typeString, isConst = false) {\n let initial = null;\n let dim1 = null;\n let dim2 = null;\n const idToken = this.getToken();\n const idString = this.parseID();\n this.checkVariableDuplicate(idString,idToken);\n // Check for array or vector\n // ID[int/IDi][int/IDj]\n if (this.checkOpenBrace(true)) {\n this.pos++;\n this.consumeNewLines();\n dim1 = this.parseArrayDimension();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n if(this.checkOpenBrace(true)) {\n this.pos++;\n this.consumeNewLines();\n dim2 = this.parseArrayDimension();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n }\n }\n\n const equalsToken = this.getToken();\n if(isConst && equalsToken.type !== this.lexerClass.EQUAL ) {\n throw SyntaxErrorFactory.const_not_init(idToken);\n }\n if(equalsToken.type === this.lexerClass.EQUAL) {\n this.pos++;\n initial = this.parseExpressionOR();\n }\n let declaration = null;\n let dimensions = 0;\n if (dim1 !== null) {\n dimensions++;\n if(dim2 !== null) {\n dimensions++;\n }\n declaration = new Commands.ArrayDeclaration(idString,\n new CompoundType(typeString, dimensions), dim1, dim2, initial, isConst);\n } else {\n declaration = new Commands.Declaration(idString, typeString, initial, isConst);\n }\n declaration.sourceInfo = SourceInfo.createSourceInfo(idToken);\n const commaToken = this.getToken();\n if(commaToken.type === this.lexerClass.COMMA) {\n this.pos++;\n this.consumeNewLines();\n return [declaration]\n .concat(this.parseDeclaration(typeString, isConst));\n } else {\n return [declaration]\n }\n }\n\n consumeNewLines () {\n let token = this.getToken();\n while(token.type === this.lexerClass.EOS && token.text.match('[\\r\\n]+')) {\n this.pos++;\n token = this.getToken();\n }\n }\n\n isVariableType (token) {\n return this.variableTypes.find(v => v === token.type);\n }\n\n /*\n * Reads the next token of the stream to check if it is a Integer or an ID.\n * @returns Integer | ID\n **/\n parseArrayDimension () {\n const dimToken = this.getToken();\n if(dimToken.type === this.lexerClass.INTEGER) {\n //parse as int literal\n this.pos++;\n return this.getIntLiteral(dimToken);\n } else if(dimToken.type === this.lexerClass.ID) {\n //parse as variable\n this.pos++;\n return this.parseVariable(dimToken);\n } else {\n throw SyntaxErrorFactory.invalid_array_dimension(this.lexer.literalNames[this.lexerClass.RK_INTEGER], dimToken);\n }\n }\n\n /*\n * Returns an object {type: 'int', value: value}.\n * It checks for binary and hexadecimal integers.\n * @returns object with fields type and value\n **/\n getIntLiteral (token) {\n const text = token.text;\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.IntLiteral(toInt(text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getRealLiteral (token) {\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.RealLiteral(toReal(token.text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getStringLiteral (token) {\n const text = token.text;\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.StringLiteral(toString(text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getBoolLiteral (token) {\n const val = toBool(token.text);\n const exp = new Expressions.BoolLiteral(val);\n exp.sourceInfo = SourceInfo.createSourceInfo(token);;\n return exp;\n }\n\n parseArrayLiteral () {\n this.checkOpenCurly();\n const beginArray = this.getToken();\n if (this.parsingArrayDimension >= 2) {\n throw SyntaxErrorFactory.token_missing_list(`Array dimensions exceed maximum size of 2 at line ${beginArray.line}`);\n }\n this.pos++;\n this.parsingArrayDimension++;\n this.consumeNewLines();\n const data = this.parseExpressionList();\n this.consumeNewLines();\n this.checkCloseCurly()\n const endArray = this.getToken();\n this.pos++;\n this.parsingArrayDimension--;\n if (this.parsingArrayDimension === 0) {\n // if (!data.isValid) {\n // // TODO: better error message\n // console.log('invalid array');\n // throw new Error(`Invalid array at line ${beginArray.line}`);\n // }\n }\n const sourceInfo = SourceInfo.createSourceInfoFromList(beginArray, endArray);\n let dataDim = 1;\n if(data[0] instanceof Expressions.ArrayLiteral) {\n dataDim++;\n }\n const type = new CompoundType(Types.UNDEFINED, dataDim);\n const exp = new Expressions.ArrayLiteral(type, data);\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n /*\n * Returns an object {type: 'variable', value: value}.\n * @returns object with fields type and value\n **/\n parseVariable (token) {\n const sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.VariableLiteral(token.text);\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n /*\n * Returns an object representing a function. It has\n * four attributes: returnType, id, formalParams and block.\n * The block object has two attributes: declarations and commands\n **/\n parseFunction () {\n this.pushScope(IVProgParser.FUNCTION);\n let formalParams = [];\n const token = this.getToken();\n if(token.type !== this.lexerClass.RK_FUNCTION) {\n //throw SyntaxError.createError(this.lexer.literalNames[this.lexerClass.PR_FUNCAO], token);\n return null;\n }\n this.pos++;\n const funType = this.parseType();\n let dimensions = 0;\n if(this.checkOpenBrace(true)) {\n this.pos++;\n this.checkCloseBrace();\n this.pos++;\n dimensions++;\n if(this.checkOpenBrace(true)) {\n this.pos++;\n this.checkCloseBrace();\n this.pos++;\n dimensions++;\n }\n }\n const funcIDToken = this.getToken();\n const functionID = this.parseID();\n this.checkFunctionDuplicate(functionID, funcIDToken);\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n if (!this.checkCloseParenthesis(true)) {\n formalParams = this.parseFormalParameters(); // formal parameters \n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n } else {\n this.pos++;\n }\n this.consumeNewLines();\n const commandsBlock = this.parseCommandBlock();\n let returnType = funType;\n if(dimensions > 0) {\n returnType = new CompoundType(funType, dimensions);\n }\n const func = new Commands.Function(functionID, returnType, formalParams, commandsBlock);\n if (functionID === null && !func.isMain) {\n throw SyntaxErrorFactory.invalid_main_return(LanguageDefinedFunction.getMainFunctionName(),\n this.lexer.literalNames[this.lexerClass.RK_VOID],\n token.line);\n } else if (func.isMain && formalParams.length !== 0) {\n throw SyntaxErrorFactory.main_parameters();\n }\n this.popScope();\n return func;\n }\n\n /*\n * Parse the formal parameters of a function.\n * @returns a list of objects with the following attributes: type, id and dimensions.\n **/\n parseFormalParameters () {\n const list = [];\n while(true) {\n let dimensions = 0;\n const typeString = this.parseType();\n const idToken = this.getToken();\n const idString = this.parseID();\n this.checkVariableDuplicate(idString, idToken);\n if (this.checkOpenBrace(true)) {\n this.pos++;\n dimensions++;\n this.checkCloseBrace();\n this.pos++;\n if(this.checkOpenBrace(true)) {\n this.pos++;\n dimensions++;\n this.checkCloseBrace();\n this.pos++;\n }\n }\n let type = null;\n if(dimensions > 0) {\n type = new CompoundType(typeString, dimensions);\n } else {\n type = typeString;\n }\n list.push(new Commands.FormalParameter(type, idString));\n const commaToken = this.getToken();\n if (commaToken.type !== this.lexerClass.COMMA)\n break;\n this.pos++;\n this.consumeNewLines();\n }\n return list;\n }\n\n parseID () {\n const token = this.getToken();\n if(token.type !== this.lexerClass.ID) {\n throw SyntaxErrorFactory.id_missing(token);\n }\n this.pos++;\n if (this.insideScope(IVProgParser.FUNCTION)) {\n if (token.text === LanguageDefinedFunction.getMainFunctionName()){\n return null;\n }\n }\n return token.text;\n }\n\n parseMaybeLibID () {\n const token = this.getToken();\n if(token.type !== this.lexerClass.ID && token.type !== this.lexerClass.LIB_ID) {\n throw SyntaxErrorFactory.id_missing(token);\n } \n this.pos++;\n return token.text;\n }\n\n parseType () {\n const token = this.getToken();\n if(token.type === this.lexerClass.ID && this.insideScope(IVProgParser.FUNCTION)) {\n return Types.VOID;\n } else if (token.type === this.lexerClass.RK_VOID && this.insideScope(IVProgParser.FUNCTION)) {\n this.pos++;\n return Types.VOID;\n } else if (this.isVariableType(token)) {\n this.pos++;\n switch(token.type) {\n case this.lexerClass.RK_INTEGER:\n return Types.INTEGER;\n case this.lexerClass.RK_BOOLEAN:\n return Types.BOOLEAN;\n case this.lexerClass.RK_REAL:\n return Types.REAL;\n case this.lexerClass.RK_STRING:\n return Types.STRING;\n default:\n break;\n }\n }\n \n throw SyntaxErrorFactory.invalid_type(this.getTypeArray(), token);\n }\n\n parseCommandBlock (optionalCurly = false) {\n let variablesDecl = [];\n const commands = [];\n let hasOpen = false;\n if (this.checkOpenCurly(optionalCurly)) {\n this.pos++;\n hasOpen = true;\n }\n this.consumeNewLines();\n while(true) {\n\n const cmd = this.parseCommand();\n if (cmd === null)\n break;\n if(cmd !== -1) {\n if (cmd instanceof Array) {\n variablesDecl = variablesDecl.concat(cmd);\n } else {\n commands.push(cmd);\n }\n }\n }\n this.consumeNewLines();\n if (hasOpen) {\n this.checkCloseCurly()\n this.pos++;\n this.consumeNewLines();\n }\n return new Commands.CommandBlock(variablesDecl, commands);\n }\n\n parseCommand () {\n const token = this.getToken();\n if (this.isVariableType(token)) {\n if(!this.insideScope(IVProgParser.FUNCTION)) {\n throw SyntaxErrorFactory.invalid_var_declaration(token.line);\n }\n this.pushScope(IVProgParser.BASE);\n const varType = this.parseType();\n this.popScope();\n const cmd = this.parseDeclaration(varType);\n this.checkEOS();\n this.pos++;\n return cmd;\n } else if (token.type === this.lexerClass.ID) {\n return this.parseIDCommand();\n } else if (token.type === this.lexerClass.LIB_ID) {\n return this.parseIDCommand();\n } else if (token.type === this.lexerClass.RK_RETURN) {\n return this.parseReturn();\n } else if (token.type === this.lexerClass.RK_WHILE) {\n return this.parseWhile();\n } else if (token.type === this.lexerClass.RK_FOR) {\n return this.parseFor();\n } else if (token.type === this.lexerClass.RK_BREAK ) {\n if(!this.insideScope(IVProgParser.BREAKABLE)) {\n throw SyntaxErrorFactory.invalid_break_command(\n this.lexer.literalNames[this.lexerClass.RK_BREAK],\n token\n );\n }\n return this.parseBreak();\n } else if (token.type === this.lexerClass.RK_SWITCH) {\n return this.parseSwitchCase();\n } else if (token.type === this.lexerClass.RK_DO) {\n return this.parseDoWhile();\n } else if (token.type === this.lexerClass.RK_IF) {\n return this.parseIfThenElse();\n } else if (this.checkEOS(true)){\n this.pos++;\n return -1;\n } else {\n return null;\n }\n }\n\n parseSwitchCase () {\n this.pushScope(IVProgParser.BREAKABLE);\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const exp = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n this.checkOpenCurly();\n this.pos++;\n this.consumeNewLines();\n const casesList = this.parseCases();\n this.consumeNewLines();\n this.checkCloseCurly();\n this.pos++;\n this.consumeNewLines();\n\n this.popScope();\n return new Commands.Switch(exp, casesList);\n }\n\n parseDoWhile () {\n this.pos++;\n this.consumeNewLines();\n this.pushScope(IVProgParser.BREAKABLE);\n const commandsBlock = this.parseCommandBlock();\n this.consumeNewLines(); //Maybe not...\n const whileToken = this.getToken();\n if (whileToken.type !== this.lexerClass.RK_WHILE) {\n throw SyntaxErrorFactory.token_missing_one(this.lexer.literalNames[this.lexerClass.RK_WHILE], whileToken);\n }\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const condition = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.checkEOS();\n this.popScope();\n return new Commands.DoWhile(condition, commandsBlock);\n }\n\n parseIfThenElse () {\n if(this.insideScope(IVProgParser.BREAKABLE)) {\n this.pushScope(IVProgParser.BREAKABLE);\n } else {\n this.pushScope(IVProgParser.COMMAND);\n }\n const token = this.getToken();\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const logicalExpression = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n const cmdBlocks = this.parseCommandBlock();\n\n const maybeElse = this.getToken();\n if(maybeElse.type === this.lexerClass.RK_ELSE) {\n this.pos++;\n this.consumeNewLines();\n const maybeIf = this.getToken();\n let elseBlock = null;\n if(this.checkOpenCurly(true)) {\n elseBlock = this.parseCommandBlock();\n } else if(maybeIf.type === this.lexerClass.RK_IF) {\n elseBlock = this.parseIfThenElse();\n } else {\n throw SyntaxErrorFactory.token_missing_list([this.lexer.literalNames[this.lexerClass.RK_IF], '{'], maybeIf);\n }\n this.popScope();\n const cmd = new Commands.IfThenElse(logicalExpression, cmdBlocks, elseBlock);\n cmd.sourceInfo = SourceInfo.createSourceInfo(token);\n return cmd;\n }\n this.popScope();\n\n const cmd = new Commands.IfThenElse(logicalExpression, cmdBlocks, null);\n cmd.sourceInfo = SourceInfo.createSourceInfo(token);\n return cmd;\n }\n\n parseFor () {\n this.pushScope(IVProgParser.BREAKABLE);\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const attribution = this.parseForAssign();\n this.consumeNewLines();\n const condition = this.parseExpressionOR();\n this.consumeForSemiColon();\n const increment = this.parseForAssign(true);\n this.checkCloseParenthesis()\n this.pos++;\n this.consumeNewLines();\n const commandsBlock = this.parseCommandBlock();\n this.popScope();\n return new Commands.For(attribution, condition, increment, commandsBlock);\n }\n\n parseWhile () {\n this.pushScope(IVProgParser.BREAKABLE);\n const token = this.getToken();\n this.pos++;\n this.checkOpenParenthesis();\n this.pos++;\n this.consumeNewLines();\n const logicalExpression = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n this.consumeNewLines();\n const cmdBlocks = this.parseCommandBlock();\n this.popScope();\n const cmd = new Commands.While(logicalExpression, cmdBlocks);\n cmd.sourceInfo = SourceInfo.createSourceInfo(token);\n return cmd;\n }\n\n parseBreak () {\n this.pos++;\n this.checkEOS();\n this.pos++;\n return new Commands.Break();\n }\n\n parseReturn () {\n this.pos++;\n let exp = null;\n if(!this.checkEOS(true)) {\n exp = this.parseExpressionOR();\n this.checkEOS();\n }\n this.pos++;\n return new Commands.Return(exp);\n }\n\n parseIDCommand () {\n const refToken = this.getToken();\n const isID = refToken.type === this.lexerClass.ID;\n const id = this.parseMaybeLibID();\n if(this.checkOpenBrace(true)) {\n this.pos++;\n let lineExpression = null;\n let columnExpression = null;\n this.consumeNewLines();\n lineExpression = this.parseExpression()\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n if (this.checkOpenBrace(true)) {\n this.pos++\n this.consumeNewLines();\n columnExpression = this.parseExpression();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos++;\n }\n const equalToken = this.getToken();\n if (equalToken.type !== this.lexerClass.EQUAL) {\n throw SyntaxErrorFactory.token_missing_one('=', equalToken);\n }\n this.pos++;\n const exp = this.parseExpressionOR();\n this.checkEOS();\n this.pos++;\n const cmd = new Commands.ArrayIndexAssign(id, lineExpression, columnExpression, exp);\n cmd.sourceInfo = SourceInfo.createSourceInfo(equalToken);\n return cmd;\n }\n const equalOrParenthesis = this.getToken();\n if (isID && equalOrParenthesis.type === this.lexerClass.EQUAL) {\n this.pos++\n const exp = this.parseExpressionOR();\n this.checkEOS();\n this.pos++;\n const cmd = new Commands.Assign(id, exp);\n cmd.sourceInfo = SourceInfo.createSourceInfo(equalOrParenthesis);\n return cmd;\n } else if (equalOrParenthesis.type === this.lexerClass.OPEN_PARENTHESIS) {\n const funcCall = this.parseFunctionCallCommand(id);\n this.checkEOS();\n this.pos++;\n return funcCall;\n } else if (isID) {\n throw SyntaxErrorFactory.token_missing_list(['=','('], equalOrParenthesis);\n } else {\n throw SyntaxErrorFactory.invalid_id_format(refToken);\n }\n }\n\n parseForAssign (isLast = false) {\n if(!isLast)\n this.consumeNewLines();\n if(this.checkEOS(true)) {\n return null;\n }\n const id = this.parseID();\n const equal = this.getToken();\n if (equal.type !== this.lexerClass.EQUAL) {\n throw SyntaxErrorFactory.token_missing_one('=', equal);\n }\n this.pos++\n const exp = this.parseExpressionOR();\n if(!isLast) {\n this.consumeForSemiColon();\n }\n const sourceInfo = SourceInfo.createSourceInfo(equal);\n const cmd = new Commands.Assign(id, exp);\n cmd.sourceInfo = sourceInfo;\n return cmd;\n }\n\n parseCases () {\n const token = this.getToken();\n if(token.type !== this.lexerClass.RK_CASE) {\n throw SyntaxErrorFactory.token_missing_one(this.lexer.literalNames[this.lexerClass.RK_CASE], token);\n }\n this.pos++;\n const nextToken = this.getToken();\n if(nextToken.type === this.lexerClass.RK_DEFAULT) {\n this.pos++;\n const colonToken = this.getToken();\n if (colonToken.type !== this.lexerClass.COLON) {\n throw SyntaxErrorFactory.token_missing_one(':', colonToken);\n }\n this.pos++;\n this.consumeNewLines();\n const block = this.parseCommandBlock(true);\n const defaultCase = new Commands.Case(null);\n defaultCase.setCommands(block.commands);\n return [defaultCase];\n } else {\n const exp = this.parseExpressionOR();\n const colonToken = this.getToken();\n if (colonToken.type !== this.lexerClass.COLON) {\n throw SyntaxErrorFactory.token_missing_one(':', colonToken);\n }\n this.pos++;\n this.consumeNewLines();\n const block = this.parseCommandBlock(true);\n const aCase = new Commands.Case(exp);\n aCase.setCommands(block.commands);\n const caseToken = this.getToken();\n if(caseToken.type === this.lexerClass.RK_CASE) {\n return [aCase].concat(this.parseCases());\n } else {\n return [aCase];\n }\n }\n }\n\n /*\n * Parses an Expression following the structure:\n *\n * EOR => EAnd ( 'or' EOR)? #expression and\n *\n * EOR => ENot ('and' EOR)? #expression or\n *\n * ENot => 'not'? ER #expression not\n *\n * ER => E ((>=, <=, ==, >, <) E)? #expression relational\n *\n * E => factor ((+, -) E)? #expression\n *\n * factor=> term ((*, /, %) factor)?\n *\n * term => literal || arrayAccess || FuncCall || ID || '('EAnd')'\n **/\n parseExpressionOR () {\n let exp1 = this.parseExpressionAND();\n while (this.getToken().type === this.lexerClass.OR_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const or = convertFromString('or');\n this.consumeNewLines();\n const exp2 = this.parseExpressionAND();\n const finalExp = new Expressions.InfixApp(or, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n exp1 = finalExp\n }\n return exp1;\n }\n\n parseExpressionAND () {\n let exp1 = this.parseExpressionNot();\n while (this.getToken().type === this.lexerClass.AND_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const and = convertFromString('and');\n this.consumeNewLines();\n const exp2 = this.parseExpressionNot();\n const finalExp = new Expressions.InfixApp(and, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n exp1 = finalExp;\n }\n return exp1;\n }\n\n parseExpressionNot () {\n const maybeNotToken = this.getToken();\n if (maybeNotToken.type === this.lexerClass.NOT_OPERATOR) {\n const opToken = this.getToken();\n this.pos++;\n const not = convertFromString('not');\n const exp1 = this.parseExpressionRel();\n finalExp = new Expressions.UnaryApp(not, exp1);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(opToken);\n return finalExp;\n \n } else {\n return this.parseExpressionRel();\n }\n }\n\n parseExpressionRel () {\n let exp1 = this.parseExpression();\n while (this.getToken().type === this.lexerClass.RELATIONAL_OPERATOR) {\n const relToken = this.getToken();\n this.pos++;\n const rel = convertFromString(relToken.text);\n const exp2 = this.parseExpression();\n const finalExp = new Expressions.InfixApp(rel, exp1, exp2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(relToken);\n exp1 = finalExp;\n }\n return exp1;\n }\n\n parseExpression () {\n let factor = this.parseFactor();\n while (this.getToken().type === this.lexerClass.SUM_OP) {\n const sumOpToken = this.getToken();\n this.pos++;\n const op = convertFromString(sumOpToken.text);\n const factor2 = this.parseFactor();\n const finalExp = new Expressions.InfixApp(op, factor, factor2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(sumOpToken);\n factor = finalExp;\n }\n return factor;\n }\n\n parseFactor () {\n let term = this.parseTerm();\n while (this.getToken().type === this.lexerClass.MULTI_OP) {\n const multOpToken = this.getToken();\n this.pos++;\n const op = convertFromString(multOpToken.text);\n const term2 =this.parseTerm();\n const finalExp = new Expressions.InfixApp(op, term, term2);\n finalExp.sourceInfo = SourceInfo.createSourceInfo(multOpToken);\n term = finalExp;\n }\n return term;\n }\n\n parseTerm () {\n const token = this.getToken();\n let sourceInfo = null;\n switch(token.type) {\n case this.lexerClass.SUM_OP:\n this.pos++;\n sourceInfo = SourceInfo.createSourceInfo(token);\n const exp = new Expressions.UnaryApp(convertFromString(token.text), this.parseTerm());\n exp.sourceInfo = sourceInfo;\n return exp;\n case this.lexerClass.INTEGER:\n this.pos++;\n return this.getIntLiteral(token);\n case this.lexerClass.REAL:\n this.pos++;\n return this.getRealLiteral(token);\n case this.lexerClass.STRING:\n this.pos++;\n return this.getStringLiteral(token);\n case this.lexerClass.RK_TRUE:\n case this.lexerClass.RK_FALSE:\n this.pos++;\n return this.getBoolLiteral(token);\n case this.lexerClass.OPEN_CURLY:\n return this.parseArrayLiteral();\n case this.lexerClass.ID:\n case this.lexerClass.LIB_ID:\n return this.parseIDTerm();\n case this.lexerClass.OPEN_PARENTHESIS:\n return this.parseParenthesisExp();\n default:\n throw SyntaxErrorFactory.invalid_terminal(token);\n }\n }\n\n parseIDTerm () {\n const tokenA = this.getToken();\n const id = this.parseMaybeLibID();\n const isID = tokenA.type === this.lexerClass.ID;\n if(isID && this.checkOpenBrace(true)) {\n let tokenB = null;\n this.pos++;\n const firstIndex = this.parseExpression();\n let secondIndex = null;\n this.consumeNewLines();\n this.checkCloseBrace();\n tokenB = this.getToken();\n this.pos++;\n if(this.checkOpenBrace(true)){\n this.pos++;\n secondIndex = this.parseExpression();\n this.consumeNewLines();\n this.checkCloseBrace();\n tokenB = this.getToken();\n this.pos++;\n }\n const sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB); \n const exp = new Expressions.ArrayAccess(id, firstIndex, secondIndex);\n exp.sourceInfo = sourceInfo;\n return exp;\n\n } else if (this.checkOpenParenthesis(true)) {\n return this.parseFunctionCallExpression(id);\n } else if (isID) {\n const sourceInfo = SourceInfo.createSourceInfo(tokenA);\n const exp = new Expressions.VariableLiteral(id);\n exp.sourceInfo = sourceInfo;\n return exp;\n } else {\n throw SyntaxErrorFactory.invalid_id_format(tokenA);\n }\n }\n\n getFunctionName (id) {\n const name = LanguageDefinedFunction.getInternalName(id);\n if (name === null) {\n if (id === LanguageDefinedFunction.getMainFunctionName()) {\n return null;\n }\n return id;\n } else {\n return name;\n }\n }\n\n parseFunctionCallExpression (id) {\n const tokenA = this.getToken(this.pos - 1);\n const actualParameters = this.parseActualParameters();\n const tokenB = this.getToken(this.pos - 1);\n const funcName = this.getFunctionName(id);\n const sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB);\n const cmd = new Expressions.FunctionCall(funcName, actualParameters);\n cmd.sourceInfo = sourceInfo;\n return cmd;\n }\n\n parseFunctionCallCommand (id) {\n return this.parseFunctionCallExpression(id);\n }\n\n parseParenthesisExp () {\n this.checkOpenParenthesis();\n const tokenA = this.getToken();\n this.pos++;\n this.consumeNewLines();\n const exp = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n const tokenB = this.getToken();\n const sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB);\n this.pos++;\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n parseActualParameters () {\n this.checkOpenParenthesis();\n this.pos++;\n if(this.checkCloseParenthesis(true)) {\n this.pos++;\n return [];\n }\n this.consumeNewLines();\n const list = this.parseExpressionList();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n this.pos++;\n return list;\n }\n\n parseExpressionList () {\n const list = [];\n while(true) {\n const exp = this.parseExpressionOR();\n list.push(exp);\n const maybeToken = this.getToken();\n if (maybeToken.type !== this.lexerClass.COMMA) {\n break;\n } else {\n this.pos++;\n this.consumeNewLines();\n }\n }\n return list;\n }\n\n getTypeArray () {\n const types = this.insideScope(IVProgParser.FUNCTION) ? this.functionTypes : this.variableTypes;\n return types.map( x => this.lexer.literalNames[x]);\n }\n}","export const Operators = Object.freeze({\n ADD: {ord: 0, value: \"+\"},\n SUB: {ord: 1, value: \"-\"},\n MULT: {ord: 2, value: '*'},\n DIV: {ord: 3, value: '/'},\n MOD: {ord: 4, value: '%'},\n GT: {ord: 5, value: '>'},\n GE: {ord: 6, value: '>='},\n LT: {ord: 7, value: '<'},\n LE: {ord: 8, value: '<='},\n EQ: {ord: 9, value: '=='},\n NEQ: {ord: 10, value: '!='},\n AND: {ord: 11, value: 'and'},\n OR: {ord: 12, value: 'or'},\n NOT: {ord: 13, value: 'not'}\n});\n\nexport function convertFromString (op) {\n switch (op) {\n case '+' : return Operators.ADD;\n case '-' : return Operators.SUB;\n case '*' : return Operators.MULT;\n case '/' : return Operators.DIV;\n case '%' : return Operators.MOD;\n case '>' : return Operators.GT;\n case '>=' : return Operators.GE;\n case '<' : return Operators.LT;\n case '<=' : return Operators.LE;\n case '==' : return Operators.EQ;\n case '!=' : return Operators.NEQ;\n case 'and' : return Operators.AND;\n case 'or' : return Operators.OR;\n case 'not' : return Operators.NOT;\n }\n}","export class SourceInfo {\n\n static createSourceInfo (token) {\n return new SourceInfo(token.line, token.column, token.text.length);\n }\n\n static createSourceInfoFromList (tokenA, tokenB) {\n const line = tokenA.line;\n const column = tokenA.column;\n // copied from https://github.com/UNIVALI-LITE/Portugol-Studio/blob/master/core/src/main/java/br/univali/portugol/nucleo/analise/sintatica/Portugol.g\n // No idea why...\n const size = tokenB.tokenIndex + 1 - tokenA.tokenIndex\n return new SourceInfo(line, column, size);\n }\n\n constructor (line, column, size) {\n this.line = line;\n this.column = column;\n this.size = size;\n }\n\n}","import $ from 'jquery';\n\nexport class DOMConsole {\n\n static get USER () {\n return 0;\n }\n\n static get INFO () {\n return 1;\n }\n\n static get ERR () {\n return 2;\n }\n\n constructor (elementID) {\n this.input = null;\n this.needInput = false;\n this.termDiv = null;\n this.anyKey = false;\n this.parent = $(elementID);\n this.setup();\n this.inputListeners = [];\n }\n\n setup () {\n this._setupDom();\n this._setupEvents();\n }\n\n _setupEvents () {\n this.input.on(\"keydown\", (event) => {\n if (!this.needInput) {\n event.preventDefault();\n return;\n }\n const keyCode = event.which;\n if (keyCode === 13 || this.anyKey) {\n let text = this.input.val();\n text = text.replace('[\\n\\r]+', '');\n this.notifyListeners(text);\n this.write(text);\n this.input.val(\"\");\n }\n });\n }\n\n _setupDom () {\n this.termDiv = $(\"<div></div>\");\n this.termDiv.addClass(\"ivprog-term-div\");\n this.input = $('<input text=\"type\">')\n this.input.addClass(\"ivprog-term-input\");\n this.termDiv.append(this.input);\n this.parent.append(this.termDiv);\n }\n\n notifyListeners (text) {\n this.inputListeners.forEach(resolve => resolve(text));\n this.inputListeners.splice(0, this.inputListeners.length);\n this.hideInput();\n this.anyKey = false;\n }\n\n write (text) {\n this._appendText(text, DOMConsole.USER);\n }\n\n info (text) {\n this._appendText(text, DOMConsole.INFO);\n }\n\n err (text) {\n this._appendText(text, DOMConsole.ERR);\n }\n\n _appendText (text, type) {\n const divClass = this.getClassForType(type);\n const textDiv = $(\"<div></div>\");\n textDiv.addClass(divClass);\n textDiv.append(text);\n textDiv.insertBefore(this.input);\n this.scrollTerm();\n }\n\n scrollTerm () {\n this.termDiv.animate({\n scrollTop: this.termDiv.prop('scrollHeight')\n }, 0);\n }\n\n getClassForType (type) {\n switch (type) {\n case DOMConsole.USER:\n return \"ivprog-term-userText\";\n case DOMConsole.INFO:\n return \"ivprog-term-info\";\n case DOMConsole.ERR:\n return \"ivprog-term-error\";\n }\n }\n\n dispose () {\n this.parent.off();\n this.input.off();\n this.input = null;\n this.parent.empty();\n }\n\n showInput () {\n this.needInput = true;\n this.input.show();\n this.input.focus();\n }\n\n hideInput () {\n this.needInput = false;\n this.input.hide();\n }\n\n requestInput (callback, anyKey = false) {\n this.inputListeners.push(callback);\n this.anyKey = anyKey;\n this.showInput();\n }\n\n sendOutput (text) {\n const output = \"\"+text;\n output.split(\"\\n\").forEach(t => {\n t = t.replace(/\\t/g,'&#9;');\n this.write(t)\n });\n }\n\n clear () {\n this.input.parent().children().not(this.input).remove();\n this.input.val(\"\");\n }\n}","export class Input {\n\n requestInput (callback) {\n throw new Error(\"Must be implemented\");\n }\n}","export class Output {\n\n sendOutput (text) {\n throw new Error(\"Must be implemented\");\n }\n}","import { runner } from './runner';\nimport { initVisualUI, addFunctionChangeListener,\n addGlobalChangeListener, removeFunctionListener,\n removeGlobalListener } from './visualUI/functions';\nimport * as LocalizedStringsService from './services/localizedStringsService';\nimport { i18nHelper } from \"./services/i18nHelper\";\n\nconst i18n = i18nHelper.i18n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nexport {\n runner,\n initVisualUI,\n addFunctionChangeListener,\n addGlobalChangeListener,\n removeFunctionListener,\n removeGlobalListener,\n LocalizedStrings,\n i18n\n}","import { Types } from './../typeSystem/types';\nimport { Operators } from './../ast/operators';\nimport { MultiType } from '../typeSystem/multiType';\nimport { Config } from '../util/config';\n\nfunction buildInfixAddTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.INTEGER;\n table[Types.INTEGER.ord][Types.REAL.ord] = Types.REAL;\n table[Types.INTEGER.ord][Types.STRING.ord] = Types.STRING;\n\n table[Types.REAL.ord][Types.INTEGER.ord] = Types.REAL;\n table[Types.REAL.ord][Types.REAL.ord] = Types.REAL;\n table[Types.REAL.ord][Types.STRING.ord] = Types.STRING;\n\n table[Types.STRING.ord][Types.INTEGER.ord] = Types.STRING;\n table[Types.STRING.ord][Types.REAL.ord] = Types.STRING;\n table[Types.STRING.ord][Types.STRING.ord] = Types.STRING;\n table[Types.STRING.ord][Types.BOOLEAN.ord] = Types.STRING;\n\n return table;\n}\n\nfunction buildInfixMultiDivSubTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.INTEGER;\n table[Types.INTEGER.ord][Types.REAL.ord] = Types.REAL;\n\n table[Types.REAL.ord][Types.INTEGER.ord] = Types.REAL;\n table[Types.REAL.ord][Types.REAL.ord] = Types.REAL;\n\n return table;\n}\n\nfunction buildInfixEqualityInequalityTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.BOOLEAN;\n\n table[Types.REAL.ord][Types.REAL.ord] = Types.BOOLEAN;\n\n table[Types.BOOLEAN.ord][Types.BOOLEAN.ord] = Types.BOOLEAN;\n\n table[Types.STRING.ord][Types.STRING.ord] = Types.BOOLEAN;\n\n return table;\n}\n\nfunction buildInfixRelationalTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.BOOLEAN;\n\n table[Types.REAL.ord][Types.REAL.ord] = Types.BOOLEAN;\n\n table[Types.STRING.ord][Types.STRING.ord] = Types.BOOLEAN;\n\n return table;\n}\n\nfunction buildInfixAndOrTable () {\n const table = [[], [], [], []];\n\n table[Types.BOOLEAN.ord][Types.BOOLEAN.ord] = Types.BOOLEAN;\n\n return table;\n}\n\nfunction buildInfixModTable () {\n const table = [[], [], [], []];\n\n table[Types.INTEGER.ord][Types.INTEGER.ord] = Types.INTEGER;\n\n return table;\n}\n\nfunction buildUnarySumSubList () {\n const list = [];\n\n list[Types.INTEGER.ord] = Types.INTEGER;\n\n list[Types.REAL.ord] = Types.REAL;\n\n return list;\n}\n\nfunction buildUnaryNegList () {\n const list = [];\n\n list[Types.BOOLEAN.ord] = Types.BOOLEAN;\n\n return list;\n}\n\nfunction buildInfixCompatibilityTable () {\n const compatibilityMap = new WeakMap();\n compatibilityMap.set(Operators.ADD, buildInfixAddTable());\n compatibilityMap.set(Operators.SUB, buildInfixMultiDivSubTable());\n compatibilityMap.set(Operators.MULT, buildInfixMultiDivSubTable());\n compatibilityMap.set(Operators.DIV, buildInfixMultiDivSubTable());\n compatibilityMap.set(Operators.EQ, buildInfixEqualityInequalityTable());\n compatibilityMap.set(Operators.NEQ, buildInfixEqualityInequalityTable());\n compatibilityMap.set(Operators.GE, buildInfixRelationalTable());\n compatibilityMap.set(Operators.GT, buildInfixRelationalTable());\n compatibilityMap.set(Operators.LE, buildInfixRelationalTable());\n compatibilityMap.set(Operators.LT, buildInfixRelationalTable());\n compatibilityMap.set(Operators.OR, buildInfixAndOrTable());\n compatibilityMap.set(Operators.AND, buildInfixAndOrTable());\n compatibilityMap.set(Operators.MOD, buildInfixModTable());\n return compatibilityMap;\n}\n\nfunction buildUnaryCompatibilityTable () {\n const compatibilityMap = new WeakMap();\n compatibilityMap.set(Operators.ADD, buildUnarySumSubList());\n compatibilityMap.set(Operators.SUB, buildUnarySumSubList());\n compatibilityMap.set(Operators.NOT, buildUnaryNegList());\n return compatibilityMap;\n}\n\nconst infixMap = buildInfixCompatibilityTable();\nconst unaryMap = buildUnaryCompatibilityTable();\n\nexport function resultTypeAfterInfixOp (operator, leftExpressionType, rightExpressionType) {\n try {\n if(leftExpressionType instanceof MultiType && rightExpressionType instanceof MultiType) {\n let newMulti = [];\n for (let i = 0; i < leftExpressionType.types.length; ++i) {\n const typeA = leftExpressionType.types[i];\n for(let j = 0; j < rightExpressionType.types.length; ++i) {\n const typeB = rightExpressionType.types[j];\n newMulti.push(resultTypeAfterInfixOp(operator, typeA, typeB));\n }\n }\n newMulti = newMulti.filter(x => !x.isCompatible(Types.UNDEFINED));\n if(newMulti.length <= 0) {\n if(Config.enable_type_casting) {\n if(leftExpressionType.isCompatible(Types.INTEGER) || leftExpressionType.isCompatible(Types.REAL)) {\n if(rightExpressionType.isCompatible(Types.INTEGER) || rightExpressionType.isCompatible(Types.REAL)) {\n return new MultiType([Types.INTEGER, Types.REAL]);\n }\n }\n }\n return Types.UNDEFINED;\n } else {\n return new MultiType(newMulti)\n }\n } else if(leftExpressionType instanceof MultiType) {\n if(leftExpressionType.isCompatible(rightExpressionType)) {\n return resultTypeAfterInfixOp(operator, rightExpressionType, rightExpressionType);\n } else {\n if(Config.enable_type_casting) {\n if(leftExpressionType.isCompatible(Types.INTEGER) || leftExpressionType.isCompatible(Types.REAL)) {\n if(rightExpressionType.isCompatible(Types.INTEGER) || rightExpressionType.isCompatible(Types.REAL)) {\n return rightExpressionType;\n }\n }\n }\n return Types.UNDEFINED;\n }\n } else if(rightExpressionType instanceof MultiType) {\n if(rightExpressionType.isCompatible(leftExpressionType)) {\n return resultTypeAfterInfixOp(operator, leftExpressionType, leftExpressionType);\n } else {\n if(Config.enable_type_casting) {\n if(leftExpressionType.isCompatible(Types.INTEGER) || leftExpressionType.isCompatible(Types.REAL)) {\n if(rightExpressionType.isCompatible(Types.INTEGER) || rightExpressionType.isCompatible(Types.REAL)) {\n return leftExpressionType;\n }\n }\n }\n return Types.UNDEFINED;\n }\n }\n const resultType = infixMap.get(operator)[leftExpressionType.ord][rightExpressionType.ord];\n if (resultType === null || resultType === undefined) {\n if(Config.enable_type_casting) {\n if(leftExpressionType.isCompatible(Types.INTEGER) || leftExpressionType.isCompatible(Types.REAL)) {\n if(rightExpressionType.isCompatible(Types.INTEGER) || rightExpressionType.isCompatible(Types.REAL)) {\n if(operator === Operators.MOD) {\n return Types.INTEGER;\n } else if (operator.ord >= 5 && operator.ord <= 10){\n return Types.BOOLEAN;\n }\n }\n }\n }\n return Types.UNDEFINED\n }\n return resultType;\n } catch (e) {\n if (e instanceof TypeError) {\n return Types.UNDEFINED;\n } else {\n throw e;\n }\n }\n}\n\nexport function resultTypeAfterUnaryOp (operator, leftExpressionType) {\n try {\n if(leftExpressionType instanceof MultiType){\n return leftExpressionType;\n }\n return unaryMap.get(operator)[leftExpressionType.ord];\n } catch (e) {\n if (e instanceof TypeError) {\n return Types.UNDEFINED;\n } else {\n throw e;\n } \n }\n}","export const Context = Object.freeze({\n BASE: Symbol('context:base'),\n BREAKABLE: Symbol('context:breakable'),\n FUNCTION: Symbol('context:function')\n});","import { LanguageService } from '../services/languageService';\nimport {createInputFun, createOutputFun} from './lib/io';\nimport {createLengthFun, createLowercaseFun,\n createrCharAtFun, createSubstringFun,\n createUppercaseFun} from './lib/strings';\nimport {createMatrixColumnsFun, createMatrixLinesFun,\n createNumElementsFun} from './lib/arrays';\nimport {createCastBoolFun, createCastIntFun,\n createCastRealFun, createCastStringFun,\n createIsBoolFun, createIsIntFun,\n createIsRealFun} from './lib/lang';\nimport {createAbsFun, createCosFun,\n createInvertFun, createLogFun,\n createMaxFun, createMinFun,\n createNegateFun, createPowFun,\n createSinFun, createSqrtFun,\n createTanFun} from './lib/math';\n\nfunction valueToKey (value, object) {\n for (const key in object) {\n if(object.hasOwnProperty(key)){\n if (object[key] === value) {\n return key;\n }\n }\n }\n return null;\n}\n\nfunction concatObjects (...objs) {\n let result = {};\n for (let i = 0; i < objs.length; i++) {\n const obj = objs[i];\n for(const key in obj) {\n if(obj.hasOwnProperty(key)) {\n result[key] = obj[key];\n }\n }\n }\n return result;\n}\n\nconst libsObject = {\n $mathLib: {\n $sin: createSinFun(),\n $cos: createCosFun(),\n $tan: createTanFun(),\n $sqrt: createSqrtFun(),\n $pow: createPowFun(),\n $log: createLogFun(),\n $abs: createAbsFun(),\n $negate: createNegateFun(),\n $invert: createInvertFun(),\n $max: createMaxFun(),\n $min: createMinFun()\n },\n $ioLib: {\n $read: createInputFun(),\n $write: createOutputFun()\n },\n $strLib: {\n $substring: createSubstringFun(),\n $length: createLengthFun(),\n $uppercase: createUppercaseFun(),\n $lowercase: createLowercaseFun(),\n $charAt: createrCharAtFun(),\n },\n $arrayLib: {\n $numElements: createNumElementsFun(),\n $matrixLines: createMatrixLinesFun(),\n $matrixColumns: createMatrixColumnsFun()\n },\n $langLib: {\n $isReal: createIsRealFun(),\n $isInt: createIsIntFun(),\n $isBool: createIsBoolFun(),\n $castReal: createCastRealFun(),\n $castInt: createCastIntFun(),\n $castBool: createCastBoolFun(),\n $castString: createCastStringFun()\n }\n}\n\nconst funcsObject = concatObjects(libsObject.$ioLib, libsObject.$langLib,\n libsObject.$strLib, libsObject.$arrayLib);\n\nexport const LanguageDefinedFunction = Object.freeze({\n getMainFunctionName: () => LanguageService.getCurrentLangFuncs().main_function,\n getInternalName: (localName) => {\n if (localName.indexOf(\".\") !== -1) {\n const names = localName.split(\".\");\n const lib = valueToKey(names[0], LanguageService.getCurrentLangLibs());\n const internalName = valueToKey(names[1], LanguageService.getCurrentLangFuncs());\n if (lib === null || internalName === null) {\n return null;\n }\n return lib + \".\" + internalName;\n }\n const funcName = valueToKey(localName, LanguageService.getCurrentLangFuncs());\n if(funcName !== null) {\n if(funcsObject[funcName]) {\n return funcName;\n }\n }\n return null;\n },\n getFunction: (internalName) => {\n if (internalName.indexOf(\".\") !== -1) {\n const names = internalName.split(\".\");\n const libName = names[0];\n const funName = names[1];\n return libsObject[libName][funName];\n }\n return funcsObject[internalName];\n },\n getLocalName: (internalName) => {\n if (internalName.indexOf(\".\") !== -1) {\n const names = internalName.split(\".\");\n const libName = LanguageService.getCurrentLangLibs()[names[0]];\n const funName = LanguageService.getCurrentLangFuncs()[names[1]];\n return `${libName}.${funName}`;\n } else if (LanguageService.getCurrentLangFuncs()[internalName]) {\n return LanguageService.getCurrentLangFuncs()[internalName];\n } else { \n return internalName\n }\n }\n});","import { RuntimeError } from './runtimeError';\nimport { SemanticError } from './semanticError';\nimport * as LocalizedStringsService from './../../services/localizedStringsService';\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nexport const ProcessorErrorFactory = Object.freeze({\n symbol_not_found_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"symbol_not_found_full\", context));\n } else {\n return ProcessorErrorFactory.symbol_not_found(id);\n }\n },\n symbol_not_found: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"symbol_not_found\", context));\n },\n function_missing_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"function_missing_full\", context));\n } else {\n return ProcessorErrorFactory.function_missing(id);\n }\n },\n function_missing: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"function_missing\", context));\n },\n main_missing: () => {\n return new SemanticError(LocalizedStrings.getError(\"main_missing\"));\n }, // TODO: better urgent error message\n array_dimension_not_int_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"array_dimension_not_int_full\", context));\n } else {\n return ProcessorErrorFactory.array_dimension_not_int();\n }\n },\n array_dimension_not_int: () => {\n return new SemanticError(LocalizedStrings.getError(\"array_dimension_not_int\"));\n },\n unknown_command_full: (sourceInfo)=> {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new RuntimeError(LocalizedStrings.getError(\"unknown_command_full\", context));\n } else {\n return ProcessorErrorFactory.unknown_command();\n }\n \n },\n unknown_command: ()=> {\n return new RuntimeError(LocalizedStrings.getError(\"unknown_command\"));\n },\n incompatible_types_full: (type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [LocalizedStrings.translateType(type, dim), sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"incompatible_types_full\", context));\n } else {\n return ProcessorErrorFactory.incompatible_types(type, dim);\n }\n },\n incompatible_types: (type, dim) => {\n const context = [LocalizedStrings.translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"incompatible_types\", context));\n },\n incompatible_types_array_full: (exp, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, LocalizedStrings.translateType(type, dim), sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"incompatible_types_array_full\", context));\n } else {\n return ProcessorErrorFactory.incompatible_types_array(exp, type, dim);\n }\n },\n incompatible_types_array: (exp, type, dim) => {\n const context = [exp, LocalizedStrings.translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"incompatible_types_array\", context));\n },\n loop_condition_type_full: (exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, exp];\n return new SemanticError(LocalizedStrings.getError(\"loop_condition_type_full\", context));\n } else {\n return ProcessorErrorFactory.loop_condition_type(exp);\n }\n },\n loop_condition_type: (exp) => {\n const context = [exp];\n return new SemanticError(LocalizedStrings.getError(\"loop_condition_type\", context));\n },\n endless_loop_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"endless_loop_full\", context));\n } else {\n return ProcessorErrorFactory.endless_loop();\n }\n },\n endless_loop: () => {\n return new SemanticError(LocalizedStrings.getError(\"endless_loop\"));\n },\n for_condition_type_full: (exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, exp];\n return new SemanticError(LocalizedStrings.getError(\"for_condition_type_full\", context));\n } else {\n return ProcessorErrorFactory.for_condition_type(exp);\n }\n },\n for_condition_type: (exp) => {\n const context = [exp];\n return new SemanticError(LocalizedStrings.getError(\"for_condition_type\", context));\n },\n if_condition_type_full: (exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, exp];\n return new SemanticError(LocalizedStrings.getError(\"if_condition_type_full\", context));\n } else {\n return ProcessorErrorFactory.if_condition_type(exp);\n }\n },\n if_condition_type: (exp) => {\n const context = [exp];\n return new SemanticError(LocalizedStrings.getError(\"if_condition_type\", context));\n },\n invalid_global_var: () => {\n return new RuntimeError(LocalizedStrings.getError(\"invalid_global_var\"))\n },\n not_implemented: (id) => {\n const context = [id]\n return new RuntimeError(LocalizedStrings.getError(\"not_implemented\", context))\n },\n invalid_case_type_full: (exp, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, LocalizedStrings.translateType(type, dim), sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"invalid_case_type_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_case_type(exp, type, dim);\n }\n },\n invalid_case_type: (exp, type, dim) => {\n const context = [exp, LocalizedStrings.translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_case_type\", context));\n },\n void_in_expression_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, id];\n return new SemanticError(LocalizedStrings.getError(\"void_in_expression_full\", context));\n } else {\n return ProcessorErrorFactory.void_in_expression(id);\n }\n },\n void_in_expression: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"void_in_expression\", context));\n },\n invalid_array_access_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"invalid_array_access_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_array_access(id);\n }\n },\n invalid_array_access: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"invalid_array_access\", context));\n },\n invalid_matrix_access_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return new SemanticError(LocalizedStrings.getError(\"invalid_matrix_access_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_matrix_access(id);\n }\n },\n invalid_matrix_access: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"invalid_matrix_access\", context));\n },\n matrix_column_outbounds_full: (id, value, columns, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, value, id, columns];\n return new RuntimeError(LocalizedStrings.getError(\"matrix_column_outbounds_full\", context));\n } else {\n return ProcessorErrorFactory.matrix_column_outbounds(id, value, columns);\n }\n },\n matrix_column_outbounds: (id, value, columns) => {\n const context = [value, id, columns];\n return new RuntimeError(LocalizedStrings.getError(\"matrix_column_outbounds\", context));\n },\n matrix_line_outbounds_full: (id, value, lines, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, value, id, lines];\n return new RuntimeError(LocalizedStrings.getError(\"matrix_line_outbounds_full\", context));\n } else {\n return ProcessorErrorFactory.matrix_line_outbounds(id, value, lines);\n }\n },\n matrix_line_outbounds: (id, value, lines) => {\n const context = [value, id, lines];\n return new RuntimeError(LocalizedStrings.getError(\"matrix_line_outbounds\", context));\n },\n vector_line_outbounds_full: (id, value, lines, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, value, id, lines];\n return new RuntimeError(LocalizedStrings.getError(\"vector_line_outbounds_full\", context));\n } else {\n return ProcessorErrorFactory.vector_line_outbounds(id, value, lines);\n }\n },\n vector_line_outbounds: (id, value, lines) => {\n const context = [value, id, lines];\n return new RuntimeError(LocalizedStrings.getError(\"vector_line_outbounds\", context));\n },\n vector_not_matrix_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id];\n return new RuntimeError(LocalizedStrings.getError(\"vector_not_matrix_full\", context));\n } else {\n return ProcessorErrorFactory.vector_not_matrix(id);\n }\n },\n vector_not_matrix: (id) => {\n const context = [id];\n return new RuntimeError(LocalizedStrings.getError(\"vector_not_matrix\", context));\n },\n function_no_return: (id) => {\n const context = [id];\n return new SemanticError(LocalizedStrings.getError(\"function_no_return\", context));\n },\n invalid_void_return_full: (id, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id, LocalizedStrings.translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_void_return_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_void_return(id, type, dim);\n }\n },\n invalid_void_return: (id, type, dim) => {\n const context = [id, LocalizedStrings.translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_void_return_full\", context));\n },\n invalid_return_type_full: (id, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id, LocalizedStrings.translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_return_type_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_return_type(id, type, dim);\n }\n },\n invalid_return_type: (id, type, dim) => {\n const context = [id, LocalizedStrings.translateType(type, dim)];\n return new SemanticError(LocalizedStrings.getError(\"invalid_return_type\", context));\n },\n invalid_parameters_size_full: (id, expected, actual, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id, expected, actual];\n return new SemanticError(LocalizedStrings.getError(\"invalid_parameters_size_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_parameters_size(id, expected, actual);\n }\n },\n invalid_parameters_size: (id, expected, actual) => {\n const context = [id, expected, actual];\n return new SemanticError(LocalizedStrings.getError(\"invalid_parameters_size\", context));\n },\n invalid_parameter_type_full: (id, exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, id, sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"invalid_parameter_type_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_parameter_type(id, exp);\n }\n },\n invalid_parameter_type: (id, exp) => {\n const context = [exp, id];\n return new SemanticError(LocalizedStrings.getError(\"invalid_parameter_type_full\", context));\n },\n invalid_ref_full: (id, exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, id , sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"invalid_ref_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_ref(id, exp);\n }\n },\n invalid_ref: (id, exp) => {\n const context = [exp, id];\n return new SemanticError(LocalizedStrings.getError(\"invalid_ref\", context));\n },\n unexpected_break_command_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new RuntimeError(LocalizedStrings.getError(\"unexpected_break_command_full\", context));\n } else {\n return ProcessorErrorFactory.unexpected_break_command();\n }\n },\n unexpected_break_command: () => {\n return new RuntimeError(LocalizedStrings.getError(\"unexpected_break_command\"));\n },\n invalid_array_literal_type_full: (exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, exp];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_type_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_array_literal_type(exp);\n }\n },\n invalid_array_literal_type: (exp) => {\n const context = [exp];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_type\", context));\n },\n invalid_array_literal_line_full: (expected, actual, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, expected, actual];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_line_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_array_literal_type(expected, actual);\n }\n },\n invalid_array_literal_line: (expected, actual) => {\n const context = [expected, actual];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_line\", context));\n },\n invalid_array_literal_column_full: (expected, actual, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, expected, actual];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_column_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_array_literal_column(expected, actual);\n }\n },\n invalid_array_literal_column: (expected, actual) => {\n const context = [expected, actual];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_array_literal_column\", context));\n },\n invalid_unary_op_full: (opName, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(type, dim)];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_unary_op_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_unary_op(opName, type, dim);\n }\n },\n invalid_unary_op: (opName, type, dim) => {\n const context = [LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(type, dim)];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_unary_op\", context));\n },\n invalid_infix_op_full: (opName, typeLeft, dimLeft, typeRight, dimRight, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(typeLeft, dimLeft), LocalizedStrings.translateType(typeRight, dimRight)];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_infix_op_full\", context));\n } else {\n return ProcessorErrorFactory.invalid_infix_op(opName, typeLeft, dimLeft, typeRight, dimRight);\n }\n },\n invalid_infix_op: (opName, typeLeft, dimLeft, typeRight, dimRight) => {\n const context = [LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(typeLeft, dimLeft), LocalizedStrings.translateType(typeRight, dimRight)];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_infix_op\", context));\n },\n array_dimension_not_positive_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return new SemanticError(LocalizedStrings.getError(\"array_dimension_not_positive_full\", context));\n } else {\n return ProcessorErrorFactory.array_dimension_not_positive();\n }\n },\n array_dimension_not_positive: () => {\n return new SemanticError(LocalizedStrings.getError(\"array_dimension_not_positive\"));\n },\n invalid_type_conversion: (value, type, dim) => {\n const context = [value, LocalizedStrings.translateType(type, dim)];\n return new RuntimeError(LocalizedStrings.getError(\"invalid_type_conversion\", context));\n }\n});","export class RuntimeError extends Error {\n\n constructor (...msg) {\n super(...msg);\n if(Error.captureStackTrace)\n Error.captureStackTrace(this, RuntimeError);\n }\n}","export class SemanticError extends Error {\n\n constructor (...msg) {\n super(...msg);\n if(Error.captureStackTrace)\n Error.captureStackTrace(this, SemanticError);\n }\n}","import { Store } from './store/store';\nimport { StoreObject } from './store/storeObject';\nimport { StoreObjectArray } from './store/storeObjectArray';\nimport { StoreObjectRef } from './store/storeObjectRef';\nimport { Modes } from './modes';\nimport { Context } from './context';\nimport { Types } from './../typeSystem/types';\nimport { Operators } from './../ast/operators';\nimport { LanguageDefinedFunction } from './definedFunctions';\nimport { resultTypeAfterInfixOp, resultTypeAfterUnaryOp } from './compatibilityTable';\nimport * as Commands from './../ast/commands/';\nimport * as Expressions from './../ast/expressions/';\nimport { StoreObjectArrayAddress } from './store/storeObjectArrayAddress';\nimport { StoreObjectArrayAddressRef } from './store/storeObjectArrayAddressRef';\nimport { CompoundType } from './../typeSystem/compoundType';\nimport { convertToString } from '../typeSystem/parsers';\nimport { Config } from '../util/config';\nimport Decimal from 'decimal.js';\nimport { ProcessorErrorFactory } from './error/processorErrorFactory';\nimport { RuntimeError } from './error/runtimeError';\n\nexport class IVProgProcessor {\n\n static get LOOP_TIMEOUT () {\n return Config.loopTimeout;\n }\n\n static set LOOP_TIMEOUT (ms) {\n Config.setConfig({loopTimeout: ms});\n }\n\n static get MAIN_INTERNAL_ID () {\n return \"$main\";\n }\n\n constructor (ast) {\n this.ast = ast;\n this.globalStore = new Store(\"$global\");\n this.stores = [this.globalStore];\n this.context = [Context.BASE];\n this.input = null;\n this.forceKill = false;\n this.loopTimers = [];\n this.output = null;\n }\n\n registerInput (input) {\n if(this.input !== null)\n this.input = null;\n this.input = input;\n }\n\n registerOutput (output) {\n if(this.output !== null)\n this.output = null;\n this.output = output;\n }\n\n checkContext(context) {\n return this.context[this.context.length - 1] === context;\n }\n\n ignoreSwitchCases (store) {\n if (store.mode === Modes.RETURN) {\n return true;\n } else if (store.mode === Modes.BREAK) {\n return true;\n } else {\n return false;\n }\n }\n\n prepareState () {\n if(this.stores !== null) {\n for (let i = 0; i < this.stores.length; i++) {\n delete this.stores[i];\n }\n this.stores = null;\n }\n if(this.globalStore !== null)\n this.globalStore = null;\n this.globalStore = new Store(\"$global\");\n this.stores = [this.globalStore];\n this.context = [Context.BASE];\n }\n\n interpretAST () {\n this.prepareState();\n return this.initGlobal().then( _ => {\n const mainFunc = this.findMainFunction();\n if(mainFunc === null) {\n throw ProcessorErrorFactory.main_missing();\n }\n return this.runFunction(mainFunc, [], this.globalStore);\n });\n }\n\n initGlobal () {\n if(!this.checkContext(Context.BASE)) {\n throw ProcessorErrorFactory.invalid_global_var();\n }\n return this.executeCommands(this.globalStore, this.ast.global);\n }\n\n findMainFunction () {\n return this.ast.functions.find(v => v.isMain);\n }\n\n findFunction (name) {\n if(name.match(/^\\$.+$/)) {\n const fun = LanguageDefinedFunction.getFunction(name);\n if(!!!fun) {\n throw ProcessorErrorFactory.not_implemented(name);\n }\n return fun;\n } else {\n const val = this.ast.functions.find( v => v.name === name);\n if (!!!val) {\n throw ProcessorErrorFactory.function_missing(name);\n }\n return val;\n }\n }\n\n runFunction (func, actualParameters, store) {\n const funcName = func.isMain ? IVProgProcessor.MAIN_INTERNAL_ID : func.name;\n let funcStore = new Store(funcName);\n funcStore.extendStore(this.globalStore);\n let returnStoreObject = null;\n if(func.returnType instanceof CompoundType) {\n if(func.returnType.dimensions > 1) {\n returnStoreObject = new StoreObjectArray(func.returnType,-1,-1,[[]]);\n } else {\n returnStoreObject = new StoreObjectArray(func.returnType,-1,null,[]);\n }\n } else {\n returnStoreObject = new StoreObject(func.returnType, null);\n }\n funcStore.insertStore('$', returnStoreObject);\n const newFuncStore$ = this.associateParameters(func.formalParameters, actualParameters, store, funcStore);\n const outerRef = this;\n return newFuncStore$.then(sto => {\n this.context.push(Context.FUNCTION);\n this.stores.push(sto);\n return this.executeCommands(sto, func.variablesDeclarations)\n .then(stoWithVars => outerRef.executeCommands(stoWithVars, func.commands)).then(finalSto => {\n outerRef.stores.pop();\n outerRef.context.pop();\n return finalSto;\n });\n });\n }\n\n associateParameters (formalList, actualList, callerStore, calleeStore) {\n const funcName = calleeStore.name === IVProgProcessor.MAIN_INTERNAL_ID ? \n LanguageDefinedFunction.getMainFunctionName() : calleeStore.name;\n\n if (formalList.length != actualList.length) {\n throw ProcessorErrorFactory.invalid_parameters_size(funcName, formalList.length, actualList.length);\n }\n const promises$ = actualList.map(actualParameter => this.evaluateExpression(callerStore, actualParameter));\n return Promise.all(promises$).then(values => {\n for (let i = 0; i < values.length; i++) {\n const stoObj = values[i];\n const exp = actualList[i];\n let shouldTypeCast = false;\n const formalParameter = formalList[i];\n if(!formalParameter.type.isCompatible(stoObj.type)) {\n if (Config.enable_type_casting && !formalParameter.byRef\n && Store.canImplicitTypeCast(formalParameter.type, stoObj.type)) {\n shouldTypeCast = true;\n } else {\n throw ProcessorErrorFactory.invalid_parameter_type(funcName, exp.toString());\n }\n }\n\n if(formalParameter.byRef && !stoObj.inStore) {\n throw ProcessorErrorFactory.invalid_ref(funcName, exp.toString());\n }\n\n if(formalParameter.byRef) {\n let ref = null;\n if (stoObj instanceof StoreObjectArrayAddress) {\n ref = new StoreObjectArrayAddressRef(stoObj);\n } else {\n ref = new StoreObjectRef(stoObj.id, callerStore);\n }\n calleeStore.insertStore(formalParameter.id, ref);\n } else {\n let realValue = this.parseStoreObjectValue(stoObj);\n if (shouldTypeCast) {\n realValue = Store.doImplicitCasting(formalParameter.type, realValue);\n }\n calleeStore.insertStore(formalParameter.id, realValue);\n }\n }\n return calleeStore;\n });\n }\n\n executeCommands (store, cmds) {\n // helper to partially apply a function, in this case executeCommand\n const outerRef = this;\n const partial = (fun, cmd) => (sto) => fun(sto, cmd);\n return cmds.reduce((lastCommand, next) => {\n const nextCommand = partial(outerRef.executeCommand.bind(outerRef), next);\n return lastCommand.then(nextCommand);\n }, Promise.resolve(store));\n }\n\n executeCommand (store, cmd) {\n if(this.forceKill) {\n return Promise.reject(\"FORCED_KILL!\");\n } else if (store.mode === Modes.PAUSE) {\n return Promise.resolve(this.executeCommand(store, cmd));\n } else if(store.mode === Modes.RETURN) {\n return Promise.resolve(store);\n } else if(this.checkContext(Context.BREAKABLE) && store.mode === Modes.BREAK) {\n return Promise.resolve(store);\n }\n\n if (cmd instanceof Commands.Declaration) {\n return this.executeDeclaration(store, cmd);\n } else if (cmd instanceof Commands.ArrayIndexAssign) {\n return this.executeArrayIndexAssign(store, cmd);\n } else if (cmd instanceof Commands.Assign) {\n return this.executeAssign(store, cmd);\n } else if (cmd instanceof Commands.Break) {\n return this.executeBreak(store, cmd);\n } else if (cmd instanceof Commands.Return) {\n return this.executeReturn(store, cmd);\n } else if (cmd instanceof Commands.IfThenElse) {\n return this.executeIfThenElse(store, cmd);\n } else if (cmd instanceof Commands.DoWhile) {\n return this.executeDoWhile(store, cmd);\n } else if (cmd instanceof Commands.While) {\n return this.executeWhile(store, cmd);\n } else if (cmd instanceof Commands.For) {\n return this.executeFor(store, cmd);\n } else if (cmd instanceof Commands.Switch) {\n return this.executeSwitch(store, cmd);\n } else if (cmd instanceof Expressions.FunctionCall) {\n \n return this.executeFunctionCall(store, cmd);\n } else if (cmd instanceof Commands.SysCall) {\n return this.executeSysCall(store, cmd);\n } else {\n throw ProcessorErrorFactory.unknown_command(cmd.sourceInfo);\n }\n }\n\n executeSysCall (store, cmd) {\n const func = cmd.langFunc.bind(this);\n return func(store, cmd);\n }\n\n executeFunctionCall (store, cmd) {\n let func = null;\n if(cmd.isMainCall) {\n func = this.findMainFunction();\n } else {\n func = this.findFunction(cmd.id);\n }\n return this.runFunction(func, cmd.actualParameters, store)\n .then(sto => {\n if(!Types.VOID.isCompatible(func.returnType) && sto.mode !== Modes.RETURN) {\n const funcName = func.name === IVProgProcessor.MAIN_INTERNAL_ID ? \n LanguageDefinedFunction.getMainFunctionName() : func.name;\n return Promise.reject(ProcessorErrorFactory.function_no_return(funcName));\n } else {\n return store;\n }\n })\n }\n\n executeSwitch (store, cmd) {\n this.context.push(Context.BREAKABLE);\n const auxCaseFun = (promise, switchExp, aCase) => {\n return promise.then( result => {\n const sto = result.sto;\n if (this.ignoreSwitchCases(sto)) {\n return Promise.resolve(result);\n } else if (result.wasTrue || aCase.isDefault) {\n const $newSto = this.executeCommands(result.sto,aCase.commands);\n return $newSto.then(nSto => {\n return Promise.resolve({wasTrue: true, sto: nSto});\n });\n } else {\n const $value = this.evaluateExpression(sto,\n new Expressions.InfixApp(Operators.EQ, switchExp, aCase.expression));\n return $value.then(vl => {\n if (vl.value) {\n const $newSto = this.executeCommands(result.sto,aCase.commands);\n return $newSto.then(nSto => {\n return Promise.resolve({wasTrue: true, sto: nSto});\n });\n } else {\n return Promise.resolve({wasTrue: false, sto: sto});\n }\n });\n }\n });\n }\n\n try {\n let breakLoop = false;\n let $result = Promise.resolve({wasTrue: false, sto: store});\n for (let index = 0; index < cmd.cases.length && !breakLoop; index++) {\n const aCase = cmd.cases[index];\n $result = auxCaseFun($result, cmd.expression, aCase);\n $result.then( r => breakLoop = this.ignoreSwitchCases(r.sto));\n }\n return $result.then(r => {\n this.context.pop();\n if(r.sto.mode === Modes.BREAK) {\n r.sto.mode = Modes.RUN;\n }\n return r.sto;\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeFor (store, cmd) {\n try {\n //BEGIN for -> while rewrite\n const initCmd = cmd.assignment;\n const condition = cmd.condition;\n const increment = cmd.increment;\n const whileBlock = new Commands.CommandBlock([],\n cmd.commands.concat(increment));\n const forAsWhile = new Commands.While(condition, whileBlock);\n forAsWhile.sourceInfo = cmd.sourceInfo;\n //END for -> while rewrite\n const newCmdList = [initCmd,forAsWhile];\n return this.executeCommands(store, newCmdList);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeDoWhile (store, cmd) {\n const outerRef = this;\n try {\n outerRef.loopTimers.push(Date.now());\n outerRef.context.push(Context.BREAKABLE);\n const $newStore = outerRef.executeCommands(store, cmd.commands);\n return $newStore.then(sto => {\n if(sto.mode === Modes.BREAK) {\n outerRef.context.pop();\n sto.mode = Modes.RUN;\n outerRef.loopTimers.pop();\n return sto;\n }\n const $value = outerRef.evaluateExpression(sto, cmd.expression);\n return $value.then(vl => {\n if (!vl.type.isCompatible(Types.BOOLEAN)) {\n return Promise.reject(ProcessorErrorFactory.loop_condition_type_full(cmd.sourceInfo));\n }\n if (vl.value) {\n outerRef.context.pop();\n for (let i = 0; i < outerRef.loopTimers.length; i++) {\n const time = outerRef.loopTimers[i];\n if(Date.now() - time >= IVProgProcessor.LOOP_TIMEOUT) {\n outerRef.forceKill = true;\n return Promise.reject(ProcessorErrorFactory.endless_loop_full(cmd.sourceInfo));\n }\n }\n return outerRef.executeCommand(sto, cmd);\n } else {\n outerRef.context.pop();\n outerRef.loopTimers.pop();\n return sto;\n }\n })\n })\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeWhile (store, cmd) {\n const outerRef = this;\n try {\n outerRef.loopTimers.push(Date.now());\n outerRef.context.push(Context.BREAKABLE);\n const $value = outerRef.evaluateExpression(store, cmd.expression);\n return $value.then(vl => {\n if(vl.type.isCompatible(Types.BOOLEAN)) {\n if(vl.value) {\n const $newStore = outerRef.executeCommands(store, cmd.commands);\n return $newStore.then(sto => {\n outerRef.context.pop();\n if (sto.mode === Modes.BREAK) {\n outerRef.loopTimers.pop();\n sto.mode = Modes.RUN;\n return sto;\n }\n for (let i = 0; i < outerRef.loopTimers.length; i++) {\n const time = outerRef.loopTimers[i];\n if(Date.now() - time >= IVProgProcessor.LOOP_TIMEOUT) {\n outerRef.forceKill = true;\n return Promise.reject(ProcessorErrorFactory.endless_loop_full(cmd.sourceInfo));\n }\n }\n return outerRef.executeCommand(sto, cmd);\n });\n } else {\n outerRef.context.pop();\n outerRef.loopTimers.pop();\n return store;\n }\n } else {\n return Promise.reject(ProcessorErrorFactory.loop_condition_type_full(cmd.expression.toString(), cmd.sourceInfo));\n }\n })\n \n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeIfThenElse (store, cmd) {\n try {\n const $value = this.evaluateExpression(store, cmd.condition);\n return $value.then(vl => {\n if(vl.type.isCompatible(Types.BOOLEAN)) {\n if(vl.value) {\n return this.executeCommands(store, cmd.ifTrue.commands);\n } else if( cmd.ifFalse !== null){\n if(cmd.ifFalse instanceof Commands.IfThenElse) {\n return this.executeCommand(store, cmd.ifFalse);\n } else {\n return this.executeCommands(store, cmd.ifFalse.commands);\n }\n } else {\n return Promise.resolve(store);\n }\n } else {\n return Promise.reject(ProcessorErrorFactory.if_condition_type_full(cmd.condition.toString(), cmd.sourceInfo));\n }\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeReturn (store, cmd) {\n try {\n const funcType = store.applyStore('$').type;\n const $value = this.evaluateExpression(store, cmd.expression);\n const funcName = store.name === IVProgProcessor.MAIN_INTERNAL_ID ? \n LanguageDefinedFunction.getMainFunctionName() : store.name;\n return $value.then(vl => {\n\n if(vl === null && funcType.isCompatible(Types.VOID)) {\n store.mode = Modes.RETURN;\n return Promise.resolve(store);\n }\n\n if (vl === null || !funcType.isCompatible(vl.type)) {\n const stringInfo = funcType.stringInfo();\n const info = stringInfo[0];\n return Promise.reject(ProcessorErrorFactory.invalid_return_type_full(funcName, info.type, info.dim, cmd.sourceInfo));\n } else {\n let realValue = this.parseStoreObjectValue(vl);\n store.updateStore('$', realValue);\n store.mode = Modes.RETURN;\n return Promise.resolve(store);\n }\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeBreak (store, cmd) {\n if(this.checkContext(Context.BREAKABLE)) {\n store.mode = Modes.BREAK;\n return Promise.resolve(store);\n } else {\n return Promise.reject(ProcessorErrorFactory.unexpected_break_command_full(cmd.sourceInfo));\n }\n }\n\n executeAssign (store, cmd) {\n try {\n const inStore = store.applyStore(cmd.id);\n const $value = this.evaluateExpression(store, cmd.expression);\n return $value.then( vl => {\n let realValue = this.parseStoreObjectValue(vl);\n if(!inStore.type.isCompatible(realValue.type)) {\n if(Config.enable_type_casting && Store.canImplicitTypeCast(inStore.type, vl.type)) {\n realValue = Store.doImplicitCasting(inStore.type, realValue);\n } else {\n const stringInfo = inStore.type.stringInfo()\n const info = stringInfo[0]\n return Promise.reject(ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, cmd.sourceInfo));\n }\n }\n \n store.updateStore(cmd.id, realValue) \n return store;\n });\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n executeArrayIndexAssign (store, cmd) {\n const mustBeArray = store.applyStore(cmd.id);\n if(!(mustBeArray.type instanceof CompoundType)) {\n return Promise.reject(ProcessorErrorFactory.invalid_array_access_full(cmd.id, cmd.sourceInfo));\n }\n const line$ = this.evaluateExpression(store, cmd.line);\n const column$ = this.evaluateExpression(store, cmd.column);\n const value$ = this.evaluateExpression(store, cmd.expression);\n return Promise.all([line$, column$, value$]).then(results => {\n const lineSO = results[0];\n if(!Types.INTEGER.isCompatible(lineSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n const line = lineSO.number;\n const columnSO = results[1];\n let column = null\n if (columnSO !== null) {\n if(!Types.INTEGER.isCompatible(columnSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n column = columnSO.number;\n }\n const value = this.parseStoreObjectValue(results[2]);\n if (line >= mustBeArray.lines) {\n if(mustBeArray.isVector) {\n return Promise.reject(ProcessorErrorFactory.vector_line_outbounds_full(cmd.id, line, mustBeArray.lines, cmd.sourceInfo));\n } else {\n return Promise.reject(ProcessorErrorFactory.matrix_line_outbounds_full(cmd.id, line, mustBeArray.lines, cmd.sourceInfo));\n }\n } else if (line < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo);\n }\n if (column !== null && mustBeArray.columns === null ){\n return Promise.reject(ProcessorErrorFactory.vector_not_matrix_full(cmd.id, cmd.sourceInfo));\n }\n if(column !== null ) {\n if (column >= mustBeArray.columns) {\n return Promise.reject(ProcessorErrorFactory.matrix_column_outbounds_full(cmd.id, column,mustBeArray.columns, cmd.sourceInfo));\n } else if (column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo);\n }\n }\n\n const newArray = Object.assign(new StoreObjectArray(null,null,null), mustBeArray);\n if (column !== null) {\n if (value.type instanceof CompoundType || !newArray.type.canAccept(value.type)) {\n const type = mustBeArray.type.innerType;\n const stringInfo = type.stringInfo()\n const info = stringInfo[0]\n return Promise.reject(ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, cmd.sourceInfo));\n }\n newArray.value[line].value[column] = value;\n store.updateStore(cmd.id, newArray);\n } else {\n if((mustBeArray.columns !== null && value.type instanceof CompoundType) || !newArray.type.canAccept(value.type)) {\n const type = mustBeArray.type;\n const stringInfo = type.stringInfo()\n const info = stringInfo[0]\n const exp = cmd.expression.toString()\n return Promise.reject(ProcessorErrorFactory.incompatible_types_array_full(exp,info.type, info.dim-1, cmd.sourceInfo));\n }\n newArray.value[line] = value;\n store.updateStore(cmd.id, newArray);\n }\n return store;\n });\n }\n\n executeDeclaration (store, cmd) {\n try {\n const $value = this.evaluateExpression(store, cmd.initial);\n if(cmd instanceof Commands.ArrayDeclaration) {\n const $lines = this.evaluateExpression(store, cmd.lines);\n const $columns = cmd.columns === null ? null: this.evaluateExpression(store, cmd.columns);\n return Promise.all([$lines, $columns, $value]).then(values => {\n const lineSO = values[0];\n if(!Types.INTEGER.isCompatible(lineSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n const line = lineSO.number;\n if(line < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo);\n }\n const columnSO = values[1];\n let column = null\n if (columnSO !== null) {\n if(!Types.INTEGER.isCompatible(columnSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo));\n }\n column = columnSO.number;\n if(column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(cmd.sourceInfo);\n }\n }\n const value = values[2];\n const temp = new StoreObjectArray(cmd.type, line, column, null);\n store.insertStore(cmd.id, temp);\n let realValue = value;\n if (value !== null) {\n if(value instanceof StoreObjectArrayAddress) {\n if(value.type instanceof CompoundType) {\n realValue = Object.assign(new StoreObjectArray(null,null,null), value.refValue);\n } else {\n realValue = Object.assign(new StoreObject(null,null), value.refValue);\n }\n }\n } else {\n realValue = new StoreObjectArray(cmd.type, line, column, [])\n if(column !== null) {\n for (let i = 0; i < line; i++) {\n realValue.value.push(new StoreObjectArray(new CompoundType(cmd.type.innerType, 1), column, null, []));\n }\n }\n }\n realValue.readOnly = cmd.isConst;\n store.updateStore(cmd.id, realValue);\n return store;\n });\n \n } else {\n const temp = new StoreObject(cmd.type, null);\n store.insertStore(cmd.id, temp);\n return $value.then(vl => {\n let realValue = vl;\n if (vl !== null) {\n if(!vl.type.isCompatible(cmd.type)) {\n if(Config.enable_type_casting && Store.canImplicitTypeCast(cmd.type, vl.type)) {\n realValue = Store.doImplicitCasting(cmd.type, realValue);\n } else {\n const stringInfo = typeInfo.type.stringInfo();\n const info = stringInfo[0];\n return Promise.reject(ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, cmd.sourceInfo));\n }\n }\n if(vl instanceof StoreObjectArrayAddress) {\n if(vl.type instanceof CompoundType) {\n return Promise.reject(new Error(\"!!!Critical Error: Compatibility check failed, a Type accepts a CompoundType\"))\n } else {\n realValue = Object.assign(new StoreObject(null,null), vl.refValue);\n }\n }\n } else {\n realValue = new StoreObject(cmd.type, 0);\n }\n realValue.readOnly = cmd.isConst;\n store.updateStore(cmd.id, realValue);\n return store;\n });\n }\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n evaluateExpression (store, exp) {\n\n if (exp instanceof Expressions.UnaryApp) {\n return this.evaluateUnaryApp(store, exp);\n } else if (exp instanceof Expressions.InfixApp) {\n return this.evaluateInfixApp(store, exp);\n } else if (exp instanceof Expressions.ArrayAccess) {\n return this.evaluateArrayAccess(store, exp);\n } else if (exp instanceof Expressions.VariableLiteral) {\n return this.evaluateVariableLiteral(store, exp);\n } else if (exp instanceof Expressions.IntLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.RealLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.BoolLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.StringLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.ArrayLiteral) {\n return this.evaluateArrayLiteral(store, exp);\n } else if (exp instanceof Expressions.FunctionCall) {\n return this.evaluateFunctionCall(store, exp);\n }\n return Promise.resolve(null);\n }\n\n evaluateFunctionCall (store, exp) {\n if(exp.isMainCall) {\n return Promise.reject(ProcessorErrorFactory.void_in_expression_full(LanguageDefinedFunction.getMainFunctionName(), exp.sourceInfo));\n }\n const func = this.findFunction(exp.id);\n if(Types.VOID.isCompatible(func.returnType)) {\n return Promise.reject(ProcessorErrorFactory.void_in_expression_full(exp.id, exp.sourceInfo));\n }\n const $newStore = this.runFunction(func, exp.actualParameters, store);\n return $newStore.then( sto => {\n if(sto.mode !== Modes.RETURN) {\n return Promise.reject(new Error(\"The function that was called did not had a return command: \"+exp.id));\n }\n const val = sto.applyStore('$');\n if (val instanceof StoreObjectArray) {\n return Promise.resolve(Object.assign(new StoreObjectArray(null,null,null,null,null), val));\n } else {\n return Promise.resolve(Object.assign(new StoreObject(null,null), val));\n }\n });\n }\n\n evaluateArrayLiteral (store, exp) {\n const errorHelperFunction = (validationResult, exp) => {\n const errorCode = validationResult[0];\n switch(errorCode) {\n case StoreObjectArray.WRONG_COLUMN_NUMBER: {\n const columnValue = validationResult[1];\n return Promise.reject(ProcessorErrorFactory.invalid_array_literal_column_full(arr.columns, columnValue, exp.sourceInfo));\n }\n case StoreObjectArray.WRONG_LINE_NUMBER: {\n const lineValue = validationResult[1];\n return Promise.reject(ProcessorErrorFactory.invalid_array_literal_line_full(arr.lines, lineValue, exp.sourceInfo));\n }\n case StoreObjectArray.WRONG_TYPE: {\n let line = null;\n let strExp = null;\n if (validationResult.length > 2) {\n line = validationResult[1];\n const column = validationResult[2];\n strExp = exp.value[line].value[column].toString()\n } else {\n line = validationResult[1];\n strExp = exp.value[line].toString()\n }\n return Promise.reject(ProcessorErrorFactory.invalid_array_literal_type_full(strExp, exp.sourceInfo)); }\n }\n };\n if(!exp.isVector) {\n const $matrix = this.evaluateMatrix(store, exp.value);\n return $matrix.then(list => {\n const type = new CompoundType(list[0].type.innerType, 2);\n const arr = new StoreObjectArray(type, list.length, list[0].lines, list);\n const checkResult = arr.isValid;\n if(checkResult.length == 0)\n return Promise.resolve(arr);\n else {\n return errorHelperFunction(checkResult, exp);\n }\n });\n } else {\n return this.evaluateVector(store, exp.value).then(list => {\n const type = new CompoundType(list[0].type, 1);\n const stoArray = new StoreObjectArray(type, list.length, null, list);\n const checkResult = stoArray.isValid;\n if(checkResult.length == 0)\n return Promise.resolve(stoArray);\n else {\n return errorHelperFunction(checkResult, exp);\n }\n });\n }\n }\n\n evaluateVector (store, exps) {\n return Promise.all(exps.map( exp => this.evaluateExpression(store, exp)));\n }\n\n evaluateMatrix (store, exps) {\n return Promise.all(exps.map( vector => {\n const $vector = this.evaluateVector(store, vector.value)\n return $vector.then(list => {\n const type = new CompoundType(list[0].type, 1);\n return new StoreObjectArray(type, list.length, null, list)\n });\n } ));\n }\n\n evaluateLiteral (_, exp) {\n return Promise.resolve(new StoreObject(exp.type, exp.value));\n }\n\n evaluateVariableLiteral (store, exp) {\n try {\n const val = store.applyStore(exp.id);\n if (val instanceof StoreObjectArray) {\n return Promise.resolve(Object.assign(new StoreObjectArray(null,null,null,null), val));\n } else {\n return Promise.resolve(Object.assign(new StoreObject(null,null), val));\n }\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n evaluateArrayAccess (store, exp) {\n const mustBeArray = store.applyStore(exp.id);\n if (!(mustBeArray.type instanceof CompoundType)) {\n return Promise.reject(ProcessorErrorFactory.invalid_array_access_full(exp.id, exp.sourceInfo));\n }\n const $line = this.evaluateExpression(store, exp.line);\n const $column = this.evaluateExpression(store, exp.column);\n return Promise.all([$line, $column]).then(values => {\n const lineSO = values[0];\n const columnSO = values[1];\n if(!Types.INTEGER.isCompatible(lineSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(exp.sourceInfo));\n }\n const line = lineSO.number;\n let column = null;\n if(columnSO !== null) {\n if(!Types.INTEGER.isCompatible(columnSO.type)) {\n return Promise.reject(ProcessorErrorFactory.array_dimension_not_int_full(exp.sourceInfo));\n }\n column = columnSO.number;\n }\n\n if (line >= mustBeArray.lines) {\n if(mustBeArray.isVector) {\n return Promise.reject(ProcessorErrorFactory.vector_line_outbounds_full(exp.id, line, mustBeArray.lines, exp.sourceInfo));\n } else {\n return Promise.reject(ProcessorErrorFactory.matrix_line_outbounds_full(exp.id, line, mustBeArray.lines, exp.sourceInfo));\n }\n } else if (line < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(exp.sourceInfo);\n }\n if (column !== null && mustBeArray.columns === null ){\n return Promise.reject(ProcessorErrorFactory.vector_not_matrix_full(exp.id, exp.sourceInfo));\n }\n if(column !== null ) {\n if (column >= mustBeArray.columns) {\n return Promise.reject(ProcessorErrorFactory.matrix_column_outbounds_full(exp.id, column,mustBeArray.columns, exp.sourceInfo));\n } else if (column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(exp.sourceInfo);\n }\n \n }\n return Promise.resolve(new StoreObjectArrayAddress(mustBeArray.id, line, column, store));\n });\n }\n\n evaluateUnaryApp (store, unaryApp) {\n const $left = this.evaluateExpression(store, unaryApp.left);\n return $left.then( left => {\n const resultType = resultTypeAfterUnaryOp(unaryApp.op, left.type);\n if (Types.UNDEFINED.isCompatible(resultType)) {\n const stringInfo = left.type.stringInfo();\n const info = stringInfo[0];\n return Promise.reject(ProcessorErrorFactory.invalid_unary_op_full(unaryApp.op, info.type, info.dim, unaryApp.sourceInfo));\n }\n switch (unaryApp.op.ord) {\n case Operators.ADD.ord:\n return new StoreObject(resultType, left.value);\n case Operators.SUB.ord:\n return new StoreObject(resultType, left.value.negated());\n case Operators.NOT.ord:\n return new StoreObject(resultType, !left.value);\n default:\n return Promise.reject(new RuntimeError('!!!Critical Invalid UnaryApp '+ unaryApp.op));\n }\n });\n }\n\n evaluateInfixApp (store, infixApp) {\n const $left = this.evaluateExpression(store, infixApp.left);\n const $right = this.evaluateExpression(store, infixApp.right);\n return Promise.all([$left, $right]).then(values => {\n let shouldImplicitCast = false;\n const left = values[0];\n const right = values[1];\n let resultType = resultTypeAfterInfixOp(infixApp.op, left.type, right.type);\n if (Types.UNDEFINED.isCompatible(resultType)) {\n if (Config.enable_type_casting && Store.canImplicitTypeCast(left.type, right.type)) {\n shouldImplicitCast = true;\n } else {\n const stringInfoLeft = left.type.stringInfo();\n const infoLeft = stringInfoLeft[0];\n const stringInfoRight = right.type.stringInfo();\n const infoRight = stringInfoRight[0];\n return Promise.reject(ProcessorErrorFactory.invalid_infix_op_full(infixApp.op, infoLeft.type, infoLeft.dim,\n infoRight.type,infoRight.dim,infixApp.sourceInfo));\n }\n }\n let result = null;\n switch (infixApp.op.ord) {\n case Operators.ADD.ord: {\n if(Types.STRING.isCompatible(left.type)) {\n const rightStr = convertToString(right.value, right.type);\n return new StoreObject(resultType, left.value + rightStr);\n } else if (Types.STRING.isCompatible(right.type)) {\n const leftStr = convertToString(left.value, left.type);\n return new StoreObject(resultType, leftStr + right.value);\n } else {\n return new StoreObject(resultType, left.value.plus(right.value));\n }\n }\n case Operators.SUB.ord:\n return new StoreObject(resultType, left.value.minus(right.value));\n case Operators.MULT.ord: {\n result = left.value.times(right.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n return new StoreObject(resultType, result);\n }\n case Operators.DIV.ord: {\n if (Types.INTEGER.isCompatible(resultType))\n result = left.value.divToInt(right.value);\n else\n result = left.value.div(right.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n return new StoreObject(resultType, result);\n }\n case Operators.MOD.ord: {\n let leftValue = left.value;\n let rightValue = right.value;\n if(shouldImplicitCast) {\n resultType = Types.INTEGER;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.modulo(rightValue);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n return new StoreObject(resultType, result);\n } \n case Operators.GT.ord: {\n let leftValue = left.value;\n let rightValue = right.value;\n if (Types.STRING.isCompatible(left.type)) {\n result = left.value.length > right.value.length;\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.gt(rightValue);\n }\n return new StoreObject(resultType, result);\n }\n case Operators.GE.ord: {\n let leftValue = left.value;\n let rightValue = right.value;\n if (Types.STRING.isCompatible(left.type)) {\n result = left.value.length >= right.value.length;\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.gte(rightValue);\n }\n return new StoreObject(resultType, result);\n }\n case Operators.LT.ord: {\n let leftValue = left.value;\n let rightValue = right.value;\n if (Types.STRING.isCompatible(left.type)) {\n result = left.value.length < right.value.length;\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.lt(rightValue);\n }\n return new StoreObject(resultType, result);\n }\n case Operators.LE.ord: {\n let leftValue = left.value;\n let rightValue = right.value;\n if (Types.STRING.isCompatible(left.type)) {\n result = left.value.length <= right.value.length;\n } else {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.lte(rightValue);\n }\n return new StoreObject(resultType, result);\n }\n case Operators.EQ.ord: {\n let leftValue = left.value;\n let rightValue = right.value;\n if (Types.INTEGER.isCompatible(left.type) || Types.REAL.isCompatible(left.type)) {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.eq(rightValue);\n } else {\n result = left.value === right.value;\n }\n return new StoreObject(resultType, result);\n }\n case Operators.NEQ.ord: {\n let leftValue = left.value;\n let rightValue = right.value;\n if (Types.INTEGER.isCompatible(left.type) || Types.REAL.isCompatible(left.type)) {\n if (shouldImplicitCast) {\n resultType = Types.BOOLEAN;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = !leftValue.eq(rightValue);\n } else {\n result = left.value !== right.value;\n }\n return new StoreObject(resultType, result);\n }\n case Operators.AND.ord:\n return new StoreObject(resultType, left.value && right.value);\n case Operators.OR.ord:\n return new StoreObject(resultType, left.value || right.value);\n default:\n return Promise.reject(new RuntimeError('!!!Critical Invalid InfixApp '+ infixApp.op));\n }\n });\n }\n\n parseStoreObjectValue (vl) {\n let realValue = vl;\n if(vl instanceof StoreObjectArrayAddress) { \n if(vl.type instanceof CompoundType) {\n switch(vl.type.dimensions) {\n case 1: {\n realValue = new StoreObjectArray(vl.type, vl.value);\n break;\n }\n default: {\n throw new RuntimeError(\"Three dimensional array address...\");\n }\n }\n } else {\n realValue = new StoreObject(vl.type, vl.value);\n }\n }\n return realValue;\n }\n\n}","import { StoreObject } from '../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toInt } from \"./../../typeSystem/parsers\";\nimport { CompoundType } from '../../typeSystem/compoundType';\nimport { Modes } from '../modes';\n\n/**\n * num_elements\n * matrix_lines\n * matrix_columns\n */\n\nexport function createNumElementsFun () {\n const numElementsFun = (sto, _) => {\n const vector = sto.applyStore(\"vector\");\n const temp = new StoreObject(Types.INTEGER, toInt(vector.lines));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(numElementsFun)]);\n const func = new Commands.Function('$numElements', Types.INTEGER,\n [new Commands.FormalParameter(new CompoundType(Types.ALL, 1), 'vector', false)],\n block);\n return func;\n }\n\nexport function createMatrixLinesFun () {\n const matrixLinesFun = (sto, _) => {\n const matrix = sto.applyStore(\"matrix\");\n const temp = new StoreObject(Types.INTEGER, toInt(matrix.lines));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(matrixLinesFun)]);\n const func = new Commands.Function('$matrixLines', Types.INTEGER,\n [new Commands.FormalParameter(new CompoundType(Types.ALL, 2), 'matrix', false)],\n block);\n return func;\n }\n\nexport function createMatrixColumnsFun () {\n const matrixColumnsFun = (sto, _) => {\n const matrix = sto.applyStore(\"matrix\");\n const temp = new StoreObject(Types.INTEGER, toInt(matrix.columns));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(matrixColumnsFun)]);\n const func = new Commands.Function('$matrixColumns', Types.INTEGER,\n [new Commands.FormalParameter(new CompoundType(Types.ALL, 2), 'matrix', false)],\n block);\n return func;\n }\n ","import { StoreObject } from './../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport {toInt, toString, toBool, toReal, convertToString} from './../../typeSystem/parsers';\nimport { Types } from './../../typeSystem/types';\n\nexport function createOutputFun () {\n const writeFunction = function (store, _) {\n const val = store.applyStore('p1');\n this.output.sendOutput(convertToString(val.value, val.type));\n return Promise.resolve(store);\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(writeFunction)]);\n const func = new Commands.Function('$write', Types.VOID,\n [new Commands.FormalParameter(Types.ALL, 'p1', false)],\n block);\n return func;\n}\n\nexport function createInputFun () {\n const readFunction = function (store, _) {\n const request = new Promise((resolve, _) => {\n this.input.requestInput(resolve);\n });\n return request.then(text => {\n const typeToConvert = store.applyStore('p1').type;\n let stoObj = null;\n if (typeToConvert.isCompatible(Types.INTEGER)) {\n const val = toInt(text);\n stoObj = new StoreObject(Types.INTEGER, val.trunc());\n } else if (typeToConvert.isCompatible(Types.REAL)) {\n stoObj = new StoreObject(Types.REAL, toReal(text));\n } else if (typeToConvert.isCompatible(Types.BOOLEAN)) {\n stoObj = new StoreObject(Types.BOOLEAN, toBool(text));\n } else if (typeToConvert.isCompatible(Types.STRING)) {\n stoObj = new StoreObject(Types.STRING, toString(text));\n }\n this.loopTimers.splice(0,this.loopTimers.length)\n store.updateStore('p1', stoObj);\n return Promise.resolve(store);\n });\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(readFunction)]);\n const func = new Commands.Function('$read', Types.VOID,\n [new Commands.FormalParameter(Types.ALL, 'p1', true)],\n block);\n return func;\n}","import { StoreObject } from '../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toReal, convertToString } from \"./../../typeSystem/parsers\";\nimport { IVProgParser } from '../../ast/ivprogParser';\nimport { RealLiteral, IntLiteral, BoolLiteral } from '../../ast/expressions';\nimport { Modes } from '../modes';\nimport { MultiType } from '../../typeSystem/multiType';\nimport { ProcessorErrorFactory } from '../error/processorErrorFactory';\n\n/**\n * \n * is_real\n * is_int\n * is_bool\n * cast_real\n * cast_int\n * cast_bool\n * cast_string\n */\n\nexport function createIsRealFun () {\n const isRealFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.value);\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof RealLiteral) {\n result = true;\n }\n } catch (error) { }\n const temp = new StoreObject(Types.BOOLEAN, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(isRealFun)]);\n const func = new Commands.Function('$isReal', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createIsIntFun () {\n const isIntFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.value);\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof IntLiteral) {\n result = true;\n }\n } catch (error) { }\n const temp = new StoreObject(Types.BOOLEAN, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(isIntFun)]);\n const func = new Commands.Function('$isInt', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createIsBoolFun () {\n const isBoolFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.value);\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof BoolLiteral) {\n result = true;\n }\n } catch (error) { }\n const temp = new StoreObject(Types.BOOLEAN, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(isBoolFun)]);\n const func = new Commands.Function('$isBool', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createCastRealFun () {\n const castRealFun = (sto, _) => {\n const val = sto.applyStore(\"val\");\n let value = val.value;\n switch (val.type.ord) {\n case Types.INTEGER.ord: {\n value = value.toNumber();\n const temp = new StoreObject(Types.REAL, toReal(value));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n case Types.STRING.ord: {\n const parser = IVProgParser.createParser(value);\n try {\n const result = parser.parseTerm();\n if (result instanceof RealLiteral) {\n const temp = new StoreObject(Types.REAL, result.value);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n } catch (error) { }\n }\n }\n const typeStringInfoArray = Types.REAL.stringInfo();\n const typeInfo = typeStringInfoArray[0];\n return Promise.reject(ProcessorErrorFactory.invalid_type_conversion(value, typeInfo.type, typeInfo.dim));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castRealFun)]);\n const func = new Commands.Function('$castReal', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.STRING]), 'val', false)],\n block);\n return func;\n}\n\nexport function createCastIntFun () {\n const castIntFun = (sto, _) => {\n const val = sto.applyStore(\"val\");\n let value = val.value;\n switch (val.type.ord) {\n case Types.REAL.ord: {\n value = value.toNumber();\n const temp = new StoreObject(Types.INTEGER, Math.floor(value));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n case Types.STRING.ord: {\n const parser = IVProgParser.createParser(value);\n try {\n const result = parser.parseTerm();\n if (result instanceof IntLiteral) {\n const temp = new StoreObject(Types.INTEGER, result.value);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n } catch (error) { }\n }\n }\n const typeStringInfoArray = Types.INTEGER.stringInfo();\n const typeInfo = typeStringInfoArray[0];\n return Promise.reject(ProcessorErrorFactory.invalid_type_conversion(value, typeInfo.type, typeInfo.dim));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castIntFun)]);\n const func = new Commands.Function('$castInt', Types.INTEGER,\n [new Commands.FormalParameter(new MultiType([Types.REAL, Types.STRING]), 'val', false)],\n block);\n return func;\n}\n\nexport function createCastBoolFun () {\n const castBoolFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n let value = str.value; \n const parser = IVProgParser.createParser(value);\n try {\n const val = parser.parseTerm();\n if (val instanceof BoolLiteral) {\n const temp = new StoreObject(Types.BOOLEAN, val.value);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n } catch (error) { }\n const typeStringInfoArray = Types.BOOLEAN.stringInfo();\n const typeInfo = typeStringInfoArray[0];\n return Promise.reject(ProcessorErrorFactory.invalid_type_conversion(value, typeInfo.type, typeInfo.dim));\n }\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castBoolFun)]);\n const func = new Commands.Function('$castBool', Types.BOOLEAN,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createCastStringFun () {\n const castStringFun = function (store, _) {\n const val = store.applyStore('str');\n let result = convertToString(val)\n const temp = new StoreObject(Types.STRING, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castStringFun)]);\n const func = new Commands.Function('$castString', Types.STRING,\n [new Commands.FormalParameter(Types.ALL, 'str', false)],\n block);\n return func;\n}","import { StoreObject } from '../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toReal } from \"./../../typeSystem/parsers\";\nimport { Decimal } from 'decimal.js';\nimport { MultiType } from '../../typeSystem/multiType';\nimport { CompoundType } from '../../typeSystem/compoundType';\nimport { Modes } from '../modes';\nimport { Config } from '../../util/config';\n\n/**\n * sin\n * cos\n * tan\n * sqrt\n * pow\n * log\n * abs\n * negate\n * invert\n * max\n * min\n */\n\nfunction convertToRadians (degrees) {\n return degrees.times(Decimal.acos(-1)).div(180);\n}\n\nexport function createSinFun () {\n const sinFun = (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.value.mod(360);\n let result = null;\n if(angle.eq(90)) {\n result = new Decimal(1);\n } else if (angle.eq(180)) {\n result = new Decimal(0);\n } else if (angle.eq(270)) {\n result = new Decimal(-1);\n } else {\n result = Decimal.sin(convertToRadians(angle));\n }\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(sinFun)]);\n const func = new Commands.Function('$sin', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createCosFun () {\n const cosFun = (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.value.mod(360);\n let result = null;\n if(angle.eq(90)) {\n result = new Decimal(0);\n } else if (angle.eq(180)) {\n result = new Decimal(-1);\n } else if (angle.eq(270)) {\n result = new Decimal(0)\n }\n result = Decimal.cos(convertToRadians(angle));\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(cosFun)]);\n const func = new Commands.Function('$cos', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createTanFun () {\n const tanFun = (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.value.mod(360);\n if(angle.eq(90) || angle.eq(270)) {\n return Promise.reject(\"Tangent of \"+x.value.toNumber()+\"° is undefined.\");\n }\n let result = Decimal.tan(convertToRadians(angle));\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(tanFun)]);\n const func = new Commands.Function('$tan', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createSqrtFun () {\n const sqrtFun = (sto, _) => {\n const x = sto.applyStore('x');\n let result = x.value.sqrt();\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(sqrtFun)]);\n const func = new Commands.Function('$sqrt', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createPowFun () {\n const powFun = (sto, _) => {\n const x = sto.applyStore('x');\n const y = sto.applyStore('y');\n let result = x.value.pow(y.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(powFun)]);\n const func = new Commands.Function('$pow', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false),\n new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'y', false)],\n block);\n return func;\n}\n\nexport function createLogFun () {\n const logFun = (sto, _) => {\n const x = sto.applyStore('x');\n if (x.value.isNegative()) {\n return Promise.reject(\"the value passed to log function cannot be negative\");\n }\n let result = Decimal.log10(x.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(logFun)]);\n const func = new Commands.Function('$log', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createAbsFun () {\n const absFun = (sto, _) => {\n const x = sto.applyStore('x');\n const result = x.value.abs();\n const temp = new StoreObject(x.type, result);\n sto.updateStore('$', temp)\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto);\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(absFun)]);\n const func = new Commands.Function('$abs', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createNegateFun () {\n const negateFun = (sto, _) => {\n const x = sto.applyStore('x');\n const result = x.value.negated();\n const temp = new StoreObject(x.type, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(negateFun)]);\n const func = new Commands.Function('$negate', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createInvertFun () {\n const invertFun = (sto, _) => {\n const x = sto.applyStore('x');\n let result = toReal(1).dividedBy(x.value);\n if(result.dp() > Config.decimalPlaces) {\n result = new Decimal(result.toFixed(Config.decimalPlaces));\n }\n const temp = new StoreObject(Types.REAL, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(invertFun)]);\n const func = new Commands.Function('$invert', Types.REAL,\n [new Commands.FormalParameter(new MultiType([Types.INTEGER, Types.REAL]), 'x', false)],\n block);\n return func;\n}\n\nexport function createMaxFun () {\n const maxFun = (sto, _) => {\n const x = sto.applyStore('x');\n const numbers = x.value.map(stoObj => stoObj.value);\n const result = Decimal.max(...numbers);\n const temp = new StoreObject(x.type.innerType, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n const paramType = new CompoundType(new MultiType([Types.INTEGER, Types.REAL]), 1);\n const block = new Commands.CommandBlock([], [new Commands.SysCall(maxFun)]);\n const func = new Commands.Function('$max', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(paramType, 'x', false)],\n block);\n return func;\n}\n\nexport function createMinFun () {\n const minFun = (sto, _) => {\n const x = sto.applyStore('x');\n const numbers = x.value.map(stoObj => stoObj.value);\n const result = Decimal.min(...numbers);\n const temp = new StoreObject(x.type.innerType, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore('$', temp));\n };\n const paramType = new CompoundType(new MultiType([Types.INTEGER, Types.REAL]), 1);\n const block = new Commands.CommandBlock([], [new Commands.SysCall(minFun)]);\n const func = new Commands.Function('$min', new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(paramType, 'x', false)],\n block);\n return func;\n}\n","import { StoreObject } from '../store/storeObject';\nimport * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toInt } from \"./../../typeSystem/parsers\";\nimport { Modes } from '../modes';\n\n/*\n* substring\n* length\n* uppercase\n* lowercase\n* charAt\n**/\n\nexport function createSubstringFun () {\n const substringFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const start = sto.applyStore(\"start\");\n const end = sto.applyStore(\"end\");\n const result = str.value.substring(start.value, end.value);\n const temp = new StoreObject(Types.STRING, result);\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(substringFun)]);\n const func = new Commands.Function('$substring', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false),\n new Commands.FormalParameter(Types.INTEGER, 'start', false),\n new Commands.FormalParameter(Types.INTEGER, 'end', false)],\n block);\n return func;\n}\n\nexport function createLengthFun () {\n const lengthFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreObject(Types.INTEGER, toInt(str.value.length));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(lengthFun)]);\n const func = new Commands.Function('$length', Types.INTEGER,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createUppercaseFun () {\n const uppercaseFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreObject(Types.STRING, str.value.toUpperCase());\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(uppercaseFun)]);\n const func = new Commands.Function('$uppercase', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createLowercaseFun () {\n const lowercaseFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreObject(Types.STRING, str.value.toLowerCase());\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(lowercaseFun)]);\n const func = new Commands.Function('$lowercase', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false)],\n block);\n return func;\n}\n\nexport function createrCharAtFun () {\n const charAtFun = (sto, _) => {\n const str = sto.applyStore(\"str\");\n const idx = sto.applyStore(\"index\");\n if (idx.value.toNumber() < 0 || idx.value.toNumber() >= str.value.length) {\n return Promise.reject(new Error(\"invalid string position\"));\n }\n const temp = new StoreObject(Types.STRING, str.value.charAt(idx.value.toNumber()));\n sto.mode = Modes.RETURN;\n return Promise.resolve(sto.updateStore(\"$\", temp));\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(charAtFun)]);\n const func = new Commands.Function('$charAt', Types.STRING,\n [new Commands.FormalParameter(Types.STRING, 'str', false),\n new Commands.FormalParameter(Types.INTEGER, 'index', false)],\n block);\n return func;\n}\n","export const Modes = Object.freeze({\n RETURN: Symbol('mode:return'),\n BREAK: Symbol('mode:break'),\n PAUSE: Symbol('mode:pause'),\n RUN: Symbol('mode:run')\n});","import { ProcessorErrorFactory } from './../error/processorErrorFactory';\nimport { LanguageDefinedFunction } from './../definedFunctions';\nimport { LanguageService } from './../../services/languageService';\nimport { ArrayDeclaration, While, For, Switch, Assign, Break, IfThenElse, Return, ArrayIndexAssign } from '../../ast/commands';\nimport { InfixApp, UnaryApp, FunctionCall, IntLiteral, RealLiteral, StringLiteral, BoolLiteral, VariableLiteral, ArrayLiteral, ArrayAccess } from '../../ast/expressions';\nimport { Literal } from '../../ast/expressions/literal';\nimport { resultTypeAfterInfixOp, resultTypeAfterUnaryOp } from '../compatibilityTable';\nimport { Types } from '../../typeSystem/types';\nimport { CompoundType } from '../../typeSystem/compoundType';\nimport { MultiType } from '../../typeSystem/multiType';\nimport { Config } from '../../util/config';\nimport { Store } from '../store/store';\n\nexport class SemanticAnalyser {\n\n constructor(ast) {\n this.ast = ast;\n this.lexerClass = LanguageService.getCurrentLexer();\n const lexer = new this.lexerClass(null);\n this.literalNames = lexer.literalNames;\n this.symbolMap = null;\n this.currentFunction = null;\n }\n\n pushMap () {\n if(this.symbolMap === null) {\n this.symbolMap = {map:{}, next: null};\n } else {\n const n = {map:{}, next: this.symbolMap};\n this.symbolMap = n;\n }\n }\n\n popMap () {\n if(this.symbolMap !== null) {\n this.symbolMap = this.symbolMap.next;\n }\n }\n\n insertSymbol (id, typeInfo) {\n this.symbolMap.map[id] = typeInfo;\n }\n\n findSymbol (id, symMap) {\n if(!symMap.map[id]) {\n if(symMap.next) {\n return this.findSymbol(id, symMap.next);\n }\n return null;\n } else {\n return symMap.map[id];\n }\n }\n\n getMainFunction () {\n return this.ast.functions.find(v => v.isMain);\n }\n\n findFunction (name) {\n if(name.match(/^\\$.+$/)) {\n const fun = LanguageDefinedFunction.getFunction(name);\n if(!!!fun) {\n throw ProcessorErrorFactory.not_implemented(name);\n }\n return fun;\n } else {\n const val = this.ast.functions.find( v => v.name === name);\n if (!!!val) {\n return null;\n }\n return val;\n }\n }\n\n analyseTree () {\n const globalVars = this.ast.global;\n this.pushMap();\n this.assertDeclarations(globalVars);\n const functions = this.ast.functions;\n const mainFunc = functions.filter((f) => f.name === null);\n if (mainFunc.length <= 0) {\n throw ProcessorErrorFactory.main_missing();\n }\n for (let i = 0; i < functions.length; i++) {\n const fun = functions[i];\n this.assertFunction(fun);\n }\n return this.ast;\n }\n\n assertDeclarations (list) {\n for (let i = 0; i < list.length; i++) {\n this.assertDeclaration(list[i]);\n }\n }\n\n assertDeclaration (declaration) {\n if (declaration instanceof ArrayDeclaration) {\n if(declaration.initial === null) {\n const lineType = this.evaluateExpressionType(declaration.lines);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(declaration.sourceInfo);\n }\n if (declaration.columns !== null) {\n const columnType = this.evaluateExpressionType(declaration.columns);\n if (!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(declaration.sourceInfo);\n }\n }\n this.insertSymbol(declaration.id, {id: declaration.id, lines: declaration.lines, columns: declaration.columns, type: declaration.type});\n return;\n }\n this.evaluateArrayLiteral(declaration.id, declaration.lines, declaration.columns, declaration.type, declaration.initial);\n this.insertSymbol(declaration.id, {id: declaration.id, lines: declaration.lines, columns: declaration.columns, type: declaration.type});\n\n } else {\n if(declaration.initial === null) {\n this.insertSymbol(declaration.id, {id: declaration.id, type: declaration.type});\n return;\n }\n const resultType = this.evaluateExpressionType(declaration.initial);\n if(resultType instanceof MultiType) {\n if(!resultType.isCompatible(declaration.type)) {\n const stringInfo = declaration.type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, declaration.sourceInfo);\n }\n this.insertSymbol(declaration.id, {id: declaration.id, type: declaration.type})\n } else if((!declaration.type.isCompatible(resultType) && !Config.enable_type_casting)\n || (!declaration.type.isCompatible(resultType) && Config.enable_type_casting\n && !Store.canImplicitTypeCast(declaration.type, resultType))) {\n const stringInfo = declaration.type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, declaration.sourceInfo);\n } else {\n this.insertSymbol(declaration.id, {id: declaration.id, type: declaration.type});\n }\n }\n }\n\n evaluateExpressionType (expression) {\n if(expression instanceof UnaryApp) {\n const op = expression.op;\n const resultType = this.evaluateExpressionType(expression.left);\n return resultTypeAfterUnaryOp(op, resultType);\n } else if (expression instanceof InfixApp) {\n const op = expression.op;\n const resultTypeLeft = this.evaluateExpressionType(expression.left);\n const resultTypeRight = this.evaluateExpressionType(expression.right);\n return resultTypeAfterInfixOp(op, resultTypeLeft, resultTypeRight);\n } else if (expression instanceof Literal) {\n return this.evaluateLiteralType(expression);\n } else if (expression instanceof FunctionCall) {\n if (expression.isMainCall) {\n throw ProcessorErrorFactory.void_in_expression_full(LanguageDefinedFunction.getMainFunctionName(), expression.sourceInfo);\n }\n const fun = this.findFunction(expression.id);\n if(fun === null) {\n throw ProcessorErrorFactory.function_missing_full(expression.id, expression.sourceInfo);\n }\n if (fun.returnType.isCompatible(Types.VOID)) {\n throw ProcessorErrorFactory.void_in_expression_full(expression.id, expression.sourceInfo);\n }\n this.assertParameters(fun, expression.actualParameters);\n return fun.returnType;\n } else if (expression instanceof ArrayAccess) {\n const arrayTypeInfo = this.findSymbol(expression.id, this.symbolMap);\n if(arrayTypeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(expression.id, expression.sourceInfo);\n }\n if (!(arrayTypeInfo.type instanceof CompoundType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(expression.id, expression.sourceInfo);\n }\n const lineType = this.evaluateExpressionType(expression.line);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(expression.sourceInfo);\n }\n if (expression.column !== null) {\n if (arrayTypeInfo.columns === null) {\n throw ProcessorErrorFactory.invalid_matrix_access_full(expression.id, expression.sourceInfo);\n }\n const columnType = this.evaluateExpressionType(expression.column);\n if(!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(expression.sourceInfo);\n }\n }\n const arrType = arrayTypeInfo.type;\n if(expression.column !== null) {\n // indexing matrix\n return arrType.innerType;\n } else {\n if(arrayTypeInfo.columns === null) {\n return arrType.innerType;\n }\n return new CompoundType(arrType.innerType, 1);\n }\n }\n }\n\n evaluateLiteralType (literal) {\n if(literal instanceof IntLiteral) {\n return literal.type;\n } else if (literal instanceof RealLiteral) {\n return literal.type;\n } else if (literal instanceof StringLiteral) {\n return literal.type;\n } else if (literal instanceof BoolLiteral) {\n return literal.type;\n } else if (literal instanceof VariableLiteral) {\n const typeInfo = this.findSymbol(literal.id, this.symbolMap);\n if(typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(literal.id, literal.sourceInfo);\n }\n if (typeInfo.type instanceof CompoundType) {\n return typeInfo.type;\n }\n return typeInfo.type;\n } else {\n console.warn(\"Evaluating type only for an array literal...\");\n let last = null;\n if(literal.value.length === 1) {\n last = this.evaluateExpressionType(literal.value[0]);\n } else {\n for (let i = 0; i < literal.value.length; i++) {\n const e = this.evaluateExpressionType(literal.value[i]);\n if(last === null) {\n last = e;\n } else if(!last.isCompatible(e)) {\n const strInfo = last.stringInfo();\n const info = strInfo[0];\n const strExp = literal.toString();\n throw ProcessorErrorFactory.incompatible_types_array_full(strExp,info.type, info.dim, literal.sourceInfo);\n }\n }\n }\n if(last instanceof CompoundType) {\n return new CompoundType(last.innerType, last.dimensions + 1);\n }\n return new CompoundType(last, 1);\n }\n }\n\n evaluateArrayLiteral (id, lines, columns, type, literal) {\n /* if (literal instanceof ArrayLiteral) {\n const dimType = this.evaluateExpressionType(lines);\n if (!dimType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(literal.sourceInfo);\n }\n if ((lines instanceof IntLiteral)) {\n if (!lines.value.eq(literal.value.length)) {\n if(type.dimensions > 1) {\n throw ProcessorErrorFactory.matrix_line_outbounds_full(id, literal.value.length, lines.value.toNumber(), literal.sourceInfo)\n } else {\n throw ProcessorErrorFactory.vector_line_outbounds_full(id, literal.value.length, lines.value.toNumber(), literal.sourceInfo)\n }\n } else if (lines.value.isNeg()) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(literal.sourceInfo);\n }\n }\n if (columns === null) {\n // it's a vector...\n literal.value.reduce((last, next) => {\n const eType = this.evaluateExpressionType(next);\n if (!last.canAccept(eType)) {\n const strInfo = last.stringInfo();\n const info = strInfo[0];\n const strExp = literal.toString();\n throw ProcessorErrorFactory.incompatible_types_array_full(strExp,info.type, info.dim, literal.sourceInfo);\n }\n return last;\n }, type);\n return true;\n } else {\n const dimType = this.evaluateExpressionType(columns);\n if (!dimType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(literal.sourceInfo);\n }\n if ((columns instanceof IntLiteral)) {\n const columnValue = literal.value[0].value.length;\n if (!columns.value.eq(columnValue)) {\n if(type.dimensions > 1) {\n throw ProcessorErrorFactory.matrix_column_outbounds_full(id, literal.value.length, columns.value.toNumber(), literal.sourceInfo)\n } else {\n throw ProcessorErrorFactory.invalid_matrix_access_full(id, literal.sourceInfo);\n }\n } else if (columns.value.isNeg()) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(literal.sourceInfo);\n }\n for (let i = 0; i < columns; i++) {\n const anotherArray = literal.value[i];\n this.evaluateArrayLiteral(id, columns, null, type, anotherArray)\n }\n }\n }\n\n } else {\n\n const resultType = this.evaluateExpressionType(literal);\n if (!(resultType instanceof CompoundType)) {\n const strInfo = type.stringInfo();\n const info = strInfo[0];\n const strExp = literal.toString();\n throw ProcessorErrorFactory.incompatible_types_array_full(strExp,info.type, info.dim, literal.sourceInfo);\n }\n if (!type.isCompatible(resultType)) {\n const strInfo = type.stringInfo();\n const info = strInfo[0];\n const strExp = literal.toString();\n throw ProcessorErrorFactory.incompatible_types_array_full(strExp,info.type, info.dim, literal.sourceInfo);\n }\n return true;\n } */\n return true;\n }\n\n assertFunction (fun) {\n this.pushMap();\n this.currentFunction = fun;\n fun.formalParameters.forEach(formalParam => {\n if(formalParam.type instanceof CompoundType) {\n if(formalParam.type.dimensions > 1) {\n this.insertSymbol(formalParam.id, {id: formalParam.id, lines: -1, columns: -1, type: formalParam.type});\n } else {\n this.insertSymbol(formalParam.id, {id: formalParam.id, lines: -1, columns: null, type: formalParam.type});\n }\n } else {\n this.insertSymbol(formalParam.id, {id: formalParam.id, type: formalParam.type});\n }\n })\n this.assertDeclarations(fun.variablesDeclarations);\n const optional = fun.returnType.isCompatible(Types.VOID);\n const valid = this.assertReturn(fun, optional);\n if (!valid) {\n throw ProcessorErrorFactory.function_no_return(fun.name);\n }\n this.popMap();\n }\n\n assertReturn (fun, optional) {\n return fun.commands.reduce(\n (last, next) => this.checkCommand(fun.returnType, next, optional) || last, optional\n );\n }\n\n checkCommand (type, cmd, optional) {\n if (cmd instanceof While) {\n const resultType = this.evaluateExpressionType(cmd.expression);\n if (!resultType.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.loop_condition_type_full(cmd.expression.toString(), cmd.sourceInfo);\n }\n this.checkCommands(type, cmd.commands, optional);\n return false;\n } else if (cmd instanceof For) {\n this.checkCommand(type, cmd.assignment, optional);\n const resultType = this.evaluateExpressionType(cmd.condition);\n if (!resultType.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.for_condition_type_full(cmd.condition.toString(), cmd.sourceInfo);\n }\n this.checkCommand(type, cmd.increment, optional);\n this.checkCommands(type, cmd.commands, optional);\n return false;\n } else if (cmd instanceof Switch) {\n const sType = this.evaluateExpressionType(cmd.expression);\n let result = optional;\n let hasDefault = false;\n for (let i = 0; i < cmd.cases.length; i++) {\n const aCase = cmd.cases[i];\n if (aCase.expression !== null) {\n const caseType = this.evaluateExpressionType(aCase.expression);\n if (!sType.isCompatible(caseType)) {\n const strInfo = sType.stringInfo();\n const info = strInfo[0];\n const strExp = aCase.expression.toString();\n throw ProcessorErrorFactory.invalid_case_type_full(strExp, info.type, info.dim, aCase.sourceInfo);\n }\n } else {\n hasDefault = true;\n }\n result = result && this.checkCommands(type, aCase.commands, result); \n }\n return result && hasDefault;\n\n } else if (cmd instanceof ArrayIndexAssign) {\n const typeInfo = this.findSymbol(cmd.id, this.symbolMap);\n if(typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(cmd.id, cmd.sourceInfo);\n }\n if(!(typeInfo.type instanceof CompoundType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(cmd.id, cmd.sourceInfo);\n }\n const exp = cmd.expression;\n const lineExp = cmd.line;\n const lineType = this.evaluateExpressionType(lineExp);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo);\n }\n const columnExp = cmd.column;\n if (typeInfo.columns === null && columnExp !== null) {\n throw ProcessorErrorFactory.invalid_matrix_access_full(cmd.id, cmd.sourceInfo);\n } else if (columnExp !== null) {\n const columnType = this.evaluateExpressionType(columnExp);\n if (!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo);\n }\n }\n // exp can be a arrayLiteral, a single value exp or an array access\n if(exp instanceof ArrayLiteral) {\n this.evaluateArrayLiteral(cmd.id, typeInfo.lines, (columnExp ? typeInfo.columns : null), typeInfo.type, exp);\n } else {\n // cannot properly evaluate since type system is poorly constructed\n }\n return optional;\n } else if (cmd instanceof Assign) {\n const typeInfo = this.findSymbol(cmd.id, this.symbolMap);\n if(typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(cmd.id, cmd.sourceInfo);\n }\n const exp = cmd.expression;\n if(exp instanceof ArrayLiteral) {\n if(!(typeInfo.type instanceof CompoundType)) {\n const stringInfo = typeInfo.type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, cmd.sourceInfo);\n }\n this.evaluateArrayLiteral(cmd.id, typeInfo.lines, typeInfo.columns, typeInfo.type, exp);\n } else {\n const resultType = this.evaluateExpressionType(exp);\n if((!resultType.isCompatible(typeInfo.type) && !Config.enable_type_casting)\n || (!resultType.isCompatible(typeInfo.type) && Config.enable_type_casting\n && !Store.canImplicitTypeCast(typeInfo.type, resultType))) {\n const stringInfo = typeInfo.type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.incompatible_types_full(info.type, info.dim, cmd.sourceInfo);\n }\n }\n return optional;\n } else if (cmd instanceof Break) {\n return optional;\n } else if (cmd instanceof IfThenElse) {\n const resultType = this.evaluateExpressionType(cmd.condition);\n if (!resultType.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.if_condition_type_full(cmd.condition.toString(), cmd.sourceInfo);\n }\n if(cmd.ifFalse instanceof IfThenElse) {\n return this.checkCommands(type, cmd.ifTrue.commands, optional) && this.checkCommand(type, cmd.ifFalse, optional);\n } else {\n return this.checkCommands(type, cmd.ifTrue.commands, optional) && this.checkCommands(type, cmd.ifFalse.commands,optional);\n }\n\n } else if (cmd instanceof FunctionCall) {\n let fun = null;\n if (cmd.isMainCall) {\n fun = this.getMainFunction();\n } else {\n fun = this.findFunction(cmd.id);\n }\n if(fun === null) {\n throw ProcessorErrorFactory.function_missing_full(cmd.id, cmd.sourceInfo);\n }\n this.assertParameters(fun, cmd.actualParameters);\n return optional;\n } else if (cmd instanceof Return) {\n const funcName = this.currentFunction.isMain ? LanguageDefinedFunction.getMainFunctionName() : this.currentFunction.name\n if (cmd.expression === null && !type.isCompatible(Types.VOID)) {\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.invalid_void_return_full(funcName, info.type, info.dim, cmd.sourceInfo);\n } else if (cmd.expression !== null) {\n const resultType = this.evaluateExpressionType(cmd.expression);\n if (!type.isCompatible(resultType)) {\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.invalid_return_type_full(funcName, info.type, info.dim, cmd.sourceInfo);\n } else {\n return true;\n }\n } else {\n return true;\n }\n }\n }\n\n checkCommands (type, cmds, optional) {\n return cmds.reduce(\n (last, next) => this.checkCommand(type, next, optional) || last, optional\n );\n }\n\n assertParameters (fun, actualParametersList) {\n if (fun.formalParameters.length !== actualParametersList.length) {\n throw ProcessorErrorFactory.invalid_parameters_size_full(fun.name, actualParametersList.length, fun.formalParameters.length, null);\n }\n for (let i = 0; i < actualParametersList.length; i++) {\n const param = actualParametersList[i];\n const formalParam = fun.formalParameters[i];\n const id = formalParam.id;\n if(formalParam.byRef) {\n if (!(param instanceof VariableLiteral || param instanceof ArrayAccess)) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(id, param.toString(), param.sourceInfo);\n }\n }\n const resultType = this.evaluateExpressionType(param);\n if(resultType instanceof MultiType && formalParam.type instanceof MultiType) {\n let shared = 0\n for (let j = 0; j < resultType.types.length; j++) {\n const element = resultType.types[j];\n if(formalParam.type.types.indexOf(element) !== -1) {\n shared++;\n }\n }\n if(shared <= 0) {\n if(Config.enable_type_casting && !formalParam.byRef) {\n if(resultType.isCompatible(Types.INTEGER) || resultType.isCompatible(Types.REAL)) {\n if(formalParam.type.isCompatible(Types.INTEGER) || formalParam.type.isCompatible(Types.REAL)) {\n continue;\n }\n }\n }\n throw ProcessorErrorFactory.invalid_parameter_type_full(id, param.toString(), param.sourceInfo);\n }\n } else if (resultType instanceof MultiType) {\n if(!resultType.isCompatible(formalParam.type)) {\n if(Config.enable_type_casting && !formalParam.byRef) {\n if(resultType.isCompatible(Types.INTEGER) || resultType.isCompatible(Types.REAL)) {\n if(formalParam.type.isCompatible(Types.INTEGER) || formalParam.type.isCompatible(Types.REAL)) {\n continue;\n }\n }\n }\n throw ProcessorErrorFactory.invalid_parameter_type_full(id, param.toString(), param.sourceInfo);\n }\n } else if(!formalParam.type.isCompatible(resultType)) {\n if(Config.enable_type_casting && !formalParam.byRef) {\n if (Store.canImplicitTypeCast(formalParam.type, resultType)) {\n continue;\n }\n }\n throw ProcessorErrorFactory.invalid_parameter_type_full(id, param.toString(), param.sourceInfo);\n }\n\n }\n }\n}\n","import { Modes } from './../modes';\nimport { Types } from \"./../../typeSystem/types\";\nimport { StoreObject } from './storeObject';\n\nexport class Store {\n\n static canImplicitTypeCast (castType, sourceType) {\n if (castType.isCompatible(Types.INTEGER) || castType.isCompatible(Types.REAL)) {\n if (sourceType.isCompatible(Types.INTEGER) || sourceType.isCompatible(Types.REAL)) {\n return true;\n }\n }\n return false;\n }\n\n static doImplicitCasting (castType, stoObj) {\n if(!Store.canImplicitTypeCast(castType, stoObj.type)) {\n throw new Error(\"!!!Critical error: attempted to type cast invalid types\");\n }\n if(castType.isCompatible(Types.INTEGER)) {\n return new StoreObject(Types.INTEGER, stoObj.value.trunc());\n } else {\n return new StoreObject(Types.REAL, stoObj.value);\n }\n }\n\n constructor(name) {\n this.name = name;\n this.store = {};\n this.nextStore = null;\n this.mode = Modes.RUN; \n }\n\n extendStore (nextStore) {\n this.nextStore = nextStore;\n }\n\n applyStore (id) {\n if(!this.store[id]) {\n if (this.nextStore !== null) {\n return this.nextStore.applyStore(id);\n } else {\n throw new Error(`Variable ${id} not found.`);\n }\n }\n const val = this.store[id];\n if (val.isRef) {\n return val.getRefObj();\n }\n return this.store[id];\n }\n\n updateStore (id, stoObj) {\n if(!this.store[id]) {\n if(this.nextStore !== null) {\n this.nextStore.updateStore(id, stoObj);\n return this;\n } else {\n // TODO: better error message\n throw new Error(`Variable ${id} not found.`);\n }\n } else {\n const oldObj = this.store[id];\n if(oldObj.readOnly) {\n // TODO: better error message\n throw new Error(\"Cannot change value of a read only variable: \" + id);\n }\n if(oldObj.isRef) {\n oldObj.updateRef(stoObj);\n return this;\n } else if(oldObj.isCompatible(stoObj)) {\n stoObj.setID(id);\n this.store[id] = Object.freeze(stoObj);\n return this;\n } else {\n const oldType = oldObj.type;\n const stoType = stoObj.type;\n // TODO: better error message\n throw new Error(`${oldType} is not compatible with type ${stoType} given`);\n }\n }\n }\n\n //In case of future use of ref, it needs to have a special function to update the storeRefObject\n // and no the StoreObject refferenced by it\n // updateStoreRef(id, stoObjAddress) {...}\n\n insertStore (id, stoObj) {\n if (this.store[id]) {\n // TODO: better error message\n throw new Error(`${id} is already defined`);\n }\n stoObj.setID(id);\n this.store[id] = Object.freeze(stoObj);\n return this;\n }\n}","import Decimal from 'decimal.js';\n\nexport class StoreObject {\n\n constructor (type, value, readOnly = false) {\n this._type = type;\n this._value = value;\n this._readOnly = readOnly;\n this._id = null;\n }\n\n setID (id) {\n this._id = id;\n }\n\n get id () {\n return this._id;\n }\n\n get inStore () {\n return this.id !== null;\n }\n\n get type () {\n return this._type;\n }\n\n get value () {\n return this._value;\n }\n \n get number () {\n if (this._value instanceof Decimal) {\n return this._value.toNumber();\n } else {\n return null;\n }\n }\n\n get readOnly () {\n return this._readOnly;\n }\n\n set readOnly (value) {\n this._readOnly = value;\n }\n\n isCompatible (another) {\n if( another instanceof StoreObject) {\n return this.type.isCompatible(another.type);\n }\n return false;\n }\n}","import { StoreObject } from './storeObject';\n\nexport class StoreObjectArray extends StoreObject {\n\n static get WRONG_LINE_NUMBER () {\n return 1;\n }\n\n static get WRONG_TYPE () {\n return 2;\n }\n\n static get WRONG_COLUMN_NUMBER () {\n return 3;\n }\n\n constructor (type, lines, columns, value = null, readOnly = false) {\n super(type, value, readOnly);\n this._lines = lines;\n this._columns = columns;\n }\n\n get lines () {\n return this._lines;\n }\n\n get columns () {\n return this._columns;\n }\n\n isCompatible (another) {\n if(another instanceof StoreObject) {\n if(((this.lines === -1 && another.lines > 0) ||\n (this.lines === another.lines))) {\n if ((this.columns === -1 && another.columns > 0) ||\n (this.columns === another.columns)) {\n return super.isCompatible(another);\n }\n }\n }\n return false;\n }\n\n get isVector () {\n return this.type.dimensions === 1;\n }\n\n get isValid () {\n if (this.value !== null) {\n if( this.isVector) {\n if(this.value.length !== this.lines) {\n return [StoreObjectArray.WRONG_LINE_NUMBER, this.value.length];;\n }\n const mustBeNull = this.value.find(v => !this.type.canAccept(v.type) );\n if(!!mustBeNull) {\n return [StoreObjectArray.WRONG_TYPE, this.value.indexOf(mustBeNull)];;\n }\n }\n return [];\n } else {\n if(this.lines !== this.value.length) {\n return [StoreObjectArray.WRONG_LINE_NUMBER, this.value.length];\n }\n for (let i = 0; i < this.lines; i++) {\n for (let j = 0; j < this.columns; j++) {\n const arr = this.value[i];\n if(arr.length !== this.columns) {\n return [StoreObjectArray.WRONG_COLUMN_NUMBER, arr.length];\n }\n const mustBeNull = arr.find(v => !this.type.canAccept(v.type) );\n if(!!mustBeNull) {\n return [StoreObjectArray.WRONG_TYPE, i, arr.indexOf(mustBeNull)];\n } \n }\n }\n return [];\n }\n }\n}\n","import { StoreObject } from './storeObject';\nimport { StoreObjectArray } from './storeObjectArray';\nimport { CompoundType } from '../../typeSystem/compoundType';\nimport { ProcessorErrorFactory } from '../error/processorErrorFactory';\n\nexport class StoreObjectArrayAddress extends StoreObject {\n\n constructor (refID, line, column, store) {\n super(null, null, false);\n this.refID = refID;\n this.store = store;\n this.line = line;\n this.column = column;\n }\n\n get isRef () {\n return false;\n }\n\n get inStore () {\n return true;\n }\n\n get refValue () {\n const refLine = this.store.applyStore(this.refID).value[this.line];\n if(!refLine) {\n if(this.getArrayObject().isVector) {\n throw ProcessorErrorFactory.vector_line_outbounds(this.refID, this.line, this.getArrayObject().lines);\n } else {\n throw ProcessorErrorFactory.matrix_line_outbounds(this.refID, this.line, this.getArrayObject().lines);\n }\n }\n if (this.column !== null) {\n const refColumn = refLine.value[this.column];\n if(!refColumn) {\n if(this.getArrayObject().isVector) {\n throw ProcessorErrorFactory.vector_not_matrix(this.refID);\n } else {\n throw ProcessorErrorFactory.matrix_column_outbounds(this.refID, this.column, this.getArrayObject().columns);\n }\n }\n return refColumn;\n }\n return refLine;\n }\n\n get value () {\n return this.refValue.value;\n }\n\n get type () {\n return this.refValue.type;\n }\n\n get lines () {\n if(!(this.type instanceof CompoundType)) {\n return null;\n }\n return this.refValue.value.length;\n }\n\n get columns () {\n switch (this.type.dimensions) {\n case 2:\n return this.refValue.value[0].value.length;\n default:\n return null;\n }\n }\n\n getArrayObject () {\n return this.store.applyStore(this.refID);\n }\n\n updateArrayObject (stoObj) {\n const anArray = this.getArrayObject();\n const newArray = Object.assign(new StoreObjectArray(null,null,null), anArray);\n if(!stoObj.type.isCompatible(this.type)) {\n throw new Error(`Invalid operation: cannot assign the value given to ${this.refID}`);\n } else if (this.type instanceof CompoundType && this.type.canAccept(stoObj.type)) {\n throw new Error(`Invalid operation: cannot assign the value given to ${this.refID}`);\n }\n if (this.column !== null) {\n newArray.value[this.line].value[this.column] = stoObj;\n return newArray;\n } else {\n newArray.value[this.line] = stoObj;\n return newArray;\n }\n }\n\n isCompatible (another) {\n if(this.type.isCompatible(another.type)) {\n if(another.type instanceof CompoundType) {\n return this.lines === another.lines && this.columns === another.columns;\n } else {\n this.refValue.isCompatible(another);\n }\n }\n }\n}\n","import { StoreObject } from './storeObject';\nimport Decimal from 'decimal.js';\n\nexport class StoreObjectArrayAddressRef extends StoreObject {\n\n constructor (address) {\n super(null, null, false);\n this.address = address;\n }\n\n get isRef () {\n return true;\n }\n\n get type () {\n return this.address.type;\n }\n\n get value () {\n return this.address.value;\n }\n\n get number () {\n if (this.value instanceof Decimal) {\n return this.value.toNumber();\n } else {\n return null;\n }\n }\n\n getRefObj () {\n return this.address.refValue;\n }\n\n updateRef (stoObj) {\n const newArray = this.address.updateArrayObject(stoObj);\n this.address.store.updateStore(this.address.refID, newArray);\n }\n\n isCompatible (another) {\n return this.address.isCompatible(another);\n }\n}","import { StoreObject } from './storeObject';\nimport Decimal from 'decimal.js';\n\nexport class StoreObjectRef extends StoreObject {\n\n constructor (refID, store) {\n super(null, null, false);\n this.refID = refID;\n this.store = store;\n }\n\n get isRef () {\n return true;\n }\n\n get type () {\n return this.store.applyStore(this.refID).type;\n }\n\n get value () {\n return this.store.applyStore(this.refID).value;\n }\n\n get number () {\n if (this.value instanceof Decimal) {\n return this.value.toNumber();\n } else {\n return null;\n }\n }\n\n getRefObj () {\n return this.store.applyStore(this.refID);\n }\n\n updateRef (stoObj) {\n this.store.updateStore(this.refID, stoObj);\n }\n\n isCompatible (another) {\n return this.store.applyStore(this.refID).isCompatible(another);\n }\n}","import { IVProgParser } from './ast/ivprogParser';\nimport { IVProgProcessor } from './processor/ivprogProcessor';\nimport {DOMConsole} from './io/domConsole';\nimport { LanguageService } from './services/languageService';\nimport { SemanticAnalyser } from './processor/semantic/semanticAnalyser';\n\nexport function runner () {\nconst ivprogLexer = LanguageService.getCurrentLexer();\n\n\n// const lexer = new ivprogLexer(new InputStream(input));\n// const stream = new CommonTokenStream(lexer);\n// stream.fill();\n// let i = 1;\n// let token = null;\n// while ((token = stream.LT(i)).type !== ivprogLexer.EOF && token.type !== ivprogLexer.WHITESPACE) {\n// console.log(`${token.type}-${token.text}`);\n// console.log('\\n')\n// i++;\n// }\n// const anaSin = new IVProgParser(input, ivprogLexer);\nconst editor = new JsonEditor('#json-renderer', {});\nconst domConsole = new DOMConsole(\"#console\");\n// proc.interpretAST().then( sto => {\n// console.log(sto.applyStore('a'));\n// }).catch(e => console.log(e));\ntry {\n $('#btn').click( () => {\n const input = $('#input').val();\n const analiser = new IVProgParser(input, ivprogLexer);\n try {\n const data = analiser.parseTree();\n const semAna = new SemanticAnalyser(data);\n const proc = new IVProgProcessor(semAna.analyseTree());\n proc.registerInput(domConsole);\n domConsole.clear();\n proc.registerOutput(domConsole);\n proc.interpretAST().then(sto => editor.load(sto.store))\n .catch( e => {alert(e); console.log(e)});\n } catch (error) {\n alert(error);\n console.log(error);\n }\n \n });\n} catch(a) {\n console.log(a);\n}\n}\n"," /*\n * # Semantic UI - 2.3.3\n * https://github.com/Semantic-Org/Semantic-UI\n * http://www.semantic-ui.com/\n *\n * Copyright 2014 Contributors\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n!function(e,t,n,i){e.site=e.fn.site=function(o){var a,r,s=(new Date).getTime(),l=[],c=arguments[0],u=\"string\"==typeof c,d=[].slice.call(arguments,1),f=e.isPlainObject(o)?e.extend(!0,{},e.site.settings,o):e.extend({},e.site.settings),m=f.namespace,g=f.error,p=\"module-\"+m,h=e(n),v=this,b=h.data(p);return a={initialize:function(){a.instantiate()},instantiate:function(){a.verbose(\"Storing instance of site\",a),b=a,h.data(p,a)},normalize:function(){a.fix.console(),a.fix.requestAnimationFrame()},fix:{console:function(){a.debug(\"Normalizing window.console\"),console!==i&&console.log!==i||(a.verbose(\"Console not available, normalizing events\"),a.disable.console()),void 0!==console.group&&void 0!==console.groupEnd&&void 0!==console.groupCollapsed||(a.verbose(\"Console group not available, normalizing events\"),t.console.group=function(){},t.console.groupEnd=function(){},t.console.groupCollapsed=function(){}),void 0===console.markTimeline&&(a.verbose(\"Mark timeline not available, normalizing events\"),t.console.markTimeline=function(){})},consoleClear:function(){a.debug(\"Disabling programmatic console clearing\"),t.console.clear=function(){}},requestAnimationFrame:function(){a.debug(\"Normalizing requestAnimationFrame\"),t.requestAnimationFrame===i&&(a.debug(\"RequestAnimationFrame not available, normalizing event\"),t.requestAnimationFrame=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)})}},moduleExists:function(t){return e.fn[t]!==i&&e.fn[t].settings!==i},enabled:{modules:function(t){var n=[];return t=t||f.modules,e.each(t,function(e,t){a.moduleExists(t)&&n.push(t)}),n}},disabled:{modules:function(t){var n=[];return t=t||f.modules,e.each(t,function(e,t){a.moduleExists(t)||n.push(t)}),n}},change:{setting:function(t,n,o,r){o=\"string\"==typeof o?\"all\"===o?f.modules:[o]:o||f.modules,r=r===i||r,e.each(o,function(i,o){var s,l=!a.moduleExists(o)||(e.fn[o].settings.namespace||!1);a.moduleExists(o)&&(a.verbose(\"Changing default setting\",t,n,o),e.fn[o].settings[t]=n,r&&l&&(s=e(\":data(module-\"+l+\")\")).length>0&&(a.verbose(\"Modifying existing settings\",s),s[o](\"setting\",t,n)))})},settings:function(t,n,o){n=\"string\"==typeof n?[n]:n||f.modules,o=o===i||o,e.each(n,function(n,i){var r;a.moduleExists(i)&&(a.verbose(\"Changing default setting\",t,i),e.extend(!0,e.fn[i].settings,t),o&&m&&(r=e(\":data(module-\"+m+\")\")).length>0&&(a.verbose(\"Modifying existing settings\",r),r[i](\"setting\",t)))})}},enable:{console:function(){a.console(!0)},debug:function(e,t){e=e||f.modules,a.debug(\"Enabling debug for modules\",e),a.change.setting(\"debug\",!0,e,t)},verbose:function(e,t){e=e||f.modules,a.debug(\"Enabling verbose debug for modules\",e),a.change.setting(\"verbose\",!0,e,t)}},disable:{console:function(){a.console(!1)},debug:function(e,t){e=e||f.modules,a.debug(\"Disabling debug for modules\",e),a.change.setting(\"debug\",!1,e,t)},verbose:function(e,t){e=e||f.modules,a.debug(\"Disabling verbose debug for modules\",e),a.change.setting(\"verbose\",!1,e,t)}},console:function(e){if(e){if(b.cache.console===i)return void a.error(g.console);a.debug(\"Restoring console function\"),t.console=b.cache.console}else a.debug(\"Disabling console function\"),b.cache.console=t.console,t.console={clear:function(){},error:function(){},group:function(){},groupCollapsed:function(){},groupEnd:function(){},info:function(){},log:function(){},markTimeline:function(){},warn:function(){}}},destroy:function(){a.verbose(\"Destroying previous site for\",h),h.removeData(p)},cache:{},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,f,t);else{if(n===i)return f[t];f[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,a,t);else{if(n===i)return a[t];a[t]=n}},debug:function(){f.debug&&(f.performance?a.performance.log(arguments):(a.debug=Function.prototype.bind.call(console.info,console,f.name+\":\"),a.debug.apply(console,arguments)))},verbose:function(){f.verbose&&f.debug&&(f.performance?a.performance.log(arguments):(a.verbose=Function.prototype.bind.call(console.info,console,f.name+\":\"),a.verbose.apply(console,arguments)))},error:function(){a.error=Function.prototype.bind.call(console.error,console,f.name+\":\"),a.error.apply(console,arguments)},performance:{log:function(e){var t,n;f.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Element:v,Name:e[0],Arguments:[].slice.call(e,1)||\"\",\"Execution Time\":n})),clearTimeout(a.performance.timer),a.performance.timer=setTimeout(a.performance.display,500)},display:function(){var t=f.name+\":\",n=0;s=!1,clearTimeout(a.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,o){var s,l,c,u=b;return n=n||d,o=v||o,\"string\"==typeof t&&u!==i&&(t=t.split(/[\\. ]/),s=t.length-1,e.each(t,function(n,o){var r=n!=s?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(u[r])&&n!=s)u=u[r];else{if(u[r]!==i)return l=u[r],!1;if(!e.isPlainObject(u[o])||n==s)return u[o]!==i?(l=u[o],!1):(a.error(g.method,t),!1);u=u[o]}})),e.isFunction(l)?c=l.apply(o,n):l!==i&&(c=l),e.isArray(r)?r.push(c):r!==i?r=[r,c]:c!==i&&(r=c),l}},u?(b===i&&a.initialize(),a.invoke(c)):(b!==i&&a.destroy(),a.initialize()),r!==i?r:this},e.site.settings={name:\"Site\",namespace:\"site\",error:{console:\"Console cannot be restored, most likely it was overwritten outside of module\",method:\"The method you called is not defined.\"},debug:!1,verbose:!1,performance:!0,modules:[\"accordion\",\"api\",\"checkbox\",\"dimmer\",\"dropdown\",\"embed\",\"form\",\"modal\",\"nag\",\"popup\",\"rating\",\"shape\",\"sidebar\",\"state\",\"sticky\",\"tab\",\"transition\",\"visit\",\"visibility\"],siteNamespace:\"site\",namespaceStub:{cache:{},config:{},sections:{},section:{},utilities:{}}},e.extend(e.expr[\":\"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,i){return!!e.data(t,i[3])}})}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.form=function(t){var o,a=e(this),r=a.selector||\"\",s=(new Date).getTime(),l=[],c=arguments[0],u=arguments[1],d=\"string\"==typeof c,f=[].slice.call(arguments,1);return a.each(function(){var m,g,p,h,v,b,y,x,C,w,S,k,T,A,R,P,E=e(this),F=this,O=[],D=!1;(P={initialize:function(){P.get.settings(),d?(R===i&&P.instantiate(),P.invoke(c)):(R!==i&&R.invoke(\"destroy\"),P.verbose(\"Initializing form validation\",E,v),P.bindEvents(),P.set.defaults(),P.instantiate())},instantiate:function(){P.verbose(\"Storing instance of module\",P),R=P,E.data(T,P)},destroy:function(){P.verbose(\"Destroying previous module\",R),P.removeEvents(),E.removeData(T)},refresh:function(){P.verbose(\"Refreshing selector cache\"),m=E.find(x.field),g=E.find(x.group),p=E.find(x.message),E.find(x.prompt),h=E.find(x.submit),E.find(x.clear),E.find(x.reset)},submit:function(){P.verbose(\"Submitting form\",E),E.submit()},attachEvents:function(t,n){n=n||\"submit\",e(t).on(\"click\"+A,function(e){P[n](),e.preventDefault()})},bindEvents:function(){P.verbose(\"Attaching form events\"),E.on(\"submit\"+A,P.validate.form).on(\"blur\"+A,x.field,P.event.field.blur).on(\"click\"+A,x.submit,P.submit).on(\"click\"+A,x.reset,P.reset).on(\"click\"+A,x.clear,P.clear),v.keyboardShortcuts&&E.on(\"keydown\"+A,x.field,P.event.field.keydown),m.each(function(){var t=e(this),n=t.prop(\"type\"),i=P.get.changeEvent(n,t);e(this).on(i+A,P.event.field.change)})},clear:function(){m.each(function(){var t=e(this),n=t.parent(),i=t.closest(g),o=i.find(x.prompt),a=t.data(y.defaultValue)||\"\",r=n.is(x.uiCheckbox),s=n.is(x.uiDropdown);i.hasClass(C.error)&&(P.verbose(\"Resetting error on field\",i),i.removeClass(C.error),o.remove()),s?(P.verbose(\"Resetting dropdown value\",n,a),n.dropdown(\"clear\")):r?t.prop(\"checked\",!1):(P.verbose(\"Resetting field value\",t,a),t.val(\"\"))})},reset:function(){m.each(function(){var t=e(this),n=t.parent(),o=t.closest(g),a=o.find(x.prompt),r=t.data(y.defaultValue),s=n.is(x.uiCheckbox),l=n.is(x.uiDropdown),c=o.hasClass(C.error);r!==i&&(c&&(P.verbose(\"Resetting error on field\",o),o.removeClass(C.error),a.remove()),l?(P.verbose(\"Resetting dropdown value\",n,r),n.dropdown(\"restore defaults\")):s?(P.verbose(\"Resetting checkbox value\",n,r),t.prop(\"checked\",r)):(P.verbose(\"Resetting field value\",t,r),t.val(r)))})},determine:{isValid:function(){var t=!0;return e.each(b,function(e,n){P.validate.field(n,e,!0)||(t=!1)}),t}},is:{bracketedRule:function(e){return e.type&&e.type.match(v.regExp.bracket)},shorthandFields:function(e){var t=e[Object.keys(e)[0]];return P.is.shorthandRules(t)},shorthandRules:function(t){return\"string\"==typeof t||e.isArray(t)},empty:function(e){return!e||0===e.length||(e.is('input[type=\"checkbox\"]')?!e.is(\":checked\"):P.is.blank(e))},blank:function(t){return\"\"===e.trim(t.val())},valid:function(t){var n=!0;return t?(P.verbose(\"Checking if field is valid\",t),P.validate.field(b[t],t,!1)):(P.verbose(\"Checking if form is valid\"),e.each(b,function(e,t){P.is.valid(e)||(n=!1)}),n)}},removeEvents:function(){E.off(A),m.off(A),h.off(A),m.off(A)},event:{field:{keydown:function(t){var n=e(this),i=t.which,o=n.is(x.input),a=n.is(x.checkbox),r=n.closest(x.uiDropdown).length>0,s=13;i==27&&(P.verbose(\"Escape key pressed blurring field\"),n.blur()),t.ctrlKey||i!=s||!o||r||a||(D||(n.one(\"keyup\"+A,P.event.field.keyup),P.submit(),P.debug(\"Enter pressed on input submitting form\")),D=!0)},keyup:function(){D=!1},blur:function(t){var n=e(this),i=n.closest(g),o=P.get.validation(n);i.hasClass(C.error)?(P.debug(\"Revalidating field\",n,o),o&&P.validate.field(o)):\"blur\"==v.on&&o&&P.validate.field(o)},change:function(t){var n=e(this),i=n.closest(g),o=P.get.validation(n);o&&(\"change\"==v.on||i.hasClass(C.error)&&v.revalidate)&&(clearTimeout(P.timer),P.timer=setTimeout(function(){P.debug(\"Revalidating field\",n,P.get.validation(n)),P.validate.field(o)},v.delay))}}},get:{ancillaryValue:function(e){return!(!e.type||!e.value&&!P.is.bracketedRule(e))&&(e.value!==i?e.value:e.type.match(v.regExp.bracket)[1]+\"\")},ruleName:function(e){return P.is.bracketedRule(e)?e.type.replace(e.type.match(v.regExp.bracket)[0],\"\"):e.type},changeEvent:function(e,t){return\"checkbox\"==e||\"radio\"==e||\"hidden\"==e||t.is(\"select\")?\"change\":P.get.inputEvent()},inputEvent:function(){return n.createElement(\"input\").oninput!==i?\"input\":n.createElement(\"input\").onpropertychange!==i?\"propertychange\":\"keyup\"},fieldsFromShorthand:function(t){var n={};return e.each(t,function(t,i){\"string\"==typeof i&&(i=[i]),n[t]={rules:[]},e.each(i,function(e,i){n[t].rules.push({type:i})})}),n},prompt:function(t,n){var i,o,a=P.get.ruleName(t),r=P.get.ancillaryValue(t),s=P.get.field(n.identifier),l=s.val(),c=e.isFunction(t.prompt)?t.prompt(l):t.prompt||v.prompt[a]||v.text.unspecifiedRule,u=-1!==c.search(\"{value}\"),d=-1!==c.search(\"{name}\");return u&&(c=c.replace(\"{value}\",s.val())),d&&(o=1==(i=s.closest(x.group).find(\"label\").eq(0)).length?i.text():s.prop(\"placeholder\")||v.text.unspecifiedField,c=c.replace(\"{name}\",o)),c=(c=c.replace(\"{identifier}\",n.identifier)).replace(\"{ruleValue}\",r),t.prompt||P.verbose(\"Using default validation prompt for type\",c,a),c},settings:function(){if(e.isPlainObject(t)){var n=Object.keys(t);n.length>0&&(t[n[0]].identifier!==i&&t[n[0]].rules!==i)?(v=e.extend(!0,{},e.fn.form.settings,u),b=e.extend({},e.fn.form.settings.defaults,t),P.error(v.error.oldSyntax,F),P.verbose(\"Extending settings from legacy parameters\",b,v)):(t.fields&&P.is.shorthandFields(t.fields)&&(t.fields=P.get.fieldsFromShorthand(t.fields)),v=e.extend(!0,{},e.fn.form.settings,t),b=e.extend({},e.fn.form.settings.defaults,v.fields),P.verbose(\"Extending settings\",b,v))}else v=e.fn.form.settings,b=e.fn.form.settings.defaults,P.verbose(\"Using default form validation\",b,v);k=v.namespace,y=v.metadata,x=v.selector,C=v.className,w=v.regExp,S=v.error,T=\"module-\"+k,A=\".\"+k,R=E.data(T),P.refresh()},field:function(t){return P.verbose(\"Finding field with identifier\",t),t=P.escape.string(t),m.filter(\"#\"+t).length>0?m.filter(\"#\"+t):m.filter('[name=\"'+t+'\"]').length>0?m.filter('[name=\"'+t+'\"]'):m.filter('[name=\"'+t+'[]\"]').length>0?m.filter('[name=\"'+t+'[]\"]'):m.filter(\"[data-\"+y.validate+'=\"'+t+'\"]').length>0?m.filter(\"[data-\"+y.validate+'=\"'+t+'\"]'):e(\"<input/>\")},fields:function(t){var n=e();return e.each(t,function(e,t){n=n.add(P.get.field(t))}),n},validation:function(t){var n,i;return!!b&&(e.each(b,function(e,o){i=o.identifier||e,P.get.field(i)[0]==t[0]&&(o.identifier=i,n=o)}),n||!1)},value:function(e){var t=[];return t.push(e),P.get.values.call(F,t)[e]},values:function(t){var n={};return(e.isArray(t)?P.get.fields(t):m).each(function(t,o){var a=e(o),r=(a.prop(\"type\"),a.prop(\"name\")),s=a.val(),l=a.is(x.checkbox),c=a.is(x.radio),u=-1!==r.indexOf(\"[]\"),d=!!l&&a.is(\":checked\");r&&(u?(r=r.replace(\"[]\",\"\"),n[r]||(n[r]=[]),l?d?n[r].push(s||!0):n[r].push(!1):n[r].push(s)):c?n[r]!==i&&0!=n[r]||(n[r]=!!d&&(s||!0)):n[r]=l?!!d&&(s||!0):s)}),n}},has:{field:function(e){return P.verbose(\"Checking for existence of a field with identifier\",e),\"string\"!=typeof(e=P.escape.string(e))&&P.error(S.identifier,e),m.filter(\"#\"+e).length>0||(m.filter('[name=\"'+e+'\"]').length>0||m.filter(\"[data-\"+y.validate+'=\"'+e+'\"]').length>0)}},escape:{string:function(e){return(e=String(e)).replace(w.escape,\"\\\\$&\")}},add:{rule:function(e,t){P.add.field(e,t)},field:function(t,n){var i={};P.is.shorthandRules(n)?(n=e.isArray(n)?n:[n],i[t]={rules:[]},e.each(n,function(e,n){i[t].rules.push({type:n})})):i[t]=n,b=e.extend({},b,i),P.debug(\"Adding rules\",i,b)},fields:function(t){var n;n=t&&P.is.shorthandFields(t)?P.get.fieldsFromShorthand(t):t,b=e.extend({},b,n)},prompt:function(t,n){var o=P.get.field(t).closest(g),a=o.children(x.prompt),r=0!==a.length;n=\"string\"==typeof n?[n]:n,P.verbose(\"Adding field error state\",t),o.addClass(C.error),v.inline&&(r||(a=v.templates.prompt(n)).appendTo(o),a.html(n[0]),r?P.verbose(\"Inline errors are disabled, no inline error added\",t):v.transition&&e.fn.transition!==i&&E.transition(\"is supported\")?(P.verbose(\"Displaying error with css transition\",v.transition),a.transition(v.transition+\" in\",v.duration)):(P.verbose(\"Displaying error with fallback javascript animation\"),a.fadeIn(v.duration)))},errors:function(e){P.debug(\"Adding form error messages\",e),P.set.error(),p.html(v.templates.error(e))}},remove:{rule:function(t,n){var o=e.isArray(n)?n:[n];if(n==i)return P.debug(\"Removed all rules\"),void(b[t].rules=[]);b[t]!=i&&e.isArray(b[t].rules)&&e.each(b[t].rules,function(e,n){-1!==o.indexOf(n.type)&&(P.debug(\"Removed rule\",n.type),b[t].rules.splice(e,1))})},field:function(t){var n=e.isArray(t)?t:[t];e.each(n,function(e,t){P.remove.rule(t)})},rules:function(t,n){e.isArray(t)?e.each(fields,function(e,t){P.remove.rule(t,n)}):P.remove.rule(t,n)},fields:function(e){P.remove.field(e)},prompt:function(t){var n=P.get.field(t).closest(g),o=n.children(x.prompt);n.removeClass(C.error),v.inline&&o.is(\":visible\")&&(P.verbose(\"Removing prompt for field\",t),v.transition&&e.fn.transition!==i&&E.transition(\"is supported\")?o.transition(v.transition+\" out\",v.duration,function(){o.remove()}):o.fadeOut(v.duration,function(){o.remove()}))}},set:{success:function(){E.removeClass(C.error).addClass(C.success)},defaults:function(){m.each(function(){var t=e(this),n=t.filter(x.checkbox).length>0?t.is(\":checked\"):t.val();t.data(y.defaultValue,n)})},error:function(){E.removeClass(C.success).addClass(C.error)},value:function(e,t){var n={};return n[e]=t,P.set.values.call(F,n)},values:function(t){e.isEmptyObject(t)||e.each(t,function(t,n){var i,o=P.get.field(t),a=o.parent(),r=e.isArray(n),s=a.is(x.uiCheckbox),l=a.is(x.uiDropdown),c=o.is(x.radio)&&s;o.length>0&&(r&&s?(P.verbose(\"Selecting multiple\",n,o),a.checkbox(\"uncheck\"),e.each(n,function(e,t){i=o.filter('[value=\"'+t+'\"]'),a=i.parent(),i.length>0&&a.checkbox(\"check\")})):c?(P.verbose(\"Selecting radio value\",n,o),o.filter('[value=\"'+n+'\"]').parent(x.uiCheckbox).checkbox(\"check\")):s?(P.verbose(\"Setting checkbox value\",n,a),!0===n?a.checkbox(\"check\"):a.checkbox(\"uncheck\")):l?(P.verbose(\"Setting dropdown value\",n,a),a.dropdown(\"set selected\",n)):(P.verbose(\"Setting field value\",n,o),o.val(n)))})}},validate:{form:function(e,t){var n=P.get.values();if(D)return!1;if(O=[],P.determine.isValid()){if(P.debug(\"Form has no validation errors, submitting\"),P.set.success(),!0!==t)return v.onSuccess.call(F,e,n)}else if(P.debug(\"Form has errors\"),P.set.error(),v.inline||P.add.errors(O),E.data(\"moduleApi\")!==i&&e.stopImmediatePropagation(),!0!==t)return v.onFailure.call(F,O,n)},field:function(t,n,o){o=o===i||o,\"string\"==typeof t&&(P.verbose(\"Validating field\",t),n=t,t=b[t]);var a=t.identifier||n,r=P.get.field(a),s=!!t.depends&&P.get.field(t.depends),l=!0,c=[];return t.identifier||(P.debug(\"Using field name as identifier\",a),t.identifier=a),r.prop(\"disabled\")?(P.debug(\"Field is disabled. Skipping\",a),l=!0):t.optional&&P.is.blank(r)?(P.debug(\"Field is optional and blank. Skipping\",a),l=!0):t.depends&&P.is.empty(s)?(P.debug(\"Field depends on another value that is not present or empty. Skipping\",s),l=!0):t.rules!==i&&e.each(t.rules,function(e,n){P.has.field(a)&&!P.validate.rule(t,n)&&(P.debug(\"Field is invalid\",a,n.type),c.push(P.get.prompt(n,t)),l=!1)}),l?(o&&(P.remove.prompt(a,c),v.onValid.call(r)),!0):(o&&(O=O.concat(c),P.add.prompt(a,c),v.onInvalid.call(r,c)),!1)},rule:function(t,n){var o=P.get.field(t.identifier),a=(n.type,o.val()),r=P.get.ancillaryValue(n),s=P.get.ruleName(n),l=v.rules[s];if(e.isFunction(l))return a=a===i||\"\"===a||null===a?\"\":e.trim(a+\"\"),l.call(o,a,r);P.error(S.noRule,s)}},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,v,t);else{if(n===i)return v[t];v[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,P,t);else{if(n===i)return P[t];P[t]=n}},debug:function(){!v.silent&&v.debug&&(v.performance?P.performance.log(arguments):(P.debug=Function.prototype.bind.call(console.info,console,v.name+\":\"),P.debug.apply(console,arguments)))},verbose:function(){!v.silent&&v.verbose&&v.debug&&(v.performance?P.performance.log(arguments):(P.verbose=Function.prototype.bind.call(console.info,console,v.name+\":\"),P.verbose.apply(console,arguments)))},error:function(){v.silent||(P.error=Function.prototype.bind.call(console.error,console,v.name+\":\"),P.error.apply(console,arguments))},performance:{log:function(e){var t,n;v.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:F,\"Execution Time\":n})),clearTimeout(P.performance.timer),P.performance.timer=setTimeout(P.performance.display,500)},display:function(){var t=v.name+\":\",n=0;s=!1,clearTimeout(P.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",r&&(t+=\" '\"+r+\"'\"),a.length>1&&(t+=\" (\"+a.length+\")\"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,a){var r,s,l,c=R;return n=n||f,a=F||a,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s}}).initialize()}),o!==i?o:this},e.fn.form.settings={name:\"Form\",namespace:\"form\",debug:!1,verbose:!1,performance:!0,fields:!1,keyboardShortcuts:!0,on:\"submit\",inline:!1,delay:200,revalidate:!0,transition:\"scale\",duration:200,onValid:function(){},onInvalid:function(){},onSuccess:function(){return!0},onFailure:function(){return!1},metadata:{defaultValue:\"default\",validate:\"validate\"},regExp:{htmlID:/^[a-zA-Z][\\w:.-]*$/g,bracket:/\\[(.*)\\]/i,decimal:/^\\d+\\.?\\d*$/,email:/^[a-z0-9!#$%&'*+\\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,escape:/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,flags:/^\\/(.*)\\/(.*)?/,integer:/^\\-?\\d+$/,number:/^\\-?\\d*(\\.\\d+)?$/,url:/(https?:\\/\\/(?:www\\.|(?!www))[^\\s\\.]+\\.[^\\s]{2,}|www\\.[^\\s]+\\.[^\\s]{2,})/i},text:{unspecifiedRule:\"Please enter a valid value\",unspecifiedField:\"This field\"},prompt:{empty:\"{name} must have a value\",checked:\"{name} must be checked\",email:\"{name} must be a valid e-mail\",url:\"{name} must be a valid url\",regExp:\"{name} is not formatted correctly\",integer:\"{name} must be an integer\",decimal:\"{name} must be a decimal number\",number:\"{name} must be set to a number\",is:'{name} must be \"{ruleValue}\"',isExactly:'{name} must be exactly \"{ruleValue}\"',not:'{name} cannot be set to \"{ruleValue}\"',notExactly:'{name} cannot be set to exactly \"{ruleValue}\"',contain:'{name} must contain \"{ruleValue}\"',containExactly:'{name} must contain exactly \"{ruleValue}\"',doesntContain:'{name} cannot contain \"{ruleValue}\"',doesntContainExactly:'{name} cannot contain exactly \"{ruleValue}\"',minLength:\"{name} must be at least {ruleValue} characters\",length:\"{name} must be at least {ruleValue} characters\",exactLength:\"{name} must be exactly {ruleValue} characters\",maxLength:\"{name} cannot be longer than {ruleValue} characters\",match:\"{name} must match {ruleValue} field\",different:\"{name} must have a different value than {ruleValue} field\",creditCard:\"{name} must be a valid credit card number\",minCount:\"{name} must have at least {ruleValue} choices\",exactCount:\"{name} must have exactly {ruleValue} choices\",maxCount:\"{name} must have {ruleValue} or less choices\"},selector:{checkbox:'input[type=\"checkbox\"], input[type=\"radio\"]',clear:\".clear\",field:\"input, textarea, select\",group:\".field\",input:\"input\",message:\".error.message\",prompt:\".prompt.label\",radio:'input[type=\"radio\"]',reset:'.reset:not([type=\"reset\"])',submit:'.submit:not([type=\"submit\"])',uiCheckbox:\".ui.checkbox\",uiDropdown:\".ui.dropdown\"},className:{error:\"error\",label:\"ui prompt label\",pressed:\"down\",success:\"success\"},error:{identifier:\"You must specify a string identifier for each field\",method:\"The method you called is not defined.\",noRule:\"There is no rule matching the one you specified\",oldSyntax:\"Starting in 2.0 forms now only take a single settings object. Validation settings converted to new syntax automatically.\"},templates:{error:function(t){var n='<ul class=\"list\">';return e.each(t,function(e,t){n+=\"<li>\"+t+\"</li>\"}),e(n+=\"</ul>\")},prompt:function(t){return e(\"<div/>\").addClass(\"ui basic red pointing prompt label\").html(t[0])}},rules:{empty:function(t){return!(t===i||\"\"===t||e.isArray(t)&&0===t.length)},checked:function(){return e(this).filter(\":checked\").length>0},email:function(t){return e.fn.form.settings.regExp.email.test(t)},url:function(t){return e.fn.form.settings.regExp.url.test(t)},regExp:function(t,n){if(n instanceof RegExp)return t.match(n);var i,o=n.match(e.fn.form.settings.regExp.flags);return o&&(n=o.length>=2?o[1]:n,i=o.length>=3?o[2]:\"\"),t.match(new RegExp(n,i))},integer:function(t,n){var o,a,r,s=e.fn.form.settings.regExp.integer;return n&&-1===[\"\",\"..\"].indexOf(n)&&(-1==n.indexOf(\"..\")?s.test(n)&&(o=a=n-0):(r=n.split(\"..\",2),s.test(r[0])&&(o=r[0]-0),s.test(r[1])&&(a=r[1]-0))),s.test(t)&&(o===i||t>=o)&&(a===i||t<=a)},decimal:function(t){return e.fn.form.settings.regExp.decimal.test(t)},number:function(t){return e.fn.form.settings.regExp.number.test(t)},is:function(e,t){return t=\"string\"==typeof t?t.toLowerCase():t,(e=\"string\"==typeof e?e.toLowerCase():e)==t},isExactly:function(e,t){return e==t},not:function(e,t){return(e=\"string\"==typeof e?e.toLowerCase():e)!=(t=\"string\"==typeof t?t.toLowerCase():t)},notExactly:function(e,t){return e!=t},contains:function(t,n){return n=n.replace(e.fn.form.settings.regExp.escape,\"\\\\$&\"),-1!==t.search(new RegExp(n,\"i\"))},containsExactly:function(t,n){return n=n.replace(e.fn.form.settings.regExp.escape,\"\\\\$&\"),-1!==t.search(new RegExp(n))},doesntContain:function(t,n){return n=n.replace(e.fn.form.settings.regExp.escape,\"\\\\$&\"),-1===t.search(new RegExp(n,\"i\"))},doesntContainExactly:function(t,n){return n=n.replace(e.fn.form.settings.regExp.escape,\"\\\\$&\"),-1===t.search(new RegExp(n))},minLength:function(e,t){return e!==i&&e.length>=t},length:function(e,t){return e!==i&&e.length>=t},exactLength:function(e,t){return e!==i&&e.length==t},maxLength:function(e,t){return e!==i&&e.length<=t},match:function(t,n){var o;e(this);return e('[data-validate=\"'+n+'\"]').length>0?o=e('[data-validate=\"'+n+'\"]').val():e(\"#\"+n).length>0?o=e(\"#\"+n).val():e('[name=\"'+n+'\"]').length>0?o=e('[name=\"'+n+'\"]').val():e('[name=\"'+n+'[]\"]').length>0&&(o=e('[name=\"'+n+'[]\"]')),o!==i&&t.toString()==o.toString()},different:function(t,n){var o;e(this);return e('[data-validate=\"'+n+'\"]').length>0?o=e('[data-validate=\"'+n+'\"]').val():e(\"#\"+n).length>0?o=e(\"#\"+n).val():e('[name=\"'+n+'\"]').length>0?o=e('[name=\"'+n+'\"]').val():e('[name=\"'+n+'[]\"]').length>0&&(o=e('[name=\"'+n+'[]\"]')),o!==i&&t.toString()!==o.toString()},creditCard:function(t,n){var i,o,a={visa:{pattern:/^4/,length:[16]},amex:{pattern:/^3[47]/,length:[15]},mastercard:{pattern:/^5[1-5]/,length:[16]},discover:{pattern:/^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/,length:[16]},unionPay:{pattern:/^(62|88)/,length:[16,17,18,19]},jcb:{pattern:/^35(2[89]|[3-8][0-9])/,length:[16]},maestro:{pattern:/^(5018|5020|5038|6304|6759|676[1-3])/,length:[12,13,14,15,16,17,18,19]},dinersClub:{pattern:/^(30[0-5]|^36)/,length:[14]},laser:{pattern:/^(6304|670[69]|6771)/,length:[16,17,18,19]},visaElectron:{pattern:/^(4026|417500|4508|4844|491(3|7))/,length:[16]}},r={},s=!1,l=\"string\"==typeof n&&n.split(\",\");if(\"string\"==typeof t&&0!==t.length){if(t=t.replace(/[\\-]/g,\"\"),l&&(e.each(l,function(n,i){(o=a[i])&&(r={length:-1!==e.inArray(t.length,o.length),pattern:-1!==t.search(o.pattern)}).length&&r.pattern&&(s=!0)}),!s))return!1;if((i={number:-1!==e.inArray(t.length,a.unionPay.length),pattern:-1!==t.search(a.unionPay.pattern)}).number&&i.pattern)return!0;for(var c=t.length,u=0,d=[[0,1,2,3,4,5,6,7,8,9],[0,2,4,6,8,1,3,5,7,9]],f=0;c--;)f+=d[u][parseInt(t.charAt(c),10)],u^=1;return f%10==0&&f>0}},minCount:function(e,t){return 0==t||(1==t?\"\"!==e:e.split(\",\").length>=t)},exactCount:function(e,t){return 0==t?\"\"===e:1==t?\"\"!==e&&-1===e.search(\",\"):e.split(\",\").length==t},maxCount:function(e,t){return 0!=t&&(1==t?-1===e.search(\",\"):e.split(\",\").length<=t)}}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.accordion=function(n){var o,a=e(this),r=(new Date).getTime(),s=[],l=arguments[0],c=\"string\"==typeof l,u=[].slice.call(arguments,1);t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame;return a.each(function(){var d,f,m=e.isPlainObject(n)?e.extend(!0,{},e.fn.accordion.settings,n):e.extend({},e.fn.accordion.settings),g=m.className,p=m.namespace,h=m.selector,v=m.error,b=\".\"+p,y=\"module-\"+p,x=a.selector||\"\",C=e(this),w=C.find(h.title),S=C.find(h.content),k=this,T=C.data(y);f={initialize:function(){f.debug(\"Initializing\",C),f.bind.events(),m.observeChanges&&f.observeChanges(),f.instantiate()},instantiate:function(){T=f,C.data(y,f)},destroy:function(){f.debug(\"Destroying previous instance\",C),C.off(b).removeData(y)},refresh:function(){w=C.find(h.title),S=C.find(h.content)},observeChanges:function(){\"MutationObserver\"in t&&((d=new MutationObserver(function(e){f.debug(\"DOM tree modified, updating selector cache\"),f.refresh()})).observe(k,{childList:!0,subtree:!0}),f.debug(\"Setting up mutation observer\",d))},bind:{events:function(){f.debug(\"Binding delegated events\"),C.on(m.on+b,h.trigger,f.event.click)}},event:{click:function(){f.toggle.call(this)}},toggle:function(t){var n=t!==i?\"number\"==typeof t?w.eq(t):e(t).closest(h.title):e(this).closest(h.title),o=n.next(S),a=o.hasClass(g.animating),r=o.hasClass(g.active),s=r&&!a,l=!r&&a;f.debug(\"Toggling visibility of content\",n),s||l?m.collapsible?f.close.call(n):f.debug(\"Cannot close accordion content collapsing is disabled\"):f.open.call(n)},open:function(t){var n=t!==i?\"number\"==typeof t?w.eq(t):e(t).closest(h.title):e(this).closest(h.title),o=n.next(S),a=o.hasClass(g.animating);o.hasClass(g.active)||a?f.debug(\"Accordion already open, skipping\",o):(f.debug(\"Opening accordion content\",n),m.onOpening.call(o),m.onChanging.call(o),m.exclusive&&f.closeOthers.call(n),n.addClass(g.active),o.stop(!0,!0).addClass(g.animating),m.animateChildren&&(e.fn.transition!==i&&C.transition(\"is supported\")?o.children().transition({animation:\"fade in\",queue:!1,useFailSafe:!0,debug:m.debug,verbose:m.verbose,duration:m.duration}):o.children().stop(!0,!0).animate({opacity:1},m.duration,f.resetOpacity)),o.slideDown(m.duration,m.easing,function(){o.removeClass(g.animating).addClass(g.active),f.reset.display.call(this),m.onOpen.call(this),m.onChange.call(this)}))},close:function(t){var n=t!==i?\"number\"==typeof t?w.eq(t):e(t).closest(h.title):e(this).closest(h.title),o=n.next(S),a=o.hasClass(g.animating),r=o.hasClass(g.active);!r&&!(!r&&a)||r&&a||(f.debug(\"Closing accordion content\",o),m.onClosing.call(o),m.onChanging.call(o),n.removeClass(g.active),o.stop(!0,!0).addClass(g.animating),m.animateChildren&&(e.fn.transition!==i&&C.transition(\"is supported\")?o.children().transition({animation:\"fade out\",queue:!1,useFailSafe:!0,debug:m.debug,verbose:m.verbose,duration:m.duration}):o.children().stop(!0,!0).animate({opacity:0},m.duration,f.resetOpacity)),o.slideUp(m.duration,m.easing,function(){o.removeClass(g.animating).removeClass(g.active),f.reset.display.call(this),m.onClose.call(this),m.onChange.call(this)}))},closeOthers:function(t){var n,o,a,r=t!==i?w.eq(t):e(this).closest(h.title),s=r.parents(h.content).prev(h.title),l=r.closest(h.accordion),c=h.title+\".\"+g.active+\":visible\",u=h.content+\".\"+g.active+\":visible\";m.closeNested?a=(n=l.find(c).not(s)).next(S):(n=l.find(c).not(s),o=l.find(u).find(c).not(s),a=(n=n.not(o)).next(S)),n.length>0&&(f.debug(\"Exclusive enabled, closing other content\",n),n.removeClass(g.active),a.removeClass(g.animating).stop(!0,!0),m.animateChildren&&(e.fn.transition!==i&&C.transition(\"is supported\")?a.children().transition({animation:\"fade out\",useFailSafe:!0,debug:m.debug,verbose:m.verbose,duration:m.duration}):a.children().stop(!0,!0).animate({opacity:0},m.duration,f.resetOpacity)),a.slideUp(m.duration,m.easing,function(){e(this).removeClass(g.active),f.reset.display.call(this)}))},reset:{display:function(){f.verbose(\"Removing inline display from element\",this),e(this).css(\"display\",\"\"),\"\"===e(this).attr(\"style\")&&e(this).attr(\"style\",\"\").removeAttr(\"style\")},opacity:function(){f.verbose(\"Removing inline opacity from element\",this),e(this).css(\"opacity\",\"\"),\"\"===e(this).attr(\"style\")&&e(this).attr(\"style\",\"\").removeAttr(\"style\")}},setting:function(t,n){if(f.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];e.isPlainObject(m[t])?e.extend(!0,m[t],n):m[t]=n}},internal:function(t,n){if(f.debug(\"Changing internal\",t,n),n===i)return f[t];e.isPlainObject(t)?e.extend(!0,f,t):f[t]=n},debug:function(){!m.silent&&m.debug&&(m.performance?f.performance.log(arguments):(f.debug=Function.prototype.bind.call(console.info,console,m.name+\":\"),f.debug.apply(console,arguments)))},verbose:function(){!m.silent&&m.verbose&&m.debug&&(m.performance?f.performance.log(arguments):(f.verbose=Function.prototype.bind.call(console.info,console,m.name+\":\"),f.verbose.apply(console,arguments)))},error:function(){m.silent||(f.error=Function.prototype.bind.call(console.error,console,m.name+\":\"),f.error.apply(console,arguments))},performance:{log:function(e){var t,n;m.performance&&(n=(t=(new Date).getTime())-(r||t),r=t,s.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:k,\"Execution Time\":n})),clearTimeout(f.performance.timer),f.performance.timer=setTimeout(f.performance.display,500)},display:function(){var t=m.name+\":\",n=0;r=!1,clearTimeout(f.performance.timer),e.each(s,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",x&&(t+=\" '\"+x+\"'\"),(console.group!==i||console.table!==i)&&s.length>0&&(console.groupCollapsed(t),console.table?console.table(s):e.each(s,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),s=[]}},invoke:function(t,n,a){var r,s,l,c=T;return n=n||u,a=k||a,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(f.error(v.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s}},c?(T===i&&f.initialize(),f.invoke(l)):(T!==i&&T.invoke(\"destroy\"),f.initialize())}),o!==i?o:this},e.fn.accordion.settings={name:\"Accordion\",namespace:\"accordion\",silent:!1,debug:!1,verbose:!1,performance:!0,on:\"click\",observeChanges:!0,exclusive:!0,collapsible:!0,closeNested:!1,animateChildren:!0,duration:350,easing:\"easeOutQuad\",onOpening:function(){},onClosing:function(){},onChanging:function(){},onOpen:function(){},onClose:function(){},onChange:function(){},error:{method:\"The method you called is not defined\"},className:{active:\"active\",animating:\"animating\"},selector:{accordion:\".accordion\",title:\".title\",trigger:\".title\",content:\".content\"}},e.extend(e.easing,{easeOutQuad:function(e,t,n,i,o){return-i*(t/=o)*(t-2)+n}})}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.checkbox=function(o){var a,r=e(this),s=r.selector||\"\",l=(new Date).getTime(),c=[],u=arguments[0],d=\"string\"==typeof u,f=[].slice.call(arguments,1);return r.each(function(){var r,m,g=e.extend(!0,{},e.fn.checkbox.settings,o),p=g.className,h=g.namespace,v=g.selector,b=g.error,y=\".\"+h,x=\"module-\"+h,C=e(this),w=e(this).children(v.label),S=e(this).children(v.input),k=S[0],T=!1,A=!1,R=C.data(x),P=this;m={initialize:function(){m.verbose(\"Initializing checkbox\",g),m.create.label(),m.bind.events(),m.set.tabbable(),m.hide.input(),m.observeChanges(),m.instantiate(),m.setup()},instantiate:function(){m.verbose(\"Storing instance of module\",m),R=m,C.data(x,m)},destroy:function(){m.verbose(\"Destroying module\"),m.unbind.events(),m.show.input(),C.removeData(x)},fix:{reference:function(){C.is(v.input)&&(m.debug(\"Behavior called on <input> adjusting invoked element\"),C=C.closest(v.checkbox),m.refresh())}},setup:function(){m.set.initialLoad(),m.is.indeterminate()?(m.debug(\"Initial value is indeterminate\"),m.indeterminate()):m.is.checked()?(m.debug(\"Initial value is checked\"),m.check()):(m.debug(\"Initial value is unchecked\"),m.uncheck()),m.remove.initialLoad()},refresh:function(){w=C.children(v.label),S=C.children(v.input),k=S[0]},hide:{input:function(){m.verbose(\"Modifying <input> z-index to be unselectable\"),S.addClass(p.hidden)}},show:{input:function(){m.verbose(\"Modifying <input> z-index to be selectable\"),S.removeClass(p.hidden)}},observeChanges:function(){\"MutationObserver\"in t&&((r=new MutationObserver(function(e){m.debug(\"DOM tree modified, updating selector cache\"),m.refresh()})).observe(P,{childList:!0,subtree:!0}),m.debug(\"Setting up mutation observer\",r))},attachEvents:function(t,n){var i=e(t);n=e.isFunction(m[n])?m[n]:m.toggle,i.length>0?(m.debug(\"Attaching checkbox events to element\",t,n),i.on(\"click\"+y,n)):m.error(b.notFound)},event:{click:function(t){var n=e(t.target);n.is(v.input)?m.verbose(\"Using default check action on initialized checkbox\"):n.is(v.link)?m.debug(\"Clicking link inside checkbox, skipping toggle\"):(m.toggle(),S.focus(),t.preventDefault())},keydown:function(e){var t=e.which,n=13,i=32;t==27?(m.verbose(\"Escape key pressed blurring field\"),S.blur(),A=!0):e.ctrlKey||t!=i&&t!=n?A=!1:(m.verbose(\"Enter/space key pressed, toggling checkbox\"),m.toggle(),A=!0)},keyup:function(e){A&&e.preventDefault()}},check:function(){m.should.allowCheck()&&(m.debug(\"Checking checkbox\",S),m.set.checked(),m.should.ignoreCallbacks()||(g.onChecked.call(k),g.onChange.call(k)))},uncheck:function(){m.should.allowUncheck()&&(m.debug(\"Unchecking checkbox\"),m.set.unchecked(),m.should.ignoreCallbacks()||(g.onUnchecked.call(k),g.onChange.call(k)))},indeterminate:function(){m.should.allowIndeterminate()?m.debug(\"Checkbox is already indeterminate\"):(m.debug(\"Making checkbox indeterminate\"),m.set.indeterminate(),m.should.ignoreCallbacks()||(g.onIndeterminate.call(k),g.onChange.call(k)))},determinate:function(){m.should.allowDeterminate()?m.debug(\"Checkbox is already determinate\"):(m.debug(\"Making checkbox determinate\"),m.set.determinate(),m.should.ignoreCallbacks()||(g.onDeterminate.call(k),g.onChange.call(k)))},enable:function(){m.is.enabled()?m.debug(\"Checkbox is already enabled\"):(m.debug(\"Enabling checkbox\"),m.set.enabled(),g.onEnable.call(k),g.onEnabled.call(k))},disable:function(){m.is.disabled()?m.debug(\"Checkbox is already disabled\"):(m.debug(\"Disabling checkbox\"),m.set.disabled(),g.onDisable.call(k),g.onDisabled.call(k))},get:{radios:function(){var t=m.get.name();return e('input[name=\"'+t+'\"]').closest(v.checkbox)},otherRadios:function(){return m.get.radios().not(C)},name:function(){return S.attr(\"name\")}},is:{initialLoad:function(){return T},radio:function(){return S.hasClass(p.radio)||\"radio\"==S.attr(\"type\")},indeterminate:function(){return S.prop(\"indeterminate\")!==i&&S.prop(\"indeterminate\")},checked:function(){return S.prop(\"checked\")!==i&&S.prop(\"checked\")},disabled:function(){return S.prop(\"disabled\")!==i&&S.prop(\"disabled\")},enabled:function(){return!m.is.disabled()},determinate:function(){return!m.is.indeterminate()},unchecked:function(){return!m.is.checked()}},should:{allowCheck:function(){return m.is.determinate()&&m.is.checked()&&!m.should.forceCallbacks()?(m.debug(\"Should not allow check, checkbox is already checked\"),!1):!1!==g.beforeChecked.apply(k)||(m.debug(\"Should not allow check, beforeChecked cancelled\"),!1)},allowUncheck:function(){return m.is.determinate()&&m.is.unchecked()&&!m.should.forceCallbacks()?(m.debug(\"Should not allow uncheck, checkbox is already unchecked\"),!1):!1!==g.beforeUnchecked.apply(k)||(m.debug(\"Should not allow uncheck, beforeUnchecked cancelled\"),!1)},allowIndeterminate:function(){return m.is.indeterminate()&&!m.should.forceCallbacks()?(m.debug(\"Should not allow indeterminate, checkbox is already indeterminate\"),!1):!1!==g.beforeIndeterminate.apply(k)||(m.debug(\"Should not allow indeterminate, beforeIndeterminate cancelled\"),!1)},allowDeterminate:function(){return m.is.determinate()&&!m.should.forceCallbacks()?(m.debug(\"Should not allow determinate, checkbox is already determinate\"),!1):!1!==g.beforeDeterminate.apply(k)||(m.debug(\"Should not allow determinate, beforeDeterminate cancelled\"),!1)},forceCallbacks:function(){return m.is.initialLoad()&&g.fireOnInit},ignoreCallbacks:function(){return T&&!g.fireOnInit}},can:{change:function(){return!(C.hasClass(p.disabled)||C.hasClass(p.readOnly)||S.prop(\"disabled\")||S.prop(\"readonly\"))},uncheck:function(){return\"boolean\"==typeof g.uncheckable?g.uncheckable:!m.is.radio()}},set:{initialLoad:function(){T=!0},checked:function(){m.verbose(\"Setting class to checked\"),C.removeClass(p.indeterminate).addClass(p.checked),m.is.radio()&&m.uncheckOthers(),m.is.indeterminate()||!m.is.checked()?(m.verbose(\"Setting state to checked\",k),S.prop(\"indeterminate\",!1).prop(\"checked\",!0),m.trigger.change()):m.debug(\"Input is already checked, skipping input property change\")},unchecked:function(){m.verbose(\"Removing checked class\"),C.removeClass(p.indeterminate).removeClass(p.checked),m.is.indeterminate()||!m.is.unchecked()?(m.debug(\"Setting state to unchecked\"),S.prop(\"indeterminate\",!1).prop(\"checked\",!1),m.trigger.change()):m.debug(\"Input is already unchecked\")},indeterminate:function(){m.verbose(\"Setting class to indeterminate\"),C.addClass(p.indeterminate),m.is.indeterminate()?m.debug(\"Input is already indeterminate, skipping input property change\"):(m.debug(\"Setting state to indeterminate\"),S.prop(\"indeterminate\",!0),m.trigger.change())},determinate:function(){m.verbose(\"Removing indeterminate class\"),C.removeClass(p.indeterminate),m.is.determinate()?m.debug(\"Input is already determinate, skipping input property change\"):(m.debug(\"Setting state to determinate\"),S.prop(\"indeterminate\",!1))},disabled:function(){m.verbose(\"Setting class to disabled\"),C.addClass(p.disabled),m.is.disabled()?m.debug(\"Input is already disabled, skipping input property change\"):(m.debug(\"Setting state to disabled\"),S.prop(\"disabled\",\"disabled\"),m.trigger.change())},enabled:function(){m.verbose(\"Removing disabled class\"),C.removeClass(p.disabled),m.is.enabled()?m.debug(\"Input is already enabled, skipping input property change\"):(m.debug(\"Setting state to enabled\"),S.prop(\"disabled\",!1),m.trigger.change())},tabbable:function(){m.verbose(\"Adding tabindex to checkbox\"),S.attr(\"tabindex\")===i&&S.attr(\"tabindex\",0)}},remove:{initialLoad:function(){T=!1}},trigger:{change:function(){var e=n.createEvent(\"HTMLEvents\"),t=S[0];t&&(m.verbose(\"Triggering native change event\"),e.initEvent(\"change\",!0,!1),t.dispatchEvent(e))}},create:{label:function(){S.prevAll(v.label).length>0?(S.prev(v.label).detach().insertAfter(S),m.debug(\"Moving existing label\",w)):m.has.label()||(w=e(\"<label>\").insertAfter(S),m.debug(\"Creating label\",w))}},has:{label:function(){return w.length>0}},bind:{events:function(){m.verbose(\"Attaching checkbox events\"),C.on(\"click\"+y,m.event.click).on(\"keydown\"+y,v.input,m.event.keydown).on(\"keyup\"+y,v.input,m.event.keyup)}},unbind:{events:function(){m.debug(\"Removing events\"),C.off(y)}},uncheckOthers:function(){var e=m.get.otherRadios();m.debug(\"Unchecking other radios\",e),e.removeClass(p.checked)},toggle:function(){m.can.change()?m.is.indeterminate()||m.is.unchecked()?(m.debug(\"Currently unchecked\"),m.check()):m.is.checked()&&m.can.uncheck()&&(m.debug(\"Currently checked\"),m.uncheck()):m.is.radio()||m.debug(\"Checkbox is read-only or disabled, ignoring toggle\")},setting:function(t,n){if(m.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,g,t);else{if(n===i)return g[t];e.isPlainObject(g[t])?e.extend(!0,g[t],n):g[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];m[t]=n}},debug:function(){!g.silent&&g.debug&&(g.performance?m.performance.log(arguments):(m.debug=Function.prototype.bind.call(console.info,console,g.name+\":\"),m.debug.apply(console,arguments)))},verbose:function(){!g.silent&&g.verbose&&g.debug&&(g.performance?m.performance.log(arguments):(m.verbose=Function.prototype.bind.call(console.info,console,g.name+\":\"),m.verbose.apply(console,arguments)))},error:function(){g.silent||(m.error=Function.prototype.bind.call(console.error,console,g.name+\":\"),m.error.apply(console,arguments))},performance:{log:function(e){var t,n;g.performance&&(n=(t=(new Date).getTime())-(l||t),l=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:P,\"Execution Time\":n})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,500)},display:function(){var t=g.name+\":\",n=0;l=!1,clearTimeout(m.performance.timer),e.each(c,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",s&&(t+=\" '\"+s+\"'\"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),c=[]}},invoke:function(t,n,o){var r,s,l,c=R;return n=n||f,o=P||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(m.error(b.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},d?(R===i&&m.initialize(),m.invoke(u)):(R!==i&&R.invoke(\"destroy\"),m.initialize())}),a!==i?a:this},e.fn.checkbox.settings={name:\"Checkbox\",namespace:\"checkbox\",silent:!1,debug:!1,verbose:!0,performance:!0,uncheckable:\"auto\",fireOnInit:!1,onChange:function(){},beforeChecked:function(){},beforeUnchecked:function(){},beforeDeterminate:function(){},beforeIndeterminate:function(){},onChecked:function(){},onUnchecked:function(){},onDeterminate:function(){},onIndeterminate:function(){},onEnable:function(){},onDisable:function(){},onEnabled:function(){},onDisabled:function(){},className:{checked:\"checked\",indeterminate:\"indeterminate\",disabled:\"disabled\",hidden:\"hidden\",radio:\"radio\",readOnly:\"read-only\"},error:{method:\"The method you called is not defined\"},selector:{checkbox:\".ui.checkbox\",label:\"label, .box\",input:'input[type=\"checkbox\"], input[type=\"radio\"]',link:\"a[href]\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.dimmer=function(t){var o,a=e(this),r=(new Date).getTime(),s=[],l=arguments[0],c=\"string\"==typeof l,u=[].slice.call(arguments,1);return a.each(function(){var d,f,m,g=e.isPlainObject(t)?e.extend(!0,{},e.fn.dimmer.settings,t):e.extend({},e.fn.dimmer.settings),p=g.selector,h=g.namespace,v=g.className,b=g.error,y=\".\"+h,x=\"module-\"+h,C=a.selector||\"\",w=\"ontouchstart\"in n.documentElement?\"touchstart\":\"click\",S=e(this),k=this,T=S.data(x);(m={preinitialize:function(){m.is.dimmer()?(f=S.parent(),d=S):(f=S,d=m.has.dimmer()?g.dimmerName?f.find(p.dimmer).filter(\".\"+g.dimmerName):f.find(p.dimmer):m.create(),m.set.variation())},initialize:function(){m.debug(\"Initializing dimmer\",g),m.bind.events(),m.set.dimmable(),m.instantiate()},instantiate:function(){m.verbose(\"Storing instance of module\",m),T=m,S.data(x,T)},destroy:function(){m.verbose(\"Destroying previous module\",d),m.unbind.events(),m.remove.variation(),f.off(y)},bind:{events:function(){m.is.page()&&f.get(0).addEventListener(\"touchmove\",m.event.preventScroll,{passive:!1}),\"hover\"==g.on?f.on(\"mouseenter\"+y,m.show).on(\"mouseleave\"+y,m.hide):\"click\"==g.on&&f.on(w+y,m.toggle),m.is.page()&&(m.debug(\"Setting as a page dimmer\",f),m.set.pageDimmer()),m.is.closable()&&(m.verbose(\"Adding dimmer close event\",d),f.on(w+y,p.dimmer,m.event.click))}},unbind:{events:function(){m.is.page()&&f.get(0).removeEventListener(\"touchmove\",m.event.preventScroll,{passive:!1}),S.removeData(x),f.off(y)}},event:{click:function(t){m.verbose(\"Determining if event occured on dimmer\",t),(0===d.find(t.target).length||e(t.target).is(p.content))&&(m.hide(),t.stopImmediatePropagation())},preventScroll:function(e){e.preventDefault()}},addContent:function(t){var n=e(t);m.debug(\"Add content to dimmer\",n),n.parent()[0]!==d[0]&&n.detach().appendTo(d)},create:function(){var t=e(g.template.dimmer());return g.dimmerName&&(m.debug(\"Creating named dimmer\",g.dimmerName),t.addClass(g.dimmerName)),t.appendTo(f),t},show:function(t){t=e.isFunction(t)?t:function(){},m.debug(\"Showing dimmer\",d,g),m.is.dimmed()&&!m.is.animating()||!m.is.enabled()?m.debug(\"Dimmer is already shown or disabled\"):(m.animate.show(t),g.onShow.call(k),g.onChange.call(k))},hide:function(t){t=e.isFunction(t)?t:function(){},m.is.dimmed()||m.is.animating()?(m.debug(\"Hiding dimmer\",d),m.animate.hide(t),g.onHide.call(k),g.onChange.call(k)):m.debug(\"Dimmer is not visible\")},toggle:function(){m.verbose(\"Toggling dimmer visibility\",d),m.is.dimmed()?m.hide():m.show()},animate:{show:function(t){t=e.isFunction(t)?t:function(){},g.useCSS&&e.fn.transition!==i&&d.transition(\"is supported\")?(\"auto\"!==g.opacity&&m.set.opacity(),d.transition({displayType:\"flex\",animation:g.transition+\" in\",queue:!1,duration:m.get.duration(),useFailSafe:!0,onStart:function(){m.set.dimmed()},onComplete:function(){m.set.active(),t()}})):(m.verbose(\"Showing dimmer animation with javascript\"),m.set.dimmed(),\"auto\"==g.opacity&&(g.opacity=.8),d.stop().css({opacity:0,width:\"100%\",height:\"100%\"}).fadeTo(m.get.duration(),g.opacity,function(){d.removeAttr(\"style\"),m.set.active(),t()}))},hide:function(t){t=e.isFunction(t)?t:function(){},g.useCSS&&e.fn.transition!==i&&d.transition(\"is supported\")?(m.verbose(\"Hiding dimmer with css\"),d.transition({displayType:\"flex\",animation:g.transition+\" out\",queue:!1,duration:m.get.duration(),useFailSafe:!0,onStart:function(){m.remove.dimmed()},onComplete:function(){m.remove.active(),t()}})):(m.verbose(\"Hiding dimmer with javascript\"),m.remove.dimmed(),d.stop().fadeOut(m.get.duration(),function(){m.remove.active(),d.removeAttr(\"style\"),t()}))}},get:{dimmer:function(){return d},duration:function(){return\"object\"==typeof g.duration?m.is.active()?g.duration.hide:g.duration.show:g.duration}},has:{dimmer:function(){return g.dimmerName?S.find(p.dimmer).filter(\".\"+g.dimmerName).length>0:S.find(p.dimmer).length>0}},is:{active:function(){return d.hasClass(v.active)},animating:function(){return d.is(\":animated\")||d.hasClass(v.animating)},closable:function(){return\"auto\"==g.closable?\"hover\"!=g.on:g.closable},dimmer:function(){return S.hasClass(v.dimmer)},dimmable:function(){return S.hasClass(v.dimmable)},dimmed:function(){return f.hasClass(v.dimmed)},disabled:function(){return f.hasClass(v.disabled)},enabled:function(){return!m.is.disabled()},page:function(){return f.is(\"body\")},pageDimmer:function(){return d.hasClass(v.pageDimmer)}},can:{show:function(){return!d.hasClass(v.disabled)}},set:{opacity:function(e){var t=d.css(\"background-color\"),n=t.split(\",\"),i=n&&3==n.length,o=n&&4==n.length;e=0===g.opacity?0:g.opacity||e,i||o?(n[3]=e+\")\",t=n.join(\",\")):t=\"rgba(0, 0, 0, \"+e+\")\",m.debug(\"Setting opacity to\",e),d.css(\"background-color\",t)},active:function(){d.addClass(v.active)},dimmable:function(){f.addClass(v.dimmable)},dimmed:function(){f.addClass(v.dimmed)},pageDimmer:function(){d.addClass(v.pageDimmer)},disabled:function(){d.addClass(v.disabled)},variation:function(e){(e=e||g.variation)&&d.addClass(e)}},remove:{active:function(){d.removeClass(v.active)},dimmed:function(){f.removeClass(v.dimmed)},disabled:function(){d.removeClass(v.disabled)},variation:function(e){(e=e||g.variation)&&d.removeClass(e)}},setting:function(t,n){if(m.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,g,t);else{if(n===i)return g[t];e.isPlainObject(g[t])?e.extend(!0,g[t],n):g[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];m[t]=n}},debug:function(){!g.silent&&g.debug&&(g.performance?m.performance.log(arguments):(m.debug=Function.prototype.bind.call(console.info,console,g.name+\":\"),m.debug.apply(console,arguments)))},verbose:function(){!g.silent&&g.verbose&&g.debug&&(g.performance?m.performance.log(arguments):(m.verbose=Function.prototype.bind.call(console.info,console,g.name+\":\"),m.verbose.apply(console,arguments)))},error:function(){g.silent||(m.error=Function.prototype.bind.call(console.error,console,g.name+\":\"),m.error.apply(console,arguments))},performance:{log:function(e){var t,n;g.performance&&(n=(t=(new Date).getTime())-(r||t),r=t,s.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:k,\"Execution Time\":n})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,500)},display:function(){var t=g.name+\":\",n=0;r=!1,clearTimeout(m.performance.timer),e.each(s,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",C&&(t+=\" '\"+C+\"'\"),a.length>1&&(t+=\" (\"+a.length+\")\"),(console.group!==i||console.table!==i)&&s.length>0&&(console.groupCollapsed(t),console.table?console.table(s):e.each(s,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),s=[]}},invoke:function(t,n,a){var r,s,l,c=T;return n=n||u,a=k||a,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(m.error(b.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s}}).preinitialize(),c?(T===i&&m.initialize(),m.invoke(l)):(T!==i&&T.invoke(\"destroy\"),m.initialize())}),o!==i?o:this},e.fn.dimmer.settings={name:\"Dimmer\",namespace:\"dimmer\",silent:!1,debug:!1,verbose:!1,performance:!0,dimmerName:!1,variation:!1,closable:\"auto\",useCSS:!0,transition:\"fade\",on:!1,opacity:\"auto\",duration:{show:500,hide:500},onChange:function(){},onShow:function(){},onHide:function(){},error:{method:\"The method you called is not defined.\"},className:{active:\"active\",animating:\"animating\",dimmable:\"dimmable\",dimmed:\"dimmed\",dimmer:\"dimmer\",disabled:\"disabled\",hide:\"hide\",pageDimmer:\"page\",show:\"show\"},selector:{dimmer:\"> .ui.dimmer\",content:\".ui.dimmer > .content, .ui.dimmer > .content > .center\"},template:{dimmer:function(){return e(\"<div />\").attr(\"class\",\"ui dimmer\")}}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.dropdown=function(o){var a,r=e(this),s=e(n),l=r.selector||\"\",c=\"ontouchstart\"in n.documentElement,u=(new Date).getTime(),d=[],f=arguments[0],m=\"string\"==typeof f,g=[].slice.call(arguments,1);return r.each(function(p){var h,v,b,y,x,C,w,S,k=e.isPlainObject(o)?e.extend(!0,{},e.fn.dropdown.settings,o):e.extend({},e.fn.dropdown.settings),T=k.className,A=k.message,R=k.fields,P=k.keys,E=k.metadata,F=k.namespace,O=k.regExp,D=k.selector,q=k.error,j=k.templates,z=\".\"+F,I=\"module-\"+F,M=e(this),L=e(k.context),V=M.find(D.text),N=M.find(D.search),H=M.find(D.sizer),U=M.find(D.input),W=M.find(D.icon),B=M.prev().find(D.text).length>0?M.prev().find(D.text):M.prev(),Q=M.children(D.menu),X=Q.find(D.item),$=!1,Y=!1,Z=!1,K=this,J=M.data(I);S={initialize:function(){S.debug(\"Initializing dropdown\",k),S.is.alreadySetup()?S.setup.reference():(S.setup.layout(),k.values&&S.change.values(k.values),S.refreshData(),S.save.defaults(),S.restore.selected(),S.create.id(),S.bind.events(),S.observeChanges(),S.instantiate())},instantiate:function(){S.verbose(\"Storing instance of dropdown\",S),J=S,M.data(I,S)},destroy:function(){S.verbose(\"Destroying previous dropdown\",M),S.remove.tabbable(),M.off(z).removeData(I),Q.off(z),s.off(y),S.disconnect.menuObserver(),S.disconnect.selectObserver()},observeChanges:function(){\"MutationObserver\"in t&&(C=new MutationObserver(S.event.select.mutation),w=new MutationObserver(S.event.menu.mutation),S.debug(\"Setting up mutation observer\",C,w),S.observe.select(),S.observe.menu())},disconnect:{menuObserver:function(){w&&w.disconnect()},selectObserver:function(){C&&C.disconnect()}},observe:{select:function(){S.has.input()&&C.observe(M[0],{childList:!0,subtree:!0})},menu:function(){S.has.menu()&&w.observe(Q[0],{childList:!0,subtree:!0})}},create:{id:function(){x=(Math.random().toString(16)+\"000000000\").substr(2,8),y=\".\"+x,S.verbose(\"Creating unique id for element\",x)},userChoice:function(t){var n,o,a;return!!(t=t||S.get.userValues())&&(t=e.isArray(t)?t:[t],e.each(t,function(t,r){!1===S.get.item(r)&&(a=k.templates.addition(S.add.variables(A.addResult,r)),o=e(\"<div />\").html(a).attr(\"data-\"+E.value,r).attr(\"data-\"+E.text,r).addClass(T.addition).addClass(T.item),k.hideAdditions&&o.addClass(T.hidden),n=n===i?o:n.add(o),S.verbose(\"Creating user choices for value\",r,o))}),n)},userLabels:function(t){var n=S.get.userValues();n&&(S.debug(\"Adding user labels\",n),e.each(n,function(e,t){S.verbose(\"Adding custom user value\"),S.add.label(t,t)}))},menu:function(){Q=e(\"<div />\").addClass(T.menu).appendTo(M)},sizer:function(){H=e(\"<span />\").addClass(T.sizer).insertAfter(N)}},search:function(e){e=e!==i?e:S.get.query(),S.verbose(\"Searching for query\",e),S.has.minCharacters(e)?S.filter(e):S.hide()},select:{firstUnfiltered:function(){S.verbose(\"Selecting first non-filtered element\"),S.remove.selectedItem(),X.not(D.unselectable).not(D.addition+D.hidden).eq(0).addClass(T.selected)},nextAvailable:function(e){var t=(e=e.eq(0)).nextAll(D.item).not(D.unselectable).eq(0),n=e.prevAll(D.item).not(D.unselectable).eq(0);t.length>0?(S.verbose(\"Moving selection to\",t),t.addClass(T.selected)):(S.verbose(\"Moving selection to\",n),n.addClass(T.selected))}},setup:{api:function(){var e={debug:k.debug,urlData:{value:S.get.value(),query:S.get.query()},on:!1};S.verbose(\"First request, initializing API\"),M.api(e)},layout:function(){M.is(\"select\")&&(S.setup.select(),S.setup.returnedObject()),S.has.menu()||S.create.menu(),S.is.search()&&!S.has.search()&&(S.verbose(\"Adding search input\"),N=e(\"<input />\").addClass(T.search).prop(\"autocomplete\",\"off\").insertBefore(V)),S.is.multiple()&&S.is.searchSelection()&&!S.has.sizer()&&S.create.sizer(),k.allowTab&&S.set.tabbable()},select:function(){var t=S.get.selectValues();S.debug(\"Dropdown initialized on a select\",t),M.is(\"select\")&&(U=M),U.parent(D.dropdown).length>0?(S.debug(\"UI dropdown already exists. Creating dropdown menu only\"),M=U.closest(D.dropdown),S.has.menu()||S.create.menu(),Q=M.children(D.menu),S.setup.menu(t)):(S.debug(\"Creating entire dropdown from select\"),M=e(\"<div />\").attr(\"class\",U.attr(\"class\")).addClass(T.selection).addClass(T.dropdown).html(j.dropdown(t)).insertBefore(U),U.hasClass(T.multiple)&&!1===U.prop(\"multiple\")&&(S.error(q.missingMultiple),U.prop(\"multiple\",!0)),U.is(\"[multiple]\")&&S.set.multiple(),U.prop(\"disabled\")&&(S.debug(\"Disabling dropdown\"),M.addClass(T.disabled)),U.removeAttr(\"class\").detach().prependTo(M)),S.refresh()},menu:function(e){Q.html(j.menu(e,R)),X=Q.find(D.item)},reference:function(){S.debug(\"Dropdown behavior was called on select, replacing with closest dropdown\"),M=M.parent(D.dropdown),J=M.data(I),K=M.get(0),S.refresh(),S.setup.returnedObject()},returnedObject:function(){var e=r.slice(0,p),t=r.slice(p+1);r=e.add(M).add(t)}},refresh:function(){S.refreshSelectors(),S.refreshData()},refreshItems:function(){X=Q.find(D.item)},refreshSelectors:function(){S.verbose(\"Refreshing selector cache\"),V=M.find(D.text),N=M.find(D.search),U=M.find(D.input),W=M.find(D.icon),B=M.prev().find(D.text).length>0?M.prev().find(D.text):M.prev(),Q=M.children(D.menu),X=Q.find(D.item)},refreshData:function(){S.verbose(\"Refreshing cached metadata\"),X.removeData(E.text).removeData(E.value)},clearData:function(){S.verbose(\"Clearing metadata\"),X.removeData(E.text).removeData(E.value),M.removeData(E.defaultText).removeData(E.defaultValue).removeData(E.placeholderText)},toggle:function(){S.verbose(\"Toggling menu visibility\"),S.is.active()?S.hide():S.show()},show:function(t){if(t=e.isFunction(t)?t:function(){},!S.can.show()&&S.is.remote()&&(S.debug(\"No API results retrieved, searching before show\"),S.queryRemote(S.get.query(),S.show)),S.can.show()&&!S.is.active()){if(S.debug(\"Showing dropdown\"),!S.has.message()||S.has.maxSelections()||S.has.allResultsFiltered()||S.remove.message(),S.is.allFiltered())return!0;!1!==k.onShow.call(K)&&S.animate.show(function(){S.can.click()&&S.bind.intent(),S.has.menuSearch()&&S.focusSearch(),S.set.visible(),t.call(K)})}},hide:function(t){t=e.isFunction(t)?t:function(){},S.is.active()&&!S.is.animatingOutward()&&(S.debug(\"Hiding dropdown\"),!1!==k.onHide.call(K)&&S.animate.hide(function(){S.remove.visible(),t.call(K)}))},hideOthers:function(){S.verbose(\"Finding other dropdowns to hide\"),r.not(M).has(D.menu+\".\"+T.visible).dropdown(\"hide\")},hideMenu:function(){S.verbose(\"Hiding menu instantaneously\"),S.remove.active(),S.remove.visible(),Q.transition(\"hide\")},hideSubMenus:function(){var e=Q.children(D.item).find(D.menu);S.verbose(\"Hiding sub menus\",e),e.transition(\"hide\")},bind:{events:function(){c&&S.bind.touchEvents(),S.bind.keyboardEvents(),S.bind.inputEvents(),S.bind.mouseEvents()},touchEvents:function(){S.debug(\"Touch device detected binding additional touch events\"),S.is.searchSelection()||S.is.single()&&M.on(\"touchstart\"+z,S.event.test.toggle),Q.on(\"touchstart\"+z,D.item,S.event.item.mouseenter)},keyboardEvents:function(){S.verbose(\"Binding keyboard events\"),M.on(\"keydown\"+z,S.event.keydown),S.has.search()&&M.on(S.get.inputEvent()+z,D.search,S.event.input),S.is.multiple()&&s.on(\"keydown\"+y,S.event.document.keydown)},inputEvents:function(){S.verbose(\"Binding input change events\"),M.on(\"change\"+z,D.input,S.event.change)},mouseEvents:function(){S.verbose(\"Binding mouse events\"),S.is.multiple()&&M.on(\"click\"+z,D.label,S.event.label.click).on(\"click\"+z,D.remove,S.event.remove.click),S.is.searchSelection()?(M.on(\"mousedown\"+z,S.event.mousedown).on(\"mouseup\"+z,S.event.mouseup).on(\"mousedown\"+z,D.menu,S.event.menu.mousedown).on(\"mouseup\"+z,D.menu,S.event.menu.mouseup).on(\"click\"+z,D.icon,S.event.icon.click).on(\"focus\"+z,D.search,S.event.search.focus).on(\"click\"+z,D.search,S.event.search.focus).on(\"blur\"+z,D.search,S.event.search.blur).on(\"click\"+z,D.text,S.event.text.focus),S.is.multiple()&&M.on(\"click\"+z,S.event.click)):(\"click\"==k.on?M.on(\"click\"+z,D.icon,S.event.icon.click).on(\"click\"+z,S.event.test.toggle):\"hover\"==k.on?M.on(\"mouseenter\"+z,S.delay.show).on(\"mouseleave\"+z,S.delay.hide):M.on(k.on+z,S.toggle),M.on(\"mousedown\"+z,S.event.mousedown).on(\"mouseup\"+z,S.event.mouseup).on(\"focus\"+z,S.event.focus),S.has.menuSearch()?M.on(\"blur\"+z,D.search,S.event.search.blur):M.on(\"blur\"+z,S.event.blur)),Q.on(\"mouseenter\"+z,D.item,S.event.item.mouseenter).on(\"mouseleave\"+z,D.item,S.event.item.mouseleave).on(\"click\"+z,D.item,S.event.item.click)},intent:function(){S.verbose(\"Binding hide intent event to document\"),c&&s.on(\"touchstart\"+y,S.event.test.touch).on(\"touchmove\"+y,S.event.test.touch),s.on(\"click\"+y,S.event.test.hide)}},unbind:{intent:function(){S.verbose(\"Removing hide intent event from document\"),c&&s.off(\"touchstart\"+y).off(\"touchmove\"+y),s.off(\"click\"+y)}},filter:function(e){var t=e!==i?e:S.get.query(),n=function(){S.is.multiple()&&S.filterActive(),(e||!e&&0==S.get.activeItem().length)&&S.select.firstUnfiltered(),S.has.allResultsFiltered()?k.onNoResults.call(K,t)?k.allowAdditions?k.hideAdditions&&(S.verbose(\"User addition with no menu, setting empty style\"),S.set.empty(),S.hideMenu()):(S.verbose(\"All items filtered, showing message\",t),S.add.message(A.noResults)):(S.verbose(\"All items filtered, hiding dropdown\",t),S.hideMenu()):(S.remove.empty(),S.remove.message()),k.allowAdditions&&S.add.userSuggestion(e),S.is.searchSelection()&&S.can.show()&&S.is.focusedOnSearch()&&S.show()};k.useLabels&&S.has.maxSelections()||(k.apiSettings?S.can.useAPI()?S.queryRemote(t,function(){k.filterRemoteData&&S.filterItems(t),n()}):S.error(q.noAPI):(S.filterItems(t),n()))},queryRemote:function(t,n){var i={errorDuration:!1,cache:\"local\",throttle:k.throttle,urlData:{query:t},onError:function(){S.add.message(A.serverError),n()},onFailure:function(){S.add.message(A.serverError),n()},onSuccess:function(t){var i=t[R.remoteValues];e.isArray(i)&&i.length>0?(S.remove.message(),S.setup.menu({values:t[R.remoteValues]})):S.add.message(A.noResults),n()}};M.api(\"get request\")||S.setup.api(),i=e.extend(!0,{},i,k.apiSettings),M.api(\"setting\",i).api(\"query\")},filterItems:function(t){var n=t!==i?t:S.get.query(),o=null,a=S.escape.string(n),r=new RegExp(\"^\"+a,\"igm\");S.has.query()&&(o=[],S.verbose(\"Searching for matching values\",n),X.each(function(){var t,i,a=e(this);if(\"both\"==k.match||\"text\"==k.match){if(-1!==(t=String(S.get.choiceText(a,!1))).search(r))return o.push(this),!0;if(\"exact\"===k.fullTextSearch&&S.exactSearch(n,t))return o.push(this),!0;if(!0===k.fullTextSearch&&S.fuzzySearch(n,t))return o.push(this),!0}if(\"both\"==k.match||\"value\"==k.match){if(-1!==(i=String(S.get.choiceValue(a,t))).search(r))return o.push(this),!0;if(\"exact\"===k.fullTextSearch&&S.exactSearch(n,i))return o.push(this),!0;if(!0===k.fullTextSearch&&S.fuzzySearch(n,i))return o.push(this),!0}})),S.debug(\"Showing only matched items\",n),S.remove.filteredItem(),o&&X.not(o).addClass(T.filtered)},fuzzySearch:function(e,t){var n=t.length,i=e.length;if(e=e.toLowerCase(),t=t.toLowerCase(),i>n)return!1;if(i===n)return e===t;e:for(var o=0,a=0;o<i;o++){for(var r=e.charCodeAt(o);a<n;)if(t.charCodeAt(a++)===r)continue e;return!1}return!0},exactSearch:function(e,t){return e=e.toLowerCase(),(t=t.toLowerCase()).indexOf(e)>-1},filterActive:function(){k.useLabels&&X.filter(\".\"+T.active).addClass(T.filtered)},focusSearch:function(e){S.has.search()&&!S.is.focusedOnSearch()&&(e?(M.off(\"focus\"+z,D.search),N.focus(),M.on(\"focus\"+z,D.search,S.event.search.focus)):N.focus())},forceSelection:function(){var e=X.not(T.filtered).filter(\".\"+T.selected).eq(0),t=X.not(T.filtered).filter(\".\"+T.active).eq(0),n=e.length>0?e:t;if(n.length>0&&!S.is.multiple())return S.debug(\"Forcing partial selection to selected item\",n),void S.event.item.click.call(n,{},!0);k.allowAdditions?(S.set.selected(S.get.query()),S.remove.searchTerm()):S.remove.searchTerm()},change:{values:function(t){k.allowAdditions||S.clear(),S.debug(\"Creating dropdown with specified values\",t),S.setup.menu({values:t}),e.each(t,function(e,t){if(1==t.selected)return S.debug(\"Setting initial selection to\",t.value),S.set.selected(t.value),!0})}},event:{change:function(){Z||(S.debug(\"Input changed, updating selection\"),S.set.selected())},focus:function(){k.showOnFocus&&!$&&S.is.hidden()&&!v&&S.show()},blur:function(e){v=n.activeElement===this,$||v||(S.remove.activeLabel(),S.hide())},mousedown:function(){S.is.searchSelection()?b=!0:$=!0},mouseup:function(){S.is.searchSelection()?b=!1:$=!1},click:function(t){e(t.target).is(M)&&(S.is.focusedOnSearch()?S.show():S.focusSearch())},search:{focus:function(){$=!0,S.is.multiple()&&S.remove.activeLabel(),k.showOnFocus&&S.search()},blur:function(e){v=n.activeElement===this,S.is.searchSelection()&&!b&&(Y||v||(k.forceSelection&&S.forceSelection(),S.hide())),b=!1}},icon:{click:function(e){S.toggle()}},text:{focus:function(e){$=!0,S.focusSearch()}},input:function(e){(S.is.multiple()||S.is.searchSelection())&&S.set.filtered(),clearTimeout(S.timer),S.timer=setTimeout(S.search,k.delay.search)},label:{click:function(t){var n=e(this),i=M.find(D.label),o=i.filter(\".\"+T.active),a=n.nextAll(\".\"+T.active),r=n.prevAll(\".\"+T.active),s=a.length>0?n.nextUntil(a).add(o).add(n):n.prevUntil(r).add(o).add(n);t.shiftKey?(o.removeClass(T.active),s.addClass(T.active)):t.ctrlKey?n.toggleClass(T.active):(o.removeClass(T.active),n.addClass(T.active)),k.onLabelSelect.apply(this,i.filter(\".\"+T.active))}},remove:{click:function(){var t=e(this).parent();t.hasClass(T.active)?S.remove.activeLabels():S.remove.activeLabels(t)}},test:{toggle:function(e){var t=S.is.multiple()?S.show:S.toggle;S.is.bubbledLabelClick(e)||S.is.bubbledIconClick(e)||S.determine.eventOnElement(e,t)&&e.preventDefault()},touch:function(e){S.determine.eventOnElement(e,function(){\"touchstart\"==e.type?S.timer=setTimeout(function(){S.hide()},k.delay.touch):\"touchmove\"==e.type&&clearTimeout(S.timer)}),e.stopPropagation()},hide:function(e){S.determine.eventInModule(e,S.hide)}},select:{mutation:function(t){S.debug(\"<select> modified, recreating menu\");var n=!1;e.each(t,function(t,i){if(e(i.target).is(\"select\")||e(i.addedNodes).is(\"select\"))return n=!0,!0}),n&&(S.disconnect.selectObserver(),S.refresh(),S.setup.select(),S.set.selected(),S.observe.select())}},menu:{mutation:function(t){var n=t[0],i=n.addedNodes?e(n.addedNodes[0]):e(!1),o=n.removedNodes?e(n.removedNodes[0]):e(!1),a=i.add(o),r=a.is(D.addition)||a.closest(D.addition).length>0,s=a.is(D.message)||a.closest(D.message).length>0;r||s?(S.debug(\"Updating item selector cache\"),S.refreshItems()):(S.debug(\"Menu modified, updating selector cache\"),S.refresh())},mousedown:function(){Y=!0},mouseup:function(){Y=!1}},item:{mouseenter:function(t){var n=e(t.target),i=e(this),o=i.children(D.menu),a=i.siblings(D.item).children(D.menu),r=o.length>0;!(o.find(n).length>0)&&r&&(clearTimeout(S.itemTimer),S.itemTimer=setTimeout(function(){S.verbose(\"Showing sub-menu\",o),e.each(a,function(){S.animate.hide(!1,e(this))}),S.animate.show(!1,o)},k.delay.show),t.preventDefault())},mouseleave:function(t){var n=e(this).children(D.menu);n.length>0&&(clearTimeout(S.itemTimer),S.itemTimer=setTimeout(function(){S.verbose(\"Hiding sub-menu\",n),S.animate.hide(!1,n)},k.delay.hide))},click:function(t,i){var o=e(this),a=e(t?t.target:\"\"),r=o.find(D.menu),s=S.get.choiceText(o),l=S.get.choiceValue(o,s),c=r.length>0,u=r.find(a).length>0;S.has.menuSearch()&&e(n.activeElement).blur(),u||c&&!k.allowCategorySelection||(S.is.searchSelection()&&(k.allowAdditions&&S.remove.userAddition(),S.remove.searchTerm(),S.is.focusedOnSearch()||1==i||S.focusSearch(!0)),k.useLabels||(S.remove.filteredItem(),S.set.scrollPosition(o)),S.determine.selectAction.call(this,s,l))}},document:{keydown:function(e){var t=e.which;if(S.is.inObject(t,P)){var n=M.find(D.label),i=n.filter(\".\"+T.active),o=(i.data(E.value),n.index(i)),a=n.length,r=i.length>0,s=i.length>1,l=0===o,c=o+1==a,u=S.is.searchSelection(),d=S.is.focusedOnSearch(),f=S.is.focused(),m=d&&0===S.get.caretPosition();if(u&&!r&&!d)return;t==P.leftArrow?!f&&!m||r?r&&(e.shiftKey?S.verbose(\"Adding previous label to selection\"):(S.verbose(\"Selecting previous label\"),n.removeClass(T.active)),l&&!s?i.addClass(T.active):i.prev(D.siblingLabel).addClass(T.active).end(),e.preventDefault()):(S.verbose(\"Selecting previous label\"),n.last().addClass(T.active)):t==P.rightArrow?(f&&!r&&n.first().addClass(T.active),r&&(e.shiftKey?S.verbose(\"Adding next label to selection\"):(S.verbose(\"Selecting next label\"),n.removeClass(T.active)),c?u?d?n.removeClass(T.active):S.focusSearch():s?i.next(D.siblingLabel).addClass(T.active):i.addClass(T.active):i.next(D.siblingLabel).addClass(T.active),e.preventDefault())):t==P.deleteKey||t==P.backspace?r?(S.verbose(\"Removing active labels\"),c&&u&&!d&&S.focusSearch(),i.last().next(D.siblingLabel).addClass(T.active),S.remove.activeLabels(i),e.preventDefault()):m&&!r&&t==P.backspace&&(S.verbose(\"Removing last label on input backspace\"),i=n.last().addClass(T.active),S.remove.activeLabels(i)):i.removeClass(T.active)}}},keydown:function(e){var t=e.which;if(S.is.inObject(t,P)){var n,i=X.not(D.unselectable).filter(\".\"+T.selected).eq(0),o=Q.children(\".\"+T.active).eq(0),a=i.length>0?i:o,r=a.length>0?a.siblings(\":not(.\"+T.filtered+\")\").addBack():Q.children(\":not(.\"+T.filtered+\")\"),s=a.children(D.menu),l=a.closest(D.menu),c=l.hasClass(T.visible)||l.hasClass(T.animating)||l.parent(D.menu).length>0,u=s.length>0,d=a.length>0,f=a.not(D.unselectable).length>0,m=t==P.delimiter&&k.allowAdditions&&S.is.multiple();if(k.allowAdditions&&k.hideAdditions&&(t==P.enter||m)&&f&&(S.verbose(\"Selecting item from keyboard shortcut\",a),S.event.item.click.call(a,e),S.is.searchSelection()&&S.remove.searchTerm()),S.is.visible()){if((t==P.enter||m)&&(t==P.enter&&d&&u&&!k.allowCategorySelection?(S.verbose(\"Pressed enter on unselectable category, opening sub menu\"),t=P.rightArrow):f&&(S.verbose(\"Selecting item from keyboard shortcut\",a),S.event.item.click.call(a,e),S.is.searchSelection()&&S.remove.searchTerm()),e.preventDefault()),d&&(t==P.leftArrow&&l[0]!==Q[0]&&(S.verbose(\"Left key pressed, closing sub-menu\"),S.animate.hide(!1,l),a.removeClass(T.selected),l.closest(D.item).addClass(T.selected),e.preventDefault()),t==P.rightArrow&&u&&(S.verbose(\"Right key pressed, opening sub-menu\"),S.animate.show(!1,s),a.removeClass(T.selected),s.find(D.item).eq(0).addClass(T.selected),e.preventDefault())),t==P.upArrow){if(n=d&&c?a.prevAll(D.item+\":not(\"+D.unselectable+\")\").eq(0):X.eq(0),r.index(n)<0)return S.verbose(\"Up key pressed but reached top of current menu\"),void e.preventDefault();S.verbose(\"Up key pressed, changing active item\"),a.removeClass(T.selected),n.addClass(T.selected),S.set.scrollPosition(n),k.selectOnKeydown&&S.is.single()&&S.set.selectedItem(n),e.preventDefault()}if(t==P.downArrow){if(0===(n=d&&c?n=a.nextAll(D.item+\":not(\"+D.unselectable+\")\").eq(0):X.eq(0)).length)return S.verbose(\"Down key pressed but reached bottom of current menu\"),void e.preventDefault();S.verbose(\"Down key pressed, changing active item\"),X.removeClass(T.selected),n.addClass(T.selected),S.set.scrollPosition(n),k.selectOnKeydown&&S.is.single()&&S.set.selectedItem(n),e.preventDefault()}t==P.pageUp&&(S.scrollPage(\"up\"),e.preventDefault()),t==P.pageDown&&(S.scrollPage(\"down\"),e.preventDefault()),t==P.escape&&(S.verbose(\"Escape key pressed, closing dropdown\"),S.hide())}else m&&e.preventDefault(),t!=P.downArrow||S.is.visible()||(S.verbose(\"Down key pressed, showing dropdown\"),S.show(),e.preventDefault())}else S.has.search()||S.set.selectedLetter(String.fromCharCode(t))}},trigger:{change:function(){var e=n.createEvent(\"HTMLEvents\"),t=U[0];t&&(S.verbose(\"Triggering native change event\"),e.initEvent(\"change\",!0,!1),t.dispatchEvent(e))}},determine:{selectAction:function(t,n){S.verbose(\"Determining action\",k.action),e.isFunction(S.action[k.action])?(S.verbose(\"Triggering preset action\",k.action,t,n),S.action[k.action].call(K,t,n,this)):e.isFunction(k.action)?(S.verbose(\"Triggering user action\",k.action,t,n),k.action.call(K,t,n,this)):S.error(q.action,k.action)},eventInModule:function(t,i){var o=e(t.target),a=o.closest(n.documentElement).length>0,r=o.closest(M).length>0;return i=e.isFunction(i)?i:function(){},a&&!r?(S.verbose(\"Triggering event\",i),i(),!0):(S.verbose(\"Event occurred in dropdown, canceling callback\"),!1)},eventOnElement:function(t,i){var o=e(t.target),a=o.closest(D.siblingLabel),r=n.body.contains(t.target),s=0===M.find(a).length,l=0===o.closest(Q).length;return i=e.isFunction(i)?i:function(){},r&&s&&l?(S.verbose(\"Triggering event\",i),i(),!0):(S.verbose(\"Event occurred in dropdown menu, canceling callback\"),!1)}},action:{nothing:function(){},activate:function(t,n,o){if(n=n!==i?n:t,S.can.activate(e(o))){if(S.set.selected(n,e(o)),S.is.multiple()&&!S.is.allFiltered())return;S.hideAndClear()}},select:function(t,n,o){if(n=n!==i?n:t,S.can.activate(e(o))){if(S.set.value(n,t,e(o)),S.is.multiple()&&!S.is.allFiltered())return;S.hideAndClear()}},combo:function(t,n,o){n=n!==i?n:t,S.set.selected(n,e(o)),S.hideAndClear()},hide:function(e,t,n){S.set.value(t,e),S.hideAndClear()}},get:{id:function(){return x},defaultText:function(){return M.data(E.defaultText)},defaultValue:function(){return M.data(E.defaultValue)},placeholderText:function(){return\"auto\"!=k.placeholder&&\"string\"==typeof k.placeholder?k.placeholder:M.data(E.placeholderText)||\"\"},text:function(){return V.text()},query:function(){return e.trim(N.val())},searchWidth:function(e){return e=e!==i?e:N.val(),H.text(e),Math.ceil(H.width()+1)},selectionCount:function(){var t=S.get.values();return S.is.multiple()?e.isArray(t)?t.length:0:\"\"!==S.get.value()?1:0},transition:function(e){return\"auto\"==k.transition?S.is.upward(e)?\"slide up\":\"slide down\":k.transition},userValues:function(){var t=S.get.values();return!!t&&(t=e.isArray(t)?t:[t],e.grep(t,function(e){return!1===S.get.item(e)}))},uniqueArray:function(t){return e.grep(t,function(n,i){return e.inArray(n,t)===i})},caretPosition:function(){var e,t,i=N.get(0);return\"selectionStart\"in i?i.selectionStart:n.selection?(i.focus(),t=(e=n.selection.createRange()).text.length,e.moveStart(\"character\",-i.value.length),e.text.length-t):void 0},value:function(){var t=U.length>0?U.val():M.data(E.value),n=e.isArray(t)&&1===t.length&&\"\"===t[0];return t===i||n?\"\":t},values:function(){var e=S.get.value();return\"\"===e?\"\":!S.has.selectInput()&&S.is.multiple()?\"string\"==typeof e?e.split(k.delimiter):\"\":e},remoteValues:function(){var t=S.get.values(),n=!1;return t&&(\"string\"==typeof t&&(t=[t]),e.each(t,function(e,t){var i=S.read.remoteData(t);S.verbose(\"Restoring value from session data\",i,t),i&&(n||(n={}),n[t]=i)})),n},choiceText:function(t,n){if(n=n!==i?n:k.preserveHTML,t)return t.find(D.menu).length>0&&(S.verbose(\"Retrieving text of element with sub-menu\"),(t=t.clone()).find(D.menu).remove(),t.find(D.menuIcon).remove()),t.data(E.text)!==i?t.data(E.text):n?e.trim(t.html()):e.trim(t.text())},choiceValue:function(t,n){return n=n||S.get.choiceText(t),!!t&&(t.data(E.value)!==i?String(t.data(E.value)):\"string\"==typeof n?e.trim(n.toLowerCase()):String(n))},inputEvent:function(){var e=N[0];return!!e&&(e.oninput!==i?\"input\":e.onpropertychange!==i?\"propertychange\":\"keyup\")},selectValues:function(){var t={values:[]};return M.find(\"option\").each(function(){var n=e(this),o=n.html(),a=n.attr(\"disabled\"),r=n.attr(\"value\")!==i?n.attr(\"value\"):o;\"auto\"===k.placeholder&&\"\"===r?t.placeholder=o:t.values.push({name:o,value:r,disabled:a})}),k.placeholder&&\"auto\"!==k.placeholder&&(S.debug(\"Setting placeholder value to\",k.placeholder),t.placeholder=k.placeholder),k.sortSelect?(t.values.sort(function(e,t){return e.name>t.name?1:-1}),S.debug(\"Retrieved and sorted values from select\",t)):S.debug(\"Retrieved values from select\",t),t},activeItem:function(){return X.filter(\".\"+T.active)},selectedItem:function(){var e=X.not(D.unselectable).filter(\".\"+T.selected);return e.length>0?e:X.eq(0)},itemWithAdditions:function(e){var t=S.get.item(e),n=S.create.userChoice(e);return n&&n.length>0&&(t=t.length>0?t.add(n):n),t},item:function(t,n){var o,a,r=!1;return t=t!==i?t:S.get.values()!==i?S.get.values():S.get.text(),o=a?t.length>0:t!==i&&null!==t,a=S.is.multiple()&&e.isArray(t),n=\"\"===t||0===t||(n||!1),o&&X.each(function(){var o=e(this),s=S.get.choiceText(o),l=S.get.choiceValue(o,s);if(null!==l&&l!==i)if(a)-1===e.inArray(String(l),t)&&-1===e.inArray(s,t)||(r=r?r.add(o):o);else if(n){if(S.verbose(\"Ambiguous dropdown value using strict type check\",o,t),l===t||s===t)return r=o,!0}else if(String(l)==String(t)||s==t)return S.verbose(\"Found select item by value\",l,t),r=o,!0}),r}},check:{maxSelections:function(e){return!k.maxSelections||((e=e!==i?e:S.get.selectionCount())>=k.maxSelections?(S.debug(\"Maximum selection count reached\"),k.useLabels&&(X.addClass(T.filtered),S.add.message(A.maxSelections)),!0):(S.verbose(\"No longer at maximum selection count\"),S.remove.message(),S.remove.filteredItem(),S.is.searchSelection()&&S.filterItems(),!1))}},restore:{defaults:function(){S.clear(),S.restore.defaultText(),S.restore.defaultValue()},defaultText:function(){var e=S.get.defaultText();e===S.get.placeholderText?(S.debug(\"Restoring default placeholder text\",e),S.set.placeholderText(e)):(S.debug(\"Restoring default text\",e),S.set.text(e))},placeholderText:function(){S.set.placeholderText()},defaultValue:function(){var e=S.get.defaultValue();e!==i&&(S.debug(\"Restoring default value\",e),\"\"!==e?(S.set.value(e),S.set.selected()):(S.remove.activeItem(),S.remove.selectedItem()))},labels:function(){k.allowAdditions&&(k.useLabels||(S.error(q.labels),k.useLabels=!0),S.debug(\"Restoring selected values\"),S.create.userLabels()),S.check.maxSelections()},selected:function(){S.restore.values(),S.is.multiple()?(S.debug(\"Restoring previously selected values and labels\"),S.restore.labels()):S.debug(\"Restoring previously selected values\")},values:function(){S.set.initialLoad(),k.apiSettings&&k.saveRemoteData&&S.get.remoteValues()?S.restore.remoteValues():S.set.selected(),S.remove.initialLoad()},remoteValues:function(){var t=S.get.remoteValues();S.debug(\"Recreating selected from session data\",t),t&&(S.is.single()?e.each(t,function(e,t){S.set.text(t)}):e.each(t,function(e,t){S.add.label(e,t)}))}},read:{remoteData:function(e){var n;if(t.Storage!==i)return(n=sessionStorage.getItem(e))!==i&&n;S.error(q.noStorage)}},save:{defaults:function(){S.save.defaultText(),S.save.placeholderText(),S.save.defaultValue()},defaultValue:function(){var e=S.get.value();S.verbose(\"Saving default value as\",e),M.data(E.defaultValue,e)},defaultText:function(){var e=S.get.text();S.verbose(\"Saving default text as\",e),M.data(E.defaultText,e)},placeholderText:function(){var e;!1!==k.placeholder&&V.hasClass(T.placeholder)&&(e=S.get.text(),S.verbose(\"Saving placeholder text as\",e),M.data(E.placeholderText,e))},remoteData:function(e,n){t.Storage!==i?(S.verbose(\"Saving remote data to session storage\",n,e),sessionStorage.setItem(n,e)):S.error(q.noStorage)}},clear:function(){S.is.multiple()&&k.useLabels?S.remove.labels():(S.remove.activeItem(),S.remove.selectedItem()),S.set.placeholderText(),S.clearValue()},clearValue:function(){S.set.value(\"\")},scrollPage:function(e,t){var n,i,o=t||S.get.selectedItem(),a=o.closest(D.menu),r=a.outerHeight(),s=a.scrollTop(),l=X.eq(0).outerHeight(),c=Math.floor(r/l),u=(a.prop(\"scrollHeight\"),\"up\"==e?s-l*c:s+l*c),d=X.not(D.unselectable);i=\"up\"==e?d.index(o)-c:d.index(o)+c,(n=(\"up\"==e?i>=0:i<d.length)?d.eq(i):\"up\"==e?d.first():d.last()).length>0&&(S.debug(\"Scrolling page\",e,n),o.removeClass(T.selected),n.addClass(T.selected),k.selectOnKeydown&&S.is.single()&&S.set.selectedItem(n),a.scrollTop(u))},set:{filtered:function(){var e=S.is.multiple(),t=S.is.searchSelection(),n=e&&t,i=t?S.get.query():\"\",o=\"string\"==typeof i&&i.length>0,a=S.get.searchWidth(),r=\"\"!==i;e&&o&&(S.verbose(\"Adjusting input width\",a,k.glyphWidth),N.css(\"width\",a)),o||n&&r?(S.verbose(\"Hiding placeholder text\"),V.addClass(T.filtered)):(!e||n&&!r)&&(S.verbose(\"Showing placeholder text\"),V.removeClass(T.filtered))},empty:function(){M.addClass(T.empty)},loading:function(){M.addClass(T.loading)},placeholderText:function(e){e=e||S.get.placeholderText(),S.debug(\"Setting placeholder text\",e),S.set.text(e),V.addClass(T.placeholder)},tabbable:function(){S.is.searchSelection()?(S.debug(\"Added tabindex to searchable dropdown\"),N.val(\"\").attr(\"tabindex\",0),Q.attr(\"tabindex\",-1)):(S.debug(\"Added tabindex to dropdown\"),M.attr(\"tabindex\")===i&&(M.attr(\"tabindex\",0),Q.attr(\"tabindex\",-1)))},initialLoad:function(){S.verbose(\"Setting initial load\"),h=!0},activeItem:function(e){k.allowAdditions&&e.filter(D.addition).length>0?e.addClass(T.filtered):e.addClass(T.active)},partialSearch:function(e){var t=S.get.query().length;N.val(e.substr(0,t))},scrollPosition:function(e,t){var n,o,a,r,s,l;n=(e=e||S.get.selectedItem()).closest(D.menu),o=e&&e.length>0,t=t!==i&&t,e&&n.length>0&&o&&(e.position().top,n.addClass(T.loading),a=(r=n.scrollTop())-n.offset().top+e.offset().top,t||(l=r+n.height()<a+5,s=a-5<r),S.debug(\"Scrolling to active item\",a),(t||s||l)&&n.scrollTop(a),n.removeClass(T.loading))},text:function(e){\"select\"!==k.action&&(\"combo\"==k.action?(S.debug(\"Changing combo button text\",e,B),k.preserveHTML?B.html(e):B.text(e)):(e!==S.get.placeholderText()&&V.removeClass(T.placeholder),S.debug(\"Changing text\",e,V),V.removeClass(T.filtered),k.preserveHTML?V.html(e):V.text(e)))},selectedItem:function(e){var t=S.get.choiceValue(e),n=S.get.choiceText(e,!1),i=S.get.choiceText(e,!0);S.debug(\"Setting user selection to item\",e),S.remove.activeItem(),S.set.partialSearch(n),S.set.activeItem(e),S.set.selected(t,e),S.set.text(i)},selectedLetter:function(t){var n,i=X.filter(\".\"+T.selected),o=!1;i.length>0&&S.has.firstLetter(i,t)&&(n=i.nextAll(X).eq(0),S.has.firstLetter(n,t)&&(o=n)),o||X.each(function(){if(S.has.firstLetter(e(this),t))return o=e(this),!1}),o&&(S.verbose(\"Scrolling to next value with letter\",t),S.set.scrollPosition(o),i.removeClass(T.selected),o.addClass(T.selected),k.selectOnKeydown&&S.is.single()&&S.set.selectedItem(o))},direction:function(e){\"auto\"==k.direction?(S.remove.upward(),S.can.openDownward(e)?S.remove.upward(e):S.set.upward(e),S.is.leftward(e)||S.can.openRightward(e)||S.set.leftward(e)):\"upward\"==k.direction&&S.set.upward(e)},upward:function(e){(e||M).addClass(T.upward)},leftward:function(e){(e||Q).addClass(T.leftward)},value:function(e,t,n){var o=S.escape.value(e),a=U.length>0,r=S.get.values(),s=e!==i?String(e):e;if(a){if(!k.allowReselection&&s==r&&(S.verbose(\"Skipping value update already same value\",e,r),!S.is.initialLoad()))return;S.is.single()&&S.has.selectInput()&&S.can.extendSelect()&&(S.debug(\"Adding user option\",e),S.add.optionValue(e)),S.debug(\"Updating input value\",o,r),Z=!0,U.val(o),!1===k.fireOnInit&&S.is.initialLoad()?S.debug(\"Input native change event ignored on initial load\"):S.trigger.change(),Z=!1}else S.verbose(\"Storing value in metadata\",o,U),o!==r&&M.data(E.value,s);!1===k.fireOnInit&&S.is.initialLoad()?S.verbose(\"No callback on initial load\",k.onChange):k.onChange.call(K,e,t,n)},active:function(){M.addClass(T.active)},multiple:function(){M.addClass(T.multiple)},visible:function(){M.addClass(T.visible)},exactly:function(e,t){S.debug(\"Setting selected to exact values\"),S.clear(),S.set.selected(e,t)},selected:function(t,n){var i=S.is.multiple();(n=k.allowAdditions?n||S.get.itemWithAdditions(t):n||S.get.item(t))&&(S.debug(\"Setting selected menu item to\",n),S.is.multiple()&&S.remove.searchWidth(),S.is.single()?(S.remove.activeItem(),S.remove.selectedItem()):k.useLabels&&S.remove.selectedItem(),n.each(function(){var t=e(this),o=S.get.choiceText(t),a=S.get.choiceValue(t,o),r=t.hasClass(T.filtered),s=t.hasClass(T.active),l=t.hasClass(T.addition),c=i&&1==n.length;i?!s||l?(k.apiSettings&&k.saveRemoteData&&S.save.remoteData(o,a),k.useLabels?(S.add.label(a,o,c),S.add.value(a,o,t),S.set.activeItem(t),S.filterActive(),S.select.nextAvailable(n)):(S.add.value(a,o,t),S.set.text(S.add.variables(A.count)),S.set.activeItem(t))):r||(S.debug(\"Selected active value, removing label\"),S.remove.selected(a)):(k.apiSettings&&k.saveRemoteData&&S.save.remoteData(o,a),S.set.text(o),S.set.value(a,o,t),t.addClass(T.active).addClass(T.selected))}))}},add:{label:function(t,n,i){var o,a=S.is.searchSelection()?N:V,r=S.escape.value(t);k.ignoreCase&&(r=r.toLowerCase()),o=e(\"<a />\").addClass(T.label).attr(\"data-\"+E.value,r).html(j.label(r,n)),o=k.onLabelCreate.call(o,r,n),S.has.label(t)?S.debug(\"User selection already exists, skipping\",r):(k.label.variation&&o.addClass(k.label.variation),!0===i?(S.debug(\"Animating in label\",o),o.addClass(T.hidden).insertBefore(a).transition(k.label.transition,k.label.duration)):(S.debug(\"Adding selection label\",o),o.insertBefore(a)))},message:function(t){var n=Q.children(D.message),i=k.templates.message(S.add.variables(t));n.length>0?n.html(i):n=e(\"<div/>\").html(i).addClass(T.message).appendTo(Q)},optionValue:function(t){var n=S.escape.value(t);U.find('option[value=\"'+S.escape.string(n)+'\"]').length>0||(S.disconnect.selectObserver(),S.is.single()&&(S.verbose(\"Removing previous user addition\"),U.find(\"option.\"+T.addition).remove()),e(\"<option/>\").prop(\"value\",n).addClass(T.addition).html(t).appendTo(U),S.verbose(\"Adding user addition as an <option>\",t),S.observe.select())},userSuggestion:function(e){var t,n=Q.children(D.addition),i=S.get.item(e),o=i&&i.not(D.addition).length,a=n.length>0;k.useLabels&&S.has.maxSelections()||(\"\"===e||o?n.remove():(a?(n.data(E.value,e).data(E.text,e).attr(\"data-\"+E.value,e).attr(\"data-\"+E.text,e).removeClass(T.filtered),k.hideAdditions||(t=k.templates.addition(S.add.variables(A.addResult,e)),n.html(t)),S.verbose(\"Replacing user suggestion with new value\",n)):((n=S.create.userChoice(e)).prependTo(Q),S.verbose(\"Adding item choice to menu corresponding with user choice addition\",n)),k.hideAdditions&&!S.is.allFiltered()||n.addClass(T.selected).siblings().removeClass(T.selected),S.refreshItems()))},variables:function(e,t){var n,i,o=-1!==e.search(\"{count}\"),a=-1!==e.search(\"{maxCount}\"),r=-1!==e.search(\"{term}\");return S.verbose(\"Adding templated variables to message\",e),o&&(n=S.get.selectionCount(),e=e.replace(\"{count}\",n)),a&&(n=S.get.selectionCount(),e=e.replace(\"{maxCount}\",k.maxSelections)),r&&(i=t||S.get.query(),e=e.replace(\"{term}\",i)),e},value:function(t,n,i){var o,a=S.get.values();S.has.value(t)?S.debug(\"Value already selected\"):\"\"!==t?(e.isArray(a)?(o=a.concat([t]),o=S.get.uniqueArray(o)):o=[t],S.has.selectInput()?S.can.extendSelect()&&(S.debug(\"Adding value to select\",t,o,U),S.add.optionValue(t)):(o=o.join(k.delimiter),S.debug(\"Setting hidden input to delimited value\",o,U)),!1===k.fireOnInit&&S.is.initialLoad()?S.verbose(\"Skipping onadd callback on initial load\",k.onAdd):k.onAdd.call(K,t,n,i),S.set.value(o,t,n,i),S.check.maxSelections()):S.debug(\"Cannot select blank values from multiselect\")}},remove:{active:function(){M.removeClass(T.active)},activeLabel:function(){M.find(D.label).removeClass(T.active)},empty:function(){M.removeClass(T.empty)},loading:function(){M.removeClass(T.loading)},initialLoad:function(){h=!1},upward:function(e){(e||M).removeClass(T.upward)},leftward:function(e){(e||Q).removeClass(T.leftward)},visible:function(){M.removeClass(T.visible)},activeItem:function(){X.removeClass(T.active)},filteredItem:function(){k.useLabels&&S.has.maxSelections()||(k.useLabels&&S.is.multiple()?X.not(\".\"+T.active).removeClass(T.filtered):X.removeClass(T.filtered),S.remove.empty())},optionValue:function(e){var t=S.escape.value(e),n=U.find('option[value=\"'+S.escape.string(t)+'\"]');n.length>0&&n.hasClass(T.addition)&&(C&&(C.disconnect(),S.verbose(\"Temporarily disconnecting mutation observer\")),n.remove(),S.verbose(\"Removing user addition as an <option>\",t),C&&C.observe(U[0],{childList:!0,subtree:!0}))},message:function(){Q.children(D.message).remove()},searchWidth:function(){N.css(\"width\",\"\")},searchTerm:function(){S.verbose(\"Cleared search term\"),N.val(\"\"),S.set.filtered()},userAddition:function(){X.filter(D.addition).remove()},selected:function(t,n){if(!(n=k.allowAdditions?n||S.get.itemWithAdditions(t):n||S.get.item(t)))return!1;n.each(function(){var t=e(this),n=S.get.choiceText(t),i=S.get.choiceValue(t,n);S.is.multiple()?k.useLabels?(S.remove.value(i,n,t),S.remove.label(i)):(S.remove.value(i,n,t),0===S.get.selectionCount()?S.set.placeholderText():S.set.text(S.add.variables(A.count))):S.remove.value(i,n,t),t.removeClass(T.filtered).removeClass(T.active),k.useLabels&&t.removeClass(T.selected)})},selectedItem:function(){X.removeClass(T.selected)},value:function(e,t,n){var i,o=S.get.values();S.has.selectInput()?(S.verbose(\"Input is <select> removing selected option\",e),i=S.remove.arrayValue(e,o),S.remove.optionValue(e)):(S.verbose(\"Removing from delimited values\",e),i=(i=S.remove.arrayValue(e,o)).join(k.delimiter)),!1===k.fireOnInit&&S.is.initialLoad()?S.verbose(\"No callback on initial load\",k.onRemove):k.onRemove.call(K,e,t,n),S.set.value(i,t,n),S.check.maxSelections()},arrayValue:function(t,n){return e.isArray(n)||(n=[n]),n=e.grep(n,function(e){return t!=e}),S.verbose(\"Removed value from delimited string\",t,n),n},label:function(e,t){var n=M.find(D.label).filter(\"[data-\"+E.value+'=\"'+S.escape.string(e)+'\"]');S.verbose(\"Removing label\",n),n.remove()},activeLabels:function(e){e=e||M.find(D.label).filter(\".\"+T.active),S.verbose(\"Removing active label selections\",e),S.remove.labels(e)},labels:function(t){t=t||M.find(D.label),S.verbose(\"Removing labels\",t),t.each(function(){var t=e(this),n=t.data(E.value),o=n!==i?String(n):n,a=S.is.userValue(o);!1!==k.onLabelRemove.call(t,n)?(S.remove.message(),a?(S.remove.value(o),S.remove.label(o)):S.remove.selected(o)):S.debug(\"Label remove callback cancelled removal\")})},tabbable:function(){S.is.searchSelection()?(S.debug(\"Searchable dropdown initialized\"),N.removeAttr(\"tabindex\"),Q.removeAttr(\"tabindex\")):(S.debug(\"Simple selection dropdown initialized\"),M.removeAttr(\"tabindex\"),Q.removeAttr(\"tabindex\"))}},has:{menuSearch:function(){return S.has.search()&&N.closest(Q).length>0},search:function(){return N.length>0},sizer:function(){return H.length>0},selectInput:function(){return U.is(\"select\")},minCharacters:function(e){return!k.minCharacters||(e=e!==i?String(e):String(S.get.query())).length>=k.minCharacters},firstLetter:function(e,t){var n;return!(!e||0===e.length||\"string\"!=typeof t)&&(n=S.get.choiceText(e,!1),(t=t.toLowerCase())==String(n).charAt(0).toLowerCase())},input:function(){return U.length>0},items:function(){return X.length>0},menu:function(){return Q.length>0},message:function(){return 0!==Q.children(D.message).length},label:function(e){var t=S.escape.value(e),n=M.find(D.label);return k.ignoreCase&&(t=t.toLowerCase()),n.filter(\"[data-\"+E.value+'=\"'+S.escape.string(t)+'\"]').length>0},maxSelections:function(){return k.maxSelections&&S.get.selectionCount()>=k.maxSelections},allResultsFiltered:function(){var e=X.not(D.addition);return e.filter(D.unselectable).length===e.length},userSuggestion:function(){return Q.children(D.addition).length>0},query:function(){return\"\"!==S.get.query()},value:function(e){return k.ignoreCase?S.has.valueIgnoringCase(e):S.has.valueMatchingCase(e)},valueMatchingCase:function(t){var n=S.get.values();return!!(e.isArray(n)?n&&-1!==e.inArray(t,n):n==t)},valueIgnoringCase:function(t){var n=S.get.values(),i=!1;return e.isArray(n)||(n=[n]),e.each(n,function(e,n){if(String(t).toLowerCase()==String(n).toLowerCase())return i=!0,!1}),i}},is:{active:function(){return M.hasClass(T.active)},animatingInward:function(){return Q.transition(\"is inward\")},animatingOutward:function(){return Q.transition(\"is outward\")},bubbledLabelClick:function(t){return e(t.target).is(\"select, input\")&&M.closest(\"label\").length>0},bubbledIconClick:function(t){return e(t.target).closest(W).length>0},alreadySetup:function(){return M.is(\"select\")&&M.parent(D.dropdown).data(I)!==i&&0===M.prev().length},animating:function(e){return e?e.transition&&e.transition(\"is animating\"):Q.transition&&Q.transition(\"is animating\")},leftward:function(e){return(e||Q).hasClass(T.leftward)},disabled:function(){return M.hasClass(T.disabled)},focused:function(){return n.activeElement===M[0]},focusedOnSearch:function(){return n.activeElement===N[0]},allFiltered:function(){return(S.is.multiple()||S.has.search())&&!(0==k.hideAdditions&&S.has.userSuggestion())&&!S.has.message()&&S.has.allResultsFiltered()},hidden:function(e){return!S.is.visible(e)},initialLoad:function(){return h},inObject:function(t,n){var i=!1;return e.each(n,function(e,n){if(n==t)return i=!0,!0}),i},multiple:function(){return M.hasClass(T.multiple)},remote:function(){return k.apiSettings&&S.can.useAPI()},single:function(){return!S.is.multiple()},selectMutation:function(t){var n=!1;return e.each(t,function(t,i){if(i.target&&e(i.target).is(\"select\"))return n=!0,!0}),n},search:function(){return M.hasClass(T.search)},searchSelection:function(){return S.has.search()&&1===N.parent(D.dropdown).length},selection:function(){return M.hasClass(T.selection)},userValue:function(t){return-1!==e.inArray(t,S.get.userValues())},upward:function(e){return(e||M).hasClass(T.upward)},visible:function(e){return e?e.hasClass(T.visible):Q.hasClass(T.visible)},verticallyScrollableContext:function(){var e=L.get(0)!==t&&L.css(\"overflow-y\");return\"auto\"==e||\"scroll\"==e},horizontallyScrollableContext:function(){var e=L.get(0)!==t&&L.css(\"overflow-X\");return\"auto\"==e||\"scroll\"==e}},can:{activate:function(e){return!!k.useLabels||(!S.has.maxSelections()||!(!S.has.maxSelections()||!e.hasClass(T.active)))},openDownward:function(e){var n,i,o=e||Q,a=!0;return o.addClass(T.loading),i={context:{offset:L.get(0)===t?{top:0,left:0}:L.offset(),scrollTop:L.scrollTop(),height:L.outerHeight()},menu:{offset:o.offset(),height:o.outerHeight()}},S.is.verticallyScrollableContext()&&(i.menu.offset.top+=i.context.scrollTop),(n={above:i.context.scrollTop<=i.menu.offset.top-i.context.offset.top-i.menu.height,below:i.context.scrollTop+i.context.height>=i.menu.offset.top-i.context.offset.top+i.menu.height}).below?(S.verbose(\"Dropdown can fit in context downward\",n),a=!0):n.below||n.above?(S.verbose(\"Dropdown cannot fit below, opening upward\",n),a=!1):(S.verbose(\"Dropdown cannot fit in either direction, favoring downward\",n),a=!0),o.removeClass(T.loading),a},openRightward:function(e){var n,i,o=e||Q,a=!0;return o.addClass(T.loading),i={context:{offset:L.get(0)===t?{top:0,left:0}:L.offset(),scrollLeft:L.scrollLeft(),width:L.outerWidth()},menu:{offset:o.offset(),width:o.outerWidth()}},S.is.horizontallyScrollableContext()&&(i.menu.offset.left+=i.context.scrollLeft),(n=i.menu.offset.left-i.context.offset.left+i.menu.width>=i.context.scrollLeft+i.context.width)&&(S.verbose(\"Dropdown cannot fit in context rightward\",n),a=!1),o.removeClass(T.loading),a},click:function(){return c||\"click\"==k.on},extendSelect:function(){return k.allowAdditions||k.apiSettings},show:function(){return!S.is.disabled()&&(S.has.items()||S.has.message())},useAPI:function(){return e.fn.api!==i}},animate:{show:function(t,n){var o,a=n||Q,r=n?function(){}:function(){S.hideSubMenus(),S.hideOthers(),S.set.active()};t=e.isFunction(t)?t:function(){},S.verbose(\"Doing menu show animation\",a),S.set.direction(n),o=S.get.transition(n),S.is.selection()&&S.set.scrollPosition(S.get.selectedItem(),!0),(S.is.hidden(a)||S.is.animating(a))&&(\"none\"==o?(r(),a.transition(\"show\"),t.call(K)):e.fn.transition!==i&&M.transition(\"is supported\")?a.transition({animation:o+\" in\",debug:k.debug,verbose:k.verbose,duration:k.duration,queue:!0,onStart:r,onComplete:function(){t.call(K)}}):S.error(q.noTransition,o))},hide:function(t,n){var o=n||Q,a=(n?k.duration:k.duration,n?function(){}:function(){S.can.click()&&S.unbind.intent(),S.remove.active()}),r=S.get.transition(n);t=e.isFunction(t)?t:function(){},(S.is.visible(o)||S.is.animating(o))&&(S.verbose(\"Doing menu hide animation\",o),\"none\"==r?(a(),o.transition(\"hide\"),t.call(K)):e.fn.transition!==i&&M.transition(\"is supported\")?o.transition({animation:r+\" out\",duration:k.duration,debug:k.debug,verbose:k.verbose,queue:!1,onStart:a,onComplete:function(){t.call(K)}}):S.error(q.transition))}},hideAndClear:function(){S.remove.searchTerm(),S.has.maxSelections()||(S.has.search()?S.hide(function(){S.remove.filteredItem()}):S.hide())},delay:{show:function(){S.verbose(\"Delaying show event to ensure user intent\"),clearTimeout(S.timer),S.timer=setTimeout(S.show,k.delay.show)},hide:function(){S.verbose(\"Delaying hide event to ensure user intent\"),clearTimeout(S.timer),S.timer=setTimeout(S.hide,k.delay.hide)}},escape:{value:function(t){var n=e.isArray(t),i=\"string\"==typeof t,o=!i&&!n,a=i&&-1!==t.search(O.quote),r=[];return o||!a?t:(S.debug(\"Encoding quote values for use in select\",t),n?(e.each(t,function(e,t){r.push(t.replace(O.quote,\"&quot;\"))}),r):t.replace(O.quote,\"&quot;\"))},string:function(e){return(e=String(e)).replace(O.escape,\"\\\\$&\")}},setting:function(t,n){if(S.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,k,t);else{if(n===i)return k[t];e.isPlainObject(k[t])?e.extend(!0,k[t],n):k[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,S,t);else{if(n===i)return S[t];S[t]=n}},debug:function(){!k.silent&&k.debug&&(k.performance?S.performance.log(arguments):(S.debug=Function.prototype.bind.call(console.info,console,k.name+\":\"),S.debug.apply(console,arguments)))},verbose:function(){!k.silent&&k.verbose&&k.debug&&(k.performance?S.performance.log(arguments):(S.verbose=Function.prototype.bind.call(console.info,console,k.name+\":\"),S.verbose.apply(console,arguments)))},error:function(){k.silent||(S.error=Function.prototype.bind.call(console.error,console,k.name+\":\"),S.error.apply(console,arguments))},performance:{log:function(e){var t,n;k.performance&&(n=(t=(new Date).getTime())-(u||t),u=t,d.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:K,\"Execution Time\":n})),clearTimeout(S.performance.timer),S.performance.timer=setTimeout(S.performance.display,500)},display:function(){var t=k.name+\":\",n=0;u=!1,clearTimeout(S.performance.timer),e.each(d,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",l&&(t+=\" '\"+l+\"'\"),(console.group!==i||console.table!==i)&&d.length>0&&(console.groupCollapsed(t),console.table?console.table(d):e.each(d,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),d=[]}},invoke:function(t,n,o){var r,s,l,c=J;return n=n||g,o=K||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(S.error(q.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},m?(J===i&&S.initialize(),S.invoke(f)):(J!==i&&J.invoke(\"destroy\"),S.initialize())}),a!==i?a:r},e.fn.dropdown.settings={silent:!1,debug:!1,verbose:!1,performance:!0,on:\"click\",action:\"activate\",values:!1,apiSettings:!1,selectOnKeydown:!0,minCharacters:0,filterRemoteData:!1,saveRemoteData:!0,throttle:200,context:t,direction:\"auto\",keepOnScreen:!0,match:\"both\",fullTextSearch:!1,placeholder:\"auto\",preserveHTML:!0,sortSelect:!1,forceSelection:!0,allowAdditions:!1,ignoreCase:!1,hideAdditions:!0,maxSelections:!1,useLabels:!0,delimiter:\",\",showOnFocus:!0,allowReselection:!1,allowTab:!0,allowCategorySelection:!1,fireOnInit:!1,transition:\"auto\",duration:200,glyphWidth:1.037,label:{transition:\"scale\",duration:200,variation:!1},delay:{hide:300,show:200,search:20,touch:50},onChange:function(e,t,n){},onAdd:function(e,t,n){},onRemove:function(e,t,n){},onLabelSelect:function(e){},onLabelCreate:function(t,n){return e(this)},onLabelRemove:function(e){return!0},onNoResults:function(e){return!0},onShow:function(){},onHide:function(){},name:\"Dropdown\",namespace:\"dropdown\",message:{addResult:\"Add <b>{term}</b>\",count:\"{count} selected\",maxSelections:\"Max {maxCount} selections\",noResults:\"No results found.\",serverError:\"There was an error contacting the server\"},error:{action:\"You called a dropdown action that was not defined\",alreadySetup:\"Once a select has been initialized behaviors must be called on the created ui dropdown\",labels:\"Allowing user additions currently requires the use of labels.\",missingMultiple:\"<select> requires multiple property to be set to correctly preserve multiple values\",method:\"The method you called is not defined.\",noAPI:\"The API module is required to load resources remotely\",noStorage:\"Saving remote data requires session storage\",noTransition:\"This module requires ui transitions <https://github.com/Semantic-Org/UI-Transition>\"},regExp:{escape:/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,quote:/\"/g},metadata:{defaultText:\"defaultText\",defaultValue:\"defaultValue\",placeholderText:\"placeholder\",text:\"text\",value:\"value\"},fields:{remoteValues:\"results\",values:\"values\",disabled:\"disabled\",name:\"name\",value:\"value\",text:\"text\"},keys:{backspace:8,delimiter:188,deleteKey:46,enter:13,escape:27,pageUp:33,pageDown:34,leftArrow:37,upArrow:38,rightArrow:39,downArrow:40},selector:{addition:\".addition\",dropdown:\".ui.dropdown\",hidden:\".hidden\",icon:\"> .dropdown.icon\",input:'> input[type=\"hidden\"], > select',item:\".item\",label:\"> .label\",remove:\"> .label > .delete.icon\",siblingLabel:\".label\",menu:\".menu\",message:\".message\",menuIcon:\".dropdown.icon\",search:\"input.search, .menu > .search > input, .menu input.search\",sizer:\"> input.sizer\",text:\"> .text:not(.icon)\",unselectable:\".disabled, .filtered\"},className:{active:\"active\",addition:\"addition\",animating:\"animating\",disabled:\"disabled\",empty:\"empty\",dropdown:\"ui dropdown\",filtered:\"filtered\",hidden:\"hidden transition\",item:\"item\",label:\"ui label\",loading:\"loading\",menu:\"menu\",message:\"message\",multiple:\"multiple\",placeholder:\"default\",sizer:\"sizer\",search:\"search\",selected:\"selected\",selection:\"selection\",upward:\"upward\",leftward:\"left\",visible:\"visible\"}},e.fn.dropdown.settings.templates={dropdown:function(t){var n=t.placeholder||!1,i=(t.values,\"\");return i+='<i class=\"dropdown icon\"></i>',t.placeholder?i+='<div class=\"default text\">'+n+\"</div>\":i+='<div class=\"text\"></div>',i+='<div class=\"menu\">',e.each(t.values,function(e,t){i+=t.disabled?'<div class=\"disabled item\" data-value=\"'+t.value+'\">'+t.name+\"</div>\":'<div class=\"item\" data-value=\"'+t.value+'\">'+t.name+\"</div>\"}),i+=\"</div>\"},menu:function(t,n){var i=t[n.values]||{},o=\"\";return e.each(i,function(e,t){var i=t[n.text]?'data-text=\"'+t[n.text]+'\"':\"\",a=t[n.disabled]?\"disabled \":\"\";o+='<div class=\"'+a+'item\" data-value=\"'+t[n.value]+'\"'+i+\">\",o+=t[n.name],o+=\"</div>\"}),o},label:function(e,t){return t+'<i class=\"delete icon\"></i>'},message:function(e){return e},addition:function(e){return e}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.embed=function(n){var o,a=e(this),r=a.selector||\"\",s=(new Date).getTime(),l=[],c=arguments[0],u=\"string\"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var f,m=e.isPlainObject(n)?e.extend(!0,{},e.fn.embed.settings,n):e.extend({},e.fn.embed.settings),g=m.selector,p=m.className,h=m.sources,v=m.error,b=m.metadata,y=m.namespace,x=m.templates,C=\".\"+y,w=\"module-\"+y,S=(e(t),e(this)),k=(S.find(g.placeholder),S.find(g.icon),S.find(g.embed)),T=this,A=S.data(w);f={initialize:function(){f.debug(\"Initializing embed\"),f.determine.autoplay(),f.create(),f.bind.events(),f.instantiate()},instantiate:function(){f.verbose(\"Storing instance of module\",f),A=f,S.data(w,f)},destroy:function(){f.verbose(\"Destroying previous instance of embed\"),f.reset(),S.removeData(w).off(C)},refresh:function(){f.verbose(\"Refreshing selector cache\"),S.find(g.placeholder),S.find(g.icon),k=S.find(g.embed)},bind:{events:function(){f.has.placeholder()&&(f.debug(\"Adding placeholder events\"),S.on(\"click\"+C,g.placeholder,f.createAndShow).on(\"click\"+C,g.icon,f.createAndShow))}},create:function(){f.get.placeholder()?f.createPlaceholder():f.createAndShow()},createPlaceholder:function(e){var t=f.get.icon(),n=f.get.url();f.generate.embed(n);e=e||f.get.placeholder(),S.html(x.placeholder(e,t)),f.debug(\"Creating placeholder for embed\",e,t)},createEmbed:function(t){f.refresh(),t=t||f.get.url(),k=e(\"<div/>\").addClass(p.embed).html(f.generate.embed(t)).appendTo(S),m.onCreate.call(T,t),f.debug(\"Creating embed object\",k)},changeEmbed:function(e){k.html(f.generate.embed(e))},createAndShow:function(){f.createEmbed(),f.show()},change:function(e,t,n){f.debug(\"Changing video to \",e,t,n),S.data(b.source,e).data(b.id,t),n?S.data(b.url,n):S.removeData(b.url),f.has.embed()?f.changeEmbed():f.create()},reset:function(){f.debug(\"Clearing embed and showing placeholder\"),f.remove.active(),f.remove.embed(),f.showPlaceholder(),m.onReset.call(T)},show:function(){f.debug(\"Showing embed\"),f.set.active(),m.onDisplay.call(T)},hide:function(){f.debug(\"Hiding embed\"),f.showPlaceholder()},showPlaceholder:function(){f.debug(\"Showing placeholder image\"),f.remove.active(),m.onPlaceholderDisplay.call(T)},get:{id:function(){return m.id||S.data(b.id)},placeholder:function(){return m.placeholder||S.data(b.placeholder)},icon:function(){return m.icon?m.icon:S.data(b.icon)!==i?S.data(b.icon):f.determine.icon()},source:function(e){return m.source?m.source:S.data(b.source)!==i?S.data(b.source):f.determine.source()},type:function(){var e=f.get.source();return h[e]!==i&&h[e].type},url:function(){return m.url?m.url:S.data(b.url)!==i?S.data(b.url):f.determine.url()}},determine:{autoplay:function(){f.should.autoplay()&&(m.autoplay=!0)},source:function(t){var n=!1;return(t=t||f.get.url())&&e.each(h,function(e,i){if(-1!==t.search(i.domain))return n=e,!1}),n},icon:function(){var e=f.get.source();return h[e]!==i&&h[e].icon},url:function(){var e,t=m.id||S.data(b.id),n=m.source||S.data(b.source);return(e=h[n]!==i&&h[n].url.replace(\"{id}\",t))&&S.data(b.url,e),e}},set:{active:function(){S.addClass(p.active)}},remove:{active:function(){S.removeClass(p.active)},embed:function(){k.empty()}},encode:{parameters:function(e){var t,n=[];for(t in e)n.push(encodeURIComponent(t)+\"=\"+encodeURIComponent(e[t]));return n.join(\"&amp;\")}},generate:{embed:function(e){f.debug(\"Generating embed html\");var t,n,i=f.get.source();return(e=f.get.url(e))?(n=f.generate.parameters(i),t=x.iframe(e,n)):f.error(v.noURL,S),t},parameters:function(t,n){var o=h[t]&&h[t].parameters!==i?h[t].parameters(m):{};return(n=n||m.parameters)&&(o=e.extend({},o,n)),o=m.onEmbed(o),f.encode.parameters(o)}},has:{embed:function(){return k.length>0},placeholder:function(){return m.placeholder||S.data(b.placeholder)}},should:{autoplay:function(){return\"auto\"===m.autoplay?m.placeholder||S.data(b.placeholder)!==i:m.autoplay}},is:{video:function(){return\"video\"==f.get.type()}},setting:function(t,n){if(f.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];e.isPlainObject(m[t])?e.extend(!0,m[t],n):m[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,f,t);else{if(n===i)return f[t];f[t]=n}},debug:function(){!m.silent&&m.debug&&(m.performance?f.performance.log(arguments):(f.debug=Function.prototype.bind.call(console.info,console,m.name+\":\"),f.debug.apply(console,arguments)))},verbose:function(){!m.silent&&m.verbose&&m.debug&&(m.performance?f.performance.log(arguments):(f.verbose=Function.prototype.bind.call(console.info,console,m.name+\":\"),f.verbose.apply(console,arguments)))},error:function(){m.silent||(f.error=Function.prototype.bind.call(console.error,console,m.name+\":\"),f.error.apply(console,arguments))},performance:{log:function(e){var t,n;m.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:T,\"Execution Time\":n})),clearTimeout(f.performance.timer),f.performance.timer=setTimeout(f.performance.display,500)},display:function(){var t=m.name+\":\",n=0;s=!1,clearTimeout(f.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",r&&(t+=\" '\"+r+\"'\"),a.length>1&&(t+=\" (\"+a.length+\")\"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,a){var r,s,l,c=A;return n=n||d,a=T||a,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(f.error(v.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s}},u?(A===i&&f.initialize(),f.invoke(c)):(A!==i&&A.invoke(\"destroy\"),f.initialize())}),o!==i?o:this},e.fn.embed.settings={name:\"Embed\",namespace:\"embed\",silent:!1,debug:!1,verbose:!1,performance:!0,icon:!1,source:!1,url:!1,id:!1,autoplay:\"auto\",color:\"#444444\",hd:!0,brandedUI:!1,parameters:!1,onDisplay:function(){},onPlaceholderDisplay:function(){},onReset:function(){},onCreate:function(e){},onEmbed:function(e){return e},metadata:{id:\"id\",icon:\"icon\",placeholder:\"placeholder\",source:\"source\",url:\"url\"},error:{noURL:\"No URL specified\",method:\"The method you called is not defined\"},className:{active:\"active\",embed:\"embed\"},selector:{embed:\".embed\",placeholder:\".placeholder\",icon:\".icon\"},sources:{youtube:{name:\"youtube\",type:\"video\",icon:\"video play\",domain:\"youtube.com\",url:\"//www.youtube.com/embed/{id}\",parameters:function(e){return{autohide:!e.brandedUI,autoplay:e.autoplay,color:e.color||i,hq:e.hd,jsapi:e.api,modestbranding:!e.brandedUI}}},vimeo:{name:\"vimeo\",type:\"video\",icon:\"video play\",domain:\"vimeo.com\",url:\"//player.vimeo.com/video/{id}\",parameters:function(e){return{api:e.api,autoplay:e.autoplay,byline:e.brandedUI,color:e.color||i,portrait:e.brandedUI,title:e.brandedUI}}}},templates:{iframe:function(e,t){var n=e;return t&&(n+=\"?\"+t),'<iframe src=\"'+n+'\" width=\"100%\" height=\"100%\" frameborder=\"0\" scrolling=\"no\" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>'},placeholder:function(e,t){var n=\"\";return t&&(n+='<i class=\"'+t+' icon\"></i>'),e&&(n+='<img class=\"placeholder\" src=\"'+e+'\">'),n}},api:!1,onPause:function(){},onPlay:function(){},onStop:function(){}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.modal=function(o){var a,r=e(this),s=e(t),l=e(n),c=e(\"body\"),u=r.selector||\"\",d=(new Date).getTime(),f=[],m=arguments[0],g=\"string\"==typeof m,p=[].slice.call(arguments,1),h=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};return r.each(function(){var r,v,b,y,x,C,w,S,k,T=e.isPlainObject(o)?e.extend(!0,{},e.fn.modal.settings,o):e.extend({},e.fn.modal.settings),A=T.selector,R=T.className,P=T.namespace,E=T.error,F=\".\"+P,O=\"module-\"+P,D=e(this),q=e(T.context),j=D.find(A.close),z=this,I=D.data(O),M=!1;k={initialize:function(){k.verbose(\"Initializing dimmer\",q),k.create.id(),k.create.dimmer(),k.refreshModals(),k.bind.events(),T.observeChanges&&k.observeChanges(),k.instantiate()},instantiate:function(){k.verbose(\"Storing instance of modal\"),I=k,D.data(O,I)},create:{dimmer:function(){var t={debug:T.debug,variation:!T.centered&&\"top aligned\",dimmerName:\"modals\"},n=e.extend(!0,t,T.dimmerSettings);e.fn.dimmer!==i?(k.debug(\"Creating dimmer\"),y=q.dimmer(n),T.detachable?(k.verbose(\"Modal is detachable, moving content into dimmer\"),y.dimmer(\"add content\",D)):k.set.undetached(),x=y.dimmer(\"get dimmer\")):k.error(E.dimmer)},id:function(){w=(Math.random().toString(16)+\"000000000\").substr(2,8),C=\".\"+w,k.verbose(\"Creating unique id for element\",w)}},destroy:function(){k.verbose(\"Destroying previous modal\"),D.removeData(O).off(F),s.off(C),x.off(C),j.off(F),q.dimmer(\"destroy\")},observeChanges:function(){\"MutationObserver\"in t&&((S=new MutationObserver(function(e){k.debug(\"DOM tree modified, refreshing\"),k.refresh()})).observe(z,{childList:!0,subtree:!0}),k.debug(\"Setting up mutation observer\",S))},refresh:function(){k.remove.scrolling(),k.cacheSizes(),k.set.screenHeight(),k.set.type()},refreshModals:function(){v=D.siblings(A.modal),r=v.add(D)},attachEvents:function(t,n){var i=e(t);n=e.isFunction(k[n])?k[n]:k.toggle,i.length>0?(k.debug(\"Attaching modal events to element\",t,n),i.off(F).on(\"click\"+F,n)):k.error(E.notFound,t)},bind:{events:function(){k.verbose(\"Attaching events\"),D.on(\"click\"+F,A.close,k.event.close).on(\"click\"+F,A.approve,k.event.approve).on(\"click\"+F,A.deny,k.event.deny),s.on(\"resize\"+C,k.event.resize)}},get:{id:function(){return(Math.random().toString(16)+\"000000000\").substr(2,8)}},event:{approve:function(){M||!1===T.onApprove.call(z,e(this))?k.verbose(\"Approve callback returned false cancelling hide\"):(M=!0,k.hide(function(){M=!1}))},deny:function(){M||!1===T.onDeny.call(z,e(this))?k.verbose(\"Deny callback returned false cancelling hide\"):(M=!0,k.hide(function(){M=!1}))},close:function(){k.hide()},click:function(t){if(T.closable){var i=e(t.target).closest(A.modal).length>0,o=e.contains(n.documentElement,t.target);!i&&o&&k.is.active()&&(k.debug(\"Dimmer clicked, hiding all modals\"),k.remove.clickaway(),T.allowMultiple?k.hide():k.hideAll())}else k.verbose(\"Dimmer clicked but closable setting is disabled\")},debounce:function(e,t){clearTimeout(k.timer),k.timer=setTimeout(e,t)},keyboard:function(e){27==e.which&&(T.closable?(k.debug(\"Escape key pressed hiding modal\"),k.hide()):k.debug(\"Escape key pressed, but closable is set to false\"),e.preventDefault())},resize:function(){y.dimmer(\"is active\")&&(k.is.animating()||k.is.active())&&h(k.refresh)}},toggle:function(){k.is.active()||k.is.animating()?k.hide():k.show()},show:function(t){t=e.isFunction(t)?t:function(){},k.refreshModals(),k.set.dimmerSettings(),k.showModal(t)},hide:function(t){t=e.isFunction(t)?t:function(){},k.refreshModals(),k.hideModal(t)},showModal:function(t){t=e.isFunction(t)?t:function(){},k.is.animating()||!k.is.active()?(k.showDimmer(),k.cacheSizes(),k.set.screenHeight(),k.set.type(),k.set.clickaway(),!T.allowMultiple&&k.others.active()?k.hideOthers(k.showModal):(T.allowMultiple&&T.detachable&&D.detach().appendTo(x),T.onShow.call(z),T.transition&&e.fn.transition!==i&&D.transition(\"is supported\")?(k.debug(\"Showing modal with css animations\"),D.transition({debug:T.debug,animation:T.transition+\" in\",queue:T.queue,duration:T.duration,useFailSafe:!0,onComplete:function(){T.onVisible.apply(z),T.keyboardShortcuts&&k.add.keyboardShortcuts(),k.save.focus(),k.set.active(),T.autofocus&&k.set.autofocus(),t()}})):k.error(E.noTransition))):k.debug(\"Modal is already visible\")},hideModal:function(t,n){t=e.isFunction(t)?t:function(){},k.debug(\"Hiding modal\"),!1!==T.onHide.call(z,e(this))?(k.is.animating()||k.is.active())&&(T.transition&&e.fn.transition!==i&&D.transition(\"is supported\")?(k.remove.active(),D.transition({debug:T.debug,animation:T.transition+\" out\",queue:T.queue,duration:T.duration,useFailSafe:!0,onStart:function(){k.others.active()||n||k.hideDimmer(),T.keyboardShortcuts&&k.remove.keyboardShortcuts()},onComplete:function(){T.onHidden.call(z),k.restore.focus(),t()}})):k.error(E.noTransition)):k.verbose(\"Hide callback returned false cancelling hide\")},showDimmer:function(){y.dimmer(\"is animating\")||!y.dimmer(\"is active\")?(k.debug(\"Showing dimmer\"),y.dimmer(\"show\")):k.debug(\"Dimmer already visible\")},hideDimmer:function(){y.dimmer(\"is animating\")||y.dimmer(\"is active\")?y.dimmer(\"hide\",function(){k.remove.clickaway(),k.remove.screenHeight()}):k.debug(\"Dimmer is not visible cannot hide\")},hideAll:function(t){var n=r.filter(\".\"+R.active+\", .\"+R.animating);t=e.isFunction(t)?t:function(){},n.length>0&&(k.debug(\"Hiding all visible modals\"),k.hideDimmer(),n.modal(\"hide modal\",t))},hideOthers:function(t){var n=v.filter(\".\"+R.active+\", .\"+R.animating);t=e.isFunction(t)?t:function(){},n.length>0&&(k.debug(\"Hiding other modals\",v),n.modal(\"hide modal\",t,!0))},others:{active:function(){return v.filter(\".\"+R.active).length>0},animating:function(){return v.filter(\".\"+R.animating).length>0}},add:{keyboardShortcuts:function(){k.verbose(\"Adding keyboard shortcuts\"),l.on(\"keyup\"+F,k.event.keyboard)}},save:{focus:function(){e(n.activeElement).closest(D).length>0||(b=e(n.activeElement).blur())}},restore:{focus:function(){b&&b.length>0&&b.focus()}},remove:{active:function(){D.removeClass(R.active)},clickaway:function(){x.off(\"click\"+C)},bodyStyle:function(){\"\"===c.attr(\"style\")&&(k.verbose(\"Removing style attribute\"),c.removeAttr(\"style\"))},screenHeight:function(){k.debug(\"Removing page height\"),c.css(\"height\",\"\")},keyboardShortcuts:function(){k.verbose(\"Removing keyboard shortcuts\"),l.off(\"keyup\"+F)},scrolling:function(){y.removeClass(R.scrolling),D.removeClass(R.scrolling)}},cacheSizes:function(){D.addClass(R.loading);var o=D.prop(\"scrollHeight\"),a=D.outerHeight();k.cache!==i&&0===a||(k.cache={pageHeight:e(n).outerHeight(),height:a+T.offset,scrollHeight:o+T.offset,contextHeight:\"body\"==T.context?e(t).height():y.height()},k.cache.topOffset=-k.cache.height/2),D.removeClass(R.loading),k.debug(\"Caching modal and container sizes\",k.cache)},can:{fit:function(){var e=k.cache.contextHeight,t=k.cache.contextHeight/2,n=k.cache.topOffset,i=k.cache.scrollHeight,o=k.cache.height,a=T.padding;return i>o?t+n+i+a<e:o+2*a<e}},is:{active:function(){return D.hasClass(R.active)},animating:function(){return D.transition(\"is supported\")?D.transition(\"is animating\"):D.is(\":visible\")},scrolling:function(){return y.hasClass(R.scrolling)},modernBrowser:function(){return!(t.ActiveXObject||\"ActiveXObject\"in t)}},set:{autofocus:function(){var e=D.find(\"[tabindex], :input\").filter(\":visible\"),t=e.filter(\"[autofocus]\"),n=t.length>0?t.first():e.first();n.length>0&&n.focus()},clickaway:function(){x.on(\"click\"+C,k.event.click)},dimmerSettings:function(){if(e.fn.dimmer!==i){var t={debug:T.debug,dimmerName:\"modals\",closable:\"auto\",variation:!T.centered&&\"top aligned\",duration:{show:T.duration,hide:T.duration}},n=e.extend(!0,t,T.dimmerSettings);T.inverted?(n.variation=n.variation!==i?n.variation+\" inverted\":\"inverted\",x.addClass(R.inverted)):x.removeClass(R.inverted),T.blurring?y.addClass(R.blurring):y.removeClass(R.blurring),q.dimmer(\"setting\",n)}else k.error(E.dimmer)},screenHeight:function(){k.can.fit()?c.css(\"height\",\"\"):(k.debug(\"Modal is taller than page content, resizing page height\"),c.css(\"height\",k.cache.height+2*T.padding))},active:function(){D.addClass(R.active)},scrolling:function(){y.addClass(R.scrolling),D.addClass(R.scrolling)},type:function(){k.can.fit()?(k.verbose(\"Modal fits on screen\"),k.others.active()||k.others.animating()||k.remove.scrolling()):(k.verbose(\"Modal cannot fit on screen setting to scrolling\"),k.set.scrolling())},undetached:function(){y.addClass(R.undetached)}},setting:function(t,n){if(k.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,T,t);else{if(n===i)return T[t];e.isPlainObject(T[t])?e.extend(!0,T[t],n):T[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,k,t);else{if(n===i)return k[t];k[t]=n}},debug:function(){!T.silent&&T.debug&&(T.performance?k.performance.log(arguments):(k.debug=Function.prototype.bind.call(console.info,console,T.name+\":\"),k.debug.apply(console,arguments)))},verbose:function(){!T.silent&&T.verbose&&T.debug&&(T.performance?k.performance.log(arguments):(k.verbose=Function.prototype.bind.call(console.info,console,T.name+\":\"),k.verbose.apply(console,arguments)))},error:function(){T.silent||(k.error=Function.prototype.bind.call(console.error,console,T.name+\":\"),k.error.apply(console,arguments))},performance:{log:function(e){var t,n;T.performance&&(n=(t=(new Date).getTime())-(d||t),d=t,f.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:z,\"Execution Time\":n})),clearTimeout(k.performance.timer),k.performance.timer=setTimeout(k.performance.display,500)},display:function(){var t=T.name+\":\",n=0;d=!1,clearTimeout(k.performance.timer),e.each(f,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",u&&(t+=\" '\"+u+\"'\"),(console.group!==i||console.table!==i)&&f.length>0&&(console.groupCollapsed(t),console.table?console.table(f):e.each(f,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),f=[]}},invoke:function(t,n,o){var r,s,l,c=I;return n=n||p,o=z||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},g?(I===i&&k.initialize(),k.invoke(m)):(I!==i&&I.invoke(\"destroy\"),k.initialize())}),a!==i?a:this},e.fn.modal.settings={name:\"Modal\",namespace:\"modal\",silent:!1,debug:!1,verbose:!1,performance:!0,observeChanges:!1,allowMultiple:!1,detachable:!0,closable:!0,autofocus:!0,inverted:!1,blurring:!1,centered:!0,dimmerSettings:{closable:!1,useCSS:!0},keyboardShortcuts:!0,context:\"body\",queue:!1,duration:500,offset:0,transition:\"scale\",padding:50,onShow:function(){},onVisible:function(){},onHide:function(){return!0},onHidden:function(){},onApprove:function(){return!0},onDeny:function(){return!0},selector:{close:\"> .close\",approve:\".actions .positive, .actions .approve, .actions .ok\",deny:\".actions .negative, .actions .deny, .actions .cancel\",modal:\".ui.modal\"},error:{dimmer:\"UI Dimmer, a required component is not included in this page\",method:\"The method you called is not defined.\",notFound:\"The element you specified could not be found\"},className:{active:\"active\",animating:\"animating\",blurring:\"blurring\",inverted:\"inverted\",loading:\"loading\",scrolling:\"scrolling\",undetached:\"undetached\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.nag=function(n){var o,a=e(this),r=a.selector||\"\",s=(new Date).getTime(),l=[],c=arguments[0],u=\"string\"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var a,f=e.isPlainObject(n)?e.extend(!0,{},e.fn.nag.settings,n):e.extend({},e.fn.nag.settings),m=(f.className,f.selector),g=f.error,p=f.namespace,h=\".\"+p,v=p+\"-module\",b=e(this),y=(b.find(m.close),f.context?e(f.context):e(\"body\")),x=this,C=b.data(v);t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame;a={initialize:function(){a.verbose(\"Initializing element\"),b.on(\"click\"+h,m.close,a.dismiss).data(v,a),f.detachable&&b.parent()[0]!==y[0]&&b.detach().prependTo(y),f.displayTime>0&&setTimeout(a.hide,f.displayTime),a.show()},destroy:function(){a.verbose(\"Destroying instance\"),b.removeData(v).off(h)},show:function(){a.should.show()&&!b.is(\":visible\")&&(a.debug(\"Showing nag\",f.animation.show),\"fade\"==f.animation.show?b.fadeIn(f.duration,f.easing):b.slideDown(f.duration,f.easing))},hide:function(){a.debug(\"Showing nag\",f.animation.hide),\"fade\"==f.animation.show?b.fadeIn(f.duration,f.easing):b.slideUp(f.duration,f.easing)},onHide:function(){a.debug(\"Removing nag\",f.animation.hide),b.remove(),f.onHide&&f.onHide()},dismiss:function(e){f.storageMethod&&a.storage.set(f.key,f.value),a.hide(),e.stopImmediatePropagation(),e.preventDefault()},should:{show:function(){return f.persist?(a.debug(\"Persistent nag is set, can show nag\"),!0):a.storage.get(f.key)!=f.value.toString()?(a.debug(\"Stored value is not set, can show nag\",a.storage.get(f.key)),!0):(a.debug(\"Stored value is set, cannot show nag\",a.storage.get(f.key)),!1)}},get:{storageOptions:function(){var e={};return f.expires&&(e.expires=f.expires),f.domain&&(e.domain=f.domain),f.path&&(e.path=f.path),e}},clear:function(){a.storage.remove(f.key)},storage:{set:function(n,o){var r=a.get.storageOptions();if(\"localstorage\"==f.storageMethod&&t.localStorage!==i)t.localStorage.setItem(n,o),a.debug(\"Value stored using local storage\",n,o);else if(\"sessionstorage\"==f.storageMethod&&t.sessionStorage!==i)t.sessionStorage.setItem(n,o),a.debug(\"Value stored using session storage\",n,o);else{if(e.cookie===i)return void a.error(g.noCookieStorage);e.cookie(n,o,r),a.debug(\"Value stored using cookie\",n,o,r)}},get:function(n,o){var r;return\"localstorage\"==f.storageMethod&&t.localStorage!==i?r=t.localStorage.getItem(n):\"sessionstorage\"==f.storageMethod&&t.sessionStorage!==i?r=t.sessionStorage.getItem(n):e.cookie!==i?r=e.cookie(n):a.error(g.noCookieStorage),\"undefined\"!=r&&\"null\"!=r&&r!==i&&null!==r||(r=i),r},remove:function(n){var o=a.get.storageOptions();\"localstorage\"==f.storageMethod&&t.localStorage!==i?t.localStorage.removeItem(n):\"sessionstorage\"==f.storageMethod&&t.sessionStorage!==i?t.sessionStorage.removeItem(n):e.cookie!==i?e.removeCookie(n,o):a.error(g.noStorage)}},setting:function(t,n){if(a.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,f,t);else{if(n===i)return f[t];e.isPlainObject(f[t])?e.extend(!0,f[t],n):f[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,a,t);else{if(n===i)return a[t];a[t]=n}},debug:function(){!f.silent&&f.debug&&(f.performance?a.performance.log(arguments):(a.debug=Function.prototype.bind.call(console.info,console,f.name+\":\"),a.debug.apply(console,arguments)))},verbose:function(){!f.silent&&f.verbose&&f.debug&&(f.performance?a.performance.log(arguments):(a.verbose=Function.prototype.bind.call(console.info,console,f.name+\":\"),a.verbose.apply(console,arguments)))},error:function(){f.silent||(a.error=Function.prototype.bind.call(console.error,console,f.name+\":\"),a.error.apply(console,arguments))},performance:{log:function(e){var t,n;f.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:x,\"Execution Time\":n})),clearTimeout(a.performance.timer),a.performance.timer=setTimeout(a.performance.display,500)},display:function(){var t=f.name+\":\",n=0;s=!1,clearTimeout(a.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",r&&(t+=\" '\"+r+\"'\"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,r){var s,l,c,u=C;return n=n||d,r=x||r,\"string\"==typeof t&&u!==i&&(t=t.split(/[\\. ]/),s=t.length-1,e.each(t,function(n,o){var r=n!=s?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(u[r])&&n!=s)u=u[r];else{if(u[r]!==i)return l=u[r],!1;if(!e.isPlainObject(u[o])||n==s)return u[o]!==i?(l=u[o],!1):(a.error(g.method,t),!1);u=u[o]}})),e.isFunction(l)?c=l.apply(r,n):l!==i&&(c=l),e.isArray(o)?o.push(c):o!==i?o=[o,c]:c!==i&&(o=c),l}},u?(C===i&&a.initialize(),a.invoke(c)):(C!==i&&C.invoke(\"destroy\"),a.initialize())}),o!==i?o:this},e.fn.nag.settings={name:\"Nag\",silent:!1,debug:!1,verbose:!1,performance:!0,namespace:\"Nag\",persist:!1,displayTime:0,animation:{show:\"slide\",hide:\"slide\"},context:!1,detachable:!1,expires:30,domain:!1,path:\"/\",storageMethod:\"cookie\",key:\"nag\",value:\"dismiss\",error:{noCookieStorage:\"$.cookie is not included. A storage solution is required.\",noStorage:\"Neither $.cookie or store is defined. A storage solution is required for storing state\",method:\"The method you called is not defined.\"},className:{bottom:\"bottom\",fixed:\"fixed\"},selector:{close:\".close.icon\"},speed:500,easing:\"easeOutQuad\",onHide:function(){}},e.extend(e.easing,{easeOutQuad:function(e,t,n,i,o){return-i*(t/=o)*(t-2)+n}})}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.popup=function(o){var a,r=e(this),s=e(n),l=e(t),c=e(\"body\"),u=r.selector||\"\",d=(new Date).getTime(),f=[],m=arguments[0],g=\"string\"==typeof m,p=[].slice.call(arguments,1);return r.each(function(){var r,h,v,b,y,x,C=e.isPlainObject(o)?e.extend(!0,{},e.fn.popup.settings,o):e.extend({},e.fn.popup.settings),w=C.selector,S=C.className,k=C.error,T=C.metadata,A=C.namespace,R=\".\"+C.namespace,P=\"module-\"+A,E=e(this),F=e(C.context),O=e(C.scrollContext),D=e(C.boundary),q=C.target?e(C.target):E,j=0,z=!1,I=!1,M=this,L=E.data(P);x={initialize:function(){x.debug(\"Initializing\",E),x.createID(),x.bind.events(),!x.exists()&&C.preserve&&x.create(),C.observeChanges&&x.observeChanges(),x.instantiate()},instantiate:function(){x.verbose(\"Storing instance\",x),L=x,E.data(P,L)},observeChanges:function(){\"MutationObserver\"in t&&((v=new MutationObserver(x.event.documentChanged)).observe(n,{childList:!0,subtree:!0}),x.debug(\"Setting up mutation observer\",v))},refresh:function(){C.popup?r=e(C.popup).eq(0):C.inline&&(r=q.nextAll(w.popup).eq(0),C.popup=r),C.popup?(r.addClass(S.loading),h=x.get.offsetParent(),r.removeClass(S.loading),C.movePopup&&x.has.popup()&&x.get.offsetParent(r)[0]!==h[0]&&(x.debug(\"Moving popup to the same offset parent as target\"),r.detach().appendTo(h))):h=C.inline?x.get.offsetParent(q):x.has.popup()?x.get.offsetParent(r):c,h.is(\"html\")&&h[0]!==c[0]&&(x.debug(\"Setting page as offset parent\"),h=c),x.get.variation()&&x.set.variation()},reposition:function(){x.refresh(),x.set.position()},destroy:function(){x.debug(\"Destroying previous module\"),v&&v.disconnect(),r&&!C.preserve&&x.removePopup(),clearTimeout(x.hideTimer),clearTimeout(x.showTimer),x.unbind.close(),x.unbind.events(),E.removeData(P)},event:{start:function(t){var n=e.isPlainObject(C.delay)?C.delay.show:C.delay;clearTimeout(x.hideTimer),I||(x.showTimer=setTimeout(x.show,n))},end:function(){var t=e.isPlainObject(C.delay)?C.delay.hide:C.delay;clearTimeout(x.showTimer),x.hideTimer=setTimeout(x.hide,t)},touchstart:function(e){I=!0,x.show()},resize:function(){x.is.visible()&&x.set.position()},documentChanged:function(t){[].forEach.call(t,function(t){t.removedNodes&&[].forEach.call(t.removedNodes,function(t){(t==M||e(t).find(M).length>0)&&(x.debug(\"Element removed from DOM, tearing down events\"),x.destroy())})})},hideGracefully:function(t){var i=e(t.target),o=e.contains(n.documentElement,t.target),a=i.closest(w.popup).length>0;t&&!a&&o?(x.debug(\"Click occurred outside popup hiding popup\"),x.hide()):x.debug(\"Click was inside popup, keeping popup open\")}},create:function(){var t=x.get.html(),n=x.get.title(),i=x.get.content();t||i||n?(x.debug(\"Creating pop-up html\"),t||(t=C.templates.popup({title:n,content:i})),r=e(\"<div/>\").addClass(S.popup).data(T.activator,E).html(t),C.inline?(x.verbose(\"Inserting popup element inline\",r),r.insertAfter(E)):(x.verbose(\"Appending popup element to body\",r),r.appendTo(F)),x.refresh(),x.set.variation(),C.hoverable&&x.bind.popup(),C.onCreate.call(r,M)):0!==q.next(w.popup).length?(x.verbose(\"Pre-existing popup found\"),C.inline=!0,C.popup=q.next(w.popup).data(T.activator,E),x.refresh(),C.hoverable&&x.bind.popup()):C.popup?(e(C.popup).data(T.activator,E),x.verbose(\"Used popup specified in settings\"),x.refresh(),C.hoverable&&x.bind.popup()):x.debug(\"No content specified skipping display\",M)},createID:function(){y=(Math.random().toString(16)+\"000000000\").substr(2,8),b=\".\"+y,x.verbose(\"Creating unique id for element\",y)},toggle:function(){x.debug(\"Toggling pop-up\"),x.is.hidden()?(x.debug(\"Popup is hidden, showing pop-up\"),x.unbind.close(),x.show()):(x.debug(\"Popup is visible, hiding pop-up\"),x.hide())},show:function(e){if(e=e||function(){},x.debug(\"Showing pop-up\",C.transition),x.is.hidden()&&(!x.is.active()||!x.is.dropdown())){if(x.exists()||x.create(),!1===C.onShow.call(r,M))return void x.debug(\"onShow callback returned false, cancelling popup animation\");C.preserve||C.popup||x.refresh(),r&&x.set.position()&&(x.save.conditions(),C.exclusive&&x.hideAll(),x.animate.show(e))}},hide:function(e){if(e=e||function(){},x.is.visible()||x.is.animating()){if(!1===C.onHide.call(r,M))return void x.debug(\"onHide callback returned false, cancelling popup animation\");x.remove.visible(),x.unbind.close(),x.restore.conditions(),x.animate.hide(e)}},hideAll:function(){e(w.popup).filter(\".\"+S.popupVisible).each(function(){e(this).data(T.activator).popup(\"hide\")})},exists:function(){return!!r&&(C.inline||C.popup?x.has.popup():r.closest(F).length>=1)},removePopup:function(){x.has.popup()&&!C.popup&&(x.debug(\"Removing popup\",r),r.remove(),r=i,C.onRemove.call(r,M))},save:{conditions:function(){x.cache={title:E.attr(\"title\")},x.cache.title&&E.removeAttr(\"title\"),x.verbose(\"Saving original attributes\",x.cache.title)}},restore:{conditions:function(){return x.cache&&x.cache.title&&(E.attr(\"title\",x.cache.title),x.verbose(\"Restoring original attributes\",x.cache.title)),!0}},supports:{svg:function(){return\"undefined\"==typeof SVGGraphicsElement}},animate:{show:function(t){t=e.isFunction(t)?t:function(){},C.transition&&e.fn.transition!==i&&E.transition(\"is supported\")?(x.set.visible(),r.transition({animation:C.transition+\" in\",queue:!1,debug:C.debug,verbose:C.verbose,duration:C.duration,onComplete:function(){x.bind.close(),t.call(r,M),C.onVisible.call(r,M)}})):x.error(k.noTransition)},hide:function(t){t=e.isFunction(t)?t:function(){},x.debug(\"Hiding pop-up\"),!1!==C.onHide.call(r,M)?C.transition&&e.fn.transition!==i&&E.transition(\"is supported\")?r.transition({animation:C.transition+\" out\",queue:!1,duration:C.duration,debug:C.debug,verbose:C.verbose,onComplete:function(){x.reset(),t.call(r,M),C.onHidden.call(r,M)}}):x.error(k.noTransition):x.debug(\"onHide callback returned false, cancelling popup animation\")}},change:{content:function(e){r.html(e)}},get:{html:function(){return E.removeData(T.html),E.data(T.html)||C.html},title:function(){return E.removeData(T.title),E.data(T.title)||C.title},content:function(){return E.removeData(T.content),E.data(T.content)||C.content||E.attr(\"title\")},variation:function(){return E.removeData(T.variation),E.data(T.variation)||C.variation},popup:function(){return r},popupOffset:function(){return r.offset()},calculations:function(){var e,n=x.get.offsetParent(r),i=q[0],o=D[0]==t,a=C.inline||C.popup&&C.movePopup?q.position():q.offset(),s=o?{top:0,left:0}:D.offset(),c={},u=o?{top:l.scrollTop(),left:l.scrollLeft()}:{top:0,left:0};if(c={target:{element:q[0],width:q.outerWidth(),height:q.outerHeight(),top:a.top,left:a.left,margin:{}},popup:{width:r.outerWidth(),height:r.outerHeight()},parent:{width:h.outerWidth(),height:h.outerHeight()},screen:{top:s.top,left:s.left,scroll:{top:u.top,left:u.left},width:D.width(),height:D.height()}},n.get(0)!==h.get(0)){var d=n.offset();c.target.top-=d.top,c.target.left-=d.left,c.parent.width=n.outerWidth(),c.parent.height=n.outerHeight()}return C.setFluidWidth&&x.is.fluid()&&(c.container={width:r.parent().outerWidth()},c.popup.width=c.container.width),c.target.margin.top=C.inline?parseInt(t.getComputedStyle(i).getPropertyValue(\"margin-top\"),10):0,c.target.margin.left=C.inline?x.is.rtl()?parseInt(t.getComputedStyle(i).getPropertyValue(\"margin-right\"),10):parseInt(t.getComputedStyle(i).getPropertyValue(\"margin-left\"),10):0,e=c.screen,c.boundary={top:e.top+e.scroll.top,bottom:e.top+e.scroll.top+e.height,left:e.left+e.scroll.left,right:e.left+e.scroll.left+e.width},c},id:function(){return y},startEvent:function(){return\"hover\"==C.on?\"mouseenter\":\"focus\"==C.on&&\"focus\"},scrollEvent:function(){return\"scroll\"},endEvent:function(){return\"hover\"==C.on?\"mouseleave\":\"focus\"==C.on&&\"blur\"},distanceFromBoundary:function(e,t){var n,i,o={};return n=(t=t||x.get.calculations()).popup,i=t.boundary,e&&(o={top:e.top-i.top,left:e.left-i.left,right:i.right-(e.left+n.width),bottom:i.bottom-(e.top+n.height)},x.verbose(\"Distance from boundaries determined\",e,o)),o},offsetParent:function(t){var n=(t!==i?t[0]:q[0]).parentNode,o=e(n);if(n)for(var a=\"none\"===o.css(\"transform\"),r=\"static\"===o.css(\"position\"),s=o.is(\"body\");n&&!s&&r&&a;)n=n.parentNode,a=\"none\"===(o=e(n)).css(\"transform\"),r=\"static\"===o.css(\"position\"),s=o.is(\"body\");return o&&o.length>0?o:e()},positions:function(){return{\"top left\":!1,\"top center\":!1,\"top right\":!1,\"bottom left\":!1,\"bottom center\":!1,\"bottom right\":!1,\"left center\":!1,\"right center\":!1}},nextPosition:function(e){var t=e.split(\" \"),n=t[0],i=t[1],o=\"top\"==n||\"bottom\"==n,a=!1,r=!1,s=!1;return z||(x.verbose(\"All available positions available\"),z=x.get.positions()),x.debug(\"Recording last position tried\",e),z[e]=!0,\"opposite\"===C.prefer&&(s=(s=[{top:\"bottom\",bottom:\"top\",left:\"right\",right:\"left\"}[n],i]).join(\" \"),a=!0===z[s],x.debug(\"Trying opposite strategy\",s)),\"adjacent\"===C.prefer&&o&&(s=(s=[n,{left:\"center\",center:\"right\",right:\"left\"}[i]]).join(\" \"),r=!0===z[s],x.debug(\"Trying adjacent strategy\",s)),(r||a)&&(x.debug(\"Using backup position\",s),s={\"top left\":\"top center\",\"top center\":\"top right\",\"top right\":\"right center\",\"right center\":\"bottom right\",\"bottom right\":\"bottom center\",\"bottom center\":\"bottom left\",\"bottom left\":\"left center\",\"left center\":\"top left\"}[e]),s}},set:{position:function(e,t){if(0!==q.length&&0!==r.length){var n,o,a,s,l,c,u,d;if(t=t||x.get.calculations(),e=e||E.data(T.position)||C.position,n=E.data(T.offset)||C.offset,o=C.distanceAway,a=t.target,s=t.popup,l=t.parent,x.should.centerArrow(t)&&(x.verbose(\"Adjusting offset to center arrow on small target element\"),\"top left\"!=e&&\"bottom left\"!=e||(n+=a.width/2,n-=C.arrowPixelsFromEdge),\"top right\"!=e&&\"bottom right\"!=e||(n-=a.width/2,n+=C.arrowPixelsFromEdge)),0===a.width&&0===a.height&&!x.is.svg(a.element))return x.debug(\"Popup target is hidden, no action taken\"),!1;switch(C.inline&&(x.debug(\"Adding margin to calculation\",a.margin),\"left center\"==e||\"right center\"==e?(n+=a.margin.top,o+=-a.margin.left):\"top left\"==e||\"top center\"==e||\"top right\"==e?(n+=a.margin.left,o-=a.margin.top):(n+=a.margin.left,o+=a.margin.top)),x.debug(\"Determining popup position from calculations\",e,t),x.is.rtl()&&(e=e.replace(/left|right/g,function(e){return\"left\"==e?\"right\":\"left\"}),x.debug(\"RTL: Popup position updated\",e)),j==C.maxSearchDepth&&\"string\"==typeof C.lastResort&&(e=C.lastResort),e){case\"top left\":c={top:\"auto\",bottom:l.height-a.top+o,left:a.left+n,right:\"auto\"};break;case\"top center\":c={bottom:l.height-a.top+o,left:a.left+a.width/2-s.width/2+n,top:\"auto\",right:\"auto\"};break;case\"top right\":c={bottom:l.height-a.top+o,right:l.width-a.left-a.width-n,top:\"auto\",left:\"auto\"};break;case\"left center\":c={top:a.top+a.height/2-s.height/2+n,right:l.width-a.left+o,left:\"auto\",bottom:\"auto\"};break;case\"right center\":c={top:a.top+a.height/2-s.height/2+n,left:a.left+a.width+o,bottom:\"auto\",right:\"auto\"};break;case\"bottom left\":c={top:a.top+a.height+o,left:a.left+n,bottom:\"auto\",right:\"auto\"};break;case\"bottom center\":c={top:a.top+a.height+o,left:a.left+a.width/2-s.width/2+n,bottom:\"auto\",right:\"auto\"};break;case\"bottom right\":c={top:a.top+a.height+o,right:l.width-a.left-a.width-n,left:\"auto\",bottom:\"auto\"}}if(c===i&&x.error(k.invalidPosition,e),x.debug(\"Calculated popup positioning values\",c),r.css(c).removeClass(S.position).addClass(e).addClass(S.loading),u=x.get.popupOffset(),d=x.get.distanceFromBoundary(u,t),x.is.offstage(d,e)){if(x.debug(\"Position is outside viewport\",e),j<C.maxSearchDepth)return j++,e=x.get.nextPosition(e),x.debug(\"Trying new position\",e),!!r&&x.set.position(e,t);if(!C.lastResort)return x.debug(\"Popup could not find a position to display\",r),x.error(k.cannotPlace,M),x.remove.attempts(),x.remove.loading(),x.reset(),C.onUnplaceable.call(r,M),!1;x.debug(\"No position found, showing with last position\")}return x.debug(\"Position is on stage\",e),x.remove.attempts(),x.remove.loading(),C.setFluidWidth&&x.is.fluid()&&x.set.fluidWidth(t),!0}x.error(k.notFound)},fluidWidth:function(e){e=e||x.get.calculations(),x.debug(\"Automatically setting element width to parent width\",e.parent.width),r.css(\"width\",e.container.width)},variation:function(e){(e=e||x.get.variation())&&x.has.popup()&&(x.verbose(\"Adding variation to popup\",e),r.addClass(e))},visible:function(){E.addClass(S.visible)}},remove:{loading:function(){r.removeClass(S.loading)},variation:function(e){(e=e||x.get.variation())&&(x.verbose(\"Removing variation\",e),r.removeClass(e))},visible:function(){E.removeClass(S.visible)},attempts:function(){x.verbose(\"Resetting all searched positions\"),j=0,z=!1}},bind:{events:function(){x.debug(\"Binding popup events to module\"),\"click\"==C.on&&E.on(\"click\"+R,x.toggle),\"hover\"==C.on&&E.on(\"touchstart\"+R,x.event.touchstart),x.get.startEvent()&&E.on(x.get.startEvent()+R,x.event.start).on(x.get.endEvent()+R,x.event.end),C.target&&x.debug(\"Target set to element\",q),l.on(\"resize\"+b,x.event.resize)},popup:function(){x.verbose(\"Allowing hover events on popup to prevent closing\"),r&&x.has.popup()&&r.on(\"mouseenter\"+R,x.event.start).on(\"mouseleave\"+R,x.event.end)},close:function(){(!0===C.hideOnScroll||\"auto\"==C.hideOnScroll&&\"click\"!=C.on)&&x.bind.closeOnScroll(),\"hover\"==C.on&&I&&x.bind.touchClose(),\"click\"==C.on&&C.closable&&x.bind.clickaway()},closeOnScroll:function(){x.verbose(\"Binding scroll close event to document\"),O.one(x.get.scrollEvent()+b,x.event.hideGracefully)},touchClose:function(){x.verbose(\"Binding popup touchclose event to document\"),s.on(\"touchstart\"+b,function(e){x.verbose(\"Touched away from popup\"),x.event.hideGracefully.call(M,e)})},clickaway:function(){x.verbose(\"Binding popup close event to document\"),s.on(\"click\"+b,function(e){x.verbose(\"Clicked away from popup\"),x.event.hideGracefully.call(M,e)})}},unbind:{events:function(){l.off(b),E.off(R)},close:function(){s.off(b),O.off(b)}},has:{popup:function(){return r&&r.length>0}},should:{centerArrow:function(e){return!x.is.basic()&&e.target.width<=2*C.arrowPixelsFromEdge}},is:{offstage:function(t,n){var i=[];return e.each(t,function(e,t){t<-C.jitter&&(x.debug(\"Position exceeds allowable distance from edge\",e,t,n),i.push(e))}),i.length>0},svg:function(e){return x.supports.svg()&&e instanceof SVGGraphicsElement},basic:function(){return E.hasClass(S.basic)},active:function(){return E.hasClass(S.active)},animating:function(){return r!==i&&r.hasClass(S.animating)},fluid:function(){return r!==i&&r.hasClass(S.fluid)},visible:function(){return r!==i&&r.hasClass(S.popupVisible)},dropdown:function(){return E.hasClass(S.dropdown)},hidden:function(){return!x.is.visible()},rtl:function(){return\"rtl\"==E.css(\"direction\")}},reset:function(){x.remove.visible(),C.preserve?e.fn.transition!==i&&r.transition(\"remove transition\"):x.removePopup()},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,C,t);else{if(n===i)return C[t];C[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,x,t);else{if(n===i)return x[t];x[t]=n}},debug:function(){!C.silent&&C.debug&&(C.performance?x.performance.log(arguments):(x.debug=Function.prototype.bind.call(console.info,console,C.name+\":\"),x.debug.apply(console,arguments)))},verbose:function(){!C.silent&&C.verbose&&C.debug&&(C.performance?x.performance.log(arguments):(x.verbose=Function.prototype.bind.call(console.info,console,C.name+\":\"),x.verbose.apply(console,arguments)))},error:function(){C.silent||(x.error=Function.prototype.bind.call(console.error,console,C.name+\":\"),x.error.apply(console,arguments))},performance:{log:function(e){var t,n;C.performance&&(n=(t=(new Date).getTime())-(d||t),d=t,f.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:M,\"Execution Time\":n})),clearTimeout(x.performance.timer),x.performance.timer=setTimeout(x.performance.display,500)},display:function(){var t=C.name+\":\",n=0;d=!1,clearTimeout(x.performance.timer),e.each(f,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",u&&(t+=\" '\"+u+\"'\"),(console.group!==i||console.table!==i)&&f.length>0&&(console.groupCollapsed(t),console.table?console.table(f):e.each(f,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),f=[]}},invoke:function(t,n,o){var r,s,l,c=L;return n=n||p,o=M||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},g?(L===i&&x.initialize(),x.invoke(m)):(L!==i&&L.invoke(\"destroy\"),x.initialize())}),a!==i?a:this},e.fn.popup.settings={name:\"Popup\",silent:!1,debug:!1,verbose:!1,performance:!0,namespace:\"popup\",observeChanges:!0,onCreate:function(){},onRemove:function(){},onShow:function(){},onVisible:function(){},onHide:function(){},onUnplaceable:function(){},onHidden:function(){},on:\"hover\",boundary:t,addTouchEvents:!0,position:\"top left\",variation:\"\",movePopup:!0,target:!1,popup:!1,inline:!1,preserve:!1,hoverable:!1,content:!1,html:!1,title:!1,closable:!0,hideOnScroll:\"auto\",exclusive:!1,context:\"body\",scrollContext:t,prefer:\"opposite\",lastResort:!1,arrowPixelsFromEdge:20,delay:{show:50,hide:70},setFluidWidth:!0,duration:200,transition:\"scale\",distanceAway:0,jitter:2,offset:0,maxSearchDepth:15,error:{invalidPosition:\"The position you specified is not a valid position\",cannotPlace:\"Popup does not fit within the boundaries of the viewport\",method:\"The method you called is not defined.\",noTransition:\"This module requires ui transitions <https://github.com/Semantic-Org/UI-Transition>\",notFound:\"The target or popup you specified does not exist on the page\"},metadata:{activator:\"activator\",content:\"content\",html:\"html\",offset:\"offset\",position:\"position\",title:\"title\",variation:\"variation\"},className:{active:\"active\",basic:\"basic\",animating:\"animating\",dropdown:\"dropdown\",fluid:\"fluid\",loading:\"loading\",popup:\"ui popup\",position:\"top left center bottom right\",visible:\"visible\",popupVisible:\"visible\"},selector:{popup:\".ui.popup\"},templates:{escape:function(e){var t={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#x27;\",\"`\":\"&#x60;\"};return/[&<>\"'`]/.test(e)?e.replace(/[&<>\"'`]/g,function(e){return t[e]}):e},popup:function(t){var n=\"\",o=e.fn.popup.settings.templates.escape;return typeof t!==i&&(typeof t.title!==i&&t.title&&(t.title=o(t.title),n+='<div class=\"header\">'+t.title+\"</div>\"),typeof t.content!==i&&t.content&&(t.content=o(t.content),n+='<div class=\"content\">'+t.content+\"</div>\")),n}}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";void 0!==(t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")())&&t.Math==Math||(\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")());e.fn.progress=function(t){var o,a=e(this),r=a.selector||\"\",s=(new Date).getTime(),l=[],c=arguments[0],u=\"string\"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var a,f=e.isPlainObject(t)?e.extend(!0,{},e.fn.progress.settings,t):e.extend({},e.fn.progress.settings),m=f.className,g=f.metadata,p=f.namespace,h=f.selector,v=f.error,b=\".\"+p,y=\"module-\"+p,x=e(this),C=e(this).find(h.bar),w=e(this).find(h.progress),S=e(this).find(h.label),k=this,T=x.data(y),A=!1;a={initialize:function(){a.debug(\"Initializing progress bar\",f),a.set.duration(),a.set.transitionEvent(),a.read.metadata(),a.read.settings(),a.instantiate()},instantiate:function(){a.verbose(\"Storing instance of progress\",a),T=a,x.data(y,a)},destroy:function(){a.verbose(\"Destroying previous progress for\",x),clearInterval(T.interval),a.remove.state(),x.removeData(y),T=i},reset:function(){a.remove.nextValue(),a.update.progress(0)},complete:function(){(a.percent===i||a.percent<100)&&(a.remove.progressPoll(),a.set.percent(100))},read:{metadata:function(){var e={percent:x.data(g.percent),total:x.data(g.total),value:x.data(g.value)};e.percent&&(a.debug(\"Current percent value set from metadata\",e.percent),a.set.percent(e.percent)),e.total&&(a.debug(\"Total value set from metadata\",e.total),a.set.total(e.total)),e.value&&(a.debug(\"Current value set from metadata\",e.value),a.set.value(e.value),a.set.progress(e.value))},settings:function(){!1!==f.total&&(a.debug(\"Current total set in settings\",f.total),a.set.total(f.total)),!1!==f.value&&(a.debug(\"Current value set in settings\",f.value),a.set.value(f.value),a.set.progress(a.value)),!1!==f.percent&&(a.debug(\"Current percent set in settings\",f.percent),a.set.percent(f.percent))}},bind:{transitionEnd:function(e){var t=a.get.transitionEnd();C.one(t+b,function(t){clearTimeout(a.failSafeTimer),e.call(this,t)}),a.failSafeTimer=setTimeout(function(){C.triggerHandler(t)},f.duration+f.failSafeDelay),a.verbose(\"Adding fail safe timer\",a.timer)}},increment:function(e){var t,n;a.has.total()?n=(t=a.get.value())+(e=e||1):(n=(t=a.get.percent())+(e=e||a.get.randomValue()),100,a.debug(\"Incrementing percentage by\",t,n)),n=a.get.normalizedValue(n),a.set.progress(n)},decrement:function(e){var t,n;a.get.total()?(n=(t=a.get.value())-(e=e||1),a.debug(\"Decrementing value by\",e,t)):(n=(t=a.get.percent())-(e=e||a.get.randomValue()),a.debug(\"Decrementing percentage by\",e,t)),n=a.get.normalizedValue(n),a.set.progress(n)},has:{progressPoll:function(){return a.progressPoll},total:function(){return!1!==a.get.total()}},get:{text:function(e){var t=a.value||0,n=a.total||0,i=A?a.get.displayPercent():a.percent||0,o=a.total>0?n-t:100-i;return e=(e=e||\"\").replace(\"{value}\",t).replace(\"{total}\",n).replace(\"{left}\",o).replace(\"{percent}\",i),a.verbose(\"Adding variables to progress bar text\",e),e},normalizedValue:function(e){if(e<0)return a.debug(\"Value cannot decrement below 0\"),0;if(a.has.total()){if(e>a.total)return a.debug(\"Value cannot increment above total\",a.total),a.total}else if(e>100)return a.debug(\"Value cannot increment above 100 percent\"),100;return e},updateInterval:function(){return\"auto\"==f.updateInterval?f.duration:f.updateInterval},randomValue:function(){return a.debug(\"Generating random increment percentage\"),Math.floor(Math.random()*f.random.max+f.random.min)},numericValue:function(e){return\"string\"==typeof e?\"\"!==e.replace(/[^\\d.]/g,\"\")&&+e.replace(/[^\\d.]/g,\"\"):e},transitionEnd:function(){var e,t=n.createElement(\"element\"),o={transition:\"transitionend\",OTransition:\"oTransitionEnd\",MozTransition:\"transitionend\",WebkitTransition:\"webkitTransitionEnd\"};for(e in o)if(t.style[e]!==i)return o[e]},displayPercent:function(){var e=C.width(),t=x.width(),n=e>parseInt(C.css(\"min-width\"),10)?e/t*100:a.percent;return f.precision>0?Math.round(n*(10*f.precision))/(10*f.precision):Math.round(n)},percent:function(){return a.percent||0},value:function(){return a.nextValue||a.value||0},total:function(){return a.total||!1}},create:{progressPoll:function(){a.progressPoll=setTimeout(function(){a.update.toNextValue(),a.remove.progressPoll()},a.get.updateInterval())}},is:{complete:function(){return a.is.success()||a.is.warning()||a.is.error()},success:function(){return x.hasClass(m.success)},warning:function(){return x.hasClass(m.warning)},error:function(){return x.hasClass(m.error)},active:function(){return x.hasClass(m.active)},visible:function(){return x.is(\":visible\")}},remove:{progressPoll:function(){a.verbose(\"Removing progress poll timer\"),a.progressPoll&&(clearTimeout(a.progressPoll),delete a.progressPoll)},nextValue:function(){a.verbose(\"Removing progress value stored for next update\"),delete a.nextValue},state:function(){a.verbose(\"Removing stored state\"),delete a.total,delete a.percent,delete a.value},active:function(){a.verbose(\"Removing active state\"),x.removeClass(m.active)},success:function(){a.verbose(\"Removing success state\"),x.removeClass(m.success)},warning:function(){a.verbose(\"Removing warning state\"),x.removeClass(m.warning)},error:function(){a.verbose(\"Removing error state\"),x.removeClass(m.error)}},set:{barWidth:function(e){e>100?a.error(v.tooHigh,e):e<0?a.error(v.tooLow,e):(C.css(\"width\",e+\"%\"),x.attr(\"data-percent\",parseInt(e,10)))},duration:function(e){e=\"number\"==typeof(e=e||f.duration)?e+\"ms\":e,a.verbose(\"Setting progress bar transition duration\",e),C.css({\"transition-duration\":e})},percent:function(e){e=\"string\"==typeof e?+e.replace(\"%\",\"\"):e,e=f.precision>0?Math.round(e*(10*f.precision))/(10*f.precision):Math.round(e),a.percent=e,a.has.total()||(a.value=f.precision>0?Math.round(e/100*a.total*(10*f.precision))/(10*f.precision):Math.round(e/100*a.total*10)/10,f.limitValues&&(a.value=a.value>100?100:a.value<0?0:a.value)),a.set.barWidth(e),a.set.labelInterval(),a.set.labels(),f.onChange.call(k,e,a.value,a.total)},labelInterval:function(){clearInterval(a.interval),a.bind.transitionEnd(function(){a.verbose(\"Bar finished animating, removing continuous label updates\"),clearInterval(a.interval),A=!1,a.set.labels()}),A=!0,a.interval=setInterval(function(){e.contains(n.documentElement,k)||(clearInterval(a.interval),A=!1),a.set.labels()},f.framerate)},labels:function(){a.verbose(\"Setting both bar progress and outer label text\"),a.set.barLabel(),a.set.state()},label:function(e){(e=e||\"\")&&(e=a.get.text(e),a.verbose(\"Setting label to text\",e),S.text(e))},state:function(e){100===(e=e!==i?e:a.percent)?f.autoSuccess&&!(a.is.warning()||a.is.error()||a.is.success())?(a.set.success(),a.debug(\"Automatically triggering success at 100%\")):(a.verbose(\"Reached 100% removing active state\"),a.remove.active(),a.remove.progressPoll()):e>0?(a.verbose(\"Adjusting active progress bar label\",e),a.set.active()):(a.remove.active(),a.set.label(f.text.active))},barLabel:function(e){e!==i?w.text(a.get.text(e)):\"ratio\"==f.label&&a.total?(a.verbose(\"Adding ratio to bar label\"),w.text(a.get.text(f.text.ratio))):\"percent\"==f.label&&(a.verbose(\"Adding percentage to bar label\"),w.text(a.get.text(f.text.percent)))},active:function(e){e=e||f.text.active,a.debug(\"Setting active state\"),f.showActivity&&!a.is.active()&&x.addClass(m.active),a.remove.warning(),a.remove.error(),a.remove.success(),(e=f.onLabelUpdate(\"active\",e,a.value,a.total))&&a.set.label(e),a.bind.transitionEnd(function(){f.onActive.call(k,a.value,a.total)})},success:function(e){e=e||f.text.success||f.text.active,a.debug(\"Setting success state\"),x.addClass(m.success),a.remove.active(),a.remove.warning(),a.remove.error(),a.complete(),f.text.success?(e=f.onLabelUpdate(\"success\",e,a.value,a.total),a.set.label(e)):(e=f.onLabelUpdate(\"active\",e,a.value,a.total),a.set.label(e)),a.bind.transitionEnd(function(){f.onSuccess.call(k,a.total)})},warning:function(e){e=e||f.text.warning,a.debug(\"Setting warning state\"),x.addClass(m.warning),a.remove.active(),a.remove.success(),a.remove.error(),a.complete(),(e=f.onLabelUpdate(\"warning\",e,a.value,a.total))&&a.set.label(e),a.bind.transitionEnd(function(){f.onWarning.call(k,a.value,a.total)})},error:function(e){e=e||f.text.error,a.debug(\"Setting error state\"),x.addClass(m.error),a.remove.active(),a.remove.success(),a.remove.warning(),a.complete(),(e=f.onLabelUpdate(\"error\",e,a.value,a.total))&&a.set.label(e),a.bind.transitionEnd(function(){f.onError.call(k,a.value,a.total)})},transitionEvent:function(){a.get.transitionEnd()},total:function(e){a.total=e},value:function(e){a.value=e},progress:function(e){a.has.progressPoll()?(a.debug(\"Updated within interval, setting next update to use new value\",e),a.set.nextValue(e)):(a.debug(\"First update in progress update interval, immediately updating\",e),a.update.progress(e),a.create.progressPoll())},nextValue:function(e){a.nextValue=e}},update:{toNextValue:function(){var e=a.nextValue;e&&(a.debug(\"Update interval complete using last updated value\",e),a.update.progress(e),a.remove.nextValue())},progress:function(e){var t;!1===(e=a.get.numericValue(e))&&a.error(v.nonNumeric,e),e=a.get.normalizedValue(e),a.has.total()?(a.set.value(e),t=e/a.total*100,a.debug(\"Calculating percent complete from total\",t),a.set.percent(t)):(t=e,a.debug(\"Setting value to exact percentage value\",t),a.set.percent(t))}},setting:function(t,n){if(a.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,f,t);else{if(n===i)return f[t];e.isPlainObject(f[t])?e.extend(!0,f[t],n):f[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,a,t);else{if(n===i)return a[t];a[t]=n}},debug:function(){!f.silent&&f.debug&&(f.performance?a.performance.log(arguments):(a.debug=Function.prototype.bind.call(console.info,console,f.name+\":\"),a.debug.apply(console,arguments)))},verbose:function(){!f.silent&&f.verbose&&f.debug&&(f.performance?a.performance.log(arguments):(a.verbose=Function.prototype.bind.call(console.info,console,f.name+\":\"),a.verbose.apply(console,arguments)))},error:function(){f.silent||(a.error=Function.prototype.bind.call(console.error,console,f.name+\":\"),a.error.apply(console,arguments))},performance:{log:function(e){var t,n;f.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:k,\"Execution Time\":n})),clearTimeout(a.performance.timer),a.performance.timer=setTimeout(a.performance.display,500)},display:function(){var t=f.name+\":\",n=0;s=!1,clearTimeout(a.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",r&&(t+=\" '\"+r+\"'\"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,r){var s,l,c,u=T;return n=n||d,r=k||r,\"string\"==typeof t&&u!==i&&(t=t.split(/[\\. ]/),s=t.length-1,e.each(t,function(n,o){var r=n!=s?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(u[r])&&n!=s)u=u[r];else{if(u[r]!==i)return l=u[r],!1;if(!e.isPlainObject(u[o])||n==s)return u[o]!==i?(l=u[o],!1):(a.error(v.method,t),!1);u=u[o]}})),e.isFunction(l)?c=l.apply(r,n):l!==i&&(c=l),e.isArray(o)?o.push(c):o!==i?o=[o,c]:c!==i&&(o=c),l}},u?(T===i&&a.initialize(),a.invoke(c)):(T!==i&&T.invoke(\"destroy\"),a.initialize())}),o!==i?o:this},e.fn.progress.settings={name:\"Progress\",namespace:\"progress\",silent:!1,debug:!1,verbose:!1,performance:!0,random:{min:2,max:5},duration:300,updateInterval:\"auto\",autoSuccess:!0,showActivity:!0,limitValues:!0,label:\"percent\",precision:0,framerate:1e3/30,percent:!1,total:!1,value:!1,failSafeDelay:100,onLabelUpdate:function(e,t,n,i){return t},onChange:function(e,t,n){},onSuccess:function(e){},onActive:function(e,t){},onError:function(e,t){},onWarning:function(e,t){},error:{method:\"The method you called is not defined.\",nonNumeric:\"Progress value is non numeric\",tooHigh:\"Value specified is above 100%\",tooLow:\"Value specified is below 0%\"},regExp:{variable:/\\{\\$*[A-z0-9]+\\}/g},metadata:{percent:\"percent\",total:\"total\",value:\"value\"},selector:{bar:\"> .bar\",label:\"> .label\",progress:\".bar > .progress\"},text:{active:!1,error:!1,success:!1,warning:!1,percent:\"{percent}%\",ratio:\"{value} of {total}\"},className:{active:\"active\",error:\"error\",success:\"success\",warning:\"warning\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.rating=function(t){var n,o=e(this),a=o.selector||\"\",r=(new Date).getTime(),s=[],l=arguments[0],c=\"string\"==typeof l,u=[].slice.call(arguments,1);return o.each(function(){var d,f,m=e.isPlainObject(t)?e.extend(!0,{},e.fn.rating.settings,t):e.extend({},e.fn.rating.settings),g=m.namespace,p=m.className,h=m.metadata,v=m.selector,b=(m.error,\".\"+g),y=\"module-\"+g,x=this,C=e(this).data(y),w=e(this),S=w.find(v.icon);f={initialize:function(){f.verbose(\"Initializing rating module\",m),0===S.length&&f.setup.layout(),m.interactive?f.enable():f.disable(),f.set.initialLoad(),f.set.rating(f.get.initialRating()),f.remove.initialLoad(),f.instantiate()},instantiate:function(){f.verbose(\"Instantiating module\",m),C=f,w.data(y,f)},destroy:function(){f.verbose(\"Destroying previous instance\",C),f.remove.events(),w.removeData(y)},refresh:function(){S=w.find(v.icon)},setup:{layout:function(){var t=f.get.maxRating(),n=e.fn.rating.settings.templates.icon(t);f.debug(\"Generating icon html dynamically\"),w.html(n),f.refresh()}},event:{mouseenter:function(){var t=e(this);t.nextAll().removeClass(p.selected),w.addClass(p.selected),t.addClass(p.selected).prevAll().addClass(p.selected)},mouseleave:function(){w.removeClass(p.selected),S.removeClass(p.selected)},click:function(){var t=e(this),n=f.get.rating(),i=S.index(t)+1;(\"auto\"==m.clearable?1===S.length:m.clearable)&&n==i?f.clearRating():f.set.rating(i)}},clearRating:function(){f.debug(\"Clearing current rating\"),f.set.rating(0)},bind:{events:function(){f.verbose(\"Binding events\"),w.on(\"mouseenter\"+b,v.icon,f.event.mouseenter).on(\"mouseleave\"+b,v.icon,f.event.mouseleave).on(\"click\"+b,v.icon,f.event.click)}},remove:{events:function(){f.verbose(\"Removing events\"),w.off(b)},initialLoad:function(){d=!1}},enable:function(){f.debug(\"Setting rating to interactive mode\"),f.bind.events(),w.removeClass(p.disabled)},disable:function(){f.debug(\"Setting rating to read-only mode\"),f.remove.events(),w.addClass(p.disabled)},is:{initialLoad:function(){return d}},get:{initialRating:function(){return w.data(h.rating)!==i?(w.removeData(h.rating),w.data(h.rating)):m.initialRating},maxRating:function(){return w.data(h.maxRating)!==i?(w.removeData(h.maxRating),w.data(h.maxRating)):m.maxRating},rating:function(){var e=S.filter(\".\"+p.active).length;return f.verbose(\"Current rating retrieved\",e),e}},set:{rating:function(e){var t=e-1>=0?e-1:0,n=S.eq(t);w.removeClass(p.selected),S.removeClass(p.selected).removeClass(p.active),e>0&&(f.verbose(\"Setting current rating to\",e),n.prevAll().addBack().addClass(p.active)),f.is.initialLoad()||m.onRate.call(x,e)},initialLoad:function(){d=!0}},setting:function(t,n){if(f.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];e.isPlainObject(m[t])?e.extend(!0,m[t],n):m[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,f,t);else{if(n===i)return f[t];f[t]=n}},debug:function(){!m.silent&&m.debug&&(m.performance?f.performance.log(arguments):(f.debug=Function.prototype.bind.call(console.info,console,m.name+\":\"),f.debug.apply(console,arguments)))},verbose:function(){!m.silent&&m.verbose&&m.debug&&(m.performance?f.performance.log(arguments):(f.verbose=Function.prototype.bind.call(console.info,console,m.name+\":\"),f.verbose.apply(console,arguments)))},error:function(){m.silent||(f.error=Function.prototype.bind.call(console.error,console,m.name+\":\"),f.error.apply(console,arguments))},performance:{log:function(e){var t,n;m.performance&&(n=(t=(new Date).getTime())-(r||t),r=t,s.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:x,\"Execution Time\":n})),clearTimeout(f.performance.timer),f.performance.timer=setTimeout(f.performance.display,500)},display:function(){var t=m.name+\":\",n=0;r=!1,clearTimeout(f.performance.timer),e.each(s,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",a&&(t+=\" '\"+a+\"'\"),o.length>1&&(t+=\" (\"+o.length+\")\"),(console.group!==i||console.table!==i)&&s.length>0&&(console.groupCollapsed(t),console.table?console.table(s):e.each(s,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),s=[]}},invoke:function(t,o,a){var r,s,l,c=C;return o=o||u,a=x||a,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,o):s!==i&&(l=s),e.isArray(n)?n.push(l):n!==i?n=[n,l]:l!==i&&(n=l),s}},c?(C===i&&f.initialize(),f.invoke(l)):(C!==i&&C.invoke(\"destroy\"),f.initialize())}),n!==i?n:this},e.fn.rating.settings={name:\"Rating\",namespace:\"rating\",slent:!1,debug:!1,verbose:!1,performance:!0,initialRating:0,interactive:!0,maxRating:4,clearable:\"auto\",fireOnInit:!1,onRate:function(e){},error:{method:\"The method you called is not defined\",noMaximum:\"No maximum rating specified. Cannot generate HTML automatically\"},metadata:{rating:\"rating\",maxRating:\"maxRating\"},className:{active:\"active\",disabled:\"disabled\",selected:\"selected\",loading:\"loading\"},selector:{icon:\".icon\"},templates:{icon:function(e){for(var t=1,n=\"\";t<=e;)n+='<i class=\"icon\"></i>',t++;return n}}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.search=function(o){var a,r=e(this),s=r.selector||\"\",l=(new Date).getTime(),c=[],u=arguments[0],d=\"string\"==typeof u,f=[].slice.call(arguments,1);return e(this).each(function(){var m,g=e.isPlainObject(o)?e.extend(!0,{},e.fn.search.settings,o):e.extend({},e.fn.search.settings),p=g.className,h=g.metadata,v=g.regExp,b=g.fields,y=g.selector,x=g.error,C=g.namespace,w=\".\"+C,S=C+\"-module\",k=e(this),T=k.find(y.prompt),A=k.find(y.searchButton),R=k.find(y.results),P=k.find(y.result),E=(k.find(y.category),this),F=k.data(S),O=!1,D=!1;m={initialize:function(){m.verbose(\"Initializing module\"),m.get.settings(),m.determine.searchFields(),m.bind.events(),m.set.type(),m.create.results(),m.instantiate()},instantiate:function(){m.verbose(\"Storing instance of module\",m),F=m,k.data(S,m)},destroy:function(){m.verbose(\"Destroying instance\"),k.off(w).removeData(S)},refresh:function(){m.debug(\"Refreshing selector cache\"),T=k.find(y.prompt),A=k.find(y.searchButton),k.find(y.category),R=k.find(y.results),P=k.find(y.result)},refreshResults:function(){R=k.find(y.results),P=k.find(y.result)},bind:{events:function(){m.verbose(\"Binding events to search\"),g.automatic&&(k.on(m.get.inputEvent()+w,y.prompt,m.event.input),T.attr(\"autocomplete\",\"off\")),k.on(\"focus\"+w,y.prompt,m.event.focus).on(\"blur\"+w,y.prompt,m.event.blur).on(\"keydown\"+w,y.prompt,m.handleKeyboard).on(\"click\"+w,y.searchButton,m.query).on(\"mousedown\"+w,y.results,m.event.result.mousedown).on(\"mouseup\"+w,y.results,m.event.result.mouseup).on(\"click\"+w,y.result,m.event.result.click)}},determine:{searchFields:function(){o&&o.searchFields!==i&&(g.searchFields=o.searchFields)}},event:{input:function(){g.searchDelay?(clearTimeout(m.timer),m.timer=setTimeout(function(){m.is.focused()&&m.query()},g.searchDelay)):m.query()},focus:function(){m.set.focus(),g.searchOnFocus&&m.has.minimumCharacters()&&m.query(function(){m.can.show()&&m.showResults()})},blur:function(e){var t=function(){m.cancel.query(),m.remove.focus(),m.timer=setTimeout(m.hideResults,g.hideDelay)};n.activeElement===this||(D=!1,m.resultsClicked?(m.debug(\"Determining if user action caused search to close\"),k.one(\"click.close\"+w,y.results,function(e){m.is.inMessage(e)||O?T.focus():(O=!1,m.is.animating()||m.is.hidden()||t())})):(m.debug(\"Input blurred without user action, closing results\"),t()))},result:{mousedown:function(){m.resultsClicked=!0},mouseup:function(){m.resultsClicked=!1},click:function(n){m.debug(\"Search result selected\");var i=e(this),o=i.find(y.title).eq(0),a=i.is(\"a[href]\")?i:i.find(\"a[href]\").eq(0),r=a.attr(\"href\")||!1,s=a.attr(\"target\")||!1,l=(o.html(),o.length>0&&o.text()),c=m.get.results(),u=i.data(h.result)||m.get.result(l,c);if(e.isFunction(g.onSelect)&&!1===g.onSelect.call(E,u,c))return m.debug(\"Custom onSelect callback cancelled default select action\"),void(O=!0);m.hideResults(),l&&m.set.value(l),r&&(m.verbose(\"Opening search link found in result\",a),\"_blank\"==s||n.ctrlKey?t.open(r):t.location.href=r)}}},handleKeyboard:function(e){var t,n=k.find(y.result),i=k.find(y.category),o=n.filter(\".\"+p.active),a=n.index(o),r=n.length,s=o.length>0,l=e.which,c=13,u=38,d=40;if(l==27&&(m.verbose(\"Escape key pressed, blurring search field\"),m.hideResults(),D=!0),m.is.visible())if(l==c){if(m.verbose(\"Enter key pressed, selecting active result\"),n.filter(\".\"+p.active).length>0)return m.event.result.click.call(n.filter(\".\"+p.active),e),e.preventDefault(),!1}else l==u&&s?(m.verbose(\"Up key pressed, changing active result\"),t=a-1<0?a:a-1,i.removeClass(p.active),n.removeClass(p.active).eq(t).addClass(p.active).closest(i).addClass(p.active),e.preventDefault()):l==d&&(m.verbose(\"Down key pressed, changing active result\"),t=a+1>=r?a:a+1,i.removeClass(p.active),n.removeClass(p.active).eq(t).addClass(p.active).closest(i).addClass(p.active),e.preventDefault());else l==c&&(m.verbose(\"Enter key pressed, executing query\"),m.query(),m.set.buttonPressed(),T.one(\"keyup\",m.remove.buttonFocus))},setup:{api:function(t,n){var i={debug:g.debug,on:!1,cache:g.cache,action:\"search\",urlData:{query:t},onSuccess:function(e){m.parse.response.call(E,e,t),n()},onFailure:function(){m.displayMessage(x.serverError),n()},onAbort:function(e){},onError:m.error};e.extend(!0,i,g.apiSettings),m.verbose(\"Setting up API request\",i),k.api(i)}},can:{useAPI:function(){return e.fn.api!==i},show:function(){return m.is.focused()&&!m.is.visible()&&!m.is.empty()},transition:function(){return g.transition&&e.fn.transition!==i&&k.transition(\"is supported\")}},is:{animating:function(){return R.hasClass(p.animating)},hidden:function(){return R.hasClass(p.hidden)},inMessage:function(t){if(t.target){var i=e(t.target);return e.contains(n.documentElement,t.target)&&i.closest(y.message).length>0}},empty:function(){return\"\"===R.html()},visible:function(){return R.filter(\":visible\").length>0},focused:function(){return T.filter(\":focus\").length>0}},get:{settings:function(){e.isPlainObject(o)&&o.searchFullText&&(g.fullTextSearch=o.searchFullText,m.error(g.error.oldSearchSyntax,E))},inputEvent:function(){var e=T[0];return e!==i&&e.oninput!==i?\"input\":e!==i&&e.onpropertychange!==i?\"propertychange\":\"keyup\"},value:function(){return T.val()},results:function(){return k.data(h.results)},result:function(t,n){var o=[\"title\",\"id\"],a=!1;return t=t!==i?t:m.get.value(),n=n!==i?n:m.get.results(),\"category\"===g.type?(m.debug(\"Finding result that matches\",t),e.each(n,function(n,i){if(e.isArray(i.results)&&(a=m.search.object(t,i.results,o)[0]))return!1})):(m.debug(\"Finding result in results object\",t),a=m.search.object(t,n,o)[0]),a||!1}},select:{firstResult:function(){m.verbose(\"Selecting first result\"),P.first().addClass(p.active)}},set:{focus:function(){k.addClass(p.focus)},loading:function(){k.addClass(p.loading)},value:function(e){m.verbose(\"Setting search input value\",e),T.val(e)},type:function(e){e=e||g.type,\"category\"==g.type&&k.addClass(g.type)},buttonPressed:function(){A.addClass(p.pressed)}},remove:{loading:function(){k.removeClass(p.loading)},focus:function(){k.removeClass(p.focus)},buttonPressed:function(){A.removeClass(p.pressed)}},query:function(t){t=e.isFunction(t)?t:function(){};var n=m.get.value(),i=m.read.cache(n);t=t||function(){},m.has.minimumCharacters()?(i?(m.debug(\"Reading result from cache\",n),m.save.results(i.results),m.addResults(i.html),m.inject.id(i.results),t()):(m.debug(\"Querying for\",n),e.isPlainObject(g.source)||e.isArray(g.source)?(m.search.local(n),t()):m.can.useAPI()?m.search.remote(n,t):(m.error(x.source),t())),g.onSearchQuery.call(E,n)):m.hideResults()},search:{local:function(e){var t,n=m.search.object(e,g.content);m.set.loading(),m.save.results(n),m.debug(\"Returned full local search results\",n),g.maxResults>0&&(m.debug(\"Using specified max results\",n),n=n.slice(0,g.maxResults)),\"category\"==g.type&&(n=m.create.categoryResults(n)),t=m.generateResults({results:n}),m.remove.loading(),m.addResults(t),m.inject.id(n),m.write.cache(e,{html:t,results:n})},remote:function(t,n){n=e.isFunction(n)?n:function(){},k.api(\"is loading\")&&k.api(\"abort\"),m.setup.api(t,n),k.api(\"query\")},object:function(t,n,o){var a=[],r=[],s=[],l=t.toString().replace(v.escape,\"\\\\$&\"),c=new RegExp(v.beginsWith+l,\"i\"),u=function(t,n){var i=-1==e.inArray(n,a),o=-1==e.inArray(n,s),l=-1==e.inArray(n,r);i&&o&&l&&t.push(n)};return n=n||g.source,o=o!==i?o:g.searchFields,e.isArray(o)||(o=[o]),n===i||!1===n?(m.error(x.source),[]):(e.each(o,function(i,o){e.each(n,function(e,n){\"string\"==typeof n[o]&&(-1!==n[o].search(c)?u(a,n):\"exact\"===g.fullTextSearch&&m.exactSearch(t,n[o])?u(r,n):1==g.fullTextSearch&&m.fuzzySearch(t,n[o])&&u(s,n))})}),e.merge(r,s),e.merge(a,r),a)}},exactSearch:function(e,t){return e=e.toLowerCase(),(t=t.toLowerCase()).indexOf(e)>-1},fuzzySearch:function(e,t){var n=t.length,i=e.length;if(\"string\"!=typeof e)return!1;if(e=e.toLowerCase(),t=t.toLowerCase(),i>n)return!1;if(i===n)return e===t;e:for(var o=0,a=0;o<i;o++){for(var r=e.charCodeAt(o);a<n;)if(t.charCodeAt(a++)===r)continue e;return!1}return!0},parse:{response:function(e,t){var n=m.generateResults(e);m.verbose(\"Parsing server response\",e),e!==i&&t!==i&&e[b.results]!==i&&(m.addResults(n),m.inject.id(e[b.results]),m.write.cache(t,{html:n,results:e[b.results]}),m.save.results(e[b.results]))}},cancel:{query:function(){m.can.useAPI()&&k.api(\"abort\")}},has:{minimumCharacters:function(){return m.get.value().length>=g.minCharacters},results:function(){return 0!==R.length&&\"\"!=R.html()}},clear:{cache:function(e){var t=k.data(h.cache);e?e&&t&&t[e]&&(m.debug(\"Removing value from cache\",e),delete t[e],k.data(h.cache,t)):(m.debug(\"Clearing cache\",e),k.removeData(h.cache))}},read:{cache:function(e){var t=k.data(h.cache);return!!g.cache&&(m.verbose(\"Checking cache for generated html for query\",e),\"object\"==typeof t&&t[e]!==i&&t[e])}},create:{categoryResults:function(t){var n={};return e.each(t,function(e,t){t.category&&(n[t.category]===i?(m.verbose(\"Creating new category of results\",t.category),n[t.category]={name:t.category,results:[t]}):n[t.category].results.push(t))}),n},id:function(e,t){var n,o=e+1;return t!==i?(n=String.fromCharCode(97+t)+o,m.verbose(\"Creating category result id\",n)):(n=o,m.verbose(\"Creating result id\",n)),n},results:function(){0===R.length&&(R=e(\"<div />\").addClass(p.results).appendTo(k))}},inject:{result:function(e,t,n){m.verbose(\"Injecting result into results\");var o=n!==i?R.children().eq(n).children(y.results).first().children(y.result).eq(t):R.children(y.result).eq(t);m.verbose(\"Injecting results metadata\",o),o.data(h.result,e)},id:function(t){m.debug(\"Injecting unique ids into results\");var n=0,o=0;return\"category\"===g.type?e.each(t,function(t,a){o=0,e.each(a.results,function(e,t){var r=a.results[e];r.id===i&&(r.id=m.create.id(o,n)),m.inject.result(r,o,n),o++}),n++}):e.each(t,function(e,n){var a=t[e];a.id===i&&(a.id=m.create.id(o)),m.inject.result(a,o),o++}),t}},save:{results:function(e){m.verbose(\"Saving current search results to metadata\",e),k.data(h.results,e)}},write:{cache:function(e,t){var n=k.data(h.cache)!==i?k.data(h.cache):{};g.cache&&(m.verbose(\"Writing generated html to cache\",e,t),n[e]=t,k.data(h.cache,n))}},addResults:function(t){if(e.isFunction(g.onResultsAdd)&&!1===g.onResultsAdd.call(R,t))return m.debug(\"onResultsAdd callback cancelled default action\"),!1;t?(R.html(t),m.refreshResults(),g.selectFirstResult&&m.select.firstResult(),m.showResults()):m.hideResults(function(){R.empty()})},showResults:function(t){t=e.isFunction(t)?t:function(){},D||!m.is.visible()&&m.has.results()&&(m.can.transition()?(m.debug(\"Showing results with css animations\"),R.transition({animation:g.transition+\" in\",debug:g.debug,verbose:g.verbose,duration:g.duration,onComplete:function(){t()},queue:!0})):(m.debug(\"Showing results with javascript\"),R.stop().fadeIn(g.duration,g.easing)),g.onResultsOpen.call(R))},hideResults:function(t){t=e.isFunction(t)?t:function(){},m.is.visible()&&(m.can.transition()?(m.debug(\"Hiding results with css animations\"),R.transition({animation:g.transition+\" out\",debug:g.debug,verbose:g.verbose,duration:g.duration,onComplete:function(){t()},queue:!0})):(m.debug(\"Hiding results with javascript\"),R.stop().fadeOut(g.duration,g.easing)),g.onResultsClose.call(R))},generateResults:function(t){m.debug(\"Generating html from response\",t);var n=g.templates[g.type],i=e.isPlainObject(t[b.results])&&!e.isEmptyObject(t[b.results]),o=e.isArray(t[b.results])&&t[b.results].length>0,a=\"\";return i||o?(g.maxResults>0&&(i?\"standard\"==g.type&&m.error(x.maxResults):t[b.results]=t[b.results].slice(0,g.maxResults)),e.isFunction(n)?a=n(t,b):m.error(x.noTemplate,!1)):g.showNoResults&&(a=m.displayMessage(x.noResults,\"empty\")),g.onResults.call(E,t),a},displayMessage:function(e,t){return t=t||\"standard\",m.debug(\"Displaying message\",e,t),m.addResults(g.templates.message(e,t)),g.templates.message(e,t)},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,g,t);else{if(n===i)return g[t];g[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];m[t]=n}},debug:function(){!g.silent&&g.debug&&(g.performance?m.performance.log(arguments):(m.debug=Function.prototype.bind.call(console.info,console,g.name+\":\"),m.debug.apply(console,arguments)))},verbose:function(){!g.silent&&g.verbose&&g.debug&&(g.performance?m.performance.log(arguments):(m.verbose=Function.prototype.bind.call(console.info,console,g.name+\":\"),m.verbose.apply(console,arguments)))},error:function(){g.silent||(m.error=Function.prototype.bind.call(console.error,console,g.name+\":\"),m.error.apply(console,arguments))},performance:{log:function(e){var t,n;g.performance&&(n=(t=(new Date).getTime())-(l||t),l=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:E,\"Execution Time\":n})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,500)},display:function(){var t=g.name+\":\",n=0;l=!1,clearTimeout(m.performance.timer),e.each(c,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",s&&(t+=\" '\"+s+\"'\"),r.length>1&&(t+=\" (\"+r.length+\")\"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),c=[]}},invoke:function(t,n,o){var r,s,l,c=F;return n=n||f,o=E||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},d?(F===i&&m.initialize(),m.invoke(u)):(F!==i&&F.invoke(\"destroy\"),m.initialize())}),a!==i?a:this},e.fn.search.settings={name:\"Search\",namespace:\"search\",silent:!1,debug:!1,verbose:!1,performance:!0,type:\"standard\",minCharacters:1,selectFirstResult:!1,apiSettings:!1,source:!1,searchOnFocus:!0,searchFields:[\"title\",\"description\"],displayField:\"\",fullTextSearch:\"exact\",automatic:!0,hideDelay:0,searchDelay:200,maxResults:7,cache:!0,showNoResults:!0,transition:\"scale\",duration:200,easing:\"easeOutExpo\",onSelect:!1,onResultsAdd:!1,onSearchQuery:function(e){},onResults:function(e){},onResultsOpen:function(){},onResultsClose:function(){},className:{animating:\"animating\",active:\"active\",empty:\"empty\",focus:\"focus\",hidden:\"hidden\",loading:\"loading\",results:\"results\",pressed:\"down\"},error:{source:\"Cannot search. No source used, and Semantic API module was not included\",noResults:\"Your search returned no results\",logging:\"Error in debug logging, exiting.\",noEndpoint:\"No search endpoint was specified\",noTemplate:\"A valid template name was not specified.\",oldSearchSyntax:\"searchFullText setting has been renamed fullTextSearch for consistency, please adjust your settings.\",serverError:\"There was an issue querying the server.\",maxResults:\"Results must be an array to use maxResults setting\",method:\"The method you called is not defined.\"},metadata:{cache:\"cache\",results:\"results\",result:\"result\"},regExp:{escape:/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,beginsWith:\"(?:s|^)\"},fields:{categories:\"results\",categoryName:\"name\",categoryResults:\"results\",description:\"description\",image:\"image\",price:\"price\",results:\"results\",title:\"title\",url:\"url\",action:\"action\",actionText:\"text\",actionURL:\"url\"},selector:{prompt:\".prompt\",searchButton:\".search.button\",results:\".results\",message:\".results > .message\",category:\".category\",result:\".result\",title:\".title, .name\"},templates:{escape:function(e){var t={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#x27;\",\"`\":\"&#x60;\"};return/[&<>\"'`]/.test(e)?e.replace(/[&<>\"'`]/g,function(e){return t[e]}):e},message:function(e,t){var n=\"\";return e!==i&&t!==i&&(n+='<div class=\"message '+t+'\">',n+=\"empty\"==t?'<div class=\"header\">No Results</div class=\"header\"><div class=\"description\">'+e+'</div class=\"description\">':' <div class=\"description\">'+e+\"</div>\",n+=\"</div>\"),n},category:function(t,n){var o=\"\";e.fn.search.settings.templates.escape;return t[n.categoryResults]!==i&&(e.each(t[n.categoryResults],function(t,a){a[n.results]!==i&&a.results.length>0&&(o+='<div class=\"category\">',a[n.categoryName]!==i&&(o+='<div class=\"name\">'+a[n.categoryName]+\"</div>\"),o+='<div class=\"results\">',e.each(a.results,function(e,t){t[n.url]?o+='<a class=\"result\" href=\"'+t[n.url]+'\">':o+='<a class=\"result\">',t[n.image]!==i&&(o+='<div class=\"image\"> <img src=\"'+t[n.image]+'\"></div>'),o+='<div class=\"content\">',t[n.price]!==i&&(o+='<div class=\"price\">'+t[n.price]+\"</div>\"),t[n.title]!==i&&(o+='<div class=\"title\">'+t[n.title]+\"</div>\"),t[n.description]!==i&&(o+='<div class=\"description\">'+t[n.description]+\"</div>\"),o+=\"</div>\",o+=\"</a>\"}),o+=\"</div>\",o+=\"</div>\")}),t[n.action]&&(o+='<a href=\"'+t[n.action][n.actionURL]+'\" class=\"action\">'+t[n.action][n.actionText]+\"</a>\"),o)},standard:function(t,n){var o=\"\";return t[n.results]!==i&&(e.each(t[n.results],function(e,t){t[n.url]?o+='<a class=\"result\" href=\"'+t[n.url]+'\">':o+='<a class=\"result\">',t[n.image]!==i&&(o+='<div class=\"image\"> <img src=\"'+t[n.image]+'\"></div>'),o+='<div class=\"content\">',t[n.price]!==i&&(o+='<div class=\"price\">'+t[n.price]+\"</div>\"),t[n.title]!==i&&(o+='<div class=\"title\">'+t[n.title]+\"</div>\"),t[n.description]!==i&&(o+='<div class=\"description\">'+t[n.description]+\"</div>\"),o+=\"</div>\",o+=\"</a>\"}),t[n.action]&&(o+='<a href=\"'+t[n.action][n.actionURL]+'\" class=\"action\">'+t[n.action][n.actionText]+\"</a>\"),o)}}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.shape=function(o){var a,r=e(this),s=(e(\"body\"),(new Date).getTime()),l=[],c=arguments[0],u=\"string\"==typeof c,d=[].slice.call(arguments,1),f=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};return r.each(function(){var t,m,g,p=r.selector||\"\",h=e.isPlainObject(o)?e.extend(!0,{},e.fn.shape.settings,o):e.extend({},e.fn.shape.settings),v=h.namespace,b=h.selector,y=h.error,x=h.className,C=\".\"+v,w=\"module-\"+v,S=e(this),k=S.find(b.sides),T=S.find(b.side),A=!1,R=this,P=S.data(w);g={initialize:function(){g.verbose(\"Initializing module for\",R),g.set.defaultSide(),g.instantiate()},instantiate:function(){g.verbose(\"Storing instance of module\",g),P=g,S.data(w,P)},destroy:function(){g.verbose(\"Destroying previous module for\",R),S.removeData(w).off(C)},refresh:function(){g.verbose(\"Refreshing selector cache for\",R),S=e(R),k=e(this).find(b.shape),T=e(this).find(b.side)},repaint:function(){g.verbose(\"Forcing repaint event\");(k[0]||n.createElement(\"div\")).offsetWidth},animate:function(e,n){g.verbose(\"Animating box with properties\",e),n=n||function(e){g.verbose(\"Executing animation callback\"),e!==i&&e.stopPropagation(),g.reset(),g.set.active()},h.beforeChange.call(m[0]),g.get.transitionEvent()?(g.verbose(\"Starting CSS animation\"),S.addClass(x.animating),k.css(e).one(g.get.transitionEvent(),n),g.set.duration(h.duration),f(function(){S.addClass(x.animating),t.addClass(x.hidden)})):n()},queue:function(e){g.debug(\"Queueing animation of\",e),k.one(g.get.transitionEvent(),function(){g.debug(\"Executing queued animation\"),setTimeout(function(){S.shape(e)},0)})},reset:function(){g.verbose(\"Animating states reset\"),S.removeClass(x.animating).attr(\"style\",\"\").removeAttr(\"style\"),k.attr(\"style\",\"\").removeAttr(\"style\"),T.attr(\"style\",\"\").removeAttr(\"style\").removeClass(x.hidden),m.removeClass(x.animating).attr(\"style\",\"\").removeAttr(\"style\")},is:{complete:function(){return T.filter(\".\"+x.active)[0]==m[0]},animating:function(){return S.hasClass(x.animating)}},set:{defaultSide:function(){t=S.find(\".\"+h.className.active),m=t.next(b.side).length>0?t.next(b.side):S.find(b.side).first(),A=!1,g.verbose(\"Active side set to\",t),g.verbose(\"Next side set to\",m)},duration:function(e){e=\"number\"==typeof(e=e||h.duration)?e+\"ms\":e,g.verbose(\"Setting animation duration\",e),(h.duration||0===h.duration)&&k.add(T).css({\"-webkit-transition-duration\":e,\"-moz-transition-duration\":e,\"-ms-transition-duration\":e,\"-o-transition-duration\":e,\"transition-duration\":e})},currentStageSize:function(){var e=S.find(\".\"+h.className.active),t=e.outerWidth(!0),n=e.outerHeight(!0);S.css({width:t,height:n})},stageSize:function(){var e=S.clone().addClass(x.loading),t=e.find(\".\"+h.className.active),n=A?e.find(b.side).eq(A):t.next(b.side).length>0?t.next(b.side):e.find(b.side).first(),i=\"next\"==h.width?n.outerWidth(!0):\"initial\"==h.width?S.width():h.width,o=\"next\"==h.height?n.outerHeight(!0):\"initial\"==h.height?S.height():h.height;t.removeClass(x.active),n.addClass(x.active),e.insertAfter(S),e.remove(),\"auto\"!=h.width&&(S.css(\"width\",i+h.jitter),g.verbose(\"Specifying width during animation\",i)),\"auto\"!=h.height&&(S.css(\"height\",o+h.jitter),g.verbose(\"Specifying height during animation\",o))},nextSide:function(e){A=e,m=T.filter(e),A=T.index(m),0===m.length&&(g.set.defaultSide(),g.error(y.side)),g.verbose(\"Next side manually set to\",m)},active:function(){g.verbose(\"Setting new side to active\",m),T.removeClass(x.active),m.addClass(x.active),h.onChange.call(m[0]),g.set.defaultSide()}},flip:{up:function(){if(!g.is.complete()||g.is.animating()||h.allowRepeats)if(g.is.animating())g.queue(\"flip up\");else{g.debug(\"Flipping up\",m);var e=g.get.transform.up();g.set.stageSize(),g.stage.above(),g.animate(e)}else g.debug(\"Side already visible\",m)},down:function(){if(!g.is.complete()||g.is.animating()||h.allowRepeats)if(g.is.animating())g.queue(\"flip down\");else{g.debug(\"Flipping down\",m);var e=g.get.transform.down();g.set.stageSize(),g.stage.below(),g.animate(e)}else g.debug(\"Side already visible\",m)},left:function(){if(!g.is.complete()||g.is.animating()||h.allowRepeats)if(g.is.animating())g.queue(\"flip left\");else{g.debug(\"Flipping left\",m);var e=g.get.transform.left();g.set.stageSize(),g.stage.left(),g.animate(e)}else g.debug(\"Side already visible\",m)},right:function(){if(!g.is.complete()||g.is.animating()||h.allowRepeats)if(g.is.animating())g.queue(\"flip right\");else{g.debug(\"Flipping right\",m);var e=g.get.transform.right();g.set.stageSize(),g.stage.right(),g.animate(e)}else g.debug(\"Side already visible\",m)},over:function(){!g.is.complete()||g.is.animating()||h.allowRepeats?g.is.animating()?g.queue(\"flip over\"):(g.debug(\"Flipping over\",m),g.set.stageSize(),g.stage.behind(),g.animate(g.get.transform.over())):g.debug(\"Side already visible\",m)},back:function(){!g.is.complete()||g.is.animating()||h.allowRepeats?g.is.animating()?g.queue(\"flip back\"):(g.debug(\"Flipping back\",m),g.set.stageSize(),g.stage.behind(),g.animate(g.get.transform.back())):g.debug(\"Side already visible\",m)}},get:{transform:{up:function(){return{transform:\"translateY(\"+-(t.outerHeight(!0)-m.outerHeight(!0))/2+\"px) translateZ(\"+-t.outerHeight(!0)/2+\"px) rotateX(-90deg)\"}},down:function(){return{transform:\"translateY(\"+-(t.outerHeight(!0)-m.outerHeight(!0))/2+\"px) translateZ(\"+-t.outerHeight(!0)/2+\"px) rotateX(90deg)\"}},left:function(){return{transform:\"translateX(\"+-(t.outerWidth(!0)-m.outerWidth(!0))/2+\"px) translateZ(\"+-t.outerWidth(!0)/2+\"px) rotateY(90deg)\"}},right:function(){return{transform:\"translateX(\"+-(t.outerWidth(!0)-m.outerWidth(!0))/2+\"px) translateZ(\"+-t.outerWidth(!0)/2+\"px) rotateY(-90deg)\"}},over:function(){return{transform:\"translateX(\"+-(t.outerWidth(!0)-m.outerWidth(!0))/2+\"px) rotateY(180deg)\"}},back:function(){return{transform:\"translateX(\"+-(t.outerWidth(!0)-m.outerWidth(!0))/2+\"px) rotateY(-180deg)\"}}},transitionEvent:function(){var e,t=n.createElement(\"element\"),o={transition:\"transitionend\",OTransition:\"oTransitionEnd\",MozTransition:\"transitionend\",WebkitTransition:\"webkitTransitionEnd\"};for(e in o)if(t.style[e]!==i)return o[e]},nextSide:function(){return t.next(b.side).length>0?t.next(b.side):S.find(b.side).first()}},stage:{above:function(){var e={origin:(t.outerHeight(!0)-m.outerHeight(!0))/2,depth:{active:m.outerHeight(!0)/2,next:t.outerHeight(!0)/2}};g.verbose(\"Setting the initial animation position as above\",m,e),k.css({transform:\"translateZ(-\"+e.depth.active+\"px)\"}),t.css({transform:\"rotateY(0deg) translateZ(\"+e.depth.active+\"px)\"}),m.addClass(x.animating).css({top:e.origin+\"px\",transform:\"rotateX(90deg) translateZ(\"+e.depth.next+\"px)\"})},below:function(){var e={origin:(t.outerHeight(!0)-m.outerHeight(!0))/2,depth:{active:m.outerHeight(!0)/2,next:t.outerHeight(!0)/2}};g.verbose(\"Setting the initial animation position as below\",m,e),k.css({transform:\"translateZ(-\"+e.depth.active+\"px)\"}),t.css({transform:\"rotateY(0deg) translateZ(\"+e.depth.active+\"px)\"}),m.addClass(x.animating).css({top:e.origin+\"px\",transform:\"rotateX(-90deg) translateZ(\"+e.depth.next+\"px)\"})},left:function(){var e=t.outerWidth(!0),n=m.outerWidth(!0),i={origin:(e-n)/2,depth:{active:n/2,next:e/2}};g.verbose(\"Setting the initial animation position as left\",m,i),k.css({transform:\"translateZ(-\"+i.depth.active+\"px)\"}),t.css({transform:\"rotateY(0deg) translateZ(\"+i.depth.active+\"px)\"}),m.addClass(x.animating).css({left:i.origin+\"px\",transform:\"rotateY(-90deg) translateZ(\"+i.depth.next+\"px)\"})},right:function(){var e=t.outerWidth(!0),n=m.outerWidth(!0),i={origin:(e-n)/2,depth:{active:n/2,next:e/2}};g.verbose(\"Setting the initial animation position as left\",m,i),k.css({transform:\"translateZ(-\"+i.depth.active+\"px)\"}),t.css({transform:\"rotateY(0deg) translateZ(\"+i.depth.active+\"px)\"}),m.addClass(x.animating).css({left:i.origin+\"px\",transform:\"rotateY(90deg) translateZ(\"+i.depth.next+\"px)\"})},behind:function(){var e=t.outerWidth(!0),n=m.outerWidth(!0),i={origin:(e-n)/2,depth:{active:n/2,next:e/2}};g.verbose(\"Setting the initial animation position as behind\",m,i),t.css({transform:\"rotateY(0deg)\"}),m.addClass(x.animating).css({left:i.origin+\"px\",transform:\"rotateY(-180deg)\"})}},setting:function(t,n){if(g.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,h,t);else{if(n===i)return h[t];e.isPlainObject(h[t])?e.extend(!0,h[t],n):h[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,g,t);else{if(n===i)return g[t];g[t]=n}},debug:function(){!h.silent&&h.debug&&(h.performance?g.performance.log(arguments):(g.debug=Function.prototype.bind.call(console.info,console,h.name+\":\"),g.debug.apply(console,arguments)))},verbose:function(){!h.silent&&h.verbose&&h.debug&&(h.performance?g.performance.log(arguments):(g.verbose=Function.prototype.bind.call(console.info,console,h.name+\":\"),g.verbose.apply(console,arguments)))},error:function(){h.silent||(g.error=Function.prototype.bind.call(console.error,console,h.name+\":\"),g.error.apply(console,arguments))},performance:{log:function(e){var t,n;h.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:R,\"Execution Time\":n})),clearTimeout(g.performance.timer),g.performance.timer=setTimeout(g.performance.display,500)},display:function(){var t=h.name+\":\",n=0;s=!1,clearTimeout(g.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",p&&(t+=\" '\"+p+\"'\"),r.length>1&&(t+=\" (\"+r.length+\")\"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,o){var r,s,l,c=P;return n=n||d,o=R||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},u?(P===i&&g.initialize(),g.invoke(c)):(P!==i&&P.invoke(\"destroy\"),g.initialize())}),a!==i?a:this},e.fn.shape.settings={name:\"Shape\",silent:!1,debug:!1,verbose:!1,jitter:0,performance:!0,namespace:\"shape\",width:\"initial\",height:\"initial\",beforeChange:function(){},onChange:function(){},allowRepeats:!1,duration:!1,error:{side:\"You tried to switch to a side that does not exist.\",method:\"The method you called is not defined\"},className:{animating:\"animating\",hidden:\"hidden\",loading:\"loading\",active:\"active\"},selector:{sides:\".sides\",side:\".side\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.sidebar=function(o){var a,r=e(this),s=e(t),l=e(n),c=e(\"html\"),u=e(\"head\"),d=r.selector||\"\",f=(new Date).getTime(),m=[],g=arguments[0],p=\"string\"==typeof g,h=[].slice.call(arguments,1),v=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};return r.each(function(){var r,b,y,x,C,w,S=e.isPlainObject(o)?e.extend(!0,{},e.fn.sidebar.settings,o):e.extend({},e.fn.sidebar.settings),k=S.selector,T=S.className,A=S.namespace,R=S.regExp,P=S.error,E=\".\"+A,F=\"module-\"+A,O=e(this),D=e(S.context),q=O.children(k.sidebar),j=(D.children(k.fixed),D.children(k.pusher)),z=this,I=O.data(F);w={initialize:function(){w.debug(\"Initializing sidebar\",o),w.create.id(),C=w.get.transitionEvent(),S.delaySetup?v(w.setup.layout):w.setup.layout(),v(function(){w.setup.cache()}),w.instantiate()},instantiate:function(){w.verbose(\"Storing instance of module\",w),I=w,O.data(F,w)},create:{id:function(){y=(Math.random().toString(16)+\"000000000\").substr(2,8),b=\".\"+y,w.verbose(\"Creating unique id for element\",y)}},destroy:function(){w.verbose(\"Destroying previous module for\",O),O.off(E).removeData(F),w.is.ios()&&w.remove.ios(),D.off(b),s.off(b),l.off(b)},event:{clickaway:function(e){var t=j.find(e.target).length>0||j.is(e.target),n=D.is(e.target);t&&(w.verbose(\"User clicked on dimmed page\"),w.hide()),n&&(w.verbose(\"User clicked on dimmable context (scaled out page)\"),w.hide())},touch:function(e){},containScroll:function(e){z.scrollTop<=0&&(z.scrollTop=1),z.scrollTop+z.offsetHeight>=z.scrollHeight&&(z.scrollTop=z.scrollHeight-z.offsetHeight-1)},scroll:function(t){0===e(t.target).closest(k.sidebar).length&&t.preventDefault()}},bind:{clickaway:function(){w.verbose(\"Adding clickaway events to context\",D),S.closable&&D.on(\"click\"+b,w.event.clickaway).on(\"touchend\"+b,w.event.clickaway)},scrollLock:function(){S.scrollLock&&(w.debug(\"Disabling page scroll\"),s.on(\"DOMMouseScroll\"+b,w.event.scroll)),w.verbose(\"Adding events to contain sidebar scroll\"),l.on(\"touchmove\"+b,w.event.touch),O.on(\"scroll\"+E,w.event.containScroll)}},unbind:{clickaway:function(){w.verbose(\"Removing clickaway events from context\",D),D.off(b)},scrollLock:function(){w.verbose(\"Removing scroll lock from page\"),l.off(b),s.off(b),O.off(\"scroll\"+E)}},add:{inlineCSS:function(){var t,n=w.cache.width||O.outerWidth(),i=w.cache.height||O.outerHeight(),o=w.is.rtl(),a=w.get.direction(),s={left:n,right:-n,top:i,bottom:-i};o&&(w.verbose(\"RTL detected, flipping widths\"),s.left=-n,s.right=n),t=\"<style>\",\"left\"===a||\"right\"===a?(w.debug(\"Adding CSS rules for animation distance\",n),t+=\" .ui.visible.\"+a+\".sidebar ~ .fixed, .ui.visible.\"+a+\".sidebar ~ .pusher { -webkit-transform: translate3d(\"+s[a]+\"px, 0, 0); transform: translate3d(\"+s[a]+\"px, 0, 0); }\"):\"top\"!==a&&\"bottom\"!=a||(t+=\" .ui.visible.\"+a+\".sidebar ~ .fixed, .ui.visible.\"+a+\".sidebar ~ .pusher { -webkit-transform: translate3d(0, \"+s[a]+\"px, 0); transform: translate3d(0, \"+s[a]+\"px, 0); }\"),w.is.ie()&&(\"left\"===a||\"right\"===a?(w.debug(\"Adding CSS rules for animation distance\",n),t+=\" body.pushable > .ui.visible.\"+a+\".sidebar ~ .pusher:after { -webkit-transform: translate3d(\"+s[a]+\"px, 0, 0); transform: translate3d(\"+s[a]+\"px, 0, 0); }\"):\"top\"!==a&&\"bottom\"!=a||(t+=\" body.pushable > .ui.visible.\"+a+\".sidebar ~ .pusher:after { -webkit-transform: translate3d(0, \"+s[a]+\"px, 0); transform: translate3d(0, \"+s[a]+\"px, 0); }\"),t+=\" body.pushable > .ui.visible.left.sidebar ~ .ui.visible.right.sidebar ~ .pusher:after, body.pushable > .ui.visible.right.sidebar ~ .ui.visible.left.sidebar ~ .pusher:after { -webkit-transform: translate3d(0px, 0, 0); transform: translate3d(0px, 0, 0); }\"),r=e(t+=\"</style>\").appendTo(u),w.debug(\"Adding sizing css to head\",r)}},refresh:function(){w.verbose(\"Refreshing selector cache\"),D=e(S.context),q=D.children(k.sidebar),j=D.children(k.pusher),D.children(k.fixed),w.clear.cache()},refreshSidebars:function(){w.verbose(\"Refreshing other sidebars\"),q=D.children(k.sidebar)},repaint:function(){w.verbose(\"Forcing repaint event\"),z.style.display=\"none\";z.offsetHeight;z.scrollTop=z.scrollTop,z.style.display=\"\"},setup:{cache:function(){w.cache={width:O.outerWidth(),height:O.outerHeight(),rtl:\"rtl\"==O.css(\"direction\")}},layout:function(){0===D.children(k.pusher).length&&(w.debug(\"Adding wrapper element for sidebar\"),w.error(P.pusher),j=e('<div class=\"pusher\" />'),D.children().not(k.omitted).not(q).wrapAll(j),w.refresh()),0!==O.nextAll(k.pusher).length&&O.nextAll(k.pusher)[0]===j[0]||(w.debug(\"Moved sidebar to correct parent element\"),w.error(P.movedSidebar,z),O.detach().prependTo(D),w.refresh()),w.clear.cache(),w.set.pushable(),w.set.direction()}},attachEvents:function(t,n){var i=e(t);n=e.isFunction(w[n])?w[n]:w.toggle,i.length>0?(w.debug(\"Attaching sidebar events to element\",t,n),i.on(\"click\"+E,n)):w.error(P.notFound,t)},show:function(t){if(t=e.isFunction(t)?t:function(){},w.is.hidden()){if(w.refreshSidebars(),S.overlay&&(w.error(P.overlay),S.transition=\"overlay\"),w.refresh(),w.othersActive())if(w.debug(\"Other sidebars currently visible\"),S.exclusive){if(\"overlay\"!=S.transition)return void w.hideOthers(w.show);w.hideOthers()}else S.transition=\"overlay\";w.pushPage(function(){t.call(z),S.onShow.call(z)}),S.onChange.call(z),S.onVisible.call(z)}else w.debug(\"Sidebar is already visible\")},hide:function(t){t=e.isFunction(t)?t:function(){},(w.is.visible()||w.is.animating())&&(w.debug(\"Hiding sidebar\",t),w.refreshSidebars(),w.pullPage(function(){t.call(z),S.onHidden.call(z)}),S.onChange.call(z),S.onHide.call(z))},othersAnimating:function(){return q.not(O).filter(\".\"+T.animating).length>0},othersVisible:function(){return q.not(O).filter(\".\"+T.visible).length>0},othersActive:function(){return w.othersVisible()||w.othersAnimating()},hideOthers:function(e){var t=q.not(O).filter(\".\"+T.visible),n=t.length,i=0;e=e||function(){},t.sidebar(\"hide\",function(){++i==n&&e()})},toggle:function(){w.verbose(\"Determining toggled direction\"),w.is.hidden()?w.show():w.hide()},pushPage:function(t){var n,i,o,a=w.get.transition(),r=\"overlay\"===a||w.othersActive()?O:j;t=e.isFunction(t)?t:function(){},\"scale down\"==S.transition&&w.scrollToTop(),w.set.transition(a),w.repaint(),n=function(){w.bind.clickaway(),w.add.inlineCSS(),w.set.animating(),w.set.visible()},i=function(){w.set.dimmed()},o=function(e){e.target==r[0]&&(r.off(C+b,o),w.remove.animating(),w.bind.scrollLock(),t.call(z))},r.off(C+b),r.on(C+b,o),v(n),S.dimPage&&!w.othersVisible()&&v(i)},pullPage:function(t){var n,i,o=w.get.transition(),a=\"overlay\"==o||w.othersActive()?O:j;t=e.isFunction(t)?t:function(){},w.verbose(\"Removing context push state\",w.get.direction()),w.unbind.clickaway(),w.unbind.scrollLock(),n=function(){w.set.transition(o),w.set.animating(),w.remove.visible(),S.dimPage&&!w.othersVisible()&&j.removeClass(T.dimmed)},i=function(e){e.target==a[0]&&(a.off(C+b,i),w.remove.animating(),w.remove.transition(),w.remove.inlineCSS(),(\"scale down\"==o||S.returnScroll&&w.is.mobile())&&w.scrollBack(),t.call(z))},a.off(C+b),a.on(C+b,i),v(n)},scrollToTop:function(){w.verbose(\"Scrolling to top of page to avoid animation issues\"),x=e(t).scrollTop(),O.scrollTop(0),t.scrollTo(0,0)},scrollBack:function(){w.verbose(\"Scrolling back to original page position\"),t.scrollTo(0,x)},clear:{cache:function(){w.verbose(\"Clearing cached dimensions\"),w.cache={}}},set:{ios:function(){c.addClass(T.ios)},pushed:function(){D.addClass(T.pushed)},pushable:function(){D.addClass(T.pushable)},dimmed:function(){j.addClass(T.dimmed)},active:function(){O.addClass(T.active)},animating:function(){O.addClass(T.animating)},transition:function(e){e=e||w.get.transition(),O.addClass(e)},direction:function(e){e=e||w.get.direction(),O.addClass(T[e])},visible:function(){O.addClass(T.visible)},overlay:function(){O.addClass(T.overlay)}},remove:{inlineCSS:function(){w.debug(\"Removing inline css styles\",r),r&&r.length>0&&r.remove()},ios:function(){c.removeClass(T.ios)},pushed:function(){D.removeClass(T.pushed)},pushable:function(){D.removeClass(T.pushable)},active:function(){O.removeClass(T.active)},animating:function(){O.removeClass(T.animating)},transition:function(e){e=e||w.get.transition(),O.removeClass(e)},direction:function(e){e=e||w.get.direction(),O.removeClass(T[e])},visible:function(){O.removeClass(T.visible)},overlay:function(){O.removeClass(T.overlay)}},get:{direction:function(){return O.hasClass(T.top)?T.top:O.hasClass(T.right)?T.right:O.hasClass(T.bottom)?T.bottom:T.left},transition:function(){var e,t=w.get.direction();return e=w.is.mobile()?\"auto\"==S.mobileTransition?S.defaultTransition.mobile[t]:S.mobileTransition:\"auto\"==S.transition?S.defaultTransition.computer[t]:S.transition,w.verbose(\"Determined transition\",e),e},transitionEvent:function(){var e,t=n.createElement(\"element\"),o={transition:\"transitionend\",OTransition:\"oTransitionEnd\",MozTransition:\"transitionend\",WebkitTransition:\"webkitTransitionEnd\"};for(e in o)if(t.style[e]!==i)return o[e]}},is:{ie:function(){return!t.ActiveXObject&&\"ActiveXObject\"in t||\"ActiveXObject\"in t},ios:function(){var e=navigator.userAgent,t=e.match(R.ios),n=e.match(R.mobileChrome);return!(!t||n)&&(w.verbose(\"Browser was found to be iOS\",e),!0)},mobile:function(){var e=navigator.userAgent;return e.match(R.mobile)?(w.verbose(\"Browser was found to be mobile\",e),!0):(w.verbose(\"Browser is not mobile, using regular transition\",e),!1)},hidden:function(){return!w.is.visible()},visible:function(){return O.hasClass(T.visible)},open:function(){return w.is.visible()},closed:function(){return w.is.hidden()},vertical:function(){return O.hasClass(T.top)},animating:function(){return D.hasClass(T.animating)},rtl:function(){return w.cache.rtl===i&&(w.cache.rtl=\"rtl\"==O.css(\"direction\")),w.cache.rtl}},setting:function(t,n){if(w.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,S,t);else{if(n===i)return S[t];e.isPlainObject(S[t])?e.extend(!0,S[t],n):S[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,w,t);else{if(n===i)return w[t];w[t]=n}},debug:function(){!S.silent&&S.debug&&(S.performance?w.performance.log(arguments):(w.debug=Function.prototype.bind.call(console.info,console,S.name+\":\"),w.debug.apply(console,arguments)))},verbose:function(){!S.silent&&S.verbose&&S.debug&&(S.performance?w.performance.log(arguments):(w.verbose=Function.prototype.bind.call(console.info,console,S.name+\":\"),w.verbose.apply(console,arguments)))},error:function(){S.silent||(w.error=Function.prototype.bind.call(console.error,console,S.name+\":\"),w.error.apply(console,arguments))},performance:{log:function(e){var t,n;S.performance&&(n=(t=(new Date).getTime())-(f||t),f=t,m.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:z,\"Execution Time\":n})),clearTimeout(w.performance.timer),w.performance.timer=setTimeout(w.performance.display,500)},display:function(){var t=S.name+\":\",n=0;f=!1,clearTimeout(w.performance.timer),e.each(m,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",d&&(t+=\" '\"+d+\"'\"),(console.group!==i||console.table!==i)&&m.length>0&&(console.groupCollapsed(t),console.table?console.table(m):e.each(m,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),m=[]}},invoke:function(t,n,o){var r,s,l,c=I;return n=n||h,o=z||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(w.error(P.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},p?(I===i&&w.initialize(),w.invoke(g)):(I!==i&&w.invoke(\"destroy\"),w.initialize())}),a!==i?a:this},e.fn.sidebar.settings={name:\"Sidebar\",namespace:\"sidebar\",silent:!1,debug:!1,verbose:!1,performance:!0,transition:\"auto\",mobileTransition:\"auto\",defaultTransition:{computer:{left:\"uncover\",right:\"uncover\",top:\"overlay\",bottom:\"overlay\"},mobile:{left:\"uncover\",right:\"uncover\",top:\"overlay\",bottom:\"overlay\"}},context:\"body\",exclusive:!1,closable:!0,dimPage:!0,scrollLock:!1,returnScroll:!1,delaySetup:!1,duration:500,onChange:function(){},onShow:function(){},onHide:function(){},onHidden:function(){},onVisible:function(){},className:{active:\"active\",animating:\"animating\",dimmed:\"dimmed\",ios:\"ios\",pushable:\"pushable\",pushed:\"pushed\",right:\"right\",top:\"top\",left:\"left\",bottom:\"bottom\",visible:\"visible\"},selector:{fixed:\".fixed\",omitted:\"script, link, style, .ui.modal, .ui.dimmer, .ui.nag, .ui.fixed\",pusher:\".pusher\",sidebar:\".ui.sidebar\"},regExp:{ios:/(iPad|iPhone|iPod)/g,mobileChrome:/(CriOS)/g,mobile:/Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/g},error:{method:\"The method you called is not defined.\",pusher:\"Had to add pusher element. For optimal performance make sure body content is inside a pusher element\",movedSidebar:\"Had to move sidebar. For optimal performance make sure sidebar and pusher are direct children of your body tag\",overlay:\"The overlay setting is no longer supported, use animation: overlay\",notFound:\"There were no elements that matched the specified selector\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.sticky=function(o){var a,r=e(this),s=r.selector||\"\",l=(new Date).getTime(),c=[],u=arguments[0],d=\"string\"==typeof u,f=[].slice.call(arguments,1);return r.each(function(){var r,m,g,p,h,v=e.isPlainObject(o)?e.extend(!0,{},e.fn.sticky.settings,o):e.extend({},e.fn.sticky.settings),b=v.className,y=v.namespace,x=v.error,C=\".\"+y,w=\"module-\"+y,S=e(this),k=e(t),T=e(v.scrollContext),A=(S.selector,S.data(w)),R=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)},P=this;h={initialize:function(){h.determineContainer(),h.determineContext(),h.verbose(\"Initializing sticky\",v,r),h.save.positions(),h.checkErrors(),h.bind.events(),v.observeChanges&&h.observeChanges(),h.instantiate()},instantiate:function(){h.verbose(\"Storing instance of module\",h),A=h,S.data(w,h)},destroy:function(){h.verbose(\"Destroying previous instance\"),h.reset(),g&&g.disconnect(),p&&p.disconnect(),k.off(\"load\"+C,h.event.load).off(\"resize\"+C,h.event.resize),T.off(\"scrollchange\"+C,h.event.scrollchange),S.removeData(w)},observeChanges:function(){\"MutationObserver\"in t&&(g=new MutationObserver(h.event.documentChanged),p=new MutationObserver(h.event.changed),g.observe(n,{childList:!0,subtree:!0}),p.observe(P,{childList:!0,subtree:!0}),p.observe(m[0],{childList:!0,subtree:!0}),h.debug(\"Setting up mutation observer\",p))},determineContainer:function(){r=v.container?e(v.container):S.offsetParent()},determineContext:function(){0!==(m=v.context?e(v.context):r).length||h.error(x.invalidContext,v.context,S)},checkErrors:function(){if(h.is.hidden()&&h.error(x.visible,S),h.cache.element.height>h.cache.context.height)return h.reset(),void h.error(x.elementSize,S)},bind:{events:function(){k.on(\"load\"+C,h.event.load).on(\"resize\"+C,h.event.resize),T.off(\"scroll\"+C).on(\"scroll\"+C,h.event.scroll).on(\"scrollchange\"+C,h.event.scrollchange)}},event:{changed:function(e){clearTimeout(h.timer),h.timer=setTimeout(function(){h.verbose(\"DOM tree modified, updating sticky menu\",e),h.refresh()},100)},documentChanged:function(t){[].forEach.call(t,function(t){t.removedNodes&&[].forEach.call(t.removedNodes,function(t){(t==P||e(t).find(P).length>0)&&(h.debug(\"Element removed from DOM, tearing down events\"),h.destroy())})})},load:function(){h.verbose(\"Page contents finished loading\"),R(h.refresh)},resize:function(){h.verbose(\"Window resized\"),R(h.refresh)},scroll:function(){R(function(){T.triggerHandler(\"scrollchange\"+C,T.scrollTop())})},scrollchange:function(e,t){h.stick(t),v.onScroll.call(P)}},refresh:function(e){h.reset(),v.context||h.determineContext(),e&&h.determineContainer(),h.save.positions(),h.stick(),v.onReposition.call(P)},supports:{sticky:function(){var t=e(\"<div/>\");t[0];return t.addClass(b.supported),t.css(\"position\").match(\"sticky\")}},save:{lastScroll:function(e){h.lastScroll=e},elementScroll:function(e){h.elementScroll=e},positions:function(){var e={height:T.height()},t={margin:{top:parseInt(S.css(\"margin-top\"),10),bottom:parseInt(S.css(\"margin-bottom\"),10)},offset:S.offset(),width:S.outerWidth(),height:S.outerHeight()},n={offset:m.offset(),height:m.outerHeight()};r.outerHeight();h.is.standardScroll()||(h.debug(\"Non-standard scroll. Removing scroll offset from element offset\"),e.top=T.scrollTop(),e.left=T.scrollLeft(),t.offset.top+=e.top,n.offset.top+=e.top,t.offset.left+=e.left,n.offset.left+=e.left),h.cache={fits:t.height+v.offset<=e.height,sameHeight:t.height==n.height,scrollContext:{height:e.height},element:{margin:t.margin,top:t.offset.top-t.margin.top,left:t.offset.left,width:t.width,height:t.height,bottom:t.offset.top+t.height},context:{top:n.offset.top,height:n.height,bottom:n.offset.top+n.height}},h.set.containerSize(),h.stick(),h.debug(\"Caching element positions\",h.cache)}},get:{direction:function(e){var t=\"down\";return e=e||T.scrollTop(),h.lastScroll!==i&&(h.lastScroll<e?t=\"down\":h.lastScroll>e&&(t=\"up\")),t},scrollChange:function(e){return e=e||T.scrollTop(),h.lastScroll?e-h.lastScroll:0},currentElementScroll:function(){return h.elementScroll?h.elementScroll:h.is.top()?Math.abs(parseInt(S.css(\"top\"),10))||0:Math.abs(parseInt(S.css(\"bottom\"),10))||0},elementScroll:function(e){e=e||T.scrollTop();var t=h.cache.element,n=h.cache.scrollContext,i=h.get.scrollChange(e),o=t.height-n.height+v.offset,a=h.get.currentElementScroll(),r=a+i;return a=h.cache.fits||r<0?0:r>o?o:r}},remove:{lastScroll:function(){delete h.lastScroll},elementScroll:function(e){delete h.elementScroll},minimumSize:function(){r.css(\"min-height\",\"\")},offset:function(){S.css(\"margin-top\",\"\")}},set:{offset:function(){h.verbose(\"Setting offset on element\",v.offset),S.css(\"margin-top\",v.offset)},containerSize:function(){var e=r.get(0).tagName;\"HTML\"===e||\"body\"==e?h.determineContainer():Math.abs(r.outerHeight()-h.cache.context.height)>v.jitter&&(h.debug(\"Context has padding, specifying exact height for container\",h.cache.context.height),r.css({height:h.cache.context.height}))},minimumSize:function(){var e=h.cache.element;r.css(\"min-height\",e.height)},scroll:function(e){h.debug(\"Setting scroll on element\",e),h.elementScroll!=e&&(h.is.top()&&S.css(\"bottom\",\"\").css(\"top\",-e),h.is.bottom()&&S.css(\"top\",\"\").css(\"bottom\",e))},size:function(){0!==h.cache.element.height&&0!==h.cache.element.width&&(P.style.setProperty(\"width\",h.cache.element.width+\"px\",\"important\"),P.style.setProperty(\"height\",h.cache.element.height+\"px\",\"important\"))}},is:{standardScroll:function(){return T[0]==t},top:function(){return S.hasClass(b.top)},bottom:function(){return S.hasClass(b.bottom)},initialPosition:function(){return!h.is.fixed()&&!h.is.bound()},hidden:function(){return!S.is(\":visible\")},bound:function(){return S.hasClass(b.bound)},fixed:function(){return S.hasClass(b.fixed)}},stick:function(e){var t=e||T.scrollTop(),n=h.cache,i=n.fits,o=n.sameHeight,a=n.element,r=n.scrollContext,s=n.context,l=h.is.bottom()&&v.pushing?v.bottomOffset:v.offset,c=(e={top:t+l,bottom:t+l+r.height},h.get.direction(e.top),i?0:h.get.elementScroll(e.top)),u=!i;0!==a.height&&!o&&(h.is.initialPosition()?e.top>=s.bottom?(h.debug(\"Initial element position is bottom of container\"),h.bindBottom()):e.top>a.top&&(a.height+e.top-c>=s.bottom?(h.debug(\"Initial element position is bottom of container\"),h.bindBottom()):(h.debug(\"Initial element position is fixed\"),h.fixTop())):h.is.fixed()?h.is.top()?e.top<=a.top?(h.debug(\"Fixed element reached top of container\"),h.setInitialPosition()):a.height+e.top-c>=s.bottom?(h.debug(\"Fixed element reached bottom of container\"),h.bindBottom()):u&&(h.set.scroll(c),h.save.lastScroll(e.top),h.save.elementScroll(c)):h.is.bottom()&&(e.bottom-a.height<=a.top?(h.debug(\"Bottom fixed rail has reached top of container\"),h.setInitialPosition()):e.bottom>=s.bottom?(h.debug(\"Bottom fixed rail has reached bottom of container\"),h.bindBottom()):u&&(h.set.scroll(c),h.save.lastScroll(e.top),h.save.elementScroll(c))):h.is.bottom()&&(e.top<=a.top?(h.debug(\"Jumped from bottom fixed to top fixed, most likely used home/end button\"),h.setInitialPosition()):v.pushing?h.is.bound()&&e.bottom<=s.bottom&&(h.debug(\"Fixing bottom attached element to bottom of browser.\"),h.fixBottom()):h.is.bound()&&e.top<=s.bottom-a.height&&(h.debug(\"Fixing bottom attached element to top of browser.\"),h.fixTop())))},bindTop:function(){h.debug(\"Binding element to top of parent container\"),h.remove.offset(),S.css({left:\"\",top:\"\",marginBottom:\"\"}).removeClass(b.fixed).removeClass(b.bottom).addClass(b.bound).addClass(b.top),v.onTop.call(P),v.onUnstick.call(P)},bindBottom:function(){h.debug(\"Binding element to bottom of parent container\"),h.remove.offset(),S.css({left:\"\",top:\"\"}).removeClass(b.fixed).removeClass(b.top).addClass(b.bound).addClass(b.bottom),v.onBottom.call(P),v.onUnstick.call(P)},setInitialPosition:function(){h.debug(\"Returning to initial position\"),h.unfix(),h.unbind()},fixTop:function(){h.debug(\"Fixing element to top of page\"),v.setSize&&h.set.size(),h.set.minimumSize(),h.set.offset(),S.css({left:h.cache.element.left,bottom:\"\",marginBottom:\"\"}).removeClass(b.bound).removeClass(b.bottom).addClass(b.fixed).addClass(b.top),v.onStick.call(P)},fixBottom:function(){h.debug(\"Sticking element to bottom of page\"),v.setSize&&h.set.size(),h.set.minimumSize(),h.set.offset(),S.css({left:h.cache.element.left,bottom:\"\",marginBottom:\"\"}).removeClass(b.bound).removeClass(b.top).addClass(b.fixed).addClass(b.bottom),v.onStick.call(P)},unbind:function(){h.is.bound()&&(h.debug(\"Removing container bound position on element\"),h.remove.offset(),S.removeClass(b.bound).removeClass(b.top).removeClass(b.bottom))},unfix:function(){h.is.fixed()&&(h.debug(\"Removing fixed position on element\"),h.remove.minimumSize(),h.remove.offset(),S.removeClass(b.fixed).removeClass(b.top).removeClass(b.bottom),v.onUnstick.call(P))},reset:function(){h.debug(\"Resetting elements position\"),h.unbind(),h.unfix(),h.resetCSS(),h.remove.offset(),h.remove.lastScroll()},resetCSS:function(){S.css({width:\"\",height:\"\"}),r.css({height:\"\"})},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,v,t);else{if(n===i)return v[t];v[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,h,t);else{if(n===i)return h[t];h[t]=n}},debug:function(){!v.silent&&v.debug&&(v.performance?h.performance.log(arguments):(h.debug=Function.prototype.bind.call(console.info,console,v.name+\":\"),h.debug.apply(console,arguments)))},verbose:function(){!v.silent&&v.verbose&&v.debug&&(v.performance?h.performance.log(arguments):(h.verbose=Function.prototype.bind.call(console.info,console,v.name+\":\"),h.verbose.apply(console,arguments)))},error:function(){v.silent||(h.error=Function.prototype.bind.call(console.error,console,v.name+\":\"),h.error.apply(console,arguments))},performance:{log:function(e){var t,n;v.performance&&(n=(t=(new Date).getTime())-(l||t),l=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:P,\"Execution Time\":n})),clearTimeout(h.performance.timer),h.performance.timer=setTimeout(h.performance.display,0)},display:function(){var t=v.name+\":\",n=0;l=!1,clearTimeout(h.performance.timer),e.each(c,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",s&&(t+=\" '\"+s+\"'\"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),c=[]}},invoke:function(t,n,o){var r,s,l,c=A;return n=n||f,o=P||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},d?(A===i&&h.initialize(),h.invoke(u)):(A!==i&&A.invoke(\"destroy\"),h.initialize())}),a!==i?a:this},e.fn.sticky.settings={name:\"Sticky\",namespace:\"sticky\",silent:!1,debug:!1,verbose:!0,performance:!0,pushing:!1,context:!1,container:!1,scrollContext:t,offset:0,bottomOffset:0,jitter:5,setSize:!0,observeChanges:!1,onReposition:function(){},onScroll:function(){},onStick:function(){},onUnstick:function(){},onTop:function(){},onBottom:function(){},error:{container:\"Sticky element must be inside a relative container\",visible:\"Element is hidden, you must call refresh after element becomes visible. Use silent setting to surpress this warning in production.\",method:\"The method you called is not defined.\",invalidContext:\"Context specified does not exist\",elementSize:\"Sticky element is larger than its container, cannot create sticky.\"},className:{bound:\"bound\",fixed:\"fixed\",supported:\"native\",top:\"top\",bottom:\"bottom\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.tab=function(o){var a,r=e.isFunction(this)?e(t):e(this),s=r.selector||\"\",l=(new Date).getTime(),c=[],u=arguments[0],d=\"string\"==typeof u,f=[].slice.call(arguments,1),m=!1;return r.each(function(){var g,p,h,v,b,y,x=e.isPlainObject(o)?e.extend(!0,{},e.fn.tab.settings,o):e.extend({},e.fn.tab.settings),C=x.className,w=x.metadata,S=x.selector,k=x.error,T=\".\"+x.namespace,A=\"module-\"+x.namespace,R=e(this),P={},E=!0,F=0,O=this,D=R.data(A);b={initialize:function(){b.debug(\"Initializing tab menu item\",R),b.fix.callbacks(),b.determineTabs(),b.debug(\"Determining tabs\",x.context,p),x.auto&&b.set.auto(),b.bind.events(),x.history&&!m&&(b.initializeHistory(),m=!0),b.instantiate()},instantiate:function(){b.verbose(\"Storing instance of module\",b),D=b,R.data(A,b)},destroy:function(){b.debug(\"Destroying tabs\",R),R.removeData(A).off(T)},bind:{events:function(){e.isWindow(O)||(b.debug(\"Attaching tab activation events to element\",R),R.on(\"click\"+T,b.event.click))}},determineTabs:function(){var t;\"parent\"===x.context?(R.closest(S.ui).length>0?(t=R.closest(S.ui),b.verbose(\"Using closest UI element as parent\",t)):t=R,g=t.parent(),b.verbose(\"Determined parent element for creating context\",g)):x.context?(g=e(x.context),b.verbose(\"Using selector for tab context\",x.context,g)):g=e(\"body\"),x.childrenOnly?(p=g.children(S.tabs),b.debug(\"Searching tab context children for tabs\",g,p)):(p=g.find(S.tabs),b.debug(\"Searching tab context for tabs\",g,p))},fix:{callbacks:function(){e.isPlainObject(o)&&(o.onTabLoad||o.onTabInit)&&(o.onTabLoad&&(o.onLoad=o.onTabLoad,delete o.onTabLoad,b.error(k.legacyLoad,o.onLoad)),o.onTabInit&&(o.onFirstLoad=o.onTabInit,delete o.onTabInit,b.error(k.legacyInit,o.onFirstLoad)),x=e.extend(!0,{},e.fn.tab.settings,o))}},initializeHistory:function(){if(b.debug(\"Initializing page state\"),e.address===i)return b.error(k.state),!1;if(\"state\"==x.historyType){if(b.debug(\"Using HTML5 to manage state\"),!1===x.path)return b.error(k.path),!1;e.address.history(!0).state(x.path)}e.address.bind(\"change\",b.event.history.change)},event:{click:function(t){var n=e(this).data(w.tab);n!==i?(x.history?(b.verbose(\"Updating page state\",t),e.address.value(n)):(b.verbose(\"Changing tab\",t),b.changeTab(n)),t.preventDefault()):b.debug(\"No tab specified\")},history:{change:function(t){var n=t.pathNames.join(\"/\")||b.get.initialPath(),o=x.templates.determineTitle(n)||!1;b.performance.display(),b.debug(\"History change event\",n,t),y=t,n!==i&&b.changeTab(n),o&&e.address.title(o)}}},refresh:function(){h&&(b.debug(\"Refreshing tab\",h),b.changeTab(h))},cache:{read:function(e){return e!==i&&P[e]},add:function(e,t){e=e||h,b.debug(\"Adding cached content for\",e),P[e]=t},remove:function(e){e=e||h,b.debug(\"Removing cached content for\",e),delete P[e]}},set:{auto:function(){var t=\"string\"==typeof x.path?x.path.replace(/\\/$/,\"\")+\"/{$tab}\":\"/{$tab}\";b.verbose(\"Setting up automatic tab retrieval from server\",t),e.isPlainObject(x.apiSettings)?x.apiSettings.url=t:x.apiSettings={url:t}},loading:function(e){var t=b.get.tabElement(e);t.hasClass(C.loading)||(b.verbose(\"Setting loading state for\",t),t.addClass(C.loading).siblings(p).removeClass(C.active+\" \"+C.loading),t.length>0&&x.onRequest.call(t[0],e))},state:function(t){e.address.value(t)}},changeTab:function(n){var i=t.history&&t.history.pushState&&x.ignoreFirstLoad&&E,o=x.auto||e.isPlainObject(x.apiSettings),a=o&&!i?b.utilities.pathToArray(n):b.get.defaultPathArray(n);n=b.utilities.arrayToPath(a),e.each(a,function(t,r){var s,l,c,u,d=a.slice(0,t+1),f=b.utilities.arrayToPath(d),m=b.is.tab(f),p=t+1==a.length,S=b.get.tabElement(f);if(b.verbose(\"Looking for tab\",r),m){if(b.verbose(\"Tab was found\",r),h=f,v=b.utilities.filterArray(a,d),p?u=!0:(l=a.slice(0,t+2),c=b.utilities.arrayToPath(l),(u=!b.is.tab(c))&&b.verbose(\"Tab parameters found\",l)),u&&o)return i?(b.debug(\"Ignoring remote content on first tab load\",f),E=!1,b.cache.add(n,S.html()),b.activate.all(f),x.onFirstLoad.call(S[0],f,v,y),x.onLoad.call(S[0],f,v,y)):(b.activate.navigation(f),b.fetch.content(f,n)),!1;b.debug(\"Opened local tab\",f),b.activate.all(f),b.cache.read(f)||(b.cache.add(f,!0),b.debug(\"First time tab loaded calling tab init\"),x.onFirstLoad.call(S[0],f,v,y)),x.onLoad.call(S[0],f,v,y)}else{if(-1!=n.search(\"/\")||\"\"===n)return b.error(k.missingTab,R,g,f),!1;if(f=(s=e(\"#\"+n+', a[name=\"'+n+'\"]')).closest(\"[data-tab]\").data(w.tab),S=b.get.tabElement(f),s&&s.length>0&&f)return b.debug(\"Anchor link used, opening parent tab\",S,s),S.hasClass(C.active)||setTimeout(function(){b.scrollTo(s)},0),b.activate.all(f),b.cache.read(f)||(b.cache.add(f,!0),b.debug(\"First time tab loaded calling tab init\"),x.onFirstLoad.call(S[0],f,v,y)),x.onLoad.call(S[0],f,v,y),!1}})},scrollTo:function(t){var i=!!(t&&t.length>0)&&t.offset().top;!1!==i&&(b.debug(\"Forcing scroll to an in-page link in a hidden tab\",i,t),e(n).scrollTop(i))},update:{content:function(t,n,o){var a=b.get.tabElement(t),r=a[0];o=o!==i?o:x.evaluateScripts,\"string\"==typeof x.cacheType&&\"dom\"==x.cacheType.toLowerCase()&&\"string\"!=typeof n?a.empty().append(e(n).clone(!0)):o?(b.debug(\"Updating HTML and evaluating inline scripts\",t,n),a.html(n)):(b.debug(\"Updating HTML\",t,n),r.innerHTML=n)}},fetch:{content:function(t,n){var o,a,r=b.get.tabElement(t),s={dataType:\"html\",encodeParameters:!1,on:\"now\",cache:x.alwaysRefresh,headers:{\"X-Remote\":!0},onSuccess:function(e){\"response\"==x.cacheType&&b.cache.add(n,e),b.update.content(t,e),t==h?(b.debug(\"Content loaded\",t),b.activate.tab(t)):b.debug(\"Content loaded in background\",t),x.onFirstLoad.call(r[0],t,v,y),x.onLoad.call(r[0],t,v,y),x.loadOnce?b.cache.add(n,!0):\"string\"==typeof x.cacheType&&\"dom\"==x.cacheType.toLowerCase()&&r.children().length>0?setTimeout(function(){var e=r.children().clone(!0);e=e.not(\"script\"),b.cache.add(n,e)},0):b.cache.add(n,r.html())},urlData:{tab:n}},l=r.api(\"get request\")||!1,c=l&&\"pending\"===l.state();n=n||t,a=b.cache.read(n),x.cache&&a?(b.activate.tab(t),b.debug(\"Adding cached content\",n),x.loadOnce||(\"once\"==x.evaluateScripts?b.update.content(t,a,!1):b.update.content(t,a)),x.onLoad.call(r[0],t,v,y)):c?(b.set.loading(t),b.debug(\"Content is already loading\",n)):e.api!==i?(o=e.extend(!0,{},x.apiSettings,s),b.debug(\"Retrieving remote content\",n,o),b.set.loading(t),r.api(o)):b.error(k.api)}},activate:{all:function(e){b.activate.tab(e),b.activate.navigation(e)},tab:function(e){var t=b.get.tabElement(e),n=\"siblings\"==x.deactivate?t.siblings(p):p.not(t),i=t.hasClass(C.active);b.verbose(\"Showing tab content for\",t),i||(t.addClass(C.active),n.removeClass(C.active+\" \"+C.loading),t.length>0&&x.onVisible.call(t[0],e))},navigation:function(e){var t=b.get.navElement(e),n=\"siblings\"==x.deactivate?t.siblings(r):r.not(t),i=t.hasClass(C.active);b.verbose(\"Activating tab navigation for\",t,e),i||(t.addClass(C.active),n.removeClass(C.active+\" \"+C.loading))}},deactivate:{all:function(){b.deactivate.navigation(),b.deactivate.tabs()},navigation:function(){r.removeClass(C.active)},tabs:function(){p.removeClass(C.active+\" \"+C.loading)}},is:{tab:function(e){return e!==i&&b.get.tabElement(e).length>0}},get:{initialPath:function(){return r.eq(0).data(w.tab)||p.eq(0).data(w.tab)},path:function(){return e.address.value()},defaultPathArray:function(e){return b.utilities.pathToArray(b.get.defaultPath(e))},defaultPath:function(e){var t=r.filter(\"[data-\"+w.tab+'^=\"'+e+'/\"]').eq(0).data(w.tab)||!1;if(t){if(b.debug(\"Found default tab\",t),F<x.maxDepth)return F++,b.get.defaultPath(t);b.error(k.recursion)}else b.debug(\"No default tabs found for\",e,p);return F=0,e},navElement:function(e){return e=e||h,r.filter(\"[data-\"+w.tab+'=\"'+e+'\"]')},tabElement:function(e){var t,n,i,o;return e=e||h,i=b.utilities.pathToArray(e),o=b.utilities.last(i),t=p.filter(\"[data-\"+w.tab+'=\"'+e+'\"]'),n=p.filter(\"[data-\"+w.tab+'=\"'+o+'\"]'),t.length>0?t:n},tab:function(){return h}},utilities:{filterArray:function(t,n){return e.grep(t,function(t){return-1==e.inArray(t,n)})},last:function(t){return!!e.isArray(t)&&t[t.length-1]},pathToArray:function(e){return e===i&&(e=h),\"string\"==typeof e?e.split(\"/\"):[e]},arrayToPath:function(t){return!!e.isArray(t)&&t.join(\"/\")}},setting:function(t,n){if(b.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,x,t);else{if(n===i)return x[t];e.isPlainObject(x[t])?e.extend(!0,x[t],n):x[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,b,t);else{if(n===i)return b[t];b[t]=n}},debug:function(){!x.silent&&x.debug&&(x.performance?b.performance.log(arguments):(b.debug=Function.prototype.bind.call(console.info,console,x.name+\":\"),b.debug.apply(console,arguments)))},verbose:function(){!x.silent&&x.verbose&&x.debug&&(x.performance?b.performance.log(arguments):(b.verbose=Function.prototype.bind.call(console.info,console,x.name+\":\"),b.verbose.apply(console,arguments)))},error:function(){x.silent||(b.error=Function.prototype.bind.call(console.error,console,x.name+\":\"),b.error.apply(console,arguments))},performance:{log:function(e){var t,n;x.performance&&(n=(t=(new Date).getTime())-(l||t),l=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:O,\"Execution Time\":n})),clearTimeout(b.performance.timer),b.performance.timer=setTimeout(b.performance.display,500)},display:function(){var t=x.name+\":\",n=0;l=!1,clearTimeout(b.performance.timer),e.each(c,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",s&&(t+=\" '\"+s+\"'\"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),c=[]}},invoke:function(t,n,o){var r,s,l,c=D;return n=n||f,o=O||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(b.error(k.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},d?(D===i&&b.initialize(),b.invoke(u)):(D!==i&&D.invoke(\"destroy\"),b.initialize())}),a!==i?a:this},e.tab=function(){e(t).tab.apply(this,arguments)},e.fn.tab.settings={name:\"Tab\",namespace:\"tab\",silent:!1,debug:!1,verbose:!1,performance:!0,auto:!1,history:!1,historyType:\"hash\",path:!1,context:!1,childrenOnly:!1,maxDepth:25,deactivate:\"siblings\",alwaysRefresh:!1,cache:!0,loadOnce:!1,cacheType:\"response\",ignoreFirstLoad:!1,apiSettings:!1,evaluateScripts:\"once\",onFirstLoad:function(e,t,n){},onLoad:function(e,t,n){},onVisible:function(e,t,n){},onRequest:function(e,t,n){},templates:{determineTitle:function(e){}},error:{api:\"You attempted to load content without API module\",method:\"The method you called is not defined\",missingTab:\"Activated tab cannot be found. Tabs are case-sensitive.\",noContent:\"The tab you specified is missing a content url.\",path:\"History enabled, but no path was specified\",recursion:\"Max recursive depth reached\",legacyInit:\"onTabInit has been renamed to onFirstLoad in 2.0, please adjust your code.\",legacyLoad:\"onTabLoad has been renamed to onLoad in 2.0. Please adjust your code\",state:\"History requires Asual's Address library <https://github.com/asual/jquery-address>\"},metadata:{tab:\"tab\",loaded:\"loaded\",promise:\"promise\"},className:{loading:\"loading\",active:\"active\"},selector:{tabs:\".ui.tab\",ui:\".ui\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.transition=function(){var o,a=e(this),r=a.selector||\"\",s=(new Date).getTime(),l=[],c=arguments,u=c[0],d=[].slice.call(arguments,1),f=\"string\"==typeof u;t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame;return a.each(function(t){var m,g,p,h,v,b,y,x,C,w=e(this),S=this;(C={initialize:function(){m=C.get.settings.apply(S,c),h=m.className,p=m.error,v=m.metadata,x=\".\"+m.namespace,y=\"module-\"+m.namespace,g=w.data(y)||C,b=C.get.animationEndEvent(),f&&(f=C.invoke(u)),!1===f&&(C.verbose(\"Converted arguments into settings object\",m),m.interval?C.delay(m.animate):C.animate(),C.instantiate())},instantiate:function(){C.verbose(\"Storing instance of module\",C),g=C,w.data(y,g)},destroy:function(){C.verbose(\"Destroying previous module for\",S),w.removeData(y)},refresh:function(){C.verbose(\"Refreshing display type on next animation\"),delete C.displayType},forceRepaint:function(){C.verbose(\"Forcing element repaint\");var e=w.parent(),t=w.next();0===t.length?w.detach().appendTo(e):w.detach().insertBefore(t)},repaint:function(){C.verbose(\"Repainting element\");S.offsetWidth},delay:function(e){var n,o=C.get.animationDirection();o||(o=C.can.transition()?C.get.direction():\"static\"),e=e!==i?e:m.interval,n=\"auto\"==m.reverse&&o==h.outward||1==m.reverse?(a.length-t)*m.interval:t*m.interval,C.debug(\"Delaying animation by\",n),setTimeout(C.animate,n)},animate:function(e){if(m=e||m,!C.is.supported())return C.error(p.support),!1;if(C.debug(\"Preparing animation\",m.animation),C.is.animating()){if(m.queue)return!m.allowRepeats&&C.has.direction()&&C.is.occurring()&&!0!==C.queuing?C.debug(\"Animation is currently occurring, preventing queueing same animation\",m.animation):C.queue(m.animation),!1;if(!m.allowRepeats&&C.is.occurring())return C.debug(\"Animation is already occurring, will not execute repeated animation\",m.animation),!1;C.debug(\"New animation started, completing previous early\",m.animation),g.complete()}C.can.animate()?C.set.animating(m.animation):C.error(p.noAnimation,m.animation,S)},reset:function(){C.debug(\"Resetting animation to beginning conditions\"),C.remove.animationCallbacks(),C.restore.conditions(),C.remove.animating()},queue:function(e){C.debug(\"Queueing animation of\",e),C.queuing=!0,w.one(b+\".queue\"+x,function(){C.queuing=!1,C.repaint(),C.animate.apply(this,m)})},complete:function(e){C.debug(\"Animation complete\",m.animation),C.remove.completeCallback(),C.remove.failSafe(),C.is.looping()||(C.is.outward()?(C.verbose(\"Animation is outward, hiding element\"),C.restore.conditions(),C.hide()):C.is.inward()?(C.verbose(\"Animation is outward, showing element\"),C.restore.conditions(),C.show()):(C.verbose(\"Static animation completed\"),C.restore.conditions(),m.onComplete.call(S)))},force:{visible:function(){var e=w.attr(\"style\"),t=C.get.userStyle(),n=C.get.displayType(),o=t+\"display: \"+n+\" !important;\",a=w.css(\"display\"),r=e===i||\"\"===e;a!==n?(C.verbose(\"Overriding default display to show element\",n),w.attr(\"style\",o)):r&&w.removeAttr(\"style\")},hidden:function(){var e=w.attr(\"style\"),t=w.css(\"display\"),n=e===i||\"\"===e;\"none\"===t||C.is.hidden()?n&&w.removeAttr(\"style\"):(C.verbose(\"Overriding default display to hide element\"),w.css(\"display\",\"none\"))}},has:{direction:function(t){var n=!1;return\"string\"==typeof(t=t||m.animation)&&(t=t.split(\" \"),e.each(t,function(e,t){t!==h.inward&&t!==h.outward||(n=!0)})),n},inlineDisplay:function(){var t=w.attr(\"style\")||\"\";return e.isArray(t.match(/display.*?;/,\"\"))}},set:{animating:function(e){var t;C.remove.completeCallback(),e=e||m.animation,t=C.get.animationClass(e),C.save.animation(t),C.force.visible(),C.remove.hidden(),C.remove.direction(),C.start.animation(t)},duration:function(e,t){((t=\"number\"==typeof(t=t||m.duration)?t+\"ms\":t)||0===t)&&(C.verbose(\"Setting animation duration\",t),w.css({\"animation-duration\":t}))},direction:function(e){(e=e||C.get.direction())==h.inward?C.set.inward():C.set.outward()},looping:function(){C.debug(\"Transition set to loop\"),w.addClass(h.looping)},hidden:function(){w.addClass(h.transition).addClass(h.hidden)},inward:function(){C.debug(\"Setting direction to inward\"),w.removeClass(h.outward).addClass(h.inward)},outward:function(){C.debug(\"Setting direction to outward\"),w.removeClass(h.inward).addClass(h.outward)},visible:function(){w.addClass(h.transition).addClass(h.visible)}},start:{animation:function(e){e=e||C.get.animationClass(),C.debug(\"Starting tween\",e),w.addClass(e).one(b+\".complete\"+x,C.complete),m.useFailSafe&&C.add.failSafe(),C.set.duration(m.duration),m.onStart.call(S)}},save:{animation:function(e){C.cache||(C.cache={}),C.cache.animation=e},displayType:function(e){\"none\"!==e&&w.data(v.displayType,e)},transitionExists:function(t,n){e.fn.transition.exists[t]=n,C.verbose(\"Saving existence of transition\",t,n)}},restore:{conditions:function(){var e=C.get.currentAnimation();e&&(w.removeClass(e),C.verbose(\"Removing animation class\",C.cache)),C.remove.duration()}},add:{failSafe:function(){var e=C.get.duration();C.timer=setTimeout(function(){w.triggerHandler(b)},e+m.failSafeDelay),C.verbose(\"Adding fail safe timer\",C.timer)}},remove:{animating:function(){w.removeClass(h.animating)},animationCallbacks:function(){C.remove.queueCallback(),C.remove.completeCallback()},queueCallback:function(){w.off(\".queue\"+x)},completeCallback:function(){w.off(\".complete\"+x)},display:function(){w.css(\"display\",\"\")},direction:function(){w.removeClass(h.inward).removeClass(h.outward)},duration:function(){w.css(\"animation-duration\",\"\")},failSafe:function(){C.verbose(\"Removing fail safe timer\",C.timer),C.timer&&clearTimeout(C.timer)},hidden:function(){w.removeClass(h.hidden)},visible:function(){w.removeClass(h.visible)},looping:function(){C.debug(\"Transitions are no longer looping\"),C.is.looping()&&(C.reset(),w.removeClass(h.looping))},transition:function(){w.removeClass(h.visible).removeClass(h.hidden)}},get:{settings:function(t,n,i){return\"object\"==typeof t?e.extend(!0,{},e.fn.transition.settings,t):\"function\"==typeof i?e.extend({},e.fn.transition.settings,{animation:t,onComplete:i,duration:n}):\"string\"==typeof n||\"number\"==typeof n?e.extend({},e.fn.transition.settings,{animation:t,duration:n}):\"object\"==typeof n?e.extend({},e.fn.transition.settings,n,{animation:t}):\"function\"==typeof n?e.extend({},e.fn.transition.settings,{animation:t,onComplete:n}):e.extend({},e.fn.transition.settings,{animation:t})},animationClass:function(e){var t=e||m.animation,n=C.can.transition()&&!C.has.direction()?C.get.direction()+\" \":\"\";return h.animating+\" \"+h.transition+\" \"+n+t},currentAnimation:function(){return!(!C.cache||C.cache.animation===i)&&C.cache.animation},currentDirection:function(){return C.is.inward()?h.inward:h.outward},direction:function(){return C.is.hidden()||!C.is.visible()?h.inward:h.outward},animationDirection:function(t){var n;return\"string\"==typeof(t=t||m.animation)&&(t=t.split(\" \"),e.each(t,function(e,t){t===h.inward?n=h.inward:t===h.outward&&(n=h.outward)})),n||!1},duration:function(e){return!1===(e=e||m.duration)&&(e=w.css(\"animation-duration\")||0),\"string\"==typeof e?e.indexOf(\"ms\")>-1?parseFloat(e):1e3*parseFloat(e):e},displayType:function(e){return e=e===i||e,m.displayType?m.displayType:(e&&w.data(v.displayType)===i&&C.can.transition(!0),w.data(v.displayType))},userStyle:function(e){return(e=e||w.attr(\"style\")||\"\").replace(/display.*?;/,\"\")},transitionExists:function(t){return e.fn.transition.exists[t]},animationStartEvent:function(){var e,t=n.createElement(\"div\"),o={animation:\"animationstart\",OAnimation:\"oAnimationStart\",MozAnimation:\"mozAnimationStart\",WebkitAnimation:\"webkitAnimationStart\"};for(e in o)if(t.style[e]!==i)return o[e];return!1},animationEndEvent:function(){var e,t=n.createElement(\"div\"),o={animation:\"animationend\",OAnimation:\"oAnimationEnd\",MozAnimation:\"mozAnimationEnd\",WebkitAnimation:\"webkitAnimationEnd\"};for(e in o)if(t.style[e]!==i)return o[e];return!1}},can:{transition:function(t){var n,o,a,r,s,l,c=m.animation,u=C.get.transitionExists(c),d=C.get.displayType(!1);if(u===i||t){if(C.verbose(\"Determining whether animation exists\"),n=w.attr(\"class\"),o=w.prop(\"tagName\"),r=(a=e(\"<\"+o+\" />\").addClass(n).insertAfter(w)).addClass(c).removeClass(h.inward).removeClass(h.outward).addClass(h.animating).addClass(h.transition).css(\"animationName\"),s=a.addClass(h.inward).css(\"animationName\"),d||(d=a.attr(\"class\",n).removeAttr(\"style\").removeClass(h.hidden).removeClass(h.visible).show().css(\"display\"),C.verbose(\"Determining final display state\",d),C.save.displayType(d)),a.remove(),r!=s)C.debug(\"Direction exists for animation\",c),l=!0;else{if(\"none\"==r||!r)return void C.debug(\"No animation defined in css\",c);C.debug(\"Static animation found\",c,d),l=!1}C.save.transitionExists(c,l)}return u!==i?u:l},animate:function(){return C.can.transition()!==i}},is:{animating:function(){return w.hasClass(h.animating)},inward:function(){return w.hasClass(h.inward)},outward:function(){return w.hasClass(h.outward)},looping:function(){return w.hasClass(h.looping)},occurring:function(e){return e=\".\"+(e=e||m.animation).replace(\" \",\".\"),w.filter(e).length>0},visible:function(){return w.is(\":visible\")},hidden:function(){return\"hidden\"===w.css(\"visibility\")},supported:function(){return!1!==b}},hide:function(){C.verbose(\"Hiding element\"),C.is.animating()&&C.reset(),S.blur(),C.remove.display(),C.remove.visible(),C.set.hidden(),C.force.hidden(),m.onHide.call(S),m.onComplete.call(S)},show:function(e){C.verbose(\"Showing element\",e),C.remove.hidden(),C.set.visible(),C.force.visible(),m.onShow.call(S),m.onComplete.call(S)},toggle:function(){C.is.visible()?C.hide():C.show()},stop:function(){C.debug(\"Stopping current animation\"),w.triggerHandler(b)},stopAll:function(){C.debug(\"Stopping all animation\"),C.remove.queueCallback(),w.triggerHandler(b)},clear:{queue:function(){C.debug(\"Clearing animation queue\"),C.remove.queueCallback()}},enable:function(){C.verbose(\"Starting animation\"),w.removeClass(h.disabled)},disable:function(){C.debug(\"Stopping animation\"),w.addClass(h.disabled)},setting:function(t,n){if(C.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,m,t);else{if(n===i)return m[t];e.isPlainObject(m[t])?e.extend(!0,m[t],n):m[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,C,t);else{if(n===i)return C[t];C[t]=n}},debug:function(){!m.silent&&m.debug&&(m.performance?C.performance.log(arguments):(C.debug=Function.prototype.bind.call(console.info,console,m.name+\":\"),C.debug.apply(console,arguments)))},verbose:function(){!m.silent&&m.verbose&&m.debug&&(m.performance?C.performance.log(arguments):(C.verbose=Function.prototype.bind.call(console.info,console,m.name+\":\"),C.verbose.apply(console,arguments)))},error:function(){m.silent||(C.error=Function.prototype.bind.call(console.error,console,m.name+\":\"),C.error.apply(console,arguments))},performance:{log:function(e){var t,n;m.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:S,\"Execution Time\":n})),clearTimeout(C.performance.timer),C.performance.timer=setTimeout(C.performance.display,500)},display:function(){var t=m.name+\":\",n=0;s=!1,clearTimeout(C.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",r&&(t+=\" '\"+r+\"'\"),a.length>1&&(t+=\" (\"+a.length+\")\"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,a){var r,s,l,c=g;return n=n||d,a=S||a,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i&&(s=c[o],!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s!==i&&s}}).initialize()}),o!==i?o:this},e.fn.transition.exists={},e.fn.transition.settings={name:\"Transition\",silent:!1,debug:!1,verbose:!1,performance:!0,namespace:\"transition\",interval:0,reverse:\"auto\",onStart:function(){},onComplete:function(){},onShow:function(){},onHide:function(){},useFailSafe:!0,failSafeDelay:100,allowRepeats:!1,displayType:!1,animation:\"fade\",duration:!1,queue:!0,metadata:{displayType:\"display\"},className:{animating:\"animating\",disabled:\"disabled\",hidden:\"hidden\",inward:\"in\",loading:\"loading\",looping:\"looping\",outward:\"out\",transition:\"transition\",visible:\"visible\"},error:{noAnimation:\"Element is no longer attached to DOM. Unable to animate. Use silent setting to surpress this warning in production.\",repeated:\"That animation is already occurring, cancelling repeated animation\",method:\"The method you called is not defined\",support:\"This browser does not support CSS animations\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();e.api=e.fn.api=function(n){var o,a=e.isFunction(this)?e(t):e(this),r=a.selector||\"\",s=(new Date).getTime(),l=[],c=arguments[0],u=\"string\"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var a,f,m,g,p,h,v=e.isPlainObject(n)?e.extend(!0,{},e.fn.api.settings,n):e.extend({},e.fn.api.settings),b=v.namespace,y=v.metadata,x=v.selector,C=v.error,w=v.className,S=\".\"+b,k=\"module-\"+b,T=e(this),A=T.closest(x.form),R=v.stateContext?e(v.stateContext):T,P=this,E=R[0],F=T.data(k);h={initialize:function(){u||h.bind.events(),h.instantiate()},instantiate:function(){h.verbose(\"Storing instance of module\",h),F=h,T.data(k,F)},destroy:function(){h.verbose(\"Destroying previous module for\",P),T.removeData(k).off(S)},bind:{events:function(){var e=h.get.event();e?(h.verbose(\"Attaching API events to element\",e),T.on(e+S,h.event.trigger)):\"now\"==v.on&&(h.debug(\"Querying API endpoint immediately\"),h.query())}},decode:{json:function(e){if(e!==i&&\"string\"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}},read:{cachedResponse:function(e){var n;if(t.Storage!==i)return n=sessionStorage.getItem(e),h.debug(\"Using cached response\",e,n),n=h.decode.json(n);h.error(C.noStorage)}},write:{cachedResponse:function(n,o){o&&\"\"===o?h.debug(\"Response empty, not caching\",o):t.Storage!==i?(e.isPlainObject(o)&&(o=JSON.stringify(o)),sessionStorage.setItem(n,o),h.verbose(\"Storing cached response for url\",n,o)):h.error(C.noStorage)}},query:function(){if(h.is.disabled())h.debug(\"Element is disabled API request aborted\");else{if(h.is.loading()){if(!v.interruptRequests)return void h.debug(\"Cancelling request, previous request is still pending\");h.debug(\"Interrupting previous request\"),h.abort()}if(v.defaultData&&e.extend(!0,v.urlData,h.get.defaultData()),v.serializeForm&&(v.data=h.add.formData(v.data)),!1===(f=h.get.settings()))return h.cancelled=!0,void h.error(C.beforeSend);if(h.cancelled=!1,(m=h.get.templatedURL())||h.is.mocked()){if((m=h.add.urlData(m))||h.is.mocked()){if(f.url=v.base+m,a=e.extend(!0,{},v,{type:v.method||v.type,data:g,url:v.base+m,beforeSend:v.beforeXHR,success:function(){},failure:function(){},complete:function(){}}),h.debug(\"Querying URL\",a.url),h.verbose(\"Using AJAX settings\",a),\"local\"===v.cache&&h.read.cachedResponse(m))return h.debug(\"Response returned from local cache\"),h.request=h.create.request(),void h.request.resolveWith(E,[h.read.cachedResponse(m)]);v.throttle?v.throttleFirstRequest||h.timer?(h.debug(\"Throttling request\",v.throttle),clearTimeout(h.timer),h.timer=setTimeout(function(){h.timer&&delete h.timer,h.debug(\"Sending throttled request\",g,a.method),h.send.request()},v.throttle)):(h.debug(\"Sending request\",g,a.method),h.send.request(),h.timer=setTimeout(function(){},v.throttle)):(h.debug(\"Sending request\",g,a.method),h.send.request())}}else h.error(C.missingURL)}},should:{removeError:function(){return!0===v.hideError||\"auto\"===v.hideError&&!h.is.form()}},is:{disabled:function(){return T.filter(x.disabled).length>0},expectingJSON:function(){return\"json\"===v.dataType||\"jsonp\"===v.dataType},form:function(){return T.is(\"form\")||R.is(\"form\")},mocked:function(){return v.mockResponse||v.mockResponseAsync||v.response||v.responseAsync},input:function(){return T.is(\"input\")},loading:function(){return!!h.request&&\"pending\"==h.request.state()},abortedRequest:function(e){return e&&e.readyState!==i&&0===e.readyState?(h.verbose(\"XHR request determined to be aborted\"),!0):(h.verbose(\"XHR request was not aborted\"),!1)},validResponse:function(t){return h.is.expectingJSON()&&e.isFunction(v.successTest)?(h.debug(\"Checking JSON returned success\",v.successTest,t),v.successTest(t)?(h.debug(\"Response passed success test\",t),!0):(h.debug(\"Response failed success test\",t),!1)):(h.verbose(\"Response is not JSON, skipping validation\",v.successTest,t),!0)}},was:{cancelled:function(){return h.cancelled||!1},succesful:function(){return h.request&&\"resolved\"==h.request.state()},failure:function(){return h.request&&\"rejected\"==h.request.state()},complete:function(){return h.request&&(\"resolved\"==h.request.state()||\"rejected\"==h.request.state())}},add:{urlData:function(t,n){var o,a;return t&&(o=t.match(v.regExp.required),a=t.match(v.regExp.optional),n=n||v.urlData,o&&(h.debug(\"Looking for required URL variables\",o),e.each(o,function(o,a){var r=-1!==a.indexOf(\"$\")?a.substr(2,a.length-3):a.substr(1,a.length-2),s=e.isPlainObject(n)&&n[r]!==i?n[r]:T.data(r)!==i?T.data(r):R.data(r)!==i?R.data(r):n[r];if(s===i)return h.error(C.requiredParameter,r,t),t=!1,!1;h.verbose(\"Found required variable\",r,s),s=v.encodeParameters?h.get.urlEncodedValue(s):s,t=t.replace(a,s)})),a&&(h.debug(\"Looking for optional URL variables\",o),e.each(a,function(o,a){var r=-1!==a.indexOf(\"$\")?a.substr(3,a.length-4):a.substr(2,a.length-3),s=e.isPlainObject(n)&&n[r]!==i?n[r]:T.data(r)!==i?T.data(r):R.data(r)!==i?R.data(r):n[r];s!==i?(h.verbose(\"Optional variable Found\",r,s),t=t.replace(a,s)):(h.verbose(\"Optional variable not found\",r),t=-1!==t.indexOf(\"/\"+a)?t.replace(\"/\"+a,\"\"):t.replace(a,\"\"))}))),t},formData:function(t){var n=e.fn.serializeObject!==i,o=n?A.serializeObject():A.serialize();return t=t||v.data,e.isPlainObject(t)?n?(h.debug(\"Extending existing data with form data\",t,o),t=e.extend(!0,{},t,o)):(h.error(C.missingSerialize),h.debug(\"Cant extend data. Replacing data with form data\",t,o),t=o):(h.debug(\"Adding form data\",o),t=o),t}},send:{request:function(){h.set.loading(),h.request=h.create.request(),h.is.mocked()?h.mockedXHR=h.create.mockedXHR():h.xhr=h.create.xhr(),v.onRequest.call(E,h.request,h.xhr)}},event:{trigger:function(e){h.query(),\"submit\"!=e.type&&\"click\"!=e.type||e.preventDefault()},xhr:{always:function(){},done:function(t,n,i){var o=this,a=(new Date).getTime()-p,r=v.loadingDuration-a,s=!!e.isFunction(v.onResponse)&&(h.is.expectingJSON()?v.onResponse.call(o,e.extend(!0,{},t)):v.onResponse.call(o,t));r=r>0?r:0,s&&(h.debug(\"Modified API response in onResponse callback\",v.onResponse,s,t),t=s),r>0&&h.debug(\"Response completed early delaying state change by\",r),setTimeout(function(){h.is.validResponse(t)?h.request.resolveWith(o,[t,i]):h.request.rejectWith(o,[i,\"invalid\"])},r)},fail:function(e,t,n){var i=this,o=(new Date).getTime()-p,a=v.loadingDuration-o;(a=a>0?a:0)>0&&h.debug(\"Response completed early delaying state change by\",a),setTimeout(function(){h.is.abortedRequest(e)?h.request.rejectWith(i,[e,\"aborted\",n]):h.request.rejectWith(i,[e,\"error\",t,n])},a)}},request:{done:function(e,t){h.debug(\"Successful API Response\",e),\"local\"===v.cache&&m&&(h.write.cachedResponse(m,e),h.debug(\"Saving server response locally\",h.cache)),v.onSuccess.call(E,e,T,t)},complete:function(e,t){var n,i;h.was.succesful()?(i=e,n=t):(n=e,i=h.get.responseFromXHR(n)),h.remove.loading(),v.onComplete.call(E,i,T,n)},fail:function(e,t,n){var o=h.get.responseFromXHR(e),r=h.get.errorFromRequest(o,t,n);if(\"aborted\"==t)return h.debug(\"XHR Aborted (Most likely caused by page navigation or CORS Policy)\",t,n),v.onAbort.call(E,t,T,e),!0;\"invalid\"==t?h.debug(\"JSON did not pass success test. A server-side error has most likely occurred\",o):\"error\"==t&&e!==i&&(h.debug(\"XHR produced a server error\",t,n),200!=e.status&&n!==i&&\"\"!==n&&h.error(C.statusMessage+n,a.url),v.onError.call(E,r,T,e)),v.errorDuration&&\"aborted\"!==t&&(h.debug(\"Adding error state\"),h.set.error(),h.should.removeError()&&setTimeout(h.remove.error,v.errorDuration)),h.debug(\"API Request failed\",r,e),v.onFailure.call(E,o,T,e)}}},create:{request:function(){return e.Deferred().always(h.event.request.complete).done(h.event.request.done).fail(h.event.request.fail)},mockedXHR:function(){var t,n,i,o=v.mockResponse||v.response,a=v.mockResponseAsync||v.responseAsync;return i=e.Deferred().always(h.event.xhr.complete).done(h.event.xhr.done).fail(h.event.xhr.fail),o?(e.isFunction(o)?(h.debug(\"Using specified synchronous callback\",o),n=o.call(E,f)):(h.debug(\"Using settings specified response\",o),n=o),i.resolveWith(E,[n,!1,{responseText:n}])):e.isFunction(a)&&(t=function(e){h.debug(\"Async callback returned response\",e),e?i.resolveWith(E,[e,!1,{responseText:e}]):i.rejectWith(E,[{responseText:e},!1,!1])},h.debug(\"Using specified async response callback\",a),a.call(E,f,t)),i},xhr:function(){var t;return t=e.ajax(a).always(h.event.xhr.always).done(h.event.xhr.done).fail(h.event.xhr.fail),h.verbose(\"Created server request\",t,a),t}},set:{error:function(){h.verbose(\"Adding error state to element\",R),R.addClass(w.error)},loading:function(){h.verbose(\"Adding loading state to element\",R),R.addClass(w.loading),p=(new Date).getTime()}},remove:{error:function(){h.verbose(\"Removing error state from element\",R),R.removeClass(w.error)},loading:function(){h.verbose(\"Removing loading state from element\",R),R.removeClass(w.loading)}},get:{responseFromXHR:function(t){return!!e.isPlainObject(t)&&(h.is.expectingJSON()?h.decode.json(t.responseText):t.responseText)},errorFromRequest:function(t,n,o){return e.isPlainObject(t)&&t.error!==i?t.error:v.error[n]!==i?v.error[n]:o},request:function(){return h.request||!1},xhr:function(){return h.xhr||!1},settings:function(){var t;return(t=v.beforeSend.call(E,v))&&(t.success!==i&&(h.debug(\"Legacy success callback detected\",t),h.error(C.legacyParameters,t.success),t.onSuccess=t.success),t.failure!==i&&(h.debug(\"Legacy failure callback detected\",t),h.error(C.legacyParameters,t.failure),t.onFailure=t.failure),t.complete!==i&&(h.debug(\"Legacy complete callback detected\",t),h.error(C.legacyParameters,t.complete),t.onComplete=t.complete)),t===i&&h.error(C.noReturnedValue),!1===t?t:t!==i?e.extend(!0,{},t):e.extend(!0,{},v)},urlEncodedValue:function(e){var n=t.decodeURIComponent(e),i=t.encodeURIComponent(e);return n!==e?(h.debug(\"URL value is already encoded, avoiding double encoding\",e),e):(h.verbose(\"Encoding value using encodeURIComponent\",e,i),i)},defaultData:function(){var t={};return e.isWindow(P)||(h.is.input()?t.value=T.val():h.is.form()||(t.text=T.text())),t},event:function(){return e.isWindow(P)||\"now\"==v.on?(h.debug(\"API called without element, no events attached\"),!1):\"auto\"==v.on?T.is(\"input\")?P.oninput!==i?\"input\":P.onpropertychange!==i?\"propertychange\":\"keyup\":T.is(\"form\")?\"submit\":\"click\":v.on},templatedURL:function(e){if(e=e||T.data(y.action)||v.action||!1,m=T.data(y.url)||v.url||!1)return h.debug(\"Using specified url\",m),m;if(e){if(h.debug(\"Looking up url for action\",e,v.api),v.api[e]===i&&!h.is.mocked())return void h.error(C.missingAction,v.action,v.api);m=v.api[e]}else h.is.form()&&(m=T.attr(\"action\")||R.attr(\"action\")||!1,h.debug(\"No url or action specified, defaulting to form action\",m));return m}},abort:function(){var e=h.get.xhr();e&&\"resolved\"!==e.state()&&(h.debug(\"Cancelling API request\"),e.abort())},reset:function(){h.remove.error(),h.remove.loading()},setting:function(t,n){if(h.debug(\"Changing setting\",t,n),e.isPlainObject(t))e.extend(!0,v,t);else{if(n===i)return v[t];e.isPlainObject(v[t])?e.extend(!0,v[t],n):v[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,h,t);else{if(n===i)return h[t];h[t]=n}},debug:function(){!v.silent&&v.debug&&(v.performance?h.performance.log(arguments):(h.debug=Function.prototype.bind.call(console.info,console,v.name+\":\"),h.debug.apply(console,arguments)))},verbose:function(){!v.silent&&v.verbose&&v.debug&&(v.performance?h.performance.log(arguments):(h.verbose=Function.prototype.bind.call(console.info,console,v.name+\":\"),h.verbose.apply(console,arguments)))},error:function(){v.silent||(h.error=Function.prototype.bind.call(console.error,console,v.name+\":\"),h.error.apply(console,arguments))},performance:{log:function(e){var t,n;v.performance&&(n=(t=(new Date).getTime())-(s||t),s=t,l.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",\"Execution Time\":n})),clearTimeout(h.performance.timer),h.performance.timer=setTimeout(h.performance.display,500)},display:function(){var t=v.name+\":\",n=0;s=!1,clearTimeout(h.performance.timer),e.each(l,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",r&&(t+=\" '\"+r+\"'\"),(console.group!==i||console.table!==i)&&l.length>0&&(console.groupCollapsed(t),console.table?console.table(l):e.each(l,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),l=[]}},invoke:function(t,n,a){var r,s,l,c=F;return n=n||d,a=P||a,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(h.error(C.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(a,n):s!==i&&(l=s),e.isArray(o)?o.push(l):o!==i?o=[o,l]:l!==i&&(o=l),s}},u?(F===i&&h.initialize(),h.invoke(c)):(F!==i&&F.invoke(\"destroy\"),h.initialize())}),o!==i?o:this},e.api.settings={name:\"API\",namespace:\"api\",debug:!1,verbose:!1,performance:!0,api:{},cache:!0,interruptRequests:!0,on:\"auto\",stateContext:!1,loadingDuration:0,hideError:\"auto\",errorDuration:2e3,encodeParameters:!0,action:!1,url:!1,base:\"\",urlData:{},defaultData:!0,serializeForm:!1,throttle:0,throttleFirstRequest:!0,method:\"get\",data:{},dataType:\"json\",mockResponse:!1,mockResponseAsync:!1,response:!1,responseAsync:!1,beforeSend:function(e){return e},beforeXHR:function(e){},onRequest:function(e,t){},onResponse:!1,onSuccess:function(e,t){},onComplete:function(e,t){},onFailure:function(e,t){},onError:function(e,t){},onAbort:function(e,t){},successTest:!1,error:{beforeSend:\"The before send function has aborted the request\",error:\"There was an error with your request\",exitConditions:\"API Request Aborted. Exit conditions met\",JSONParse:\"JSON could not be parsed during error handling\",legacyParameters:\"You are using legacy API success callback names\",method:\"The method you called is not defined\",missingAction:\"API action used but no url was defined\",missingSerialize:\"jquery-serialize-object is required to add form data to an existing data object\",missingURL:\"No URL specified for api event\",noReturnedValue:\"The beforeSend callback must return a settings object, beforeSend ignored.\",noStorage:\"Caching responses locally requires session storage\",parseError:\"There was an error parsing your request\",requiredParameter:\"Missing a required URL parameter: \",statusMessage:\"Server gave an error: \",timeout:\"Your request timed out\"},regExp:{required:/\\{\\$*[A-z0-9]+\\}/g,optional:/\\{\\/\\$*[A-z0-9]+\\}/g},className:{loading:\"loading\",error:\"error\"},selector:{disabled:\".disabled\",form:\"form\"},metadata:{action:\"action\",url:\"url\"}}}(jQuery,window,document),function(e,t,n,i){\"use strict\";t=void 0!==t&&t.Math==Math?t:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),e.fn.visibility=function(o){var a,r=e(this),s=r.selector||\"\",l=(new Date).getTime(),c=[],u=arguments[0],d=\"string\"==typeof u,f=[].slice.call(arguments,1),m=r.length,g=0;return r.each(function(){var r,p,h,v,b=e.isPlainObject(o)?e.extend(!0,{},e.fn.visibility.settings,o):e.extend({},e.fn.visibility.settings),y=b.className,x=b.namespace,C=b.error,w=b.metadata,S=\".\"+x,k=\"module-\"+x,T=e(t),A=e(this),R=e(b.context),P=(A.selector,A.data(k)),E=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)},F=this,O=!1;v={initialize:function(){v.debug(\"Initializing\",b),v.setup.cache(),v.should.trackChanges()&&(\"image\"==b.type&&v.setup.image(),\"fixed\"==b.type&&v.setup.fixed(),b.observeChanges&&v.observeChanges(),v.bind.events()),v.save.position(),v.is.visible()||v.error(C.visible,A),b.initialCheck&&v.checkVisibility(),v.instantiate()},instantiate:function(){v.debug(\"Storing instance\",v),A.data(k,v),P=v},destroy:function(){v.verbose(\"Destroying previous module\"),h&&h.disconnect(),p&&p.disconnect(),T.off(\"load\"+S,v.event.load).off(\"resize\"+S,v.event.resize),R.off(\"scroll\"+S,v.event.scroll).off(\"scrollchange\"+S,v.event.scrollchange),\"fixed\"==b.type&&(v.resetFixed(),v.remove.placeholder()),A.off(S).removeData(k)},observeChanges:function(){\"MutationObserver\"in t&&(p=new MutationObserver(v.event.contextChanged),h=new MutationObserver(v.event.changed),p.observe(n,{childList:!0,subtree:!0}),h.observe(F,{childList:!0,subtree:!0}),v.debug(\"Setting up mutation observer\",h))},bind:{events:function(){v.verbose(\"Binding visibility events to scroll and resize\"),b.refreshOnLoad&&T.on(\"load\"+S,v.event.load),T.on(\"resize\"+S,v.event.resize),R.off(\"scroll\"+S).on(\"scroll\"+S,v.event.scroll).on(\"scrollchange\"+S,v.event.scrollchange)}},event:{changed:function(e){v.verbose(\"DOM tree modified, updating visibility calculations\"),v.timer=setTimeout(function(){v.verbose(\"DOM tree modified, updating sticky menu\"),v.refresh()},100)},contextChanged:function(t){[].forEach.call(t,function(t){t.removedNodes&&[].forEach.call(t.removedNodes,function(t){(t==F||e(t).find(F).length>0)&&(v.debug(\"Element removed from DOM, tearing down events\"),v.destroy())})})},resize:function(){v.debug(\"Window resized\"),b.refreshOnResize&&E(v.refresh)},load:function(){v.debug(\"Page finished loading\"),E(v.refresh)},scroll:function(){b.throttle?(clearTimeout(v.timer),v.timer=setTimeout(function(){R.triggerHandler(\"scrollchange\"+S,[R.scrollTop()])},b.throttle)):E(function(){R.triggerHandler(\"scrollchange\"+S,[R.scrollTop()])})},scrollchange:function(e,t){v.checkVisibility(t)}},precache:function(t,i){t instanceof Array||(t=[t]);for(var o=t.length,a=0,r=[],s=n.createElement(\"img\"),l=function(){++a>=t.length&&e.isFunction(i)&&i()};o--;)(s=n.createElement(\"img\")).onload=l,s.onerror=l,s.src=t[o],r.push(s)},enableCallbacks:function(){v.debug(\"Allowing callbacks to occur\"),O=!1},disableCallbacks:function(){v.debug(\"Disabling all callbacks temporarily\"),O=!0},should:{trackChanges:function(){return d?(v.debug(\"One time query, no need to bind events\"),!1):(v.debug(\"Callbacks being attached\"),!0)}},setup:{cache:function(){v.cache={occurred:{},screen:{},element:{}}},image:function(){var e=A.data(w.src);e&&(v.verbose(\"Lazy loading image\",e),b.once=!0,b.observeChanges=!1,b.onOnScreen=function(){v.debug(\"Image on screen\",F),v.precache(e,function(){v.set.image(e,function(){++g==m&&b.onAllLoaded.call(this),b.onLoad.call(this)})})})},fixed:function(){v.debug(\"Setting up fixed\"),b.once=!1,b.observeChanges=!1,b.initialCheck=!0,b.refreshOnLoad=!0,o.transition||(b.transition=!1),v.create.placeholder(),v.debug(\"Added placeholder\",r),b.onTopPassed=function(){v.debug(\"Element passed, adding fixed position\",A),v.show.placeholder(),v.set.fixed(),b.transition&&e.fn.transition!==i&&A.transition(b.transition,b.duration)},b.onTopPassedReverse=function(){v.debug(\"Element returned to position, removing fixed\",A),v.hide.placeholder(),v.remove.fixed()}}},create:{placeholder:function(){v.verbose(\"Creating fixed position placeholder\"),r=A.clone(!1).css(\"display\",\"none\").addClass(y.placeholder).insertAfter(A)}},show:{placeholder:function(){v.verbose(\"Showing placeholder\"),r.css(\"display\",\"block\").css(\"visibility\",\"hidden\")}},hide:{placeholder:function(){v.verbose(\"Hiding placeholder\"),r.css(\"display\",\"none\").css(\"visibility\",\"\")}},set:{fixed:function(){v.verbose(\"Setting element to fixed position\"),A.addClass(y.fixed).css({position:\"fixed\",top:b.offset+\"px\",left:\"auto\",zIndex:b.zIndex}),b.onFixed.call(F)},image:function(t,n){if(A.attr(\"src\",t),b.transition)if(e.fn.transition!==i){if(A.hasClass(y.visible))return void v.debug(\"Transition already occurred on this image, skipping animation\");A.transition(b.transition,b.duration,n)}else A.fadeIn(b.duration,n);else A.show()}},is:{onScreen:function(){return v.get.elementCalculations().onScreen},offScreen:function(){return v.get.elementCalculations().offScreen},visible:function(){return!(!v.cache||!v.cache.element)&&!(0===v.cache.element.width&&0===v.cache.element.offset.top)},verticallyScrollableContext:function(){var e=R.get(0)!==t&&R.css(\"overflow-y\");return\"auto\"==e||\"scroll\"==e},horizontallyScrollableContext:function(){var e=R.get(0)!==t&&R.css(\"overflow-x\");return\"auto\"==e||\"scroll\"==e}},refresh:function(){v.debug(\"Refreshing constants (width/height)\"),\"fixed\"==b.type&&v.resetFixed(),v.reset(),v.save.position(),b.checkOnRefresh&&v.checkVisibility(),b.onRefresh.call(F)},resetFixed:function(){v.remove.fixed(),v.remove.occurred()},reset:function(){v.verbose(\"Resetting all cached values\"),e.isPlainObject(v.cache)&&(v.cache.screen={},v.cache.element={})},checkVisibility:function(e){v.verbose(\"Checking visibility of element\",v.cache.element),!O&&v.is.visible()&&(v.save.scroll(e),v.save.calculations(),v.passed(),v.passingReverse(),v.topVisibleReverse(),v.bottomVisibleReverse(),v.topPassedReverse(),v.bottomPassedReverse(),v.onScreen(),v.offScreen(),v.passing(),v.topVisible(),v.bottomVisible(),v.topPassed(),v.bottomPassed(),b.onUpdate&&b.onUpdate.call(F,v.get.elementCalculations()))},passed:function(t,n){var o=v.get.elementCalculations();if(t&&n)b.onPassed[t]=n;else{if(t!==i)return v.get.pixelsPassed(t)>o.pixelsPassed;o.passing&&e.each(b.onPassed,function(e,t){o.bottomVisible||o.pixelsPassed>v.get.pixelsPassed(e)?v.execute(t,e):b.once||v.remove.occurred(t)})}},onScreen:function(e){var t=v.get.elementCalculations(),n=e||b.onOnScreen,o=\"onScreen\";if(e&&(v.debug(\"Adding callback for onScreen\",e),b.onOnScreen=e),t.onScreen?v.execute(n,o):b.once||v.remove.occurred(o),e!==i)return t.onOnScreen},offScreen:function(e){var t=v.get.elementCalculations(),n=e||b.onOffScreen,o=\"offScreen\";if(e&&(v.debug(\"Adding callback for offScreen\",e),b.onOffScreen=e),t.offScreen?v.execute(n,o):b.once||v.remove.occurred(o),e!==i)return t.onOffScreen},passing:function(e){var t=v.get.elementCalculations(),n=e||b.onPassing,o=\"passing\";if(e&&(v.debug(\"Adding callback for passing\",e),b.onPassing=e),t.passing?v.execute(n,o):b.once||v.remove.occurred(o),e!==i)return t.passing},topVisible:function(e){var t=v.get.elementCalculations(),n=e||b.onTopVisible,o=\"topVisible\";if(e&&(v.debug(\"Adding callback for top visible\",e),b.onTopVisible=e),t.topVisible?v.execute(n,o):b.once||v.remove.occurred(o),e===i)return t.topVisible},bottomVisible:function(e){var t=v.get.elementCalculations(),n=e||b.onBottomVisible,o=\"bottomVisible\";if(e&&(v.debug(\"Adding callback for bottom visible\",e),b.onBottomVisible=e),t.bottomVisible?v.execute(n,o):b.once||v.remove.occurred(o),e===i)return t.bottomVisible},topPassed:function(e){var t=v.get.elementCalculations(),n=e||b.onTopPassed,o=\"topPassed\";if(e&&(v.debug(\"Adding callback for top passed\",e),b.onTopPassed=e),t.topPassed?v.execute(n,o):b.once||v.remove.occurred(o),e===i)return t.topPassed},bottomPassed:function(e){var t=v.get.elementCalculations(),n=e||b.onBottomPassed,o=\"bottomPassed\";if(e&&(v.debug(\"Adding callback for bottom passed\",e),b.onBottomPassed=e),t.bottomPassed?v.execute(n,o):b.once||v.remove.occurred(o),e===i)return t.bottomPassed},passingReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onPassingReverse,o=\"passingReverse\";if(e&&(v.debug(\"Adding callback for passing reverse\",e),b.onPassingReverse=e),t.passing?b.once||v.remove.occurred(o):v.get.occurred(\"passing\")&&v.execute(n,o),e!==i)return!t.passing},topVisibleReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onTopVisibleReverse,o=\"topVisibleReverse\";if(e&&(v.debug(\"Adding callback for top visible reverse\",e),b.onTopVisibleReverse=e),t.topVisible?b.once||v.remove.occurred(o):v.get.occurred(\"topVisible\")&&v.execute(n,o),e===i)return!t.topVisible},bottomVisibleReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onBottomVisibleReverse,o=\"bottomVisibleReverse\";if(e&&(v.debug(\"Adding callback for bottom visible reverse\",e),b.onBottomVisibleReverse=e),t.bottomVisible?b.once||v.remove.occurred(o):v.get.occurred(\"bottomVisible\")&&v.execute(n,o),e===i)return!t.bottomVisible},topPassedReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onTopPassedReverse,o=\"topPassedReverse\";if(e&&(v.debug(\"Adding callback for top passed reverse\",e),b.onTopPassedReverse=e),t.topPassed?b.once||v.remove.occurred(o):v.get.occurred(\"topPassed\")&&v.execute(n,o),e===i)return!t.onTopPassed},bottomPassedReverse:function(e){var t=v.get.elementCalculations(),n=e||b.onBottomPassedReverse,o=\"bottomPassedReverse\";if(e&&(v.debug(\"Adding callback for bottom passed reverse\",e),b.onBottomPassedReverse=e),t.bottomPassed?b.once||v.remove.occurred(o):v.get.occurred(\"bottomPassed\")&&v.execute(n,o),e===i)return!t.bottomPassed},execute:function(e,t){var n=v.get.elementCalculations(),i=v.get.screenCalculations();(e=e||!1)&&(b.continuous?(v.debug(\"Callback being called continuously\",t,n),e.call(F,n,i)):v.get.occurred(t)||(v.debug(\"Conditions met\",t,n),e.call(F,n,i))),v.save.occurred(t)},remove:{fixed:function(){v.debug(\"Removing fixed position\"),A.removeClass(y.fixed).css({position:\"\",top:\"\",left:\"\",zIndex:\"\"}),b.onUnfixed.call(F)},placeholder:function(){v.debug(\"Removing placeholder content\"),r&&r.remove()},occurred:function(e){if(e){var t=v.cache.occurred;t[e]!==i&&!0===t[e]&&(v.debug(\"Callback can now be called again\",e),v.cache.occurred[e]=!1)}else v.cache.occurred={}}},save:{calculations:function(){v.verbose(\"Saving all calculations necessary to determine positioning\"),v.save.direction(),v.save.screenCalculations(),v.save.elementCalculations()},occurred:function(e){e&&(v.cache.occurred[e]!==i&&!0===v.cache.occurred[e]||(v.verbose(\"Saving callback occurred\",e),v.cache.occurred[e]=!0))},scroll:function(e){e=e+b.offset||R.scrollTop()+b.offset,v.cache.scroll=e},direction:function(){var e,t=v.get.scroll(),n=v.get.lastScroll();return e=t>n&&n?\"down\":t<n&&n?\"up\":\"static\",v.cache.direction=e,v.cache.direction},elementPosition:function(){var e=v.cache.element,t=v.get.screenSize();return v.verbose(\"Saving element position\"),e.fits=e.height<t.height,e.offset=A.offset(),e.width=A.outerWidth(),e.height=A.outerHeight(),v.is.verticallyScrollableContext()&&(e.offset.top+=R.scrollTop()-R.offset().top),v.is.horizontallyScrollableContext()&&(e.offset.left+=R.scrollLeft-R.offset().left),v.cache.element=e,e},elementCalculations:function(){var e=v.get.screenCalculations(),t=v.get.elementPosition();return b.includeMargin?(t.margin={},t.margin.top=parseInt(A.css(\"margin-top\"),10),t.margin.bottom=parseInt(A.css(\"margin-bottom\"),10),t.top=t.offset.top-t.margin.top,t.bottom=t.offset.top+t.height+t.margin.bottom):(t.top=t.offset.top,t.bottom=t.offset.top+t.height),t.topPassed=e.top>=t.top,t.bottomPassed=e.top>=t.bottom,t.topVisible=e.bottom>=t.top&&!t.topPassed,t.bottomVisible=e.bottom>=t.bottom&&!t.bottomPassed,t.pixelsPassed=0,t.percentagePassed=0,t.onScreen=(t.topVisible||t.passing)&&!t.bottomPassed,t.passing=t.topPassed&&!t.bottomPassed,t.offScreen=!t.onScreen,t.passing&&(t.pixelsPassed=e.top-t.top,t.percentagePassed=(e.top-t.top)/t.height),v.cache.element=t,v.verbose(\"Updated element calculations\",t),t},screenCalculations:function(){var e=v.get.scroll();return v.save.direction(),v.cache.screen.top=e,v.cache.screen.bottom=e+v.cache.screen.height,v.cache.screen},screenSize:function(){v.verbose(\"Saving window position\"),v.cache.screen={height:R.height()}},position:function(){v.save.screenSize(),v.save.elementPosition()}},get:{pixelsPassed:function(e){var t=v.get.elementCalculations();return e.search(\"%\")>-1?t.height*(parseInt(e,10)/100):parseInt(e,10)},occurred:function(e){return v.cache.occurred!==i&&v.cache.occurred[e]||!1},direction:function(){return v.cache.direction===i&&v.save.direction(),v.cache.direction},elementPosition:function(){return v.cache.element===i&&v.save.elementPosition(),v.cache.element},elementCalculations:function(){return v.cache.element===i&&v.save.elementCalculations(),v.cache.element},screenCalculations:function(){return v.cache.screen===i&&v.save.screenCalculations(),v.cache.screen},screenSize:function(){return v.cache.screen===i&&v.save.screenSize(),v.cache.screen},scroll:function(){return v.cache.scroll===i&&v.save.scroll(),v.cache.scroll},lastScroll:function(){return v.cache.screen===i?(v.debug(\"First scroll event, no last scroll could be found\"),!1):v.cache.screen.top}},setting:function(t,n){if(e.isPlainObject(t))e.extend(!0,b,t);else{if(n===i)return b[t];b[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,v,t);else{if(n===i)return v[t];v[t]=n}},debug:function(){!b.silent&&b.debug&&(b.performance?v.performance.log(arguments):(v.debug=Function.prototype.bind.call(console.info,console,b.name+\":\"),v.debug.apply(console,arguments)))},verbose:function(){!b.silent&&b.verbose&&b.debug&&(b.performance?v.performance.log(arguments):(v.verbose=Function.prototype.bind.call(console.info,console,b.name+\":\"),v.verbose.apply(console,arguments)))},error:function(){b.silent||(v.error=Function.prototype.bind.call(console.error,console,b.name+\":\"),v.error.apply(console,arguments))},performance:{log:function(e){var t,n;b.performance&&(n=(t=(new Date).getTime())-(l||t),l=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||\"\",Element:F,\"Execution Time\":n})),clearTimeout(v.performance.timer),v.performance.timer=setTimeout(v.performance.display,500)},display:function(){var t=b.name+\":\",n=0;l=!1,clearTimeout(v.performance.timer),e.each(c,function(e,t){n+=t[\"Execution Time\"]}),t+=\" \"+n+\"ms\",s&&(t+=\" '\"+s+\"'\"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+\": \"+t[\"Execution Time\"]+\"ms\")}),console.groupEnd()),c=[]}},invoke:function(t,n,o){var r,s,l,c=P;return n=n||f,o=F||o,\"string\"==typeof t&&c!==i&&(t=t.split(/[\\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(c[a])&&n!=r)c=c[a];else{if(c[a]!==i)return s=c[a],!1;if(!e.isPlainObject(c[o])||n==r)return c[o]!==i?(s=c[o],!1):(v.error(C.method,t),!1);c=c[o]}})),e.isFunction(s)?l=s.apply(o,n):s!==i&&(l=s),e.isArray(a)?a.push(l):a!==i?a=[a,l]:l!==i&&(a=l),s}},d?(P===i&&v.initialize(),P.save.scroll(),P.save.calculations(),v.invoke(u)):(P!==i&&P.invoke(\"destroy\"),v.initialize())}),a!==i?a:this},e.fn.visibility.settings={name:\"Visibility\",namespace:\"visibility\",debug:!1,verbose:!1,performance:!0,observeChanges:!0,initialCheck:!0,refreshOnLoad:!0,refreshOnResize:!0,checkOnRefresh:!0,once:!0,continuous:!1,offset:0,includeMargin:!1,context:t,throttle:!1,type:!1,zIndex:\"10\",transition:\"fade in\",duration:1e3,onPassed:{},onOnScreen:!1,onOffScreen:!1,onPassing:!1,onTopVisible:!1,onBottomVisible:!1,onTopPassed:!1,onBottomPassed:!1,onPassingReverse:!1,onTopVisibleReverse:!1,onBottomVisibleReverse:!1,onTopPassedReverse:!1,onBottomPassedReverse:!1,onLoad:function(){},onAllLoaded:function(){},onFixed:function(){},onUnfixed:function(){},onUpdate:!1,onRefresh:function(){},metadata:{src:\"src\"},className:{fixed:\"fixed\",placeholder:\"placeholder\",visible:\"visible\"},error:{method:\"The method you called is not defined.\",visible:\"Element is hidden, you must call refresh after element becomes visible\"}}}(jQuery,window,document);","import line_i18n from \"line-i18n\";\nimport { LocalizedStrings } from \"./localizedStringsService\";\n\nconst StringTypes = line_i18n.StringTypes;\n\nexport const i18nHelper = Object.freeze({\n i18n: (identifier) => {\n var opts = identifier.split(':');\n var type = opts[0].toLowerCase();\n var id = opts[1];\n if (StringTypes.ERROR === type) {\n return LocalizedStrings.getError(id);\n } else if (StringTypes.MESSAGE === type) {\n return LocalizedStrings.getMessage(id); \n } else if (StringTypes.UI === type) {\n return LocalizedStrings.getUI(id);\n } else {\n console.warn(\"A string has been passed to the i18n helper function that was not in the form type:id -> \" + identifier);\n return LocalizedStrings.getString(identifier, type);\n }\n }\n});","import Lexers from './../../grammar/';\nimport line_i18n from 'line-i18n';\nimport { Config } from \"./../util/config\";\n\nclass LanguageServiceExtended extends line_i18n.LanguageServiceNoLS {\n\n constructor () {\n super(typeof(iLMparameters) === 'undefined' ? Config.default_lang : iLMparameters.lang);\n }\n\n getCurrentLexer () {\n const langInfo = Lexers[this.getLang()];\n if(langInfo === null || langInfo === undefined) {\n return Lexers[this.getDefaultLang()].lexer;\n } else {\n return langInfo.lexer;\n }\n }\n\n getCurrentLangFuncs () {\n const langInfo = Lexers[this.getLang()];\n if(langInfo === null || langInfo === undefined) {\n return Lexers[this.getDefaultLang()].langFuncs;\n } else {\n return langInfo.langFuncs;\n }\n }\n\n getCurrentLangLibs () {\n const langInfo = Lexers[this.getLang()];\n if(langInfo === null || langInfo === undefined) {\n return Lexers[this.getDefaultLang()].langLibs;\n }\n return langInfo.langLibs;\n }\n}\n\nexport const LanguageService = new LanguageServiceExtended();\n","import { LanguageService } from \"./languageService\";\nimport line_i18n from 'line-i18n';\nimport Langs from './../../i18n';\n\nclass IVProgLocalizedStrings extends line_i18n.LocalizedStrings {\n\n constructor(langService, langsJsons, shouldListenToChange = false) {\n super(langService, langsJsons, shouldListenToChange);\n }\n\n translateType (type, dim) {\n switch (dim) {\n case 0:\n return this.getUI(type);\n default:\n const transType = this.getUI(type);\n if(dim === 1)\n return this.getUI(\"vector_string\", [transType])\n else\n return this.getUI(\"matrix_string\", [transType])\n }\n }\n \n translateOp (op) {\n switch(op.ord) {\n case Operators.AND.ord:\n case Operators.OR.ord:\n case Operators.NOT.ord:\n return this.getUI(op.value);\n default:\n return op.value;\n }\n }\n}\n\nexport const LocalizedStrings = Object.freeze(new IVProgLocalizedStrings(LanguageService, Langs, true));\n\nlet _instance = null;\n\nexport function getInstance () {\n if(_instance == null) {\n _instance = new IVProgLocalizedStrings(LanguageService, Langs);\n }\n return _instance;\n}\n","class BaseType {\n constructor(name, ord) {\n this.name = name;\n this.ord = ord;\n }\n\n get value () {\n return this.name;\n }\n\n isCompatible (another) {\n if(another instanceof BaseType) {\n return this.name === another.name && this.ord === another.ord;\n }\n return false;\n }\n}\n\n// Base types names are the same as i18n ui type keys\nexport const BaseTypes = Object.freeze({\n INTEGER: new BaseType(\"integer\", 0),\n REAL: new BaseType(\"real\", 1),\n STRING: new BaseType(\"text\", 2),\n BOOLEAN: new BaseType(\"boolean\", 3),\n VOID: new BaseType(\"void\", 4),\n UNDEFINED: new BaseType(\"undefined\", 5)\n})\n","import { Type } from \"./type\";\n\nexport class CompoundType extends Type {\n\n constructor (type, dimensions) {\n super(null);\n this.innerType = type;\n this.dimensions = dimensions;\n }\n\n isCompatible (another) {\n if(another instanceof CompoundType){\n if(this.dimensions !== another.dimensions) {\n return false;\n }\n return this.innerType.isCompatible(another.innerType);\n }\n return false;\n }\n\n stringInfo () {\n const list = this.innerType.stringInfo();\n list.forEach(v => {\n v.dim = this.dimensions;\n });\n return list;\n }\n\n canAccept (another) {\n if(another instanceof CompoundType) {\n return this.dimensions > another.dimensions && this.innerType.isCompatible(another.innerType);\n } else {\n return this.innerType.isCompatible(another);\n }\n }\n}\n","import { Type } from \"./type\";\n\nexport class MultiType extends Type {\n\n constructor (types) {\n super(null);\n this.types = types;\n }\n\n get value () {\n return null;\n }\n\n get ord () {\n return null;\n }\n\n stringInfo () {\n let list = [];\n for (let i = 0; i < this.types.length; i++) {\n const t = this.types[i];\n list = list.concat(t.stringInfo());\n }\n return list;\n }\n\n isCompatible (another) {\n if(another instanceof Type) {\n for (let i = 0; i < this.types.length; i++) {\n const t = this.types[i];\n if (another.isCompatible(t)) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","import { LanguageService } from \"../services/languageService\";\nimport { Types } from \"./types\";\nimport Decimal from \"decimal.js\";\n\nexport function toInt (str) {\n return new Decimal(str);\n}\n\nexport function toString (str) {\n let value = str.replace(/^\"/, '');\n value = value.replace(/\"$/, '');\n value = value.replace(/\\\\b/g, \"\\b\");\n value = value.replace(/\\\\t/g, \"\\t\");\n value = value.replace(/\\\\n/g, \"\\n\");\n value = value.replace(/\\\\r/g, \"\\r\");\n value = value.replace(/\\\\\\\"/g, \"\\\"\");\n value = value.replace(/\\\\\\'/g, \"\\'\");\n value = value.replace(/\\\\\\\\/g, \"\\\\\");\n return value;\n}\n\nexport function toReal (value) {\n return new Decimal(value);\n}\n\nexport function toBool (str) {\n const val = \"'\" + str + \"'\";\n const lexer = LanguageService.getCurrentLexer();\n const instance = new lexer(null);\n if (instance.literalNames[lexer.RK_TRUE] === val) {\n return true;\n } else if (instance.literalNames[lexer.RK_FALSE] === val) {\n return false;\n } else {\n // TODO: better error message\n throw new Error(str + \"not a valid boolean\");\n }\n}\n\nexport function convertBoolToString (bool) {\n const lexer = LanguageService.getCurrentLexer();\n const instance = new lexer(null);\n if (bool) {\n return instance.literalNames[lexer.RK_TRUE];\n } else {\n return instance.literalNames[lexer.RK_FALSE];\n }\n}\n\nexport function convertToString(value, type) {\n switch (type.ord) {\n case Types.INTEGER.ord:\n return value.toString();\n case Types.REAL.ord: {\n if (value.dp() <= 0) {\n return value.toFixed(1); \n } else {\n return value.toNumber();\n }\n }\n case Types.BOOLEAN.ord:\n return convertBoolToString(value);\n default:\n return value;\n }\n}","import { Config } from \"../util/config\";\nimport { BaseTypes } from \"./baseTypes\";\n\nexport class Type {\n\n constructor(baseType) {\n this.baseType = baseType;\n }\n\n get value () {\n return this.baseType.value;\n }\n\n get ord () {\n return this.baseType.ord;\n }\n\n stringInfo () {\n return [{type: this.baseType.name, dim: 0}];\n }\n\n isCompatible (another) {\n if(another instanceof Type) {\n return this.baseType.isCompatible(another.baseType);\n }\n return false;\n }\n}\n","import { BaseTypes } from './baseTypes';\nimport { Type } from \"./type\";\nimport { MultiType } from \"./multiType\";\n\nconst INTEGER = new Type(BaseTypes.INTEGER);\nconst REAL = new Type(BaseTypes.REAL);\nconst STRING = new Type(BaseTypes.STRING);\nconst BOOLEAN = new Type(BaseTypes.BOOLEAN);\nconst VOID = new Type(BaseTypes.VOID);\nconst UNDEFINED = new Type(BaseTypes.UNDEFINED);\nconst ALL = new MultiType([INTEGER, REAL, STRING, BOOLEAN]);\n\nexport const Types = Object.freeze({\n INTEGER: INTEGER,\n REAL: REAL,\n STRING: STRING,\n BOOLEAN: BOOLEAN,\n VOID: VOID,\n UNDEFINED: UNDEFINED,\n ALL: ALL\n});\n","class ConfigObject {\n\n constructor () {\n this.loopTimeout = 5000;\n this.decimalPlaces = 8;\n this.intConvertRoundMode = 2;\n this.default_lang = 'pt';\n this.enable_type_casting = true;\n }\n\n setConfig (opts) {\n for (const key in opts) {\n if(this.hasOwnProperty(key)){\n this[key] = opts[key];\n }\n }\n }\n}\nlet config = new ConfigObject();\nexport const Config = config;","import { Input } from './../io/input';\nimport { LocalizedStrings } from '../services/localizedStringsService';\n\nexport class InputTest extends Input {\n\n constructor (inputList) {\n super();\n this.index = 0;\n this.inputList = inputList;\n }\n\n requestInput (callback) {\n if(this.index < this.inputList.length) { \n callback(this.inputList[this.index]);\n this.index++;\n } else {\n throw new Error(LocalizedStrings.getError(\"exceeded_input_request\"));\n }\n }\n}","import { Output } from './../io/output';\n\nexport class OutputTest extends Output {\n\n constructor () {\n super();\n this.list = [];\n }\n\n sendOutput (text) {\n this.list.push(text);\n }\n}","import $ from 'jquery';\nimport { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as GlobalsManagement from './globals';\nimport * as VariablesManagement from './variables';\nimport * as CommandsManagement from './commands';\nimport * as CodeManagement from './code_generator';\nimport * as VariableValueMenu from './commands/variable_value_menu';\nimport * as FunctionsManagement from './functions';\nimport { DOMConsole } from './../io/domConsole';\nimport { IVProgParser } from './../ast/ivprogParser';\nimport { IVProgProcessor } from './../processor/ivprogProcessor';\nimport { LanguageService } from '../services/languageService';\n\nwindow.block_render = false;\n\nexport function renderAlgorithm () {\n\tif (window.block_render) {\n\t\treturn;\n\t}\n\tif (window.draging) {\n\t\treturn;\n\t}\n\twindow.block_render = true;\n\tconsole.log('rendering algorithm');\n\n \t$('.all_functions').children().off();\n\t$('.all_functions').empty();\n\n\t$('.list_globals').children().off();\n\t$('.list_globals').empty();\t\n\n\tfor (var i = 0; i < window.program_obj.functions.length; i++) {\n\t\tFunctionsManagement.renderFunction(window.program_obj.functions[i]);\n\t}\n\n\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\tGlobalsManagement.renderGlobal(window.program_obj.globals[i]);\n\t}\t\n\n\tsetTimeout(function(){ window.block_render = false; }, 100);\n\tconsole.log('fim do render');\n}","import $ from 'jquery';\nimport { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as GlobalsManagement from './globals';\nimport * as VariablesManagement from './variables';\nimport * as CommandsManagement from './commands';\nimport * as Utils from './utils';\n\nexport function generate () {\n\n\t$('.ivprog_visual_panel').find('.error_icon').remove();\n\n\tvar code = LocalizedStrings.getUI('program') + ' { ';\n\n\tcode += globalsCode();\n\n\tcode += '\\n';\n\n\tvar has_error = false;\n\n\tfor (var i = 0; i < window.program_obj.functions.length; i ++) {\n\t\tvar n_code = functionsCode(window.program_obj.functions[i]);\n\t\tif (n_code == null) {\n\t\t\thas_error = true;\n\t\t}\n\t\tcode += n_code;\n\t\tcode += '\\n';\n\n\t}\n\n\tcode += '\\n}';\n\n\tif (has_error) {\n\t\treturn null;\n\t} else {\n\t\treturn code;\n\t}\n}\n\nfunction functionsCode (function_obj) {\n\tvar ret = '\\n\\t' + LocalizedStrings.getUI('function') + ' ';\n\n\tvar has_error = false;\n\n\tswitch (function_obj.return_type) {\n\t\tcase Types.INTEGER:\n\t\t\tret += LocalizedStrings.getUI('integer');\n\t\t\tbreak;\n\t\tcase Types.REAL:\n\t\t\tret += LocalizedStrings.getUI('real');\n\t\t\tbreak;\n\t\tcase Types.TEXT:\n\t\t\tret += LocalizedStrings.getUI('text');\n\t\t\tbreak;\n\t\tcase Types.BOOLEAN:\n\t\t\tret += LocalizedStrings.getUI('boolean');\n\t\t\tbreak;\n\t\tcase Types.VOID:\n\t\t\tret += LocalizedStrings.getUI('void');\n\t\t\tbreak;\n\t}\n\tret += ' ';\n\n\tif (function_obj.return_dimensions == 1) {\n\t\tret += '[] '\n\t} else if (function_obj.return_dimensions == 2) {\n\t\tret += '[][] '\n\t}\n\n\tret += function_obj.name + ' ( ';\n\n\tfor (var j = 0; j < function_obj.parameters_list.length; j++) {\n\t\tret += parametersCode(function_obj.parameters_list[j]);\n\t\tif ((j + 1) < function_obj.parameters_list.length) {\n\t\t\tret += ',';\n\t\t}\n\t}\n\n\tret += ' ) {';\n\n\tfor (var j = 0; j < function_obj.variables_list.length; j++) {\n\t\tret += variablesCode(function_obj.variables_list[j]);\n\t}\n\n\tfor (var j = 0; j < function_obj.commands.length; j++) {\n\t\t//try {\n\t\t\tret += commandsCode(function_obj.commands[j]);\n\t\t/*} catch (err) {\n\n\t\t\thas_error = true;\n\n\t\t\tconsole.error(err.message);\n\n\t\t\tvar todos = $('body').find('.command_container');\n\n\t\t\tfor (var i = 0; i < todos.length; i++) {\n\t\t\t\tif ($(todos[i]).data('command') == function_obj.commands[j]) {\n\t\t\t\t\t$( todos[i] ).prepend( ' <i class=\"ui icon red exclamation triangle error_icon\"></i> ' );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}*/\n\t\t\n\t}\n\n\tret += '\\n\\t}';\n\n\tif (has_error) {\n\t\treturn null;\n\t} else {\n\t\treturn ret;\n\t}\n}\n\nfunction commandsCode (command_obj, indentation = 2) {\n\tswitch (command_obj.type) {\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\treturn breaksCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\treturn commentsCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\treturn readersCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\treturn writersCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\treturn functioncallsCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\treturn attributionsCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\treturn whiletruesCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\treturn doWhilesCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\treturn iftruesCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\treturn repeatNtimesCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\t\treturn switchsCode(command_obj, indentation);\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\treturn returnsCode(command_obj, indentation);\n\t}\n}\n\nfunction returnsCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_return');\n\n\tif (command_obj.variable_value_menu) {\n\t\ttry {\n\t\t\tret += ' ' + variableValueMenuCode(command_obj.variable_value_menu, true);\n\t\t} catch(err) {}\n\t}\n\n\treturn ret;\n}\n\nfunction breaksCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_break');\n\n\treturn ret;\n}\n\nfunction switchsCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_code_switch') + ' ( ';\n\n\tret += variableValueMenuCode(command_obj.variable);\n\n\tret += ' ) { ';\n\n\tif (command_obj.cases) {\n\t\tfor (var i = 0; i < command_obj.cases.length; i++) {\n\t\t\tret += switchcasesCode(command_obj.cases[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\tret += '} ';\n\n\treturn ret;\n}\n\nfunction switchcasesCode (switchcase, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_code_case') + ' ';\n\tret += variableValueMenuCode(switchcase.variable_value_menu);\n\tret += ' :';\n\n\tif (switchcase.commands_block) {\n\t\tfor (var i = 0; i < switchcase.commands_block.length; i++) {\n\t\t\tret += commandsCode(switchcase.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\treturn ret;\n\n}\n\nfunction repeatNtimesCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_for') + ' ( ';\n\n\tif (command_obj.var_attribution) {\n\t\tret += variableValueMenuCode(command_obj.var_attribution);\n\t\tret += ' = ';\n\t\tret += variableValueMenuCode(command_obj.expression1);\n\t}\n\tret += ' ; ';\n\n\n\tif (command_obj.expression2) {\n\t\tswitch (command_obj.expression2.expression.type) {\n\t\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\t\tret += logicExpressionCode(command_obj.expression2.expression);\n\t\t\t\tbreak;\n\t\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\t\tret += arithmeticExpressionCode(command_obj.expression2.expression);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tret += ' ; ';\n\n\tif (command_obj.var_incrementation) {\n\t\tret += variableValueMenuCode(command_obj.var_incrementation);\n\t\tret += ' = ';\n\t\tret += variableValueMenuCode(command_obj.expression3.itens[0]);\n\n\t\tswitch (command_obj.expression3.itens[1]) {\n\t\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\t\tret += ' + ';\n\t\t\t\tbreak;\n\t\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\t\tret += ' - ';\n\t\t\t\tbreak;\n\t\t\tcase Models.ARITHMETIC_TYPES.multiplication:\n\t\t\t\tret += ' * ';\n\t\t\t\tbreak;\n\t\t\tcase Models.ARITHMETIC_TYPES.division:\n\t\t\t\tret += ' / ';\n\t\t\t\tbreak;\n\t\t\tcase Models.ARITHMETIC_TYPES.module:\n\t\t\t\tret += ' % ';\n\t\t\t\tbreak;\n\t\t}\n\n\t\tret += variableValueMenuCode(command_obj.expression3.itens[2]);\t\t\n\t}\n\n\tret += ' ) { ';\n\n\tif (command_obj.commands_block) {\n\t\tfor (var i = 0; i < command_obj.commands_block.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '}';\n\treturn ret;\n}\n\nfunction iftruesCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_if');\n\n\tif (!command_obj.expression.expression) {\n\t\tUtils.renderErrorMessage(command_obj.expression.dom_object, LocalizedStrings.getUI('inform_valid_expression'));\n\t}\n\n\tswitch (command_obj.expression.expression.type) {\n\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\tret += logicExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\tret += arithmeticExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t}\n\n\tret += ' { ';\n\n\tif (command_obj.commands_block) {\n\t\tfor (var i = 0; i < command_obj.commands_block.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '} ' + LocalizedStrings.getUI('text_else') + ' {';\n\n\tif (command_obj.commands_else) {\n\t\tfor (var i = 0; i < command_obj.commands_else.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_else[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '}';\n\n\treturn ret;\n}\n\n\nfunction doWhilesCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_code_do') + ' { ';\n\n\tif (command_obj.commands_block) {\n\t\tfor (var i = 0; i < command_obj.commands_block.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '} ' + LocalizedStrings.getUI('text_code_while');\n\n\tif (!command_obj.expression.expression) {\n\t\tUtils.renderErrorMessage(command_obj.expression.dom_object, LocalizedStrings.getUI('inform_valid_expression'));\n\t}\n\n\tswitch (command_obj.expression.expression.type) {\n\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\tret += logicExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\tret += arithmeticExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t}\n\n\treturn ret;\n}\n\n\nfunction whiletruesCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_code_while');\n\n\tif (!command_obj.expression.expression) {\n\t\tUtils.renderErrorMessage(command_obj.expression.dom_object, LocalizedStrings.getUI('inform_valid_expression'));\n\t}\n\n\tswitch (command_obj.expression.expression.type) {\n\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\tret += logicExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\tret += arithmeticExpressionCode(command_obj.expression.expression);\n\t\t\tbreak;\n\t}\n\n\tret += ' { ';\n\n\tif (command_obj.commands_block) {\n\t\tfor (var i = 0; i < command_obj.commands_block.length; i++) {\n\t\t\tret += commandsCode(command_obj.commands_block[i], (indentation + 1));\n\t\t}\n\t}\n\n\tret += '\\n';\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '}';\n\n\treturn ret;\n}\n\nfunction logicExpressionCode (expression) {\n\tvar ret = ' ( ';\n\n\tif (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\tret += logicExpressionCode(expression.first_operand);\n\t} else if (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\tret += arithmeticExpressionCode(expression.first_operand);\n\t} else {\n\t\tret += variableValueMenuCode(expression.first_operand);\n\t}\n\n\tif (expression.operator) {\n\t\tswitch (expression.operator) {\n\t case Models.LOGIC_COMPARISON.equals_to:\n\t \tret += ' == ';\n\t \tbreak;\n\t case Models.LOGIC_COMPARISON.not_equals_to:\n\t \tret += ' != ';\n\t \tbreak;\n\t case Models.LOGIC_COMPARISON.and:\n\t \tret += ' && ';\n\t \tbreak;\n\t case Models.LOGIC_COMPARISON.or:\n\t \tret += ' || ';\n\t \tbreak;\n\t\t}\n\n\t\tif (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\t\tret += logicExpressionCode(expression.second_operand);\n\t\t} else if (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\t\tret += arithmeticExpressionCode(expression.second_operand);\n\t\t} else {\n\t\t\tret += variableValueMenuCode(expression.second_operand);\n\t\t}\n\n\t}\n\n\tret += ' ) ';\n\n\treturn ret;\n}\n\nfunction arithmeticExpressionCode (expression) {\n\tvar ret = ' ( ';\n\n\tif (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\tret += logicExpressionCode(expression.first_operand);\n\t} else if (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\tret += arithmeticExpressionCode(expression.first_operand);\n\t} else {\n\t\tret += variableValueMenuCode(expression.first_operand);\n\t}\n\n\tswitch (expression.operator) {\n case Models.ARITHMETIC_COMPARISON.greater_than:\n \tret += ' > ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.less_than:\n \tret += ' < ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.equals_to:\n \tret += ' == ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.not_equals_to:\n \tret += ' != ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to:\n \tret += ' >= ';\n \tbreak;\n case Models.ARITHMETIC_COMPARISON.less_than_or_equals_to:\n \tret += ' <= ';\n \tbreak;\n\t}\n\n\tif (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\tret += logicExpressionCode(expression.second_operand);\n\t} else if (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\tret += arithmeticExpressionCode(expression.second_operand);\n\t} else {\n\t\tret += variableValueMenuCode(expression.second_operand);\n\t}\n\n\tret += ' ) ';\n\n\treturn ret;\n}\n\nfunction attributionsCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += variableValueMenuCode(command_obj.variable) + ' = ';\n\n\t/*for (var i = 0; i < command_obj.expression.length; i++) {\n\t\tret += elementExpressionCode(command_obj.expression[i]);\n\t}*/\n\tret += elementExpressionCode(command_obj.expression);\n\n\treturn ret;\n}\n\nfunction elementExpressionCode (expression_obj) {\n\n\tvar ret = ''; \n\n\tfor (var i = 0; i < expression_obj.length; i++) {\n\n\n\t\tif (expression_obj[i].type) {\n\n\t\t\tret += variableValueMenuCode(expression_obj[i]);\n\n\t\t} else if (expression_obj[i].type_op) {\n\n\t\t\tswitch(expression_obj[i].item) {\n\n\t\t\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\t\t\tret += ' + ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\t\t\tret += ' - ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.multiplication:\n\t\t\t\t\tret += ' * ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.division:\n\t\t\t\t\tret += ' / ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.module:\n\t\t\t\t\tret += ' % ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.LOGIC_COMPARISON.equals_to:\n\t\t\t\t\tret += ' == ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.LOGIC_COMPARISON.not_equals_to:\n\t\t\t\t\tret += ' != ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.LOGIC_COMPARISON.and:\n\t\t\t\t\tret += ' ' + LocalizedStrings.getUI('and') + ' ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.LOGIC_COMPARISON.or:\n\t\t\t\t\tret += ' ' + LocalizedStrings.getUI('or') + ' ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.LOGIC_COMPARISON.not:\n\t\t\t\t\tret += ' ' + LocalizedStrings.getUI('not') + ' ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.ARITHMETIC_COMPARISON.greater_than:\n\t\t\t\t\tret += ' > ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.ARITHMETIC_COMPARISON.less_than:\n\t\t\t\t\tret += ' < ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to:\n\t\t\t\t\tret += ' >= ';\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.ARITHMETIC_COMPARISON.less_than_or_equals_to:\n\t\t\t\t\tret += ' <= ';\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tret += ' ' + expression_obj[i] + ' ';\n\t\t\t\n\t\t}\n\n\t}\n\n\treturn ret;\n\n}\n\nfunction functioncallsCode (command_obj, indentation) {\n\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\t\n\tret += variableValueMenuCode(command_obj.function_called);\n\n\treturn ret;\n}\n\nfunction readersCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\t\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += LocalizedStrings.getUI('text_command_read') + ' ( ';\n\n\tret += variableValueMenuCode(command_obj.variable_value_menu);\n\n\tret += ' ) ';\n\treturn ret;\n}\n\nfunction variableValueMenuCode (variable_obj, is_return = false) {\n\tvar ret = '';\n\ttry {\n\t\tif (variable_obj.function_called) {\n\n\t\t\tif (variable_obj.function_called.name) {\n\t\t\t\tret += variable_obj.function_called.name + ' ( ';\n\t\t\t} else {\n\t\t\t\tret += LocalizedStrings.getUI(variable_obj.function_called.category)+'.'+LocalizedStrings.getUI(variable_obj.function_called.identifier) + ' ( ';\n\t\t\t}\n\n\t\t\tif (variable_obj.parameters_list) {\n\t\t\t\tfor (var i = 0; i < variable_obj.parameters_list.length; i++) {\n\t\t\t\t\tret += variableValueMenuCode(variable_obj.parameters_list[i]);\n\t\t\t\t\tif ((i + 1) < variable_obj.parameters_list.length) {\n\t\t\t\t\t\tret += ', ';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tret += ' )';\n\t\t} else if (variable_obj.content.type) {\n\n\t\t\tret += variable_obj.content.name;\n\n\t\t\tif (variable_obj.content.dimensions == 1 && variable_obj.dimensions != 1) {\n\t\t\t\tret += ' [ ' + variableValueMenuCode(variable_obj.column) + ' ] ';\n\t\t\t}\n\n\t\t\tif (variable_obj.content.dimensions == 2 && variable_obj.dimensions != 2) {\n\t\t\t\tret += ' [ ' + variableValueMenuCode(variable_obj.row) + ' ] ';\n\t\t\t\tret += ' [ ' + variableValueMenuCode(variable_obj.column) + ' ] ';\n\t\t\t}\n\n\n\t\t} else {\n\t\t\tif (isNaN(variable_obj.content)) {\n\t\t\t\tret += '\"' + variable_obj.content + '\"';\n\t\t\t} else {\n\t\t\t\tret += variable_obj.content;\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\n\t\tif (!is_return) {\n\t\t\tUtils.renderErrorMessage(variable_obj.dom_object, LocalizedStrings.getUI('inform_valid_content'));\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\treturn ret;\n\n}\n\nfunction writersCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\t\n\tret += LocalizedStrings.getUI('text_command_write') + ' ( ';\n\n\tfor (var i = 0; i < command_obj.content.length; i++) {\n\t\tret += variableValueMenuCode(command_obj.content[i]);\n\n\t\tif ((i + 1) < command_obj.content.length) {\n\t\t\tret += ' + ';\n\t\t}\n\t}\n\n\tret += ' ) ';\n\treturn ret;\n}\n\nfunction commentsCode (command_obj, indentation) {\n\tvar ret = '\\n';\n\n\tfor (var i = 0; i < indentation; i++) {\n\t\tret += '\\t';\n\t}\n\n\tret += '// ';\n\n\tret += command_obj.comment_text.content;\n\treturn ret;\n}\n\nfunction parametersCode (parameter_obj) {\n\tvar ret = '';\n\tswitch (parameter_obj.type) {\n\t\tcase Types.INTEGER:\n\t\t\tret += ' '+LocalizedStrings.getUI('integer')+' ';\n\t\t\tbreak;\n\t\tcase Types.REAL:\n\t\t\tret += ' '+LocalizedStrings.getUI('real')+' ';\n\t\t\tbreak;\n\t\tcase Types.TEXT:\n\t\t\tret += ' '+LocalizedStrings.getUI('text')+' ';\n\t\t\tbreak;\n\t\tcase Types.BOOLEAN:\n\t\t\tret += ' '+LocalizedStrings.getUI('boolean')+' ';\n\t\t\tbreak;\n\t}\n\tret += parameter_obj.name + '';\n\n\tif (parameter_obj.dimensions == 1) {\n\t\tret += ' []'\n\t} else if (parameter_obj.dimensions == 2) {\n\t\tret += ' [][]'\n\t}\n\treturn ret;\n}\n\nfunction variablesCode (variable_obj) {\n\tvar ret = '';\n\n\tvar temp = variable_obj;\n\n\tret += '\\n\\t\\t';\n\n\tif (temp.is_constant) {\n\t\tret += 'const ';\n\t}\n\tswitch (temp.type) {\n\t\tcase Types.INTEGER:\n\t\t\tret += LocalizedStrings.getUI('integer')+' ';\n\t\t\tbreak;\n\t\tcase Types.REAL:\n\t\t\tret += LocalizedStrings.getUI('real')+' ';\n\t\t\tbreak;\n\t\tcase Types.TEXT:\n\t\t\tret += LocalizedStrings.getUI('text')+' ';\n\t\t\tbreak;\n\t\tcase Types.BOOLEAN:\n\t\t\tret += LocalizedStrings.getUI('boolean')+' ';\n\t\t\tbreak;\n\t}\n\tret += temp.name + ' ';\n\n\tif (temp.dimensions == 1) {\n\t\tret += '[' + temp.columns + '] ';\n\n\t\tswitch (temp.type) {\n\t\t\tcase Types.INTEGER:\n\t\t\t\tret += '= {' + temp.value + '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.REAL:\n\t\t\t\tret += '= {' + temp.value.toFixed(2) + '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.TEXT:\n\t\t\t\tret += '= {';\n\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\tret += '\"'+temp.value[j]+'\"';\n\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\tret += ',';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.BOOLEAN:\n\t\t\t\tret += '= {';\n\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\tif (temp.value[j]) {\n\t\t\t\t\t\tret += LocalizedStrings.getUI(\"true\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret += LocalizedStrings.getUI(\"false\");\n\t\t\t\t\t}\n\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\tret += ',';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t}\n\n\t} else if (temp.dimensions == 2) {\n\t\tret += '[' + temp.rows + '][' + temp.columns + '] ';\n\n\t\tswitch (temp.type) {\n\t\t\tcase Types.INTEGER:\n\t\t\t\tret += '= {';\n\n\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\tret += '{' + temp.value[j] + '}';\n\n\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\tret += ',';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.REAL:\n\t\t\t\tret += '= {';\n\n\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\tret += '{' + temp.value[j].toFixed(2) + '}';\n\n\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\tret += ',';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.TEXT:\n\t\t\t\tret += '= {';\n\n\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\tret += '{';\n\n\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\tret += '\"' + temp.value[j][k] + '\"';\n\n\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tret += '}';\n\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\tret += ',';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t\tcase Types.BOOLEAN:\n\t\t\t\tret += '= {';\n\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\tret += '{';\n\n\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (temp.value[j][k]) {\n\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"true\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"false\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tret += '}';\n\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\tret += ',';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tret += '}';\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\n\t\tswitch (temp.type) {\n\t\t\tcase Types.INTEGER:\n\t\t\t\tret += '= ' + temp.value;\n\t\t\t\tbreak;\n\t\t\tcase Types.REAL:\n\t\t\t\tret += '= ' + temp.value.toFixed(2);\n\t\t\t\tbreak;\n\t\t\tcase Types.TEXT:\n\t\t\t\tret += '= \"' + temp.value + '\"';\n\t\t\t\tbreak;\n\t\t\tcase Types.BOOLEAN:\n\t\t\t\tret += '= ';\n\t\t\t\tif (temp.value) {\n\t\t\t\t\tret += LocalizedStrings.getUI(\"true\");\n\t\t\t\t} else {\n\t\t\t\t\tret += LocalizedStrings.getUI(\"false\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t}\n\n\treturn ret;\n\n}\n\nfunction globalsCode () {\n\tvar ret = '';\n\n\tif (window.program_obj.globals) {\n\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\tvar temp = window.program_obj.globals[i];\n\n\t\t\tret += '\\n\\t';\n\n\t\t\tif (temp.is_constant) {\n\t\t\t\tret += 'const ';\n\t\t\t}\n\t\t\tswitch (temp.type) {\n\t\t\t\tcase Types.INTEGER:\n\t\t\t\t\tret += LocalizedStrings.getUI('integer');\n\t\t\t\t\tbreak;\n\t\t\t\tcase Types.REAL:\n\t\t\t\t\tret += LocalizedStrings.getUI('real');\n\t\t\t\t\tbreak;\n\t\t\t\tcase Types.TEXT:\n\t\t\t\t\tret += LocalizedStrings.getUI('text');\n\t\t\t\t\tbreak;\n\t\t\t\tcase Types.BOOLEAN:\n\t\t\t\t\tret += LocalizedStrings.getUI('boolean');\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tret += ' ' + temp.name + ' ';\n\n\t\t\tif (temp.dimensions == 1) {\n\t\t\t\tret += '[' + temp.columns + '] ';\n\n\t\t\t\tswitch (temp.type) {\n\t\t\t\t\tcase Types.INTEGER:\n\t\t\t\t\t\tret += '= {' + temp.value + '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.REAL:\n\t\t\t\t\t\tret += '= {';\n\t\t\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\t\t\tret += temp.value[j].toFixed(2);\n\t\t\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.TEXT:\n\t\t\t\t\t\tret += '= {';\n\t\t\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\t\t\tret += '\"'+temp.value[j]+'\"';\n\t\t\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.BOOLEAN:\n\t\t\t\t\t\tret += '= {';\n\t\t\t\t\t\tfor (var j = 0; j < temp.value.length; j++) {\n\t\t\t\t\t\t\tif (temp.value[j]) {\n\t\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"true\");\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"false\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ((j + 1) < temp.value.length) {\n\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t} else if (temp.dimensions == 2) {\n\t\t\t\tret += '[' + temp.rows + '][' + temp.columns + '] ';\n\n\t\t\t\tswitch (temp.type) {\n\t\t\t\t\tcase Types.INTEGER:\n\t\t\t\t\t\tret += '= {';\n\n\t\t\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\t\t\tret += '{' + temp.value[j] + '}';\n\n\t\t\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.REAL:\n\t\t\t\t\t\tret += '= {';\n\n\t\t\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\t\t\tret += '{';\n\n\t\t\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\t\t\tret += temp.value[j][k].toFixed(2);\n\n\t\t\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.TEXT:\n\t\t\t\t\t\tret += '= {';\n\n\t\t\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\t\t\tret += '{';\n\n\t\t\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\t\t\tret += '\"' + temp.value[j][k] + '\"';\n\n\t\t\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.BOOLEAN:\n\t\t\t\t\t\tret += '= {';\n\t\t\t\t\t\tfor (var j = 0; j < temp.rows; j++) {\n\t\t\t\t\t\t\tret += '{';\n\n\t\t\t\t\t\t\tfor (var k = 0; k < temp.columns; k++) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tif (temp.value[j][k]) {\n\t\t\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"true\");\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"false\");\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif ((k + 1) < temp.columns) {\n\t\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\t\tif ((j + 1) < temp.rows) {\n\t\t\t\t\t\t\t\tret += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tret += '}';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tswitch (temp.type) {\n\t\t\t\t\tcase Types.INTEGER:\n\t\t\t\t\t\tret += '= ' + temp.value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.REAL:\n\t\t\t\t\t\tret += '= ' + temp.value.toFixed(2);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.TEXT:\n\t\t\t\t\t\tret += '= \"' + temp.value + '\"';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Types.BOOLEAN:\n\t\t\t\t\t\tret += '= ';\n\t\t\t\t\t\tif (temp.value) {\n\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"true\");;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tret += LocalizedStrings.getUI(\"false\");;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t\n\n\t\t}\n\t}\n\n\treturn ret;\n}","import $ from 'jquery';\nimport { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as GlobalsManagement from './globals';\nimport * as VariablesManagement from './variables';\nimport * as CommentsManagement from './commands/comment';\nimport * as ReadersManagement from './commands/reader';\nimport * as WritersManagement from './commands/writer';\nimport * as AttributionsManagement from './commands/attribution';\nimport * as IftruesManagement from './commands/iftrue';\nimport * as RepeatNtimesManagement from './commands/repeatNtimes';\nimport * as WhiletruesManagement from './commands/whiletrue';\nimport * as DowhiletruesManagement from './commands/dowhiletrue';\nimport * as SwitchesManagement from './commands/switch';\nimport * as FunctioncallsManagement from './commands/functioncall';\nimport * as VariableValueMenuManagement from './commands/variable_value_menu';\nimport * as BreaksManagement from './commands/break';\nimport * as ReturnsManagement from './commands/return';\n\nvar has_element_created_draged = false;\nvar which_element_is_draged = null;\n\nexport function removeCommand (command, function_obj, dom_obj) {\n\tif (function_obj.commands.indexOf(command) > -1) {\n\t\tfunction_obj.commands.splice(function_obj.commands.indexOf(command), 1);\n\t\treturn true;\n\t}\n\n\t// Utilize dois parantNode, pois o primeiro é o div de comandos\n\ttry {\n\t\tif (dom_obj.parent().parent().data('command').commands_block.indexOf(command) > -1) {\n\t\t\tdom_obj.parent().parent().data('command').commands_block.splice\n\t\t\t(dom_obj.parent().parent().data('command').commands_block.indexOf(command), 1);\n\t\t\treturn true;\n\t\t}\t\n\t} catch (err) {}\n\t\n\ttry {\n\t\tif (dom_obj.parent().parent().data('command').type == Models.COMMAND_TYPES.iftrue) {\n\t\t\tif (dom_obj.parent().parent().data('command').commands_else.indexOf(command) > -1) {\n\t\t\t\tdom_obj.parent().parent().data('command').commands_else.splice\n\t\t\t\t(dom_obj.parent().parent().data('command').commands_else.indexOf(command), 1);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t} catch (err) {}\n\n\tif (dom_obj.parent().data('switchcase')) {\n\t\tconsole.log(\"o que encontrei: \");\n\t\tconsole.log(dom_obj.parent().data('switchcase'));\n\t\tdom_obj.parent().data('switchcase').commands_block.splice(dom_obj.parent().data('switchcase').commands_block.indexOf(command), 1);\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nwindow.function_container_active = null;\n\nexport function createFloatingCommand (function_obj, function_container, command_type, mouse_event) {\n\n\tvar floatingObject;\n\n\tswitch (command_type) {\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\tfloatingObject = BreaksManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\tfloatingObject = CommentsManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\tfloatingObject = ReadersManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\tfloatingObject = WritersManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\tfloatingObject = AttributionsManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\tfloatingObject = IftruesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\tfloatingObject = RepeatNtimesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\tfloatingObject = WhiletruesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\tfloatingObject = DowhiletruesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\t\tfloatingObject = SwitchesManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\tfloatingObject = FunctioncallsManagement.createFloatingCommand();\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\tfloatingObject = ReturnsManagement.createFloatingCommand();\n\t\t\tbreak;\n\t}\n\n\tfloatingObject.draggable().appendTo(\"body\");\n\n\t$('body').mouseup(function(evt) {\n\t manageCommand(function_obj, function_container, evt, command_type);\n\t $('body').off('mouseup');\n\t $('body').off('mouseover');\n\t});\n\n\tif (!function_container.hasClass('function_div') || function_container.length < 1) {\n\t\twindow.mouse_event = mouse_event;\n\t\tfunction_container = $(mouse_event.originalEvent.srcElement.closest('.function_div'));\n\t}\n\n\tconsole.log('function_container', function_container);\n\n\tfunction_container_active = function_container;\n\n\tfunction_container.find('.commands_list_div').on('mousemove', function(evt) {\n\t addGhostDiv(evt);\n\t});\n\tfunction_container.find('.commands_list_div').find(\"*\").on('mousemove', function(evt) {\n\t addGhostDiv(evt);\n\t});\n\n\tfunction_container.on('mouseout', function(event) {\n\t\tvar el = $(document.elementFromPoint(event.clientX, event.clientY));\n\t\tif (el.closest('.commands_list_div').length < 1) {\n\t\t\twindow.ghostDiv.remove();\n\t\t}\n\t});\n\t\n\tfloatingObject.css(\"position\", \"absolute\");\n\tmouse_event.type = \"mousedown.draggable\";\n\tmouse_event.target = floatingObject[0];\n\tfloatingObject.css(\"left\", mouse_event.pageX - window.divx);\n\tfloatingObject.css(\"top\", mouse_event.pageY);\n\tfloatingObject.trigger(mouse_event);\n}\n\nwindow.divx = 100;\nwindow.ghostDiv = $('<div class=\"ghost_div\">');\nwindow.active_container = null;\n\nfunction addGhostToEmptyBlock (element, evt) {\n\n\t$('.ghost_div').remove();\n\n\tvar container = element.closest('.command_container');\n\n\tif (container.hasClass('switch')) {\n\t\tcontainer = $(evt.target).closest('.case_div');\t\t\n\t}\n\n\tif (!container.hasClass('dowhiletrue') && !container.hasClass('iftrue') && !container.hasClass('repeatNtimes') \n\t\t\t\t&& !container.hasClass('case_div') && !container.hasClass('whiletrue')) {\n\t\taddGhostToNotEmptyBlock(element, evt);\n\t\treturn;\n\t}\n\n\tif (window.active_container != null) {\n\t\tif (window.active_container.is(container)) {\n\t\t\tconsole.log('é o mesmo, não mudou!');\n\t\t} else {\n\t\t\tif (container.length < 1) {\n\t\t\t\tcontainer = element.closest('.commands_list_div');\n\t\t\t\tif (window.active_container.is(container)) {\n\t\t\t\t\tconsole.log('é o mesmo command list');\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('mudou para um command list');\n\t\t\t\t\twindow.active_container = container;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.log('mudou para um outro container?');\n\t\t\t}\n\t\t}\n\t}\n\n\twindow.active_container = container;\n\tif (container.hasClass('iftrue')) {\n\t\tvar containerIf = container.find('.commands_if').get(0);\n\t\tvar containerElse = container.find('.commands_else').get(0);\n\t\tvar topIfDistance = Math.abs(evt.clientY - containerIf.getBoundingClientRect().top);\n\t\tvar bottomIfDistance = Math.abs(containerIf.getBoundingClientRect().top + containerIf.getBoundingClientRect().height - evt.clientY);\n\t\tvar topElseDistance = Math.abs(evt.clientY - containerElse.getBoundingClientRect().top);\n\t\tvar bottomElseDistance = Math.abs(containerElse.getBoundingClientRect().top + containerElse.getBoundingClientRect().height - evt.clientY);\n\n\t\tif (topIfDistance < topElseDistance && topIfDistance < bottomElseDistance) {\n\t\t\t$(containerIf).append(window.ghostDiv);\n\t\t} else {\n\t\t\t$(containerElse).append(window.ghostDiv);\n\t\t}\n\t} else if (container.hasClass('case_div')) {\n\t\tcontainer.find('.case_commands_block').append(window.ghostDiv);\n\t} else {\n\t\tcontainer.find('.block_commands').append(window.ghostDiv);\n\t}\n\t\n}\n\nfunction addGhostToNotEmptyBlock (element, evt) {\n\n\t$('.ghost_div').remove();\n\n\tvar container = element.closest('.dowhiletrue, .iftrue, .repeatNtimes, .case_div, .whiletrue');\n\n\t//console.log(\"\\n\\nNOT EMPTY: \", container);\n\n\t//if (window.active_container != null) {\n\t\t\n\t\t\n\t//}\n\n\tif (container.length < 1) {\n\t\tcontainer = element.closest('.commands_list_div');\n\t\twindow.active_container = container;\n\t\taddGhostToFunctionArea(element, evt);\n\t} else {\n\t\t//console.log('mudou para um outro container?');\n\t}\n\n\twindow.active_container = container;\n\n\t// quem está mais próximo? // Essa regra se aplica somente quando o over está sobre um comando\n\tvar allfilhos;\n\tconsole.log('olha o container: ', container);\n\tif (container.hasClass('iftrue')) {\n\t\t\n\t\tif ($(evt.target).closest('.data_block_if').length > 0) {\n\t\t\tallfilhos = container.find('.commands_if').children('.command_container');\n\t\t} else if ($(evt.target).closest('.data_block_else').length > 0) {\n\t\t\tallfilhos = container.find('.commands_else').children('.command_container');\n\t\t} else {\n\n\t\t\tvar containerIf = container.find('.commands_if').get(0);\n\t\t\tvar containerElse = container.find('.commands_else').get(0);\n\t\t\tvar topIfDistance = Math.abs(evt.clientY - containerIf.getBoundingClientRect().top);\n\t\t\tvar bottomIfDistance = Math.abs(containerIf.getBoundingClientRect().top + containerIf.getBoundingClientRect().height - evt.clientY);\n\t\t\tvar topElseDistance = Math.abs(evt.clientY - containerElse.getBoundingClientRect().top);\n\t\t\tvar bottomElseDistance = Math.abs(containerElse.getBoundingClientRect().top + containerElse.getBoundingClientRect().height - evt.clientY);\n\n\t\t\tif (topIfDistance < topElseDistance && topIfDistance < bottomElseDistance) {\n\t\t\t\tallfilhos = $(containerIf).children('.command_container');\n\t\t\t} else {\n\t\t\t\tallfilhos = $(containerElse).children('.command_container');\n\t\t\t}\n\t\t}\n\t} else if (container.hasClass('case_div')) {\n\t\tallfilhos = container.children('.case_commands_block').children('.command_container');\n\t} else if (container.hasClass('commands_list_div')) {\n\t\tallfilhos = container.children('.command_container');\n\t} else {\n\t\tallfilhos = container.children('.block_commands').children('.command_container');\n\t}\n\n\tvar topDistances = [];\n\tvar bottomDistances = [];\n\n\tfor (var i = 0; i < allfilhos.length; i++) {\n\t\tvar topD = Math.abs(evt.clientY - allfilhos.get(i).getBoundingClientRect().top);\n\t\ttopDistances.push(topD);\n\t\tvar botD = Math.abs(allfilhos.get(i).getBoundingClientRect().top + allfilhos.get(i).getBoundingClientRect().height - evt.clientY);\n\t\tbottomDistances.push(botD);\n\t}\n\n\tconsole.log('topDistances\\n', topDistances, '\\nbottomDistances\\n', bottomDistances)\n\n\tvar menorTop = Math.min.apply(null, topDistances);\n\tvar indiceTop = topDistances.indexOf(menorTop);\n\n\tvar menorBot = Math.min.apply(null, bottomDistances);\n\tvar indiceBot = bottomDistances.indexOf(menorBot);\n\n\tif (menorTop < menorBot) {\n\t\twindow.ghostDiv.insertBefore($(allfilhos.get(indiceTop)));\n\t} else {\n\t\twindow.ghostDiv.insertAfter($(allfilhos.get(indiceBot)));\n\t}\n\n\tconsole.log('distancias: menorTop ', menorTop, ' menorBot ', menorBot);\n}\n\nfunction addGhostToFunctionArea (undermouse, evt) {\n\t$('.ghost_div').remove();\n\tvar allfilhos = undermouse.closest('.commands_list_div').children('.command_container');\n\n\tvar topDistances = [];\n\tvar bottomDistances = [];\n\n\tfor (var i = 0; i < allfilhos.length; i++) {\n\t\tvar topD = Math.abs(evt.clientY - allfilhos.get(i).getBoundingClientRect().top);\n\t\ttopDistances.push(topD);\n\t\tvar botD = Math.abs(allfilhos.get(i).getBoundingClientRect().top + allfilhos.get(i).getBoundingClientRect().height - evt.clientY);\n\t\tbottomDistances.push(botD);\n\t}\n\n\tvar menorTop = Math.min.apply(null, topDistances);\n\tvar indiceTop = topDistances.indexOf(menorTop);\n\n\tvar menorBot = Math.min.apply(null, bottomDistances);\n\tvar indiceBot = bottomDistances.indexOf(menorBot);\n\n\tif (menorTop < menorBot) {\n\t\twindow.ghostDiv.insertBefore($(allfilhos.get(indiceTop)));\n\t} else {\n\t\twindow.ghostDiv.insertAfter($(allfilhos.get(indiceBot)));\n\t}\n\n}\n\nfunction addGhostDiv (evt) {\n\n\tconsole.log('a');\n\n\tvar undermouse = $(evt.target);\n\n\tconsole.log('undermouse', undermouse);\n\n\tif (undermouse.hasClass('ghost_div')) {\n\t\treturn;\n\t} else if (undermouse.hasClass('commands_list_div')) {\n\t\taddGhostToFunctionArea(undermouse, evt);\n\t\treturn;\n\t} else if (undermouse.hasClass('block_commands')) {\n\t\tif (undermouse.find('.command_container').length > 0) {\n\t\t\taddGhostToNotEmptyBlock(undermouse, evt);\n\t\t} else {\n\t\t\taddGhostToEmptyBlock(undermouse, evt);\n\t\t}\n\t} else if (undermouse.hasClass('case_div')) {\n\t\tif (undermouse.find('.case_commands_block').find('.command_container').length > 0) {\n\t\t\taddGhostToNotEmptyBlock(undermouse, evt);\n\t\t} else {\n\t\t\taddGhostToEmptyBlock(undermouse, evt);\n\t\t}\n\t} else {\n\t\t\n\t\taddGhostToNotEmptyBlock(undermouse, evt);\n\t\t\n\t} \n}\n\nfunction borderMouseDragCommand (function_obj, function_container, evt) {\n\n\tfunction_container.find('.over_command_drag').each(function( index ) {\n\t\t$(this).removeClass('over_command_drag');\n\t});\n\n\tvar prev = null;\n\n\tfunction_container.find('.commands_list_div').each(function( index ) { \n\t\tprev = $(this);\n\t\tif (prev) {\n\t\t\tvar objLeft = prev.offset().left;\n\t var objTop = prev.offset().top;\n\t var objRight = objLeft + prev.width();\n\t var objBottom = objTop + prev.height();\n\t if (evt.pageX > objLeft && evt.pageX < objRight && evt.pageY > objTop && evt.pageY < objBottom) {\n\t \tprev.addClass(\"over_command_drag\"); \n\t }\n\t }\n\t});\n\n\tfunction_container.find('.command_container').each(function( index ) { \n\t\tvar obj = $(this);\n\t\tvar objLeft = obj.offset().left;\n var objTop = obj.offset().top;\n var objRight = objLeft + obj.width();\n var objBottom = objTop + obj.height();\n if (evt.pageX > objLeft && evt.pageX < objRight && evt.pageY > objTop && evt.pageY < objBottom) {\n \tif (prev) {\n \t\tprev.removeClass('over_command_drag');\n \t}\n \tobj.addClass(\"over_command_drag\"); \n \treturn;\n }\n\t});\n}\n\n// before_after_inside: 1 -> before, 2 -> after, 3 -> inside\nexport function renderCommand (command, element_reference, before_after_inside, function_obj) {\n\tvar createdElement;\n\tswitch (command.type) {\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\tcreatedElement = CommentsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\tcreatedElement = BreaksManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\tcreatedElement = ReadersManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\tcreatedElement = WritersManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\tcreatedElement = AttributionsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\tcreatedElement = FunctioncallsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\tcreatedElement = IftruesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\tcreatedElement = RepeatNtimesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\tcreatedElement = WhiletruesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\tcreatedElement = DowhiletruesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\t\tcreatedElement = SwitchesManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\tcreatedElement = ReturnsManagement.renderCommand(command, function_obj);\n\t\t\tbreak;\n\t}\n\tswitch (before_after_inside) {\n\t\tcase 1:\n\t\t\tcreatedElement.insertBefore(element_reference);\n\t\t\tbreak;\n\n\t\tcase 2:\n\t\t\tcreatedElement.insertAfter(element_reference);\n\t\t\tbreak;\n\n\t\tcase 3: \n\t\t\telement_reference.append(createdElement);\n\t\t\tbreak;\n\t}\n\n}\n\nexport function genericCreateCommand (command_type) {\n\n\tswitch (command_type) {\n\n\t\tcase Models.COMMAND_TYPES.break:\n\t\t\treturn new Models.Break();\n\n\t\tcase Models.COMMAND_TYPES.comment:\n\t\t\treturn new Models.Comment(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_value, LocalizedStrings.getUI('text_comment'), null, null, false));\n\n\t\tcase Models.COMMAND_TYPES.reader:\n\t\t\treturn new Models.Reader(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false));\n\n\t\tcase Models.COMMAND_TYPES.writer:\n\t\t\treturn new Models.Writer([new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\tcase Models.COMMAND_TYPES.attribution:\n\t\t\treturn new Models.Attribution(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false), \n\t\t\t\t[]);\n\n\t\tcase Models.COMMAND_TYPES.functioncall:\n\t\t\treturn new Models.FunctionCall(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_function, null, null, null, false), null);\n\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\t\treturn new Models.IfTrue(new Models.ConditionalExpression(null), null, null);\n\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\t\treturn new Models.RepeatNTimes(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false), \n\t\t\t\t\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.only_variable, null, null, null, false),\n\t\t\t\t\t\t\t\t\t\t null, new Models.ConditionalExpression(null), null, null);\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\treturn new Models.WhileTrue(new Models.ConditionalExpression(null), null);\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\treturn new Models.DoWhileTrue(new Models.ConditionalExpression(null), null);\n\n\t\tcase Models.COMMAND_TYPES.switch:\n\n\t\t\tvar sc = [new Models.SwitchCase(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true))];\n\n\t\t\treturn new Models.Switch(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true), sc);\n\n\t\tcase Models.COMMAND_TYPES.return:\n\t\t\treturn new Models.Return(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\t}\n}\n\nfunction dragTrash (event) {\n\n\t$('.ghost_div').remove();\n\n\tvar trash = $('<i class=\"ui icon trash alternate outline\"></i>');\n\t$('body').append(trash);\n\ttrash.css('position', 'absolute');\n\ttrash.css('top', event.clientY);\n\ttrash.css('left', event.clientX - 20);\n\ttrash.css('font-size', '3em');\n\ttrash.css('display', 'none');\n\n\tfunction_container_active.find('.commands_list_div').off('mousemove');\n\tfunction_container_active.find('.commands_list_div').find(\"*\").off('mousemove');\n\n\ttrash.fadeIn( 200, function() {\n\t\ttrash.fadeOut( 200, function() {\n\t\t\ttrash.remove();\n\t\t} );\n });\n}\n\nfunction manageCommand (function_obj, function_container, event, command_type) {\n\n\t$( \".created_element\" ).each(function( index ) { \n\t\t$(this).remove();\n\t});\n\n\tvar el = $(document.elementFromPoint(event.clientX, event.clientY));\n\n\tif (el.hasClass('ghost_div')) {\n\t\tif (el.closest('.command_container').length < 1) {\n\t\t\t\n\n\t\t\tconsole.log('\\n\\nvou tentar!!!!');\n\n\t\t\tconsole.log(el.closest('.commands_list_div'), '\\n\\n');\n\n\t\t\tel.closest('.commands_list_div').css('height', el.closest('.commands_list_div').css('height') + 30);\n\t\t\t\n\t\t\t//$('.ghost_div').remove();\n\n\t\t\tel = el.closest('.commands_list_div');\n\t\t}\n\t}\n\n\tconsole.log('soltou no: ');\n\tconsole.log(el);\n\tconsole.log(el.data('fun'));\n\n\t// Primeiro verificar se ele soltou no espaço da função correta:\n\tvar hier = el.parentsUntil(\".all_functions\");\n\tvar esta_correto = false;\n\tvar esta_na_div_correta = false;\n\tif (el.hasClass(\"commands_list_div\")) {\n\t\testa_na_div_correta = true;\n\t} \n\tfor (var i = 0; i < hier.length; i++) {\n\t\tvar temp = $(hier[i]);\n\t\tif (temp.hasClass(\"commands_list_div\")) {\n\t\t\testa_na_div_correta = true;\n\t\t} \n\t\tif (temp.data('fun') == function_obj) {\n\t\t\testa_correto = true;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!esta_correto) {\n\t\thas_element_created_draged = false;\n\t\twhich_element_is_draged = null;\n\t\tdragTrash(event);\n\t\treturn;\n\t} else {\n\t\tif (!esta_na_div_correta) {\n\t\t\thas_element_created_draged = false;\n\t\t\twhich_element_is_draged = null;\n\t\t\tdragTrash(event);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Agora é descobrir qual o escopo para adicionar o comando:\n\n\t// Se o elemento clicado possuir o atributo \"fun\", então, é direto na div dos comandos:\n\tif (typeof el.data('fun') !== 'undefined') {\n\n\t\t// Se a lista de comandos estiver vazia, então é o primeiro.\n\t\t// Portanto, ele deve soltar o elemento obrigatoriamente no objeto vazio\n\t\tif ((el.data('fun').commands == null) || (el.data('fun').commands.length == 0)) {\n\t\t\t\t// pode adicionar \n\t\t\t\tel.data('fun').commands = [];\n\n\t\t\t\tvar new_cmd = genericCreateCommand(command_type);\n\n\t\t\t\tel.data('fun').commands.push(new_cmd);\n\n\t\t\t\trenderCommand(new_cmd, $(function_container).find('.commands_list_div'), 3, function_obj);\n\t\t\t\n\t\t} else { // Entra nesse else, caso já existam outros comandos no bloco:\n\n\t\t\tfindNearbyCommandToAddInFunctionScope(el, event, $(function_container).find('.commands_list_div'), function_obj, command_type);\n\t\t}\n\n\t} else {\n\t\tconsole.log(\"soltou em um comando\");\n\t\t// descobrir em qual comando ele soltou: \n\t\tvar hier_find = el.parentsUntil(\".commands_list_div\");\n\t\tvar hierarquia_bottom_up = [];\n\t\tif (typeof el.data('command') !== 'undefined') {\n\t\t\thierarquia_bottom_up.push(el.data('command'));\n\t\t}\n\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\tif (typeof $(hier_find[i]).data('command') !== 'undefined') {\n\t\t\t\thierarquia_bottom_up.push($(hier_find[i]).data('command'));\n\t\t\t}\n\t\t}\n\t\tconsole.log(\"comando em que soltou: \");\n\t\tconsole.log(hierarquia_bottom_up[0]);\n\t\tconsole.log(\"hierarquia de baixo para cima na árvore, de onde ele soltou: \");\n\t\tfor (var i = 0; i < hierarquia_bottom_up.length; i++) {\n\t\t\tconsole.log(hierarquia_bottom_up[i]);\n\t\t}\n\n\t\t// Se for do tipo break, verificar se está no contexto correto: \n\t\t// Caso não esteja no contexto, apenas retorna sem dar continuidade:\n\t\tvar is_correct_context = false;\n\t\tif (command_type == Models.COMMAND_TYPES.break) {\n\t\t\tfor (var i = 0; i < hierarquia_bottom_up.length; i++) {\n\t\t\t\tif ((hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.repeatNtimes)\n\t\t\t\t\t|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.whiletrue)\n\t\t\t\t\t|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.dowhiletrue)\n\t\t\t\t\t|| (hierarquia_bottom_up[i].type == Models.COMMAND_TYPES.switch)) {\n\n\t\t\t\t\tis_correct_context = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!is_correct_context) {\n\t\t\t\tconsole.error(\"Context not allowed to insert BREAK COMMAND!\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// se a hierarquia possuir apenas um elemento, então está na raiz dos comandos: \n\t\tif (hierarquia_bottom_up.length == 1) {\n\t\t\tconsole.log('QQ1');\n\t\t\tvar sub_elemento = false;\n\t\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\t\tif (typeof $(hier_find[i]).data('command') !== 'undefined') {\n\t\t\t\t\tconsole.log('QQ2');\n\t\t\t\t\tfindBeforeOrAfterCommandToAdd(hier_find[i], event, function_obj, command_type);\n\t\t\t\t\tsub_elemento = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!sub_elemento) {\n\t\t\t\tconsole.log('QQ3');\n\t\t\t\tfindBeforeOrAfterCommandToAdd(el[0], event, function_obj, command_type);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log('QQ4');\n\t\t\t// caso exista mais de um elemento na hierarquia:\n\t\t\tif (typeof $(el).data('command') !== 'undefined') {\n\t\t\t\tconsole.log('QQ5');\n\t\t\t\tconsole.log(\"PPP1\");\n\t\t\t\tinsertCommandInBlockHierar(el[0], event, function_obj, command_type, hier_find, hierarquia_bottom_up);\n\t\t\t} else {\n\t\t\t\tconsole.log('QQ6');\n\t\t\t\tvar sub_elemento = false;\n\t\t\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\t\t\tif (typeof $(hier_find[i]).data('command') !== 'undefined') {\n\t\t\t\t\t\tconsole.log('QQ7');\n\t\t\t\t\t\tinsertCommandInBlockHierar(hier_find[i], event, function_obj, command_type, hier_find, hierarquia_bottom_up);\n\t\t\t\t\t\tsub_elemento = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t}\n\t\n\thas_element_created_draged = false;\n\twhich_element_is_draged = null;\n\n\trenderAlgorithm();\n}\n\nfunction insertCommandInBlockHierar (el, event, function_obj, command_type, hier_dom, hier_obj) {\n\tvar el_jq = $(el);\n\tvar command_parent = el_jq.data('command');\n\t\n\tif ((el_jq.data('command').type == Models.COMMAND_TYPES.repeatNtimes) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.whiletrue) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.dowhiletrue) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.switch) ) {\n\n\t\tconsole.log('QQ17');\n\n\t\tif ((el_jq.data('command').type == Models.COMMAND_TYPES.repeatNtimes) ||\n\t\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.whiletrue) ||\n\t\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.dowhiletrue) ) {\n\n\t\t\tconsole.log('QQ18');\n\n\t\t\t// Se não tiver outro comando ainda no bloco, só adiciona: \n\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\tcommand_parent.commands_block = [];\n\n\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\t\trenderCommand(recentComand, el_jq.find('.block_commands'), 3, function_obj);\n\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\tfindNearbyCommandToAddInBlockScope(el, event, el, function_obj, command_type, command_parent);\n\t\t\t}\n\n\t\t} else {\n\t\t\t// QUANDO FOR BLOCO DO TIPO IF OU SWITCH/CASE:\n\t\t\taddCommandToSwitchCase(event, function_obj, command_type);\n\t\t}\n\n\t} else {\n\t\tconsole.log('QQ19');\n\t\t// entra neste bloco, se soltou o comando sobre outro comando dentro de um subbloco:\n\t\tfindBeforeOrAfterCommandToAddInsertBlock(el, event, function_obj, command_type);\n\t}\n}\n\nfunction findNearbyCommandToAddInBlockScope (el, event, node_list_commands, function_obj, command_type, command_parent) {\n\n\tvar all_sub = $(node_list_commands).find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\t\tcommand_parent.commands_block.push(recentComand);\n\t\t//\n\t\trenderCommand(recentComand, node_list_commands, 3, function_obj);\n\n\t} else {\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = command_parent.commands_block.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\tif (index > -1) {\n\t\t command_parent.commands_block.splice(index, 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t}\n}\n\nfunction findBeforeOrAfterCommandToAddInsertBlock (el, event, function_obj, command_type) {\n\n\tvar el_jq = $(el);\n\tvar command_parent = $(el.parentNode.parentNode).data('command');\n\tvar command_target = el_jq.data('command');\n\tvar temp_parent = $(el.parentNode.parentNode);\n\n\tvar is_in_else = false;\n\n\tif (!command_parent) {\n\t\tcommand_parent = el_jq.data('command');\n\t\ttemp_parent = el_jq;\n\t\tvar hier = el_jq.parentsUntil(\".command_container\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tvar temp = $(hier[i]);\n\t\t\tif (typeof temp.data('else') != 'undefined') {\n\t\t\t\tis_in_else = true;\n\t\t\t}\n\t\t\tif (typeof temp.data('command') != 'undefined') {\n\t\t\t\tcommand_parent = temp.data('command');\n\t\t\t\ttemp_parent = temp;\n\t\t\t}\n\t\t}\n\t}\n\n\n\tvar hier = el_jq.parentsUntil(\".command_container\");\n\tfor (var i = 0; i < hier.length; i++) {\n\t\tvar temp = $(hier[i]);\n\t\tif (typeof temp.data('else') != 'undefined') {\n\t\t\tis_in_else = true;\n\t\t}\n\t}\n\n\tif (command_parent == command_target) {\n\t\tvar hier = el_jq.parentsUntil(\".command_container\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tvar temp = $(hier[i]);\n\t\t\tif (typeof temp.data('else') !== 'undefined') {\n\t\t\t\tis_in_else = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ((command_parent.type != Models.COMMAND_TYPES.iftrue) && (command_parent.type != Models.COMMAND_TYPES.switch)) {\n\t\tvar hier = temp_parent.parentsUntil(\".all_cases_div\");\n\t\tconsole.log(\"vou procurar!!\");\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tconsole.log(\"estou vasculhando...\");\n\t\t\tvar temp = $(hier[i]);\n\t\t\tif (typeof temp.data('switchcase') !== 'undefined') {\n\t\t\t\tconsole.log(\"encontrei\");\n\t\t\t\tcommand_parent = temp.data('switchcase');\n\t\t\t\tis_in_else = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tconsole.log('debugging:');\n\tconsole.log('el_jq');\n\tconsole.log(el_jq);\n\tconsole.log('command_parent');\n\tconsole.log(command_parent);\n\tconsole.log('command_target');\n\tconsole.log(command_target);\n\n\tvar menor_distancia = 999999999;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\tt_top = el.getBoundingClientRect().top;\n\tt_bot = el.getBoundingClientRect().top + el.getBoundingClientRect().height;\n\n\tvar d_top = event.clientY - t_top; // distancia topo\n\tvar d_bot = t_bot - event.clientY; // distancia baixo\n\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\n\tif (d_top < d_bot) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tconsole.log('MMM1');\n\n\t\tif (is_in_else) {\n\n\t\t\tconsole.log('MMM2');\n\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tconsole.log('MMM3');\n\t\t\t\tif (command_parent.commands_else == null || command_parent.commands_else.length == 0) {\n\t\t\t\t\tcommand_parent.commands_else = [];\n\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_else.push(recentComand);\n\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type, true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconsole.log('MMM7');\n\t\t\tvar index = command_parent.commands_else.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_else.splice(index, 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 1, function_obj);\n\t\t} else {\n\t\t\tconsole.log('MMM4');\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tconsole.log('Nxxxx5');\n\t\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\t\tcommand_parent.commands_block = [];\n\t\t\t\t\tconsole.log('SSS4');\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('SSS5');\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconsole.log('MMM6');\n\n\t\t\tvar index = command_parent.commands_block.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_block.splice(index, 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 1, function_obj);\n\t\t}\n\n\t\t\n\n\t} else {\n\t\tconsole.log('XXX1');\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tif (is_in_else) {\n\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tconsole.log('MMM3');\n\t\t\t\tif (command_parent.commands_else == null || command_parent.commands_else.length == 0) {\n\t\t\t\t\tcommand_parent.commands_else = [];\n\t\t\t\t\tconsole.log('SSS1');\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_else.push(recentComand);\n\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\t\tconsole.log('SSS2');\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type, true);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconsole.log('XXX2');\n\t\t\tvar index = command_parent.commands_else.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_else.splice((index + 1), 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 2, function_obj);\n\n\t\t} else {\n\n\t\t\tif (command_parent == command_target) {\n\t\t\t\tconsole.log('Nxxxx78');\n\t\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\t\tcommand_parent.commands_block = [];\n\n\t\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\t\t\t\t\tconsole.log('SSS6');\n\t\t\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('SSS7');\n\t\t\t\t\tfindInBlockCorrectPlace(el_jq, event, function_obj, command_type);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconsole.log('XXX3');\n\t\t\tvar index = command_parent.commands_block.indexOf(command_target);\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_block.splice((index + 1), 0, recentComand);\n\t\t\t}\n\n\t\t\trenderCommand(recentComand, el, 2, function_obj);\n\t\t}\n\n\t\t\n\t}\n}\n\nfunction insertCommandInBlock (el, event, function_obj, command_type) {\n\tvar el_jq = $(el);\n\tvar command_parent = el_jq.data('command');\n\n\tif ((el_jq.data('command').type == Models.COMMAND_TYPES.repeatNtimes) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.whiletrue) ||\n\t\t(el_jq.data('command').type == Models.COMMAND_TYPES.dowhiletrue) ) {\n\n\t\t// Se não tiver outro comando ainda no bloco, só adiciona: \n\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\tcommand_parent.commands_block = [];\n\n\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\trenderCommand(recentComand, el_jq.find('.block_commands'), 3, function_obj);\n\t\t} else { // Se já tem algum comando no bloco:\n\t\t\tfindInBlockCorrectPlace(el, event, function_obj, command_type);\n\t\t}\n\n\t} else if (el_jq.data('command').type == Models.COMMAND_TYPES.iftrue) {\n\n\t\tconsole.log('QQ9');\n\t\t\n\t\t// no if ou no else?\n\t\tvar correct_div = $(document.elementFromPoint(event.pageX, event.pageY));\n\t\tvar is_in_if = true;\n\t\tif (correct_div.data('if')) {\n\t\t\tis_in_if = true;\n\t\t} else if (correct_div.data('else')) {\n\t\t\tis_in_if = false;\n\t\t} else {\n\t\t\tvar hier = correct_div.parentsUntil(\".command_container\");\n\t\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\t\tvar temp = $(hier[i]);\n\t\t\t\tif (typeof temp.data('if') !== 'undefined') {\n\t\t\t\t\tis_in_if = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (typeof temp.data('else') !== 'undefined') {\n\t\t\t\t\tis_in_if = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (is_in_if) {\n\t\t\tif (command_parent.commands_block == null || command_parent.commands_block.length == 0) {\n\t\t\t\tcommand_parent.commands_block = [];\n\n\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\t\trenderCommand(recentComand, el_jq.find('.commands_if'), 3, function_obj);\n\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\tfindInBlockCorrectPlace(el_jq.find('.commands_if'), event, function_obj, command_type);\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (command_parent.commands_else == null || command_parent.commands_else.length == 0) {\n\t\t\t\tcommand_parent.commands_else = [];\n\n\t\t\t\tvar recentComand = genericCreateCommand(command_type);\n\t\t\t\tcommand_parent.commands_else.push(recentComand);\n\n\t\t\t\trenderCommand(recentComand, el_jq.find('.commands_else'), 3, function_obj);\n\t\t\t} else { // Se já tem algum comando no bloco:\n\t\t\t\tfindInBlockCorrectPlace(el_jq.find('.commands_else'), event, function_obj, command_type, true);\n\t\t\t}\n\n\t\t}\n\n\t} else { // é do tipo switch\n\t\tconsole.log(\"está tentando inserir em um switch que está na raiz!\");\n\t\taddCommandToSwitchCase(event, function_obj, command_type);\n\t}\n}\n\nfunction addCommandToSwitchCase (event, function_obj, command_type) {\n\n\tvar el = $(document.elementFromPoint(event.clientX, event.clientY));\n\n\tvar which_case = el.data('switchcase');\n\tvar case_div = el;\n\t\n\tif (!which_case) {\n\t\tvar hier_find = el.parentsUntil(\".all_cases_div\");\n\t\tfor (var i = 0; i < hier_find.length; i++) {\n\t\t\tif (typeof $(hier_find[i]).data('switchcase') !== 'undefined') {\n\t\t\t\twhich_case = $(hier_find[i]).data('switchcase');\n\t\t\t\tcase_div = $(hier_find[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (which_case.commands_block == null || which_case.commands_block.length < 1) {\n\t\twhich_case.commands_block = [];\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\t\twhich_case.commands_block.push(recentComand);\n\t\trenderCommand(recentComand, case_div.find('.case_commands_block'), 3, function_obj);\n\t} else {\n\t\tfindInBlockCorrectPlaceInSwitchCase(which_case, case_div, event, function_obj, command_type);\n\t}\n\n}\n\n\n\n\nfunction findInBlockCorrectPlaceInSwitchCase (which_case, case_div, event, function_obj, command_type) {\n\n\tvar all_sub = case_div.find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\twhich_case.commands_block.push(recentComand);\n\n\t\trenderCommand(recentComand, $(case_div.find('.case_commands_block')[0]), 3, function_obj);\n\n\t} else {\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = which_case.commands_block.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\tif (index > -1) {\n\t\t which_case.commands_block.splice(index, 0, recentComand);\n\t\t renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t\t}\n\t}\n}\n\nfunction findInBlockCorrectPlace (el, event, function_obj, command_type, is_in_else = false) {\n\tvar el_jq = $(el);\n\tvar all_sub = el_jq.find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\n\tconsole.log(\"menor_distancia: \");\n\tconsole.log(elemento_menor_distancia);\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\n\t\tconsole.log('QQ11');\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar command_parent = el_jq.data('command');\n\n\t\tif (is_in_else) {\n\t\t\tconsole.log('QQ15');\n\t\t\tcommand_parent.commands_else.push(recentComand);\n\t\t\tconsole.log('el_jq');\n\t\t\tconsole.log(el_jq);\n\t\t\tconsole.log(\"$(el_jq.find('.commands_else')[0]):: \");\n\t\t\tconsole.log($(el_jq.find('.commands_else')[0]));\n\n\t\t\trenderCommand(recentComand, el_jq, 3, function_obj);\n\n\t\t} else {\n\t\t\tconsole.log('QQ16');\n\t\t\tcommand_parent.commands_block.push(recentComand);\n\n\t\t\trenderCommand(recentComand, $(el_jq.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\n\t} else {\n\n\t\tconsole.log('QQ12');\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar command_parent = el_jq.data('command');\n\n\t\tif (is_in_else) {\n\n\t\t\tvar index = command_parent.commands_else.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_else.splice(index, 0, recentComand);\n\t\t\t renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t\t\t}\n\n\t\t} else {\n\t\t\tvar index = command_parent.commands_block.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\t\tif (index > -1) {\n\t\t\t command_parent.commands_block.splice(index, 0, recentComand);\n\t\t\t renderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t\t\t}\n\n\t\t}\n\t\t\n\t}\n}\n\nfunction findBeforeOrAfterCommandToAdd (el, event, function_obj, command_type) {\n\tswitch ($(el).data('command').type) {\n\t\tcase Models.COMMAND_TYPES.iftrue:\n\t\tcase Models.COMMAND_TYPES.switch:\n\t\tcase Models.COMMAND_TYPES.repeatNtimes:\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\tinsertCommandInBlock(el, event, function_obj, command_type);\n\t\t\treturn;\n\t}\n\n\tvar menor_distancia = 999999999;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\tt_top = el.getBoundingClientRect().top;\n\tt_bot = el.getBoundingClientRect().top + el.getBoundingClientRect().height;\n\n\tvar d_top = event.clientY - t_top; // distancia topo\n\tvar d_bot = t_bot - event.clientY; // distancia baixo\n\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif (d_top < d_bot) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = function_obj.commands.indexOf($(el).data('command'));\n\n\t\tif (index > -1) {\n\t\t function_obj.commands.splice(index, 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, el, 1, function_obj);\n\n\t} else {\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = function_obj.commands.indexOf($(el).data('command'));\n\n\t\tif (index > -1) {\n\t\t function_obj.commands.splice((index + 1), 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, el, 2, function_obj);\n\t}\n}\n\nfunction findNearbyCommandToAddInFunctionScope (el, event, node_list_commands, function_obj, command_type) {\n\n\tvar all_sub = $(node_list_commands).find('div.command_container');\n\n\tvar menor_distancia = 999999999;\n\tvar elemento_menor_distancia = null;\n\tvar antes = true;\n\n\tvar t_bot;\n\tvar t_top;\n\n\t// Descobrindo o elemento mais próximo:\n\tfor (var i = 0; i < all_sub.length; i++) {\n\t\n\t\tt_top = all_sub[i].getBoundingClientRect().top;\n\t\tt_bot = all_sub[i].getBoundingClientRect().top + all_sub[i].getBoundingClientRect().height;\n\n\t\tif ((t_top - event.clientY) < menor_distancia) {\n\t\t\tmenor_distancia = event.clientY - t_top;\n\t\t\telemento_menor_distancia = all_sub[i];\n\t\t}\n\t}\n\n\tvar borda_inferior = elemento_menor_distancia.parentNode.getBoundingClientRect().top + elemento_menor_distancia.parentNode.getBoundingClientRect().height;\n\t\n\t// Está mais próximo da borda de baixo, ou seja.. inserir por último:\n\tif ((borda_inferior - event.clientY) < menor_distancia) {\n\t\t\n\t\tvar recentComand = genericCreateCommand(command_type);\n\t\tfunction_obj.commands.push(recentComand);\n\t\t//\n\t\trenderCommand(recentComand, node_list_commands, 3, function_obj);\n\n\t} else {\n\n\t\tvar recentComand = genericCreateCommand(command_type);\n\n\t\tvar index = function_obj.commands.indexOf($(elemento_menor_distancia).data('command'));\n\n\t\tif (index > -1) {\n\t\t function_obj.commands.splice(index, 0, recentComand);\n\t\t}\n\n\t\trenderCommand(recentComand, elemento_menor_distancia, 1, function_obj);\n\t}\n}\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as VariableValueMenuManagement from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\nimport * as ExpressionManagement from './generic_expression';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui attribution created_element\"> <i class=\"ui icon small arrow left\"></i> <span> x = 1 + 1 </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\t\n\tvar el = $('<div class=\"ui attribution command_container\"><i class=\"ui icon small arrow left command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"var_attributed\"></div> <span class=\"text_attr_receives span_command_spec\">'+LocalizedStrings.getUI('text_receives')+'</span> '\n\t\t + '<div class=\"expression_elements\"></div> </div>');\n\tel.data('command', command);\n\n\tVariableValueMenu.renderMenu(command, command.variable, el.find('.var_attributed'), function_obj);\n\n\tif (!command.expression || command.expression.length < 1) {\n\t\tvar exp = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\tcommand.expression.push(exp);\n\t}\n\n\taddHandlers(command, function_obj, el);\n\n\tExpressionManagement.renderExpression(command, function_obj, el.find('.expression_elements'), command.expression);\n\n\t//renderExpressionElements(command, function_obj, el);\n\n\treturn el;\n\n}\n\nexport function manageExpressionElements (command, ref_object, dom_object, menu_var_or_value, function_obj, selectedItem, expression_element) {\n\t\n\tvar index_to_move = expression_element.itens.indexOf(ref_object);\n\n\tswitch (selectedItem.data('exp')) {\n\t\tcase Models.EXPRESSION_ELEMENTS.exp_op_exp:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, [expression_element.itens[index_to_move],\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_element.itens[index_to_move] = exp;\n\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.op_exp:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.op_exp, [Models.ARITHMETIC_TYPES.plus, \n\t\t\t\texpression_element.itens[index_to_move] ]);\n\n\t\t\texpression_element.itens[index_to_move] = exp;\n\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.par_exp_par:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.par_exp_par, [expression_element.itens[index_to_move]]);\n\n\t\t\texpression_element.itens[index_to_move] = exp;\n\n\t\t\tbreak;\n\t}\n\n\trenderExpressionElements(command, function_obj, dom_object);\n\n}\n\nfunction renderExpressionElements (command, function_obj, el) {\n\tvar expression_div = el.find('.expression_elements');\n\tvar command_container;\n\n\tif (el.hasClass(\"command_container\") == false) {\n\t\tvar hier = el.parentsUntil(\".command_container\");\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass(\"command_container\")) {\n\t\t\t\tcommand_container = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ($(hier[i]).hasClass(\"expression_elements\")) {\n\t\t\t\texpression_div = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (command_container) {\n\t\texpression_div = command_container.find('.expression_elements');\n\t}\n\n\texpression_div.text('');\n\n\tfor (var i = 0; i < command.expression.length; i++) {\n\n\t\tvar temp = $('<div class=\"expression_element\"></div>');\n\t\ttemp.data('ref_element', command.expression[i]);\n\t\ttemp.data('ref_index', i);\n\n\t\texpression_div.append(temp);\n\n\t\trenderElement(command, function_obj, temp, command.expression[i]);\n\t}\n}\n\nfunction renderOperator (command, function_obj, temp_op, expression_element, index_op) {\n\n\tvar context_menu = '<div class=\"ui dropdown\"><div class=\"text\">';\n\n\tswitch (expression_element.itens[index_op]) {\n\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\tcontext_menu += '+';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\tcontext_menu += '-';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.multiplication:\n\t\t\tcontext_menu += '*';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.division:\n\t\t\tcontext_menu += '/';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.module:\n\t\t\tcontext_menu += '%';\n\t\t\tbreak;\n\n\t\tcase Models.ARITHMETIC_TYPES.none:\n\t\t\tcontext_menu += '...';\n\t\t\tbreak;\n\t}\n\t\n\tcontext_menu += '</div><div class=\"menu\">';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.plus+'\">+</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.minus+'\">-</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.multiplication+'\">*</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.division+'\">/</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.module+'\">%</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.ARITHMETIC_TYPES.none+'\" data-text=\"...\">Nenhum</div>';\n\tcontext_menu += '</div></div>';\n\n\tcontext_menu = $(context_menu);\n\n\ttemp_op.append(context_menu);\n\n\tcontext_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t expression_element.itens[index_op] = value;\n }\n\t});\n\n}\n\nfunction renderMenuAddExpression (command, function_obj, el, dom_append_menu, expression_append_new_expression) {\n\n\tif (el.hasClass(\"command_container\") == false) {\n\t\tvar hier = el.parentsUntil(\".commands_list_div\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass(\"command_container\")) {\n\t\t\t\tel = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom_append_menu.hasClass(\"expression_elements\") == false) {\n\t\tvar hier = el.parentsUntil(\".commands_list_div\");\n\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass(\"expression_elements\")) {\n\t\t\t\tdom_append_menu = $(hier[i]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tvar context_menu = '<div class=\"ui dropdown\"><div class=\"text\"></div><i class=\"ui icon arrow alternate circle right outline\"></i><div class=\"menu\">';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\tcontext_menu += '<div class=\"item\" data-value=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\tcontext_menu += '</div></div>';\n\n\tcontext_menu = $(context_menu);\n\n\tdom_append_menu.append(context_menu);\n\n\tcontext_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t switch (value) {\n\t \tcase Models.EXPRESSION_ELEMENTS.exp_op_exp:\n\n\t \tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, [new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true),\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_append_new_expression.push(exp);\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.op_exp:\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.op_exp, [Models.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_append_new_expression.push(exp);\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.par_exp_par:\n\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.par_exp_par, [new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\t\texpression_append_new_expression.push(exp);\n\n\t\t\tbreak;\n\t\t}\n\t\t\n\t\trenderExpressionElements(command, function_obj, el);\n }\n\t});\n\n}\n\nfunction renderElement (command, function_obj, el, expression_element) {\n\n\tswitch (expression_element.type_exp) {\n\t\tcase Models.EXPRESSION_ELEMENTS.exp_op_exp:\n\n\t\t\tvar temp_op = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_exp_1 = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_exp_2 = $('<div class=\"component_element\"></div>');\n\n\t\t\tel.append(temp_exp_1);\n\t\t\tel.append(temp_op);\n\t\t\tel.append(temp_exp_2);\n\t\t\t\n\t\t\tif (expression_element.itens[0].type) {\n\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[0], temp_exp_1, function_obj, 2, expression_element);\n\t\t\t} else {\n\t\t\t\trenderElement(command, function_obj, temp_exp_1, expression_element.itens[0]);\n\t\t\t}\n\n\t\t\trenderOperator(command, function_obj, temp_op, expression_element, 1);\n\n\t\t\tif (expression_element.itens[2].type) {\n\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[2], temp_exp_2, function_obj, 2, expression_element);\n\t\t\t} else {\n\t\t\t\trenderElement(command, function_obj, temp_exp_2, expression_element.itens[2]);\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.op_exp:\n\t\t\tvar temp_op = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_exp = $('<div class=\"component_element\"></div>');\n\n\t\t\tel.append(temp_op);\n\t\t\tel.append(temp_exp);\n\n\t\t\trenderOperator(command, function_obj, temp_op, expression_element, 0);\n\n\t\t\tif (expression_element.itens[1].type) {\n\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[1], temp_exp, function_obj, 2, expression_element);\n\t\t\t} else {\n\t\t\t\trenderElement(command, function_obj, temp_exp, expression_element.itens[1]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase Models.EXPRESSION_ELEMENTS.par_exp_par:\n\n\t\t\tvar temp_par_1 = $('<div class=\"component_element\"> ( </div>');\n\t\t\tvar temp_exp = $('<div class=\"component_element\"></div>');\n\t\t\tvar temp_par_2 = $('<div class=\"component_element\"> ) </div>');\n\n\t\t\tel.append(temp_par_1);\n\t\t\tel.append(temp_exp);\n\n\t\t\tfor (var j = 0; j < expression_element.itens.length; j++) {\n\t\t\t\tif (expression_element.itens[j].type) {\n\t\t\t\t\tVariableValueMenu.renderMenu(command, expression_element.itens[j], temp_exp, function_obj, 2, expression_element);\n\t\t\t\t} else {\n\t\t\t\t\trenderElement(command, function_obj, temp_exp, expression_element.itens[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\n\t\t\t//renderMenuAddExpression(command, function_obj, el, el, expression_element.itens);\n\n\t\t\tel.append(temp_par_2);\n\n\t\t\tbreak;\n\t}\n\n}\n\n\nfunction renderExpression (command, function_obj, el) {\n\n\tvar expression_div = el.find('.expression_elements');\n\texpression_div.text('');\n\n\tvar menu_add_item = $('<div class=\"menu_add_item\"></div>');\n\tmenu_add_item.data('index_add', 0);\n\n\texpression_div.append(menu_add_item);\n\t\n\tfor (var i = 0; i < command.expression.length; i++) {\n\n\t\tif (command.expression[i].type) {\n\n\t\t\tvar temp = $('<div class=\"expression_element\"></div>');\n\t\t\ttemp.data('ref_element', command.expression[i]);\n\t\t\ttemp.data('ref_index', i);\n\n\t\t\texpression_div.append(temp);\n\n\t\t\tVariableValueMenu.renderMenu(command, command.expression[i], temp, function_obj);\n\n\t\t} else if (command.expression[i] == \"(\" || command.expression[i] == \")\") {\n\n\t\t\tvar temp = $('<div class=\"expression_element\">'+command.expression[i]+'</div>');\n\t\t\ttemp.data('ref_element', command.expression[i]);\n\t\t\ttemp.data('ref_index', i);\n\n\t\t\texpression_div.append(temp);\n\n\t\t} else {\n\n\t\t\tvar temp = '<div class=\"expression_element\">';\n\n\t\t\tswitch(command.expression[i]) {\n\t\t\t\tcase Models.ARITHMETIC_TYPES.plus:\n\t\t\t\t\ttemp += '+';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.minus:\n\t\t\t\t\ttemp += '-';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.multiplication:\n\t\t\t\t\ttemp += '*';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.division:\n\t\t\t\t\ttemp += '/';\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.ARITHMETIC_TYPES.module:\n\t\t\t\t\ttemp += '%';\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttemp += '</div>';\n\t\t\ttemp = $(temp);\n\t\t\ttemp.data('ref_element', command.expression[i]);\n\t\t\ttemp.data('ref_index', i);\n\n\t\t\texpression_div.append(temp);\n\n\t\t}\n\t\t\n\t\tvar menu_add_item_seq = $('<div class=\"menu_add_item\"></div>');\n\t\tvar index_temp = (i + 1);\n\t\tmenu_add_item_seq.data('index_add', index_temp);\n\t\texpression_div.append(menu_add_item_seq);\n\n\t}\n\n\taddMenuItens(command, function_obj, el);\n\n}\n\nfunction addMenuItens (command, function_obj, expression_div) {\n\tvar divs_expression = expression_div.find('.menu_add_item');\n\n\tfor (var i = 0; i < divs_expression.length; i++) {\n\n\t\tvar temp = $(divs_expression[i]).data('index_add');\n\n\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><i class=\"ui icon plus square outline\"></i><div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-option=\"value\" data-index=\"'+temp+'\">'+LocalizedStrings.getUI('text_value')+'</div>';\n\t\tcontext_menu += '<div class=\"item\" data-option=\"operator\" data-index=\"'+temp+'\">'+LocalizedStrings.getUI('text_operator')+'</div>';\n\t\tcontext_menu += '<div class=\"item\" data-option=\"parentheses\" data-index=\"'+temp+'\">'+LocalizedStrings.getUI('text_parentheses')+'</div>';\n\t\tcontext_menu += '</div></div>';\n\n\t\tcontext_menu = $(context_menu);\n\n\t\t$(divs_expression[i]).append(context_menu);\n\n\t\tcontext_menu.dropdown({\n\t on: 'hover',\n\t onChange: function(value, text, $selectedItem) {\n \t\tswitch ($selectedItem.data('option')) {\n \t\t\tcase \"value\":\n \t\t\t\tcommand.expression.splice($selectedItem.data('index'), 0, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n \t\t\t\trenderExpression(command, function_obj, expression_div);\n \t\t\t\tbreak;\n \t\t\tcase \"operator\":\n \t\t\t\tcommand.expression.splice($selectedItem.data('index'), 0, Models.ARITHMETIC_TYPES.plus);\n \t\t\t\trenderExpression(command, function_obj, expression_div);\n \t\t\t\tbreak;\n \t\t\tcase \"parentheses\":\n \t\t\t\tcommand.expression.splice($selectedItem.data('index'), 0, \"(\");\n \t\t\t\tcommand.expression.splice($selectedItem.data('index') + 1, 0, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n \t\t\t\tcommand.expression.splice($selectedItem.data('index') + 2, 0, \")\");\n \t\t\t\trenderExpression(command, function_obj, expression_div);\n \t\t\t\tbreak;\n \t\t }\n \t}\n\t });\n\n\t}\n}\n\n\nfunction addHandlers (command, function_obj, attribution_dom) {\n\n\tattribution_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, attribution_dom)) {\n\t\t\tattribution_dom.fadeOut(400, function() {\n\t\t\t\tattribution_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n\n\tattribution_dom.find('.button_refresh_attribution').on('click', function() {\n\t\trenderExpressionElements(command, function_obj, attribution_dom);\n\t});\n}\n\nexport function renderMenuOperations (command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected) {\n\n\t/*console.log(\"recebido o seguinte DOM: \");\n\tconsole.log(dom_object);\n\n\tif (dom_object.hasClass('var_attributed')) {\n\t\treturn;\n\t} else {\n\t\tvar hier = dom_object.parentsUntil(\".command_container\");\n\t\tfor (var i = 0; i < hier.length; i++) {\n\t\t\tif ($(hier[i]).hasClass('var_attributed') || $(hier[i]).hasClass('parameters_function_called')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\n\t\t\n\t}\n\n\tdom_object.find('.context_menu_clear').remove();\n\n\n\tvar menu_operations = '<div class=\"ui dropdown menu_operations\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\n\tfor (var tm in Models.ARITHMETIC_TYPES) {\n\n\t\tmenu_operations += '<div class=\"item\" data-option=\"'+tm+'\">'+LocalizedStrings.getUI('btn_arithmetic_' + tm)+'</div>';\n }\n menu_operations += '<div class=\"item\" data-option=\"clear\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\t\n menu_operations += '</div></div>';\n\n menu_operations = $(menu_operations);\n\n dom_object.append(menu_operations);\n\n menu_operations.dropdown({\n \tonChange: function(value, text, $selectedItem) {\n \t\tswitch ($($selectedItem).data('option')) {\n \t\t\tcase \"clear\":\n\t \t\t\t$(dom_object).text('');\n\t\t \t \tVariableValueMenu.renderMenu(command, ref_object, dom_object, function_obj);\n \t\t\t\tbreak;\n \t\t\tdefault:\n \t\t\t\tcreateExpressionAround(command, ref_object, dom_object, function_obj);\n \t\t\t\tmenu_operations.find('.text').text('');\n \t\t}\n }\n });*/\n}\n\nfunction createExpressionAround (command, ref_object, dom_object, function_obj) {\n\t$('<span> ( </span>').insertBefore(dom_object);\n\t$('<span> ) </span>').insertAfter(dom_object);\n\n\tVariableValueMenu.renderMenu(command, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), dom_object, function_obj);\n}\n\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui comment created_element\"> <i class=\"ui icon small quote left\"></i> <span> '+LocalizedStrings.getUI('text_break')+' </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui comment command_container\"> <i class=\"ui icon small quote left\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span>'+LocalizedStrings.getUI('text_break')+'</span> </div>');\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, break_dom) {\n\n\tbreak_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, break_dom)) {\n\t\t\tbreak_dom.fadeOut(400, function() {\n\t\t\t\tbreak_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui comment created_element\"> <i class=\"ui icon small quote left\"></i> <span class=\"span_comment_text\" \"> '+LocalizedStrings.getUI('text_comment')+' </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui comment command_container\"> <i class=\"ui icon small quote left command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"var_value_menu_div\"></div> <div class=\"div_comment_text\">'+'</div> </div>');\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\trenderTextComment(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction renderTextComment (command, function_obj, el) {\n\tVariableValueMenu.renderMenu(command, command.comment_text, el.find('.var_value_menu_div'), function_obj, 20);\n}\n\nfunction addHandlers (command, function_obj, comment_dom) {\n\n\tcomment_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, comment_dom)) {\n\t\t\tcomment_dom.fadeOut(400, function() {\n\t\t\t\tcomment_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenuManagement from './variable_value_menu';\n\n\nexport function renderExpression (command, expression, function_obj, initial_el_to_render) {\n\n\texpression.dom_object = initial_el_to_render;\n\n\tif (expression.expression == null || expression.expression.length < 1) {\n\n\t\trenderStartMenu(command, expression, function_obj, initial_el_to_render);\n\n\t} else {\n\t\t\n\t\tvar main_div = $('<div class=\"expression_elements\"></div>');\n\n\t\tswitch (expression.expression.type) {\n\t\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\t\trenderLogicExpression(command, expression, expression.expression, function_obj, main_div, initial_el_to_render);\n\t\t\t\tbreak;\n\t\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\t\trenderArithmeticExpression(command, expression, expression.expression, function_obj, main_div);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tinitial_el_to_render.append(main_div);\t\n\t\tvar restartMenu = $('<div class=\"ui restart_expression\"><i class=\"ui icon undo\"></i></div>');\n\t\tinitial_el_to_render.append(restartMenu);\t\n\t\trestartMenu.on('click', function(e){\n\t \texpression.expression = null;\n\t \tinitial_el_to_render.empty();\n\t \trenderExpression(command, expression, function_obj, initial_el_to_render);\n\t \t});\n\t}\n}\n\nfunction renderArithmeticOperator (command, all_expression, expression_arithmetic, arithmetic_operator, function_obj, element_to_append) {\n\n\tvar menu_operator = $('<div class=\"ui dropdown\"><div class=\"text\"></div><i class=\"dropdown icon\"></i></div>');\n\tmenu_operator.dropdown({\n\t values: [\n\t {\n\t name : '>',\n\t value : Models.ARITHMETIC_COMPARISON.greater_than,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than)\n\t },\n\t {\n\t name : '<',\n\t value : Models.ARITHMETIC_COMPARISON.less_than,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than)\n\t },\n\t {\n\t name : '==',\n\t value : Models.ARITHMETIC_COMPARISON.equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.equals_to)\n\t },\n\t {\n\t name : '!=',\n\t value : Models.ARITHMETIC_COMPARISON.not_equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.not_equals_to)\n\t },\n\t {\n\t name : '>=',\n\t value : Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to)\n\t },\n\t {\n\t name : '<=',\n\t value : Models.ARITHMETIC_COMPARISON.less_than_or_equals_to,\n\t selected : (arithmetic_operator == Models.ARITHMETIC_COMPARISON.less_than_or_equals_to)\n\t }\n\t ],\n\t onChange: function(value, text, $selectedItem) {\n\t \texpression_arithmetic.operator = value;\n\t }\n\t })\n\t;\n\n\telement_to_append.append(menu_operator);\n}\n\nfunction renderLogicOperator (command, all_expression, expression_logic, logic_operator, function_obj, element_to_append, initial_el_to_render) {\n\n\tvar menu_operator = $('<div class=\"ui dropdown\"><div class=\"text\"></div><i class=\"dropdown icon\"></i></div>');\n\tmenu_operator.dropdown({\n\t values: [\n\t {\n\t name : '==',\n\t value : Models.LOGIC_COMPARISON.equals_to,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.equals_to)\n\t },\n\t {\n\t name : '!=',\n\t value : Models.LOGIC_COMPARISON.not_equals_to,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.not_equals_to)\n\t },\n\t {\n\t name : '&&',\n\t value : Models.LOGIC_COMPARISON.and,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.and)\n\t },\n\t {\n\t name : '||',\n\t value : Models.LOGIC_COMPARISON.or,\n\t selected : (logic_operator == Models.LOGIC_COMPARISON.or)\n\t }\n\t ],\n\t onChange: function(value, text, $selectedItem) {\n\t \tif ($selectedItem) {\n\t\t \texpression_logic.operator = value;\n\t\t \tif (expression_logic.second_operand == null) {\n\t\t \t\texpression_logic.second_operand = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t \t\tinitial_el_to_render.empty();\n\t\t \t\trenderExpression(command, all_expression, function_obj, initial_el_to_render);\n\t\t \t}\n\t \t}\n\t }\n\t });\n\n\telement_to_append.append(menu_operator);\n\n}\n\n\nfunction renderLogicExpression (command, all_expression, expression_logic, function_obj, element_to_append, initial_el_to_render) {\n\n\tvar exp_el_par_1 = $(' <span class=\"span_command_spec\"> </span> ');\n\tvar exp_el_expr_el_1 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_operand = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_el_2 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_par_2 = $(' <span class=\"span_command_spec\"> </span> ');\n\n\tif (expression_logic.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\trenderLogicExpression(command, all_expression, expression_logic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else if (expression_logic.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\trenderArithmeticExpression(command, all_expression, expression_logic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else {\n\t\tVariableValueMenuManagement.renderMenu(command, expression_logic.first_operand, exp_el_expr_el_1, function_obj);\n\t}\n\n\telement_to_append.append(exp_el_par_1);\n\telement_to_append.append(exp_el_expr_el_1);\n\n\trenderLogicOperator(command, all_expression, expression_logic, expression_logic.operator, function_obj, exp_el_expr_operand, initial_el_to_render);\n\n\telement_to_append.append(exp_el_expr_operand);\n\n\tif (expression_logic.second_operand) {\n\t\tif (expression_logic.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\t\trenderLogicExpression(command, all_expression, expression_logic.second_operand, function_obj, exp_el_expr_el_2);\n\t\t} else if (expression_logic.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\t\trenderArithmeticExpression(command, all_expression, expression_logic.second_operand, function_obj, exp_el_expr_el_2);\n\t\t} else {\n\t\t\tVariableValueMenuManagement.renderMenu(command, expression_logic.second_operand, exp_el_expr_el_2, function_obj);\n\t\t}\n\n\t\telement_to_append.append(exp_el_expr_el_2);\n\t}\n\n\telement_to_append.append(exp_el_par_2);\n\n}\n\nfunction renderArithmeticExpression (command, all_expression, expression_arithmetic, function_obj, element_to_append) {\n\n\tvar exp_el_par_1 = $(' <span class=\"span_command_spec\"> </span> ');\n\tvar exp_el_expr_el_1 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_operand = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_expr_el_2 = $('<div class=\"expression_element\"></div>');\n\tvar exp_el_par_2 = $(' <span class=\"span_command_spec\"> </span> ');\n\n\n\tif (expression_arithmetic.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\trenderLogicExpression(command, all_expression, expression_arithmetic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else if (expression_arithmetic.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\trenderArithmeticExpression(command, all_expression, expression_arithmetic.first_operand, function_obj, exp_el_expr_el_1);\n\t} else {\n\t\tVariableValueMenuManagement.renderMenu(command, expression_arithmetic.first_operand, exp_el_expr_el_1, function_obj);\n\t}\n\n\tif (expression_arithmetic.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n\t\trenderLogicExpression(command, all_expression, expression_arithmetic.second_operand, function_obj, exp_el_expr_el_2);\n\t} else if (expression_arithmetic.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic) {\n\t\trenderArithmeticExpression(command, all_expression, expression_arithmetic.second_operand, function_obj, exp_el_expr_el_2);\n\t} else {\n\t\tVariableValueMenuManagement.renderMenu(command, expression_arithmetic.second_operand, exp_el_expr_el_2, function_obj);\n\t}\n\n\trenderArithmeticOperator(command, all_expression, expression_arithmetic, expression_arithmetic.operator, function_obj, exp_el_expr_operand);\n\n\telement_to_append.append(exp_el_par_1);\n\telement_to_append.append(exp_el_expr_el_1);\n\telement_to_append.append(exp_el_expr_operand);\n\telement_to_append.append(exp_el_expr_el_2);\n\telement_to_append.append(exp_el_par_2);\n}\n\nfunction renderStartMenu (command, expression, function_obj, initial_el_to_render) {\n\tvar start_menu = '';\n\tstart_menu += '<div class=\"ui dropdown menu_start_rendered\"><div class=\"text\"><i>'+LocalizedStrings.getUI('expression_menu_select')+'</i></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tstart_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_TYPES.exp_logic+'\">'+LocalizedStrings.getUI('text_logic_expression')+' (EL == EL and EL)</div>';\n\tstart_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_TYPES.exp_arithmetic+'\">'+LocalizedStrings.getUI('text_arithmetic_expression')+' (EA < EA)</div>';\n\tstart_menu += '</div></div>';\n\tstart_menu = $(start_menu);\n\n\tstart_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t\t\tswitch ($selectedItem.data('exp')) {\n\t\t\t\tcase Models.EXPRESSION_TYPES.exp_logic:\n\t\t\t\t\texpression.expression = \n\t\t\t\t\t\tnew Models.LogicExpression(false, \n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\t\t\t\t\tbreak;\n\t\t\t\tcase Models.EXPRESSION_TYPES.exp_arithmetic:\n\t\t\t\t\texpression.expression = \n\t\t\t\t\t\tnew Models.ArithmeticExpression(\n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), \n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), \n\t\t\t\t\t\t\tModels.ARITHMETIC_COMPARISON.less_than);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tinitial_el_to_render.html('');\n\n\t\t\trenderExpression(command, expression, function_obj, initial_el_to_render);\n \t},\n \tselectOnKeydown: false\n\t});\n\n\tinitial_el_to_render.append(' <span class=\"span_command_spec\"> </span> ');\n\t\n\tinitial_el_to_render.append(start_menu);\n\n\tinitial_el_to_render.append(' <span class=\"span_command_spec\"> </span> ');\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as VariableValueMenuManagement from './variable_value_menu';\nimport * as SwitchManagement from './switch';\n\nimport * as RepeatNTimesManagement from './repeatNtimes';\n\nexport function renderMenu (command, dom_where_render, function_obj, dom_command) {\n\n\tvar menu_div = '<div class=\"ui dropdown menu_commands\" ><i class=\"icon code\"></i> <div class=\"menu\"> ';\n\n\tif ((command.type == Models.COMMAND_TYPES.repeatNtimes) \n\t\t|| (command.type == Models.COMMAND_TYPES.whiletrue) \n\t\t|| (command.type == Models.COMMAND_TYPES.dowhiletrue)) {\n\n\t\tmenu_div += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.break+'\"><i class=\"download icon\"></i> '+LocalizedStrings.getUI('btn_break')+' </a>';\n\n\t} else {\n\n\t\tmenu_div += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.break+'\"><i class=\"download icon\"></i> '+LocalizedStrings.getUI('btn_break')+' </a>';\n\t\tmenu_div += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.switchcase+'\"><i class=\"download icon\"></i> '+LocalizedStrings.getUI('btn_case')+' </a>';\n\n\t}\n\n\tmenu_div += '</div></div>';\n\n\tmenu_div = $(menu_div);\n \t\n\tdom_where_render.append(menu_div);\n\n\taddHandlers(command, dom_where_render, function_obj, dom_command);\n}\n\nfunction addHandlers (command, dom_where_render, function_obj, dom_command) {\n\n\tdom_where_render.find('.menu_commands').dropdown({\n on: 'hover'\n });\n\t\n\tdom_where_render.find('.menu_commands a').on('click', function(evt){\n\n\t\tif ((command.type == Models.COMMAND_TYPES.repeatNtimes) \n\t\t\t|| (command.type == Models.COMMAND_TYPES.whiletrue) \n\t\t\t|| (command.type == Models.COMMAND_TYPES.dowhiletrue)) {\n\n\t\t\t\tif (command.commands_block == null || command.commands_block.length == 0) {\n\n\t\t\t command.commands_block = [];\n\n\t\t\t var new_cmd = CommandsManagement.genericCreateCommand($(this).data('command'));\n\t\t\t command.commands_block.push(new_cmd);\n\n\t\t\t CommandsManagement.renderCommand(new_cmd, dom_command.find('.block_commands'), 3, function_obj);\n\n\t\t\t } else {\n\t\t\t CommandsManagement.createFloatingCommand(function_obj, dom_command.find('.block_commands'), $(this).data('command'), evt);\n\t\t\t }\n\n\t\t} else {\n\n\t\t\tswitch ($(this).data('command')) {\n\t\t\t\tcase Models.COMMAND_TYPES.break:\n\t\t\t\t\tCommandsManagement.createFloatingCommand(function_obj, dom_command.find('.block_commands'), $(this).data('command'), evt);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase Models.COMMAND_TYPES.switchcase:\n\t\t\t\t\taddCaseToSwitch(command, dom_where_render, function_obj, dom_command);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}\n\n\t});\n}\n\nfunction addCaseToSwitch (command, dom_where_render, function_obj, dom_command) {\n\t\n\tif ((command.cases == null)) {\n\t\tcommand.cases = [];\n\t}\n\t\n\tvar sc = new Models.SwitchCase(new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\n\tcommand.cases.push(sc);\n\n\tSwitchManagement.renderCase(sc, command, function_obj, dom_command.find('.all_cases_div'));\n\n}\n\n\n\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as ContextualizedMenu from './contextualized_menu';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui dowhiletrue created_element\"> <i class=\"ui icon small sync\"></i> <span> '+ LocalizedStrings.getUI('text_command_do') +' <br> ' + LocalizedStrings.getUI('text_code_while') +'(x < 10) </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui dowhiletrue command_container\"> <i class=\"ui icon small sync command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"ui context_menu\"></div> <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_command_do') + ' </span>';\n\tret += '<div class=\"ui block_commands\" data-subblock=\"\" data-idcommand=\"\">';\n\tret += '</div>';\n\tret += ' <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_code_while') + ' </span> <span class=\"span_command_spec\"> ( </span> <div class=\"conditional_expression\"></div> <span class=\"span_command_spec\"> ) </span>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\tConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\treturn el;\n}\n\n\nfunction addHandlers (command, function_obj, dowhiletrue_dom) {\n\n\tdowhiletrue_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, dowhiletrue_dom)) {\n\t\t\tdowhiletrue_dom.fadeOut(400, function() {\n\t\t\t\tdowhiletrue_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui functioncall created_element\"> <i class=\"hand point right icon\"></i> <span> funcao() </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui functioncall command_container\"> <i class=\"hand point right icon command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"var_value_menu_div\"></div> </div>');\n\tel.data('command', command);\n\n\tVariableValueMenu.renderMenu(command, command.function_called, el.find('.var_value_menu_div'), function_obj);\n\n\taddHandlers(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, functioncall_dom) {\n\n\tfunctioncall_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, functioncall_dom)) {\n\t\t\tfunctioncall_dom.fadeOut(400, function() {\n\t\t\t\tfunctioncall_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenuManagement from './variable_value_menu';\nimport WatchJS from 'melanke-watchjs';\n\nexport function renderExpression (command, function_obj, div_to_render, expression_array) {\n\n\tdiv_to_render.empty();\n\n\tif (command.type === Models.COMMAND_TYPES.attribution) {\n\n\t\tWatchJS.unwatch(command.variable);\n\t\tWatchJS.watch(command.variable, function(){\n\t renderExpression(command, function_obj, div_to_render, expression_array);\n\t }, 0);\n\n\t\tif (command.variable.content) {\n\n\t\t\tvar types_included = [];\n\n\t\t\tif (command.variable.content.type == Types.INTEGER || command.variable.content.type == Types.REAL) {\n\t \t\ttypes_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n\t\t } else if (command.variable.content.type == Types.BOOLEAN) {\n\t\t \ttypes_included.push(Models.EXPRESSION_TYPES.exp_conditional);\n\t\t \ttypes_included.push(Models.EXPRESSION_TYPES.exp_logic);\n\t\t \ttypes_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n\t\t } else if (command.variable.content.type == Types.TEXT) {\n\t\t \ttypes_included.push(Models.EXPRESSION_TYPES.exp_conditional);\n\t\t \ttypes_included.push(Models.EXPRESSION_TYPES.exp_logic);\n\t\t \ttypes_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n\t\t } else {\n\t\t \tconsole.log('NÃO RECONHECI! VEJA: ', command.variable.content.type);\n\t\t }\n\n\t\t renderElements(command, function_obj, div_to_render, expression_array, types_included);\n\t\t} else {\n\t\t\tdiv_to_render.text(LocalizedStrings.getUI('var_menu_select_var').toLowerCase());\n\t\t}\n\t}\n\n\tdiv_to_render.children('.mouse_distance').addClass('mouse_distance_hidden');\n\tdiv_to_render.children('.higher_element').on('mousemove', function(evt) {\n\t\tif (!window.open_or_close) {\n\t\t\t$(this).css('position', 'relative', '!important');\n\t\t\t$(this).children('.mouse_distance').css('opacity', '1');\n\t\t}\n\t});\n\tdiv_to_render.children('.higher_element').on('mouseout', function(evt) {\n\t\tif (!window.open_or_close) {\n\t\t\t$(this).css('position', 'absolute', '!important');\n\t\t\t$(this).children('.mouse_distance').css('opacity', '0');\n\t\t}\n\t});\n\n\t/*var allfilhos = div_to_render.children('.mouse_distance');\n\tconsole.log(allfilhos);\n\tvar boudings = [];\n\tfor (var i = 0; i < allfilhos.length; i++) {\n\t\tboudings.push(allfilhos.get(i).getBoundingClientRect());\n\t}\n\n\tdiv_to_render.children('.mouse_distance').addClass('mouse_distance_hidden');\n\t\n\tdiv_to_render.on('mousemove mouseenter', function(evt) {\n\t\tif (!window.open_or_close && command.variable.content) {\n\n\t\t\t\n\t\t\tvar leftDistances = [];\n\t\t\tvar rightDistances = [];\n\n\t\t\tfor (var i = 0; i < allfilhos.length; i++) {\n\t\t\t\tvar leftD = Math.abs(boudings[i].left - evt.clientX);\n\t\t\t\tleftDistances.push(leftD);\n\t\t\t\tvar rightD = Math.abs(boudings[i].right - evt.clientX);\n\t\t\t\trightDistances.push(rightD);\n\t\t\t}\n\n\t\t\tdiv_to_render.children('.mouse_distance').removeClass('mouse_distance_except');\n\t\t\tdiv_to_render.children('.mouse_distance').addClass('mouse_distance_hidden');\n\t\t\t\n\t\t\tvar menorLeft = Math.min.apply(null, leftDistances);\n\t\t\tvar indiceLeft = leftDistances.indexOf(menorLeft);\n\n\t\t\tvar menorRight = Math.min.apply(null, rightDistances);\n\t\t\tvar indiceRight = rightDistances.indexOf(menorRight);\n\n\t\t\tif (menorRight < menorLeft) {\n\t\t\t\t$(allfilhos.get(indiceRight)).removeClass('mouse_distance_hidden');\n\t\t\t\t$(allfilhos.get(indiceRight)).addClass('mouse_distance_except');\n\t\t\t} else {\n\t\t\t\t$(allfilhos.get(indiceLeft)).removeClass('mouse_distance_hidden');\n\t\t\t\t$(allfilhos.get(indiceLeft)).addClass('mouse_distance_except');\n\t\t\t}\n\t\t}\n\t});*/\n\n}\n\nfunction renderElements (command, function_obj, div_to_render, expression_array, types_included) {\n\n\t/*if (expression_array.length > 0) {\n\t\tif (!expression_array[0].type_op) {\n\t\t\trenderStartAddOperator(div_to_render, types_included, expression_array, command, function_obj, 0);\n\t\t}\n\t}*/\n\n\tvar i = 0;\n\tfor (i = 0; i < expression_array.length; i++) {\n\t\tif (expression_array[i].type == \"var_value\") {\n\t\t\tvar div_temp = $('<div class=\"single_element_expression\" data-index=\"'+i+'\"></div>');\n\t\t\tif (i == 0) {\n\t\t\t\tif (expression_array.length > 0 && !expression_array[0].type_op) {\n\n\t\t\t\t\trenderStartAddOperator(div_to_render, types_included, expression_array, command, function_obj, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t\tVariableValueMenuManagement.renderMenu(command, expression_array[i], div_temp, function_obj);\n\t\t\tdiv_to_render.append(div_temp);\n\t\t} else if (expression_array[i] == '(' || expression_array[i] == ')') {\n\t\t\tif (expression_array[i] == ')') {\n\t\t\t\trenderFinalAddElements(div_to_render, types_included, expression_array, command, function_obj, i);\n\t\t\t\trenderParenthesis(div_to_render, expression_array[i], command, function_obj, i, expression_array);\n\t\t\t} else if (expression_array[i] == '(' && !expression_array[i + 1].type_op) {\n\t\t\t\trenderParenthesis(div_to_render, expression_array[i], command, function_obj, i, expression_array);\n\t\t\t\trenderStartAddOperator(div_to_render, types_included, expression_array, command, function_obj, i + 1);\n\t\t\t} else {\n\t\t\t\trenderParenthesis(div_to_render, expression_array[i], command, function_obj, i, expression_array);\n\t\t\t}\n\n\t\t} else {\n\t\t\trenderOperatorMenu(command, function_obj, div_to_render, expression_array[i], types_included, i, expression_array);\n\t\t}\n\t}\n\n\trenderFinalAddElements(div_to_render, types_included, expression_array, command, function_obj, i);\n\n\trenderAddParenthesis(command, function_obj, div_to_render, expression_array, types_included);\n\n}\n\nwindow.parentheses_activate = false;\nwindow.open_or_close = null;\nfunction renderAddParenthesis (command, function_obj, div_to_render, expression_array, types_included) {\n\tvar addParentheses = $('<div class=\"single_element_expression add_parentheses\"><i class=\"icons\"><b style=\"font-style: normal;\">( )</b><i class=\"corner add icon blue\" style=\"font-size: .6em;right: -3px;bottom: -2px;\"></i></i></div>');\n\tdiv_to_render.append(addParentheses);\n\taddParentheses.popup({\n\t content : \"Adicionar parênteses\",\n\t delay: {\n\t show: 750,\n\t hide: 0\n\t\t}\n\t});\n\n\taddParentheses.on('click', function(mouse_event) {\n\n\t\t// verificar se já está ativado\n\t\tif (window.parentheses_activate) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv_to_render.find('.usepointer').off('click');\n\n\t\twindow.parentheses_activate = true;\n\n\t\twindow.open_or_close = \"open\";\n\n\t\tdiv_to_render.find('.dropdown').addClass('disabled');\n\n\t\tdiv_to_render.find('.ghost_element').addClass('temp_class');\n\t\tdiv_to_render.find('.ghost_element').removeClass('ghost_element');\n\n\t\tvar floatingObject = $('<div class=\"floating_parenthesis\"> ( </div>');\n\t\tfloatingObject.draggable().appendTo(\"body\");\n\t\tfloatingObject.css(\"position\", \"absolute\");\n\t\tmouse_event.type = \"mousedown.draggable\";\n\t\tmouse_event.target = floatingObject[0];\n\t\tfloatingObject.css(\"left\", mouse_event.pageX + 10);\n\t\tfloatingObject.css(\"top\", mouse_event.pageY + 10);\n\t\tfloatingObject.trigger(mouse_event);\n\n\t\tdiv_to_render.on('mousemove', function(evt) {\n\t\t\tvar actual_target = null;\n\t\t\tif ($(evt.target).hasClass('single_element_expression')) {\n\t\t\t\tactual_target = $(evt.target);\n\t\t\t} else {\n\t\t\t\tactual_target = $(evt.target).closest('.single_element_expression');\n\t\t\t}\n\n\t\t\tif ($(evt.target).hasClass('temp_class') \n\t\t\t\t|| actual_target.length < 1 \n\t\t\t\t|| actual_target.hasClass('add_parentheses')\n\t\t\t\t|| actual_target.hasClass('rendered_parentheses')\n\t\t\t\t|| $(evt.target).hasClass('expression_elements')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\trenderGhostParentheses(actual_target, command, function_obj, div_to_render, expression_array);\n\t\t});\n\n\t\tdiv_to_render.on('mouseleave', function(evt) {\n\t\t\t/*window.open_parentheses.remove();\n\t\t\twindow.close_parentheses.remove();*/\n\t\t});\n\n\t\tvar floating;\n\n\t\t$('body').on('mouseup', function(evt) {\n\n\t\t\tif (window.open_or_close == \"open\") {\n\n\t\t\t\twindow.open_or_close = \"close\";\n\n\t\t\t\tfloatingObject.remove();\n\n\t\t\t\tvar comando_que_esta = $(evt.target).closest('.command_container');\n\t\t\t\tvar comando_certo = div_to_render.closest('.command_container');\n\t\t\t\tif (!comando_que_esta.is(comando_certo)) {\n\n\t\t\t\t\twindow.parentheses_activate = false;\n\t\t\t\t\tdiv_to_render.find('.temp_class').addClass('ghost_element');\n\t\t\t\t\tdiv_to_render.find('.temp_class').removeClass('temp_class');\n\t\t\t\t\tdiv_to_render.off('mousemove');\n\t\t\t\t\tdiv_to_render.off('mouseleave');\n\t\t\t\t\t$('body').off('mouseup');\n\t\t\t\t\twindow.open_parentheses.remove();\n\t\t\t\t\twindow.close_parentheses.remove();\n\t\t\t\t\twindow.inserir_open = -1;\n\t\t\t\t\twindow.inserir_close = -1;\n\t\t\t\t\twindow.open_or_close = null;\n\t\t\t\t\trenderExpression(command, function_obj, div_to_render, expression_array);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfloating = $('<div class=\"floating_parenthesis\"> ) </div>');\n\t\t\t\tfloating.draggable().appendTo(\"body\");\n\t\t\t\tfloating.css(\"position\", \"absolute\");\n\t\t\t\tfloating.css(\"left\", evt.pageX + 10);\n\t\t\t\tfloating.css(\"top\", evt.pageY + 10);\n\n\t\t\t\t$('body').on('mousemove', function(evts) {\n\t\t\t\t\tfloating.css(\"left\", evts.pageX + 10);\n\t\t\t\t\tfloating.css(\"top\", evts.pageY + 10);\n\t\t\t\t});\t\t\t\t\n\n\t\t\t} else {\n\n\t\t\t\tfloating.remove();\n\t\t\t\t\n\t\t\t\tdiv_to_render.off('mousemove');\n\t\t\t\tdiv_to_render.off('mouseleave');\n\t\t\t\t$('body').off('mouseup');\n\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\twindow.parentheses_activate = false;\n\t\t\t\t}, 50);\n\n\t\t\t\tvar comando_que_esta = $(evt.target).closest('.command_container');\n\t\t\t\tvar comando_certo = div_to_render.closest('.command_container');\n\t\t\t\tvar is_correct = false;\n\t\t\t\tif (comando_que_esta.is(comando_certo)) {\n\t\t\t\t\tis_correct = true;\n\t\t\t\t}\n\n\t\t\t\tif (is_correct) {\n\t\t\t\t\texpression_array.splice(window.inserir_open, 0, '(');\n\t\t\t\t\texpression_array.splice(window.inserir_close, 0, ')');\n\t\t\t\t}\n\n\t\t\t\twindow.inserir_open = -1;\n\t\t\t\twindow.inserir_close = -1;\n\t\t\t\twindow.open_or_close = null;\n\n\t\t\t\trenderExpression(command, function_obj, div_to_render, expression_array);\n\n\t\t\t}\n\n\t\t});\n\t});\n}\n\nwindow.open_parentheses = $('<div class=\"parentheses_ghost\">(</div>');\nwindow.close_parentheses = $('<div class=\"parentheses_ghost\">)</div>');\nwindow.inserir_open = -1;\nwindow.inserir_close = -1;\nfunction renderGhostParentheses (actual_target, command, function_obj, div_to_render, expression_array) {\n\n\t/*window.open_parentheses.remove();\n\twindow.close_parentheses.remove();*/\n\n\tvar index_in_array = actual_target.data('index');\n\n\tif ((expression_array[index_in_array] == '(') || (expression_array[index_in_array] == ')')) {\n\t\treturn;\n\t}\n\n\tif (window.open_or_close == \"close\") {\n\t\tif (index_in_array < window.inserir_open) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Tratando a situação quando é na primeira posição:\n\n\tif (index_in_array == 0) {\n\t\tif (expression_array[index_in_array].type == \"var_value\") {\n\n\t\t\tif (window.open_or_close == \"open\") {\n\t\t\t\twindow.open_parentheses.insertBefore(actual_target);\n\t\t\t\twindow.inserir_open = index_in_array;\n\t\t\t}\n\n\t\t\t/*if (expression_array.length == 1) {\n\t\t\t\tif (window.open_or_close == \"close\") {\n\t\t\t\t\twindow.close_parentheses.insertAfter(actual_target);\n\t\t\t\t\twindow.inserir_close = index_in_array + 2;\n\t\t\t\t}*/\n\n\t\t\t//} else {\n\t\t\t\tvar count_opened = 0;\n\t\t\t\tvar count_closed = 0;\n\t\t\t\tfor (var i = 0; i < expression_array.length; i++) {\n\t\t\t\t\tif ((expression_array[i] == '(')) {\n\t\t\t\t\t\tcount_opened ++;\n\t\t\t\t\t}\n\t\t\t\t\tif (expression_array[i] == ')') {\n\t\t\t\t\t\tcount_closed ++;\n\t\t\t\t\t}\n\t\t\t\t\tif (count_opened != count_closed) {\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (count_opened > 0) {\n\t\t\t\t\t\t\tif (window.open_or_close == \"close\") {\n\t\t\t\t\t\t\t\twindow.close_parentheses.insertAfter(div_to_render.find('.single_element_expression[data-index=\"'+i+'\"]'));\n\t\t\t\t\t\t\t\twindow.inserir_close = i + 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (expression_array[i].type == \"var_value\") {\n\t\t\t\t\t\t\t\tif (window.open_or_close == \"close\") {\n\t\t\t\t\t\t\t\t\twindow.close_parentheses.insertAfter(div_to_render.find('.single_element_expression[data-index=\"'+i+'\"]'));\n\t\t\t\t\t\t\t\t\twindow.inserir_close = i + 2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t//}\n\n\t\t} else if (expression_array[index_in_array].type_op) {\n\n\t\t\tif (window.open_or_close == \"open\") {\n\t\t\t\twindow.open_parentheses.insertBefore(actual_target);\n\t\t\t\twindow.inserir_open = index_in_array;\n\t\t\t}\n\n\t\t\tvar count_opened = 0;\n\t\t\tvar count_closed = 0;\n\t\t\tfor (var i = 1; i < expression_array.length; i++) {\n\t\t\t\t// $('.slide-link[data-slide=\"0\"]')\n\t\t\t\tif ((expression_array[i] == '(')) {\n\t\t\t\t\tcount_opened ++;\n\t\t\t\t}\n\t\t\t\tif (expression_array[i] == ')') {\n\t\t\t\t\tcount_closed ++;\n\t\t\t\t}\n\t\t\t\tif (count_opened != count_closed) {\n\t\t\t\t} else {\n\t\t\t\t\tif (count_opened > 0) {\n\t\t\t\t\t\tif (expression_array[i].type == \"var_value\") {\n\t\t\t\t\t\t\twindow.close_parentheses.insertAfter(div_to_render.find('.single_element_expression[data-index=\"'+i+'\"]'));\n\t\t\t\t\t\t\twindow.inserir_close = i + 2;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (expression_array[i].type == \"var_value\") {\n\t\t\t\t\t\t\tif (expression_array[i].type == \"var_value\") {\n\t\t\t\t\t\t\t\twindow.close_parentheses.insertAfter(div_to_render.find('.single_element_expression[data-index=\"'+i+'\"]'));\n\t\t\t\t\t\t\t\twindow.inserir_close = i + 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\t// Tratando quando não é no índice 0:\n\tif (expression_array[index_in_array].type == \"var_value\") {\n\t\tif (window.open_or_close == \"open\") {\n\t\t\twindow.open_parentheses.insertBefore(actual_target);\n\t\t\twindow.inserir_open = index_in_array;\n\t\t}\n\t\tif (window.open_or_close == \"close\") {\n\t\t\twindow.close_parentheses.insertAfter(actual_target);\n\t\t\twindow.inserir_close = index_in_array + 2;\n\t\t}\n\t\treturn;\n\t}\n\n\tif (expression_array[index_in_array].type_op) {\n\t\t// buscar para a esquerda primeiro:\n\t\tif (expression_array[index_in_array - 1] == '(') {\n\t\t\tif (window.open_or_close == \"open\") {\n\t\t\t\twindow.open_parentheses.insertBefore(actual_target);\n\t\t\t\twindow.inserir_open = index_in_array;\n\t\t\t}\n\t\t} else if (expression_array[index_in_array - 1] == ')') {\n\t\t\t// buscar a abertura\n\t\t\tvar count_opened = 0;\n\t\t\tvar count_closed = 0;\n\t\t\tfor (var j = index_in_array - 1; j >= 0; j--) {\n\t\t\t\tif ((expression_array[j] == '(')) {\n\t\t\t\t\tcount_opened ++;\n\t\t\t\t}\n\t\t\t\tif (expression_array[j] == ')') {\n\t\t\t\t\tcount_closed ++;\n\t\t\t\t}\n\n\t\t\t\tif (count_opened != count_closed) {\n\t\t\t\t} else {\n\t\t\t\t\tif (count_closed > 0) {\n\t\t\t\t\t\tif (window.open_or_close == \"open\") {\n\t\t\t\t\t\t\twindow.open_parentheses.insertBefore(div_to_render.find('.single_element_expression[data-index=\"'+j+'\"]'));\n\t\t\t\t\t\t\twindow.inserir_open = j;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if (expression_array[index_in_array - 1].type == \"var_value\") {\n\t\t\tif (window.open_or_close == \"open\") {\n\t\t\t\twindow.open_parentheses.insertBefore(div_to_render.find('.single_element_expression[data-index=\"'+(index_in_array - 1)+'\"]'));\n\t\t\t\twindow.inserir_open = index_in_array - 1;\n\t\t\t}\n\t\t}\n\n\t\t// buscar para a direita agora:\n\t\tif (expression_array[index_in_array + 1] == '(') {\n\t\t\t// buscar o fechamento:\n\n\t\t\tvar count_opened = 0;\n\t\t\tvar count_closed = 0;\n\t\t\tfor (var j = index_in_array + 1; j < expression_array.length; j ++) {\n\t\t\t\tif ((expression_array[j] == '(')) {\n\t\t\t\t\tcount_opened ++;\n\t\t\t\t}\n\t\t\t\tif (expression_array[j] == ')') {\n\t\t\t\t\tcount_closed ++;\n\t\t\t\t}\n\n\t\t\t\tif (count_opened != count_closed) {\n\t\t\t\t} else {\n\t\t\t\t\tif (count_opened > 0) {\n\t\t\t\t\t\tif (window.open_or_close == \"close\") {\n\t\t\t\t\t\t\twindow.close_parentheses.insertAfter(div_to_render.find('.single_element_expression[data-index=\"'+j+'\"]'));\n\t\t\t\t\t\t\twindow.inserir_close = j + 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t} else if (expression_array[index_in_array + 1].type == \"var_value\") {\n\t\t\tif (window.open_or_close == \"close\") {\n\t\t\t\twindow.close_parentheses.insertAfter(div_to_render.find('.single_element_expression[data-index=\"'+(index_in_array + 1)+'\"]'));\n\t\t\t\twindow.inserir_close = index_in_array + 3;\n\t\t\t}\n\t\t}\n\t}\n\n}\n\nfunction renderParenthesis (div_to_render, expression_content, command, function_obj, position, expression_array) {\n\tvar ghost_parenthesis = $('<div class=\"single_element_expression\" data-index=\"'+position+'\">'+expression_content+'</div>');\n\tdiv_to_render.append(ghost_parenthesis);\n}\n\nfunction renderStartAddOperator (div_to_render, types_included, expression_array, command, function_obj, position) {\n\tvar menu_final = '<div class=\"ui dropdown disabled usepointer\"><div class=\"text\"> + </div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>Aritméticos<div class=\"menu\">';\n\t\t\tmenu_final += getArithmeticOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getArithmeticOperators();\n\t\t}\n\t}\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>Lógicos<div class=\"menu\">';\n\t\t\tmenu_final += getLogicOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getLogicOperators();\n\t\t}\n\t}\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>Relacionais<div class=\"menu\">';\n\t\t\tmenu_final += getRelationalOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getRelationalOperators();\n\t\t}\n\t}\n\tmenu_final += '</div></div>';\n\n\tmenu_final = $(menu_final);\n\tvar div_temp = $('<div class=\"single_element_expression ghost_element mouse_distance\"></div>');\n\tdiv_temp.append(menu_final);\n\tvar div_higher = $('<div class=\"higher_element\"></div>');\n\tdiv_higher.append(div_temp);\n\tdiv_to_render.append(div_higher);\n\tmenu_final.dropdown('set selected', Models.ARITHMETIC_TYPES.minus);\n\n\tdiv_temp.on('click', function() {\n\t\tvar sera = position;\n\n\t\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n\t\t\tconsole.log('p1');\n\t\t\texpression_array.splice(sera, 0, new Models.ExpressionOperator(Models.EXPRESSION_TYPES.exp_arithmetic,Models.ARITHMETIC_TYPES.minus));\n\t\t} else if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n\t\t\tconsole.log('p2');\n\t\t\texpression_array.splice(sera, 0, new Models.ExpressionOperator(Models.EXPRESSION_TYPES.exp_logic,Models.LOGIC_COMPARISON.equals_to));\n\t\t} else if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n\t\t\tconsole.log('p3');\n\t\t\texpression_array.splice(sera, 0, new Models.ExpressionOperator(Models.EXPRESSION_TYPES.exp_conditional,Models.ARITHMETIC_COMPARISON.greater_than));\n\t\t}\n\n\t\trenderExpression(command, function_obj, div_to_render, expression_array);\n\t});\n}\n\nfunction renderFinalAddElements (div_to_render, types_included, expression_array, command, function_obj, position) {\n\n\tvar menu_final = '<div class=\"ui dropdown disabled usepointer\"><div class=\"text\"> + </div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>Aritméticos<div class=\"menu\">';\n\t\t\tmenu_final += getArithmeticOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getArithmeticOperators();\n\t\t}\n\t}\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>Lógicos<div class=\"menu\">';\n\t\t\tmenu_final += getLogicOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getLogicOperators();\n\t\t}\n\t}\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>Relacionais<div class=\"menu\">';\n\t\t\tmenu_final += getRelationalOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getRelationalOperators();\n\t\t}\n\t}\n\tmenu_final += '</div></div>';\n\n\tmenu_final = $(menu_final);\n\tvar div_temp = $('<div class=\"single_element_expression ghost_element mouse_distance\"></div>');\n\n\tvar div_higher = $('<div class=\"higher_element\"></div>');\n\tdiv_higher.append(div_temp);\n\tdiv_to_render.append(div_higher);\n\tdiv_temp.append(menu_final);\n\t//div_to_render.append(div_temp);\n\tmenu_final.dropdown('set selected', Models.ARITHMETIC_TYPES.plus);\n\n\tdiv_temp.on('click', function() {\n\t\tvar sera = position;\n\n\t\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n\t\t\texpression_array.splice(sera, 0, new Models.ExpressionOperator(Models.EXPRESSION_TYPES.exp_arithmetic,Models.ARITHMETIC_TYPES.plus));\n\t\t} else if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n\t\t\texpression_array.splice(sera, 0, new Models.ExpressionOperator(Models.EXPRESSION_TYPES.exp_logic,Models.LOGIC_COMPARISON.equals_to));\n\t\t} else if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n\t\t\texpression_array.splice(sera, 0, new Models.ExpressionOperator(Models.EXPRESSION_TYPES.exp_conditional,Models.ARITHMETIC_COMPARISON.greater_than));\n\t\t}\n\t\texpression_array.splice(sera + 1, 0, new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\n\t\trenderExpression(command, function_obj, div_to_render, expression_array);\n\t});\n}\n\nfunction renderOperatorMenu (command, function_obj, div_to_render, expression_element, types_included, position, expression_array) {\n\n\tvar menu_final = '<div class=\"ui dropdown\"><div class=\"text\"> + </div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>Aritméticos<div class=\"menu\">';\n\t\t\tmenu_final += getArithmeticOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getArithmeticOperators();\n\t\t}\n\t}\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>Lógicos<div class=\"menu\">';\n\t\t\tmenu_final += getLogicOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getLogicOperators();\n\t\t}\n\t}\n\tif (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n\t\tif (types_included.length > 1) {\n\t\t\tmenu_final += '<div class=\"item\"><i class=\"dropdown icon\"></i>Relacionais<div class=\"menu\">';\n\t\t\tmenu_final += getRelationalOperators();\n\t\t\tmenu_final += '</div></div>';\n\t\t} else {\n\t\t\tmenu_final += getRelationalOperators();\n\t\t}\n\t}\n\tmenu_final += '</div></div>';\n\n\tmenu_final = $(menu_final);\n\tvar div_temp = $('<div class=\"single_element_expression\" data-index=\"'+position+'\"></div>');\n\tdiv_temp.append(menu_final);\n\tdiv_to_render.append(div_temp);\n\tmenu_final.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n \t\texpression_element.item = $selectedItem.data('value');\n \t\texpression_element.type_op = $selectedItem.data('type');\n \t}\n\t});\n\n\tmenu_final.dropdown('set selected', expression_element.item);\n}\n\nfunction getArithmeticOperators () {\n\tvar arithmetic_operators;\n\tarithmetic_operators = '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_arithmetic+'\" data-value=\"'+Models.ARITHMETIC_TYPES.plus+'\">+</div>';\n\tarithmetic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_arithmetic+'\" data-value=\"'+Models.ARITHMETIC_TYPES.minus+'\">-</div>';\n\tarithmetic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_arithmetic+'\" data-value=\"'+Models.ARITHMETIC_TYPES.multiplication+'\">*</div>';\n\tarithmetic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_arithmetic+'\" data-value=\"'+Models.ARITHMETIC_TYPES.division+'\">/</div>';\n\tarithmetic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_arithmetic+'\" data-value=\"'+Models.ARITHMETIC_TYPES.module+'\">%</div>';\n\treturn arithmetic_operators;\n}\n\nfunction getLogicOperators () {\n\tvar logic_operators;\n\tlogic_operators = '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_logic+'\" data-value=\"'+Models.LOGIC_COMPARISON.equals_to+'\">==</div>';\n\tlogic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_logic+'\" data-value=\"'+Models.LOGIC_COMPARISON.not_equals_to+'\">!=</div>';\n\tlogic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_logic+'\" data-value=\"'+Models.LOGIC_COMPARISON.and+'\">'+LocalizedStrings.getUI('and')+'</div>';\n\tlogic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_logic+'\" data-value=\"'+Models.LOGIC_COMPARISON.or+'\">'+LocalizedStrings.getUI('or')+'</div>';\n\tlogic_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_logic+'\" data-value=\"'+Models.LOGIC_COMPARISON.not+'\">'+LocalizedStrings.getUI('not')+'</div>';\n\treturn logic_operators;\n}\n\nfunction getRelationalOperators () {\n\tvar relational_operators;\n\trelational_operators = '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_conditional+'\" data-value=\"'+Models.ARITHMETIC_COMPARISON.greater_than+'\">></div>';\n\trelational_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_conditional+'\" data-value=\"'+Models.ARITHMETIC_COMPARISON.less_than+'\"><</div>';\n\trelational_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_conditional+'\" data-value=\"'+Models.ARITHMETIC_COMPARISON.equals_to+'\">==</div>';\n\trelational_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_conditional+'\" data-value=\"'+Models.ARITHMETIC_COMPARISON.not_equals_to+'\">!=</div>';\n\trelational_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_conditional+'\" data-value=\"'+Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to+'\">>=</div>';\n\trelational_operators += '<div class=\"item\" data-type=\"'+Models.EXPRESSION_TYPES.exp_conditional+'\" data-value=\"'+Models.ARITHMETIC_COMPARISON.less_than_or_equals_to+'\"><=</div>';\n\treturn relational_operators;\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui iftrue created_element\"> <i class=\"ui icon small random\"></i> <span> if (x < 1) { } </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui iftrue command_container\"><div class=\"ui data_block_if\" data-if=\"true\"> <i class=\"ui icon small random command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i>';\n\tret += '<span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_if') + '</span>';\n\tret += ' <span class=\"span_command_spec\"> ( </span> <div class=\"conditional_expression\"></div> <span class=\"span_command_spec\"> ) </span>';\n\tret += '<span> </span> ';\n\tret += '<div class=\"ui block_commands commands_if conditional_comands_block\" data-if=\"true\">';\n \tret += '</div></div>';\n\tret += '<div class=\"ui data_block_else\" data-else=\"true\"> <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_else') + ' </span>';\n\tret += '<div class=\"ui block_commands commands_else conditional_comands_block\" data-else=\"true\">';\n\tret += '</div>';\n\tret += '<span></span></div>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\tel.find('.data_block_if').data('command', command);\n\tel.find('.data_block_else').data('command', command);\n\tel.find('.commands_if').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.commands_if')[0]), 3, function_obj);\n\t\t}\n\t}\n\tif (command.commands_else) {\n\t\tfor (var j = 0; j < command.commands_else.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_else[j], $(el.find('.commands_else')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\treturn el;\n}\n\n\nfunction addHandlers (command, function_obj, iftrue_dom) {\n\n\tiftrue_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, iftrue_dom)) {\n\t\t\tiftrue_dom.fadeOut(400, function() {\n\t\t\t\tiftrue_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui reader created_element\"> <i class=\"ui icon small download\"></i> <span> '+LocalizedStrings.getUI('text_command_read')+' var </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = '<div class=\"ui reader command_container\"> <i class=\"ui icon small download command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span class=\"span_command_spec\">'+LocalizedStrings.getUI('text_command_read')+' ( </span> <div class=\"var_value_menu_div\"></div> <span class=\"close_parentheses span_command_spec\">)</span> </div>';\n\t\n\tel = $(el);\n\tel.data('command', command);\n\n\tVariableValueMenu.renderMenu(command, command.variable_value_menu, el.find('.var_value_menu_div'), function_obj);\n\n\taddHandlers(command, function_obj, el);\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, reader_dom) {\n\treader_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, reader_dom)) {\n\t\t\treader_dom.fadeOut(400, function() {\n\t\t\t\treader_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as ContextualizedMenu from './contextualized_menu';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui repeatNtimes created_element\"> <i class=\"ui icon small sync\"></i> <span> para (x = 0; x < 10; x ++) <br> </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '<div class=\"ui repeatNtimes command_container\"> <i class=\"ui icon small sync command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"ui context_menu\"></div> <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_for') + ' ( </span> <div class=\"ui attribution_expression\"><div class=\"ui variable_attribution\"></div> <span class=\"text_receives span_command_spec\"></span> <div class=\"ui var_value_expression div_expression_st\"></div> </div> <span class=\"span_command_spec separator_character\">;</span> <div class=\"conditional_expression\"></div> <span class=\"span_command_spec separator_character\">;</span> <div class=\"ui incrementation_field\"><div class=\"ui incrementation_variable\"></div> <span class=\"text_inc_receives span_command_spec\"></span> <div class=\"ui first_operand\"></div><div class=\"ui operator\"></div><div class=\"ui second_operand\"></div></div> <span class=\"span_command_spec\"> ) </span>';\n\tret += '<div class=\"ui block_commands\">';\n\tret += '</div>';\n\tret += '<span> </span>';\n\tret += '</div>';\n\t\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\tVariableValueMenu.renderMenu(command, command.var_attribution, el.find('.variable_attribution'), function_obj);\n\n\tConditionalExpressionManagement.renderExpression(command, command.expression2, function_obj, el.find('.conditional_expression'));\n\n\tVariableValueMenu.renderMenu(command, command.var_incrementation, el.find('.incrementation_variable'), function_obj);\t\n\n\tif (command.expression1) {\n\t\tel.find('.text_receives').text(LocalizedStrings.getUI('text_receives'));\n\t\tVariableValueMenu.renderMenu(command, command.expression1, el.find('.var_value_expression'), function_obj);\n\t}\n\n\tif (command.expression3) {\n\t\tel.find('.text_inc_receives').text(LocalizedStrings.getUI('text_receives'));\n\t\tVariableValueMenu.renderMenu(command, command.expression3.itens[0], el.find('.first_operand'), function_obj);\n\t\trenderOperator(command, function_obj, el.find('.operator'), command.expression3, 1);\n\t\tVariableValueMenu.renderMenu(command, command.expression3.itens[2], el.find('.second_operand'), function_obj);\n\t}\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\treturn el;\n}\n\nexport function manageExpressionElements (command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element) {\n\n\tif (dom_object.hasClass('variable_attribution')) {\n\t\tif (!command.expression3) {\n\t\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, \n\t\t\t\t[command.var_attribution,\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"1\", null, null, true)]);\n\n\t\t\tcommand.expression3 = exp;\n\t\t\tcommand.var_incrementation = command.var_attribution;\n\n\t\t\tvar cond_exp = \n\t\t\t\t\t\tnew Models.ArithmeticExpression(\n\t\t\t\t\t\t\tcommand.var_attribution, \n\t\t\t\t\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true), \n\t\t\t\t\t\t\tModels.ARITHMETIC_COMPARISON.less_than);\n\n\t\t\tcommand.expression2.expression = cond_exp;\n\t\t}\n\n\t\tdom_object.parent().find('.text_receives').text(LocalizedStrings.getUI('text_receives'));\n\n\t\tcommand.expression1 = new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"0\", null, null, true);\n\n\t\tdom_object.parent().find('.var_value_expression').empty();\n\t\t\n\t\tVariableValueMenu.renderMenu(command, command.expression1, dom_object.parent().find('.var_value_expression'), function_obj);\n\n\t\trenderAlgorithm();\n\t}\n\n\tif (dom_object.hasClass('incrementation_variable')) {\n\t\tdom_object.parent().find('.text_inc_receives').text(LocalizedStrings.getUI('text_receives'));\n\t\t\n\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, \n\t\t\t\t[new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true),\n\t \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n\n\t\tcommand.expression3 = exp;\n\n\t\tVariableValueMenu.renderMenu(command, command.expression3.itens[0], dom_object.parent().find('.first_operand'), function_obj);\n\n\t\trenderOperator(command, function_obj, dom_object.parent().find('.operator'), command.expression3, 1);\n\n\t\tVariableValueMenu.renderMenu(command, command.expression3.itens[2], dom_object.parent().find('.second_operand'), function_obj);\t\t\n\n\t}\n\n}\n\nexport function manageClearExpressionElements (command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element) {\n\tif (dom_object.hasClass('variable_attribution')) {\n\t\t$(dom_object).parent().find('.text_receives').text('');\n\t\tcommand.expression1 = null;\n\t\t$(dom_object).parent().find('.var_value_expression').empty();\n\t}\n\n\tif (dom_object.hasClass('incrementation_variable')) {\n\t\t$(dom_object).parent().find('.text_inc_receives').text('');\n\t\tcommand.expression3 = null;\n\t\t$(dom_object).parent().find('.first_operand').empty();\n\t\t$(dom_object).parent().find('.operator').empty();\n\t\t$(dom_object).parent().find('.second_operand').empty();\n\t}\n}\n\nfunction addHandlers (command, function_obj, repeatNtimes_dom) {\n\n\trepeatNtimes_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, repeatNtimes_dom)) {\n\t\t\trepeatNtimes_dom.fadeOut(400, function() {\n\t\t\t\trepeatNtimes_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction renderOperator (command, function_obj, temp_op, expression_element, index_op) {\n\n\tvar menu_operator = $('<div class=\"ui dropdown\"><div class=\"text\"></div></div>');\n\tmenu_operator.dropdown({\n\t values: [\n\t {\n\t name : '+',\n\t value : Models.ARITHMETIC_TYPES.plus,\n\t selected : (expression_element.itens[index_op] == Models.ARITHMETIC_TYPES.plus)\n\t },\n\t {\n\t name : '-',\n\t value : Models.ARITHMETIC_TYPES.minus,\n\t selected : (expression_element.itens[index_op] == Models.ARITHMETIC_TYPES.minus)\n\t },\n\t {\n\t name : '*',\n\t value : Models.ARITHMETIC_TYPES.multiplication,\n\t selected : (expression_element.itens[index_op] == Models.ARITHMETIC_TYPES.multiplication)\n\t },\n\t {\n\t name : '/',\n\t value : Models.ARITHMETIC_TYPES.division,\n\t selected : (expression_element.itens[index_op] == Models.ARITHMETIC_TYPES.division)\n\t },\n\t {\n\t name : '%',\n\t value : Models.ARITHMETIC_TYPES.module,\n\t selected : (expression_element.itens[index_op] == Models.ARITHMETIC_TYPES.module)\n\t }\n\t ],\n\t onChange: function(value, text, $selectedItem) {\n\t \texpression_element.itens[index_op] = value;\n\t }\n\t });\n\ttemp_op.append(menu_operator);\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui return created_element\"> <i class=\"ui icon small reply\"></i> <span> '+LocalizedStrings.getUI('text_return')+' </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar el = $('<div class=\"ui return command_container\"> <i class=\"ui icon small reply command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span class=\"span_command_spec\"> '+LocalizedStrings.getUI('text_return')+' </span> <div class=\"var_value_menu_div\"></div></div>');\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tif (function_obj.return_type != Types.VOID) {\n\t\tVariableValueMenu.renderMenu(command, command.variable_value_menu, el.find('.var_value_menu_div'), function_obj);\n\t} else {\n\t\tel.find('.var_value_menu_div').remove();\n\t\tcommand.variable_value_menu = null;\n\t}\n\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, return_dom) {\n\n\treturn_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, return_dom)) {\n\t\t\treturn_dom.fadeOut(400, function() {\n\t\t\t\treturn_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as CommandsManagement from '../commands';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as ContextualizedMenu from './contextualized_menu';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui switch created_element\"> <i class=\"ui icon small random\"></i> <span> '+LocalizedStrings.getUI('text_code_switch')+' ( x ) { <br> '+LocalizedStrings.getUI('text_code_case')+' 1: <br> '+LocalizedStrings.getUI('text_code_case')+' 2: <br> } </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui switch command_container\"> <i class=\"ui icon small random command_drag\" ></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"ui context_menu\"></div> <span> '+LocalizedStrings.getUI('text_code_switch')+' ( <div class=\"ui variable_to_switch\"></div> ) <div class=\"ui all_cases_div\"></div></span>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\tVariableValueMenu.renderMenu(command, command.variable, el.find('.variable_to_switch'), function_obj);\n\n\tif (command.cases) {\n\t\tfor (var i = 0; i < command.cases.length; i++) {\n\t\t\trenderCase(command.cases[i], command, function_obj, el.find('.all_cases_div'));\n\t\t}\n\t}\n\n\treturn el;\n}\n\nexport function renderCase (switchcase, command, function_obj, el) {\n\n\tvar casediv = $('<div class=\"ui case_div\"><i class=\"ui icon times red button_remove_command\"></i><span>'+LocalizedStrings.getUI('text_code_case')+'</span> <div class=\"ui variable_case\"></div>: <div class=\"case_commands_block\"></div></div>');\n\n\tVariableValueMenu.renderMenu(command, switchcase.variable_value_menu, casediv.find('.variable_case'), function_obj);\n\n\tcasediv.data('switchcase', switchcase);\n\tcasediv.find('.case_commands_block').data('switchcase', switchcase);\n\n\tel.append(casediv);\n\n\tif (switchcase.commands_block) {\n\t\tfor (var j = 0; j < switchcase.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(switchcase.commands_block[j], $(casediv.find('.case_commands_block')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\tcasediv.find('.button_remove_command').on('click', function() {\n\t\tfor (var i = 0; i < command.cases.length; i++) {\n\t\t\tif (switchcase == command.cases[i]) {\n\t\t\t\tdelete command.cases[i];\n\t\t\t\tcommand.cases.splice(i, 1);\n\t\t\t\tcasediv.remove();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n\n}\n\nfunction addHandlers (command, function_obj, switch_dom) {\n\n\tswitch_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, switch_dom)) {\n\t\t\tswitch_dom.fadeOut(400, function() {\n\t\t\t\tswitch_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as AttribuitionsManagement from './attribution';\nimport * as WritersManagement from './writer';\nimport * as RepeatNTimesManagement from './repeatNtimes';\n\nexport const VAR_OR_VALUE_TYPES = Object.freeze({only_variable: 1, only_value: 2, only_function: 3, variable_and_function: 4, variable_and_value_opt: 5,\n\tvalue_and_function: 6, all: 7});\n\nexport function renderMenu (command, ref_object, dom_object, function_obj, size_field = 2, expression_element) {\n\t// Verificar se o objeto atual trata-se de uma chamada de função e conferir se possui a quantidade correta de parâmetros\n\t// Caso não possua, tem que adicionar as variáveis que servirão de parâmetros:\n\tif (ref_object.function_called) {\n\t\tif (ref_object.function_called.parameters_list) {\n\n\t\t\twhile (ref_object.function_called.parameters_list.length != ref_object.parameters_list.length) {\n\t\t\t\tif (ref_object.parameters_list.length > ref_object.function_called.parameters_list.length) {\n\t\t\t\t\tref_object.parameters_list.pop();\n\t\t\t\t} else {\n\t\t\t\t\tref_object.parameters_list.push(new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tvar menu_var_or_value = '<div class=\"ui dropdown menu_var_or_value_dom\" data-varmenu=\"true\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\n\tif (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_variable) {\n\n\t\tmenu_var_or_value = '<div class=\"ui dropdown menu_var_or_value_dom\" data-varmenu=\"true\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu menu_only_vars\">';\n\t\tmenu_var_or_value += '</div>';\n\t}\n\n\tif ((ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_function) || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_value_opt) || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all)) {\n\t\t\n\t\tmenu_var_or_value += '<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('variable');\n\t\tmenu_var_or_value += '<div class=\"menu menu_only_vars\">';\n\t\tmenu_var_or_value += '</div></div>';\n\t}\n\n\tif (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_value) {\n\t\tmenu_var_or_value = '<input type=\"text\" class=\"width-dynamic\" size=\"'+size_field+'\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />';\n\t}\n\n\tif ((ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_value_opt) \n\t\t|| (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.value_and_function) || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all)) {\n\n\t\tmenu_var_or_value += '<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_value+'\">'+LocalizedStrings.getUI('text_value')+'</div>';\n\n\t}\n\n\tif (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_function) {\n\n\t\tmenu_var_or_value = '<div class=\"ui dropdown menu_var_or_value_dom\" data-varmenu=\"true\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu menu_only_functions\">';\n\t\tmenu_var_or_value += '</div>';\n\t} \n\n\tif ((ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_function) \n\t\t|| (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.value_and_function) || (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all)) {\n\t\t\n\t\tmenu_var_or_value += '<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_function+'\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('btn_function');\n\t\tmenu_var_or_value += '<div class=\"menu menu_only_functions\">';\n\t\tmenu_var_or_value += '</div></div>';\n\n/*\t\tif (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\tmenu_var_or_value += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\tmenu_var_or_value += '<div class=\"menu\">';\n\t\t\tmenu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\tmenu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\tmenu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\tmenu_var_or_value += '</div></div>';\n\t\t}*/\n\t}\n\n menu_var_or_value += '</div></div>';\n\n menu_var_or_value = $(menu_var_or_value);\n\n dom_object.append(menu_var_or_value);\n \n ref_object.dom_object = menu_var_or_value;\n\n addHandlers(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element);\n\n addVariablesToMenu(function_obj, menu_var_or_value, ref_object, expression_element);\n\n addFunctionsToMenu(function_obj, menu_var_or_value, ref_object, expression_element);\n\n\taddIVProgFunctionsToMenu(function_obj, menu_var_or_value, ref_object, expression_element);\n\n if (ref_object.content || ref_object.function_called) {\n \tif (ref_object.content) {\n \t\t// Verificar se a variável ainda existe:\n \t\tvar variable_fun = isVarInProgram(ref_object.content, function_obj);\n \t\tif (variable_fun) {\n \t\t\tref_object.content = variable_fun;\n \t\t\trenderPreviousContent(function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element);\n\t \t} else {\n\t \t\tif (ref_object.content && ref_object.content.type) {\n\t \t\t\tref_object.content = null;\n\t \t\t\tappendSelectText(ref_object, menu_var_or_value);\n\t \t\t} else {\n\t \t\t\trenderPreviousContent(function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element);\n\t \t\t}\n\t \t}\n \t} else if (ref_object.function_called) {\n \t\t// Verificar se a função ainda existe:\n \t\tvar ret_function = isFunctionInProgram(ref_object.function_called);\n \t\tif (ret_function) {\n \t\t\tref_object.function_called = ret_function;\n \t\t\trenderPreviousContent(function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element);\n \t\t} else {\n \t\t\tref_object.content = null;\n\t\t \tref_object.row = null;\n\t\t \tref_object.column = null;\n\t\t \tdelete ref_object.function_called;\n\t\t \tdelete ref_object.parameters_list;\n \t\t\tappendSelectText(ref_object, menu_var_or_value);\n \t\t}\n \t}\n\n } else {\n \tappendSelectText(ref_object, menu_var_or_value);\n }\n\n}\n\nfunction appendSelectText (ref_object, menu_var_or_value) {\n\tswitch(ref_object.variable_and_value) {\n\t\tcase VAR_OR_VALUE_TYPES.only_variable:\n\t\t\tmenu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_var')+'</i>');\n\t\t\tbreak;\n\t\tcase VAR_OR_VALUE_TYPES.all:\n\t\t\tmenu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_all')+'</i>');\n\t\t\tbreak;\n\t\tcase VAR_OR_VALUE_TYPES.variable_and_function:\n\t\t\tmenu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_all')+'</i>');\n\t\t\tbreak;\n\t\tcase VAR_OR_VALUE_TYPES.only_function:\n\t\t\tmenu_var_or_value.find('.text').append('<i>'+LocalizedStrings.getUI('var_menu_select_function')+'</i>');\n\t\t\tbreak;\n\t}\n}\n\nfunction isFunctionInProgram (function_called_obj) {\n\tif (function_called_obj.name) {\n\t\tif (window.program_obj.functions) {\n\t\t\tfor (var i = 0; i < window.program_obj.functions.length; i++) {\n\t\t\t\tif (window.program_obj.functions[i] == function_called_obj) {\n\t\t\t\t\treturn window.program_obj.functions[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i = 0; i < window.program_obj.functions.length; i++) {\n\t\t\t\tif (window.program_obj.functions[i].name == function_called_obj.name) {\n\t\t\t\t\treturn window.program_obj.functions[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (function_called_obj.identifier) {\n\t\tfor (var i = 0; i < window.system_functions.length; i++) {\n\t\t\tif (window.system_functions[i].identifier == function_called_obj.identifier) {\n\t\t\t\treturn window.system_functions[i];\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn null;\n}\n\nfunction isVarInProgram (var_obj, function_obj) {\n\t// Verify in locals:\n\tif (function_obj.variables_list) {\n\t\tfor (var i = 0; i < function_obj.variables_list.length; i++) {\n\t\t\tif (function_obj.variables_list[i] == var_obj) {\n\t\t\t\treturn function_obj.variables_list[i];\n\t\t\t}\n\t\t}\n\t}\n\t// Verify in parameters:\n\tif (function_obj.parameters_list) {\n\t\tfor (var i = 0; i < function_obj.parameters_list.length; i++) {\n\t\t\tif (function_obj.parameters_list[i] == var_obj) {\n\t\t\t\treturn function_obj.parameters_list[i];\n\t\t\t}\n\t\t}\n\t}\n\t// Verify in globals:\n\tif (window.program_obj.globals) {\n\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\tif (window.program_obj.globals[i] == var_obj) {\n\t\t\t\treturn window.program_obj.globals[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t// If not found, verify if the reference was lost\n\tif (var_obj) {\n\t\tif (function_obj.variables_list) {\n\t\t\tfor (var i = 0; i < function_obj.variables_list.length; i++) {\n\t\t\t\tif (function_obj.variables_list[i].name == var_obj.name) {\n\t\t\t\t\treturn function_obj.variables_list[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (function_obj.parameters_list) {\n\t\t\tfor (var i = 0; i < function_obj.parameters_list.length; i++) {\n\t\t\t\tif (function_obj.parameters_list[i].name == var_obj.name) {\n\t\t\t\t\treturn function_obj.parameters_list[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (window.program_obj.globals) {\n\t\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\t\tif (window.program_obj.globals[i].name == var_obj.name) {\n\t\t\t\t\treturn window.program_obj.globals[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction renderPreviousContent (function_obj, menu_var_or_value, ref_object, dom_object, command, expression_element) {\n\n\t\n\tif (ref_object.function_called) {\n\n\t\tmenu_var_or_value.remove();\n\t\tvariableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);\n\n\t} else if (ref_object.content.type) { \n\n\t\tmenu_var_or_value.remove();\n\t\tvariableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);\n\n\t} else {\n\n\t\tmenu_var_or_value.remove();\n\t\tvariableValueMenuCode(command, ref_object, dom_object, function_obj, menu_var_or_value, expression_element);\n\n\t}\n}\n\nfunction variableValueMenuCode (command, variable_obj, dom_object, function_obj, menu_var_or_value, expression_element) {\n\t\n\tif (variable_obj.content || variable_obj.function_called) {\n \t// Verificar se a variável ainda existe:\n \tvar var_fun = isVarInProgram(variable_obj.content, function_obj);\n\n \tif (var_fun) {\n\t \tvariable_obj.content = var_fun;\n \t} else {\n \t\tif (variable_obj.content && variable_obj.content.type) {\n \t\t\tvariable_obj.content = null;\n \t\t\tappendSelectText(variable_obj, menu_var_or_value);\n \t\t}\n \t}\n } else {\n \tappendSelectText(variable_obj, menu_var_or_value);\n }\n\n\tif (variable_obj.content == null && variable_obj.function_called == null) {\n\t\trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\treturn;\n\t}\n\n\tvar ret = '';\n\tif (variable_obj.function_called) {\n\n\t\tif (variable_obj.function_called.parameters_list == null || variable_obj.function_called.length == 0) {\n\n\t\t\tmenu_var_or_value.find('.text').text(' ');\n\t\t\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\t\t\tvar parameters_menu;\n\t\t\t\n\t\t\tif (variable_obj.function_called.name) {\n\t\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> '+variable_obj.function_called.name+' <span> ( </span>';\n\t\t\t} else {\n\t\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> <i>'+LocalizedStrings.getUI(variable_obj.function_called.category)+'.'+LocalizedStrings.getUI(variable_obj.function_called.identifier)+'</i> <span> ( </span>';\n\t\t\t}\n\n\t\t\tparameters_menu += '<span> ) </span></div>';\n\n\t\t\tparameters_menu = $(parameters_menu);\n\n\t\t\tdom_object.append(parameters_menu);\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}*/\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tcontext_menu.insertAfter( dom_object.find('.parameters_function_called') );\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t console.log('S1');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP1');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\t\t\t \tdelete variable_obj.function_called;\n\t\t\t \tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\t\t} else {\n\n\t\t\tmenu_var_or_value.find('.text').text(' ');\n\t\t\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\t\t\tvar parameters_menu;\n\n\t\t\tif (variable_obj.function_called.name) {\n\t\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> '+variable_obj.function_called.name+' <span> ( </span>';\n\t\t\t} else {\n\t\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> <i>'+LocalizedStrings.getUI(variable_obj.function_called.category)+'.'+LocalizedStrings.getUI(variable_obj.function_called.identifier)+'</i> <span> ( </span>';\n\t\t\t}\n\n\t\t\tfor (var j = 0; j < variable_obj.function_called.parameters_list.length; j++) {\n\t\t\t\tparameters_menu += '<div class=\"render_style_param parameter_'+j+'\"></div>';\n\t\t\t\tif ((j + 1) != variable_obj.function_called.parameters_list.length) {\n\t\t\t\t\tparameters_menu += ' , ';\n\t\t\t\t}\n\t\t\t}\n\t\t\tparameters_menu += '<span> ) </span></div>';\n\n\t\t\tparameters_menu = $(parameters_menu);\n\n\t\t\tdom_object.append(parameters_menu);\n\n\t\t\tfor (var j = 0; j < variable_obj.function_called.parameters_list.length; j++) {\n\t\t\t\trenderMenu(command, variable_obj.parameters_list[j], parameters_menu.find('.parameter_'+j), function_obj, 2, expression_element);\n\t\t\t}\n\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}*/\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tcontext_menu.insertAfter( parameters_menu );\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t\tconsole.log('S2');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP2');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\t\t\t \tdelete variable_obj.function_called;\n\t\t\t \tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\t\t}\n\n\n\t} else if (variable_obj.content.type) {\n\n\t\tvar variable_render = \"\";\n\n\t\tif (variable_obj.content.dimensions == 1 && variable_obj.dimensions != 1) {\n\n\t\t\tvariable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_obj.content.name+'</span>';\n\n\t\t\tvariable_render += ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n\t\t\t\n\t\t\tvariable_render += '</div>';\n\n\t\t\tvariable_render = $(variable_render);\n\n\t\t\tdom_object.append(variable_render);\n\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}*/\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tvariable_render.append(context_menu);\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t\tconsole.log('S3');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP3');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\t\t\t \tdelete variable_obj.function_called;\n\t\t \t\tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\n\t\t\tif (!variable_obj.column) {\n\t\t\t\tvariable_obj.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t\t}\n\n\t\t\tvariableValueMenuCode(command, variable_obj.column, $(variable_render.find('.column_container')), function_obj, menu_var_or_value, expression_element);\n\n\t\t} else if (variable_obj.content.dimensions == 2 && variable_obj.dimensions != 2) {\n\n\t\t\tvariable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_obj.content.name+'</span>';\n\n\t\t\tvariable_render += ' <span>[ </span> <div class=\"row_container\"></div> <span> ]</span>';\n\t\t\tvariable_render += ' <span>[ </span> <div class=\"column_container\"></div> <span> ] </span>';\n\t\t\t\n\t\t\tvariable_render += '</div>';\n\n\t\t\tvariable_render = $(variable_render);\n\n\t\t\tdom_object.append(variable_render);\n\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}*/\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tvariable_render.append(context_menu);\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t\tconsole.log('S4');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP4');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\t\t\t \tdelete variable_obj.function_called;\n\t\t \t\tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\n\t\t\tif (!variable_obj.column) {\n\t\t\t\tvariable_obj.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t\t}\n\t\t\tif (!variable_obj.row) {\n\t\t\t\tvariable_obj.row = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t\t}\n\n\t\t\tvariableValueMenuCode(command, variable_obj.row, $(variable_render.find('.row_container')), function_obj, menu_var_or_value, expression_element);\n\t\t\tvariableValueMenuCode(command, variable_obj.column, $(variable_render.find('.column_container')), function_obj, menu_var_or_value, expression_element);\n\n\t\t} else {\n\n\t\t\tvariable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_obj.content.name+'</span>';\n\n\t\t\tvariable_render += '</div>';\n\n\t\t\tvariable_render = $(variable_render);\n\n\t\t\tdom_object.append(variable_render);\n\n\n\t\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t\t/*if (command.type == Models.COMMAND_TYPES.attribution && !dom_object.hasClass('var_attributed')) {\n\t\t\t\tconsole.log('dom_object6');\n\t\t\t\tconsole.log(dom_object);\n\t\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\t\tcontext_menu += '</div></div>';\n\t\t\t}*/\n\n\t\t\tcontext_menu += '</div></div>';\n\n\t\t\tcontext_menu = $(context_menu);\n\n\t\t\tvariable_render.append(context_menu);\n\n\t\t\tcontext_menu.dropdown({\n\t\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\t\tconsole.log('S5');\n\t\t\t if ($selectedItem.data('clear')) {\n\t\t\t \tconsole.log('PP5');\n\t\t\t \tdom_object.text('');\n\n\t\t\t \tvariable_obj.content = null;\n\t\t\t \tvariable_obj.row = null;\n\t\t\t \tvariable_obj.column = null;\n\n\t\t\t \tdelete variable_obj.function_called;\n\t\t \t\tdelete variable_obj.parameters_list;\n\n\t\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t\t }\n\n\t\t\t if ($selectedItem.data('exp')) {\n\t\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t\t }\n\t\t },\n\t\t selectOnKeydown: false\n\t\t\t});\n\n\t\t}\n\n\t} else {\n\n\t\tvar variable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_obj.content+'</span>';\n\t\tvariable_render += '</div>';\n\n\t\tvariable_render = $(variable_render);\n\n\t\tdom_object.append(variable_render);\n\n\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\tcontext_menu += '</div></div>';\n\t\t}*/\n\n\t\tcontext_menu += '</div></div>';\n\n\t\tcontext_menu = $(context_menu);\n\n\t\tif (variable_obj.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n\t\t\tcontext_menu.insertAfter( variable_render );\n\t\t}\n\n\t\tcontext_menu.dropdown({\n\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\tconsole.log('S6');\n\t\t if ($selectedItem.data('clear')) {\n\t\t \tconsole.log('PP6');\n\t\t \tdom_object.text('');\n\n \t\t\t\tvariable_obj.content = null;\n\t\t\t variable_obj.row = null;\n\t\t\t variable_obj.column = null;\n\n\t\t \tdelete variable_obj.function_called;\n\t\t \tdelete variable_obj.parameters_list;\n\n\t\t \tdom_object.find('.value_rendered').remove();\n\t\t\t\tdom_object.find('.context_menu_clear').remove();\n\t\t\t\tdom_object.find('.width-dynamic-minus').remove();\n\n\t\t \trenderMenu(command, variable_obj, dom_object, function_obj, 2, expression_element);\n\t\t }\n\n\t\t if ($selectedItem.data('exp')) {\n\t\t \tAttribuitionsManagement.manageExpressionElements(command, variable_obj, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\t },\n\t\t selectOnKeydown: false\n\t\t});\n\n\t\tvariable_render.on('click', function(e) {\n\t\t\tvariable_render.remove();\n\t\t\tvariable_render.empty();\n\t\t\tvariable_render.remove();\n\t\t\tdom_object.empty();\n\t\t\tdom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\t\t\t\n\t\t\topenInputToValue(command, variable_obj, dom_object, menu_var_or_value, function_obj, expression_element);\n\t\t});\n\t}\n}\n\nfunction addIVProgFunctionsToMenu (function_obj, menu_var_or_value, ref_object, expression_element) {\n\tvar sub_menu = menu_var_or_value.find('.menu_only_functions');\n\tsub_menu.append('<div class=\"divider\"></div><div class=\"header\">'+LocalizedStrings.getUI('text_header_ivprog_functions')+'</div>');\n\tsub_menu.append('<div class=\"item\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('text_menu_functions_math')+'<div class=\"menu menu_math_functions\"></div></div>');\n\tsub_menu.append('<div class=\"item\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('text_menu_functions_text')+'<div class=\"menu menu_text_functions\"></div></div>');\n\tsub_menu.append('<div class=\"item\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('text_menu_functions_arrangement')+'<div class=\"menu menu_arrangement_functions\"></div></div>');\n\tsub_menu.append('<div class=\"item\"><i class=\"dropdown icon\"></i>'+LocalizedStrings.getUI('text_menu_functions_conversion')+'<div class=\"menu menu_conversion_functions\"></div></div>');\n\n\t// Insert Math functions:\n\tfor (var i = 0; i < window.system_functions.length; i++) {\n\t\tvar t = $('<div class=\"item\"></div>');\n\t\tt.data('function_reference', window.system_functions[i]);\n\t\tt.data('option', VAR_OR_VALUE_TYPES.only_function);\n\t\tt.text(LocalizedStrings.getUI(window.system_functions[i].identifier));\n\t\t\n\t\tswitch(window.system_functions[i].category) {\n\t\t\tcase Models.SYSTEM_FUNCTIONS_CATEGORIES.math:\n\t\t\t\tsub_menu.find('.menu_math_functions').append(t);\n\t\t\t\tbreak;\n\t\t\tcase Models.SYSTEM_FUNCTIONS_CATEGORIES.text:\n\t\t\t\tsub_menu.find('.menu_text_functions').append(t);\n\t\t\t\tbreak;\n\t\t\tcase Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement:\n\t\t\t\tsub_menu.find('.menu_arrangement_functions').append(t);\n\t\t\t\tbreak;\n\t\t\tcase Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion:\n\t\t\t\tsub_menu.find('.menu_conversion_functions').append(t);\n\t\t\t\tbreak;\n\t\t}\t\n\t}\n}\n\nfunction addFunctionsToMenu (function_obj, menu_var_or_value, ref_object, expression_element) {\n\tvar sub_menu = menu_var_or_value.find('.menu_only_functions');\n\tsub_menu.text('');\n\n\tfor (var i = 0; i < window.program_obj.functions.length; i++) {\n\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_function+'\">' + window.program_obj.functions[i].name + ' </div>');\n\t\ttemp.data('function_reference', window.program_obj.functions[i]);\n\t\tsub_menu.append(temp);\n\t}\n}\n\nfunction addVariablesToMenu (function_obj, menu_var_or_value, ref_object, expression_element) {\n\n\tvar sub_menu = menu_var_or_value.find('.menu_only_vars');\n\tsub_menu.text('');\n\tvar is_there = false;\n\n\tif (window.program_obj.globals) {\n\n\t\tif (ref_object.include_constant) {\n\t\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\">' + window.program_obj.globals[i].name + ' </div>');\n\t\t\t\ttemp.data('variable_reference', window.program_obj.globals[i]);\n\t\t\t\tsub_menu.append(temp);\n\t\t\t\tis_there = true;\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var i = 0; i < window.program_obj.globals.length; i++) {\n\t\t\t\tif (!window.program_obj.globals[i].is_constant) {\n\t\t\t\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\">' + window.program_obj.globals[i].name + ' </div>');\n\t\t\t\t\ttemp.data('variable_reference', window.program_obj.globals[i]);\n\t\t\t\t\tsub_menu.append(temp);\n\t\t\t\t\tis_there = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (function_obj.parameters_list) {\n\t\tfor (var i = 0; i < function_obj.parameters_list.length; i++) {\n\t\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\">' + function_obj.parameters_list[i].name + ' </div>');\n\t\t\ttemp.data('variable_reference', function_obj.parameters_list[i]);\n\t\t\tsub_menu.append(temp);\n\t\t\tis_there = true;\n\t\t}\n\t}\n\n\tif (function_obj.variables_list) {\n\t\tfor (var i = 0; i < function_obj.variables_list.length; i++) {\n\t\t\tvar temp = $('<div class=\"item\" data-option=\"'+VAR_OR_VALUE_TYPES.only_variable+'\">' + function_obj.variables_list[i].name + ' </div>');\n\t\t\ttemp.data('variable_reference', function_obj.variables_list[i]);\n\t\t\tsub_menu.append(temp);\n\t\t\tis_there = true;\n\t\t}\n\t}\n\tif (!is_there) {\n\t\tsub_menu.append($('<div class=\"header\">'+LocalizedStrings.getUI('text_none_variable')+'</div>'));\n\t\tsub_menu.append($('<div class=\"item disabled\">'+LocalizedStrings.getUI('text_none_variable_instruction')+'</div>'));\n\t}\n\n}\n\nfunction addHandlers (command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element) {\n\n\tif (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n\t\tmenu_var_or_value.dropdown({\n\t\t onChange: function(value, text, $selectedItem) {\n\t\t \tconsole.log('S7');\n\t\t \tdom_object.find('.var_name').remove();\n\t\t switch ($selectedItem.data('option')) {\n\t\t \tcase VAR_OR_VALUE_TYPES.only_function:\n\t\t \t\topenInputToFunction(command, ref_object, dom_object, menu_var_or_value, function_obj, $($selectedItem).data('function_reference'), expression_element);\n\t\t \t\tbreak;\n\n\t\t \tcase VAR_OR_VALUE_TYPES.only_value:\n\t\t \t\topenInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element);\n\t\t \t\tbreak;\n\n\t\t \tcase VAR_OR_VALUE_TYPES.only_variable:\n\t\t \t\topenInputToVariable(command, ref_object, dom_object, menu_var_or_value, function_obj, $($selectedItem).data('variable_reference'), expression_element);\n\t\t \t\tbreak;\n\t\t }\n\n\t\t if ($selectedItem.data('exp')) {\n\t\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\n\t\t if (command.type == Models.COMMAND_TYPES.repeatNtimes) {\n\t\t \tRepeatNTimesManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\t },\n\t\t selectOnKeydown: false\n\t });\n\t}\n\n\tdom_object.find('.width-dynamic').on('input', function() {\n\t var inputWidth = $(this).textWidth()+10;\n\t $(this).focus();\n\n\t var tmpStr = $(this).val();\n\t\t$(this).val('');\n\t\t$(this).val(tmpStr);\n\n\t $(this).css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\n\tif (command.type == Models.COMMAND_TYPES.comment) {\n\t\tdom_object.parent().on('click', function(e) {\n\t\t\tdom_object.find('.value_rendered').remove();\n\t\t\tdom_object.find('.value_rendered').empty();\n\t\t\tdom_object.find('.value_rendered').remove();\n\t\t\tdom_object.empty();\n\t\t\tdom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\t\t\t\n\t\t\topenInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)\n\t\t});\n\t}\n\t\n}\n\nfunction openInputToFunction (command, ref_object, dom_object, menu_var_or_value, function_obj, function_selected, expression_element) {\n\t\n\tref_object.function_called = function_selected;\n\tref_object.parameters_list = [];\n\n\n\tif (function_selected.parameters_list != null && function_selected.parameters_list.length > 0) {\n\n\t\tmenu_var_or_value.find('.text').text(' ');\n\t\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\t\tvar parameters_menu;\n\t\tif (function_selected.name) {\n\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> '+function_selected.name+' <span> ( </span>';\n\t\t} else {\n\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> <i>'+LocalizedStrings.getUI(function_selected.category)+'.'+LocalizedStrings.getUI(function_selected.identifier)+'</i> <span> ( </span>';\n\t\t}\n\t\tfor (var j = 0; j < function_selected.parameters_list.length; j++) {\n\t\t\tparameters_menu += '<div class=\"render_style_param parameter_'+j+'\"></div>';\n\t\t\tif ((j + 1) != function_selected.parameters_list.length) {\n\t\t\t\tparameters_menu += ' , ';\n\t\t\t}\n\t\t}\n\t\tparameters_menu += '<span> ) </span></div>';\n\n\t\tparameters_menu = $(parameters_menu);\n\n\t\tdom_object.append(parameters_menu);\n\n\t\tfor (var j = 0; j < function_selected.parameters_list.length; j++) {\n\t\t\tvar temp;\n\t\t\tif (function_selected.parameters_list[j].dimensions > 0) {\n\t\t\t\ttemp = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, function_selected.parameters_list[j].dimensions);\n\t\t\t} else {\n\t\t\t\ttemp = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\t\t}\n\t\t\tref_object.parameters_list.push(temp);\n\t\t\trenderMenu(command, temp, parameters_menu.find('.parameter_'+j), function_obj, 2, expression_element);\n\t\t}\n\n\n\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\tcontext_menu += '</div></div>';\n\t\t}*/\n\n\t\tcontext_menu += '</div></div>';\n\n\t\tcontext_menu = $(context_menu);\n\n\t\tcontext_menu.insertAfter( dom_object.find('.parameters_function_called') );\n\n\t\tcontext_menu.dropdown({\n\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\tconsole.log('S8');\n\t\t if ($selectedItem.data('clear')) {\n\t\t \tconsole.log('PP7');\n\t\t \tdom_object.text('');\n\n\t\t \tref_object.content = null;\n\t\t \tref_object.row = null;\n\t\t \tref_object.column = null;\n\t\t \tdelete ref_object.function_called;\n\t\t \tdelete ref_object.parameters_list;\n\n\t\t \trenderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);\n\t\t }\n\n\t\t if ($selectedItem.data('exp')) {\n\t\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\t },\n\t\t selectOnKeydown: false\n\t\t});\n\n\t} else {\n\t\tmenu_var_or_value.find('.text').text(' ');\n\t\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\t\tvar parameters_menu;\n\n\t\tif (function_selected.name) {\n\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> '+function_selected.name+' <span> ( </span>';\n\t\t} else {\n\t\t\tparameters_menu = '<div class=\"parameters_function_called\"> <i>'+LocalizedStrings.getUI(function_selected.category)+'.'+LocalizedStrings.getUI(function_selected.identifier)+'</i> <span> ( </span>';\n\t\t}\n\t\t\n\t\tparameters_menu += '<span> ) </span></div>';\n\n\t\tparameters_menu = $(parameters_menu);\n\n\t\tdom_object.append(parameters_menu);\n\n\t\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\t\tcontext_menu += '<div class=\"menu\">';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\t\tcontext_menu += '</div></div>';\n\t\t}*/\n\n\t\tcontext_menu += '</div></div>';\n\n\t\tcontext_menu = $(context_menu);\n\n\t\tcontext_menu.insertAfter( dom_object.find('.parameters_function_called') );\n\n\t\tcontext_menu.dropdown({\n\t\t\tonChange: function(value, text, $selectedItem) {\n\t\t\t\tconsole.log('S9');\n\t\t if ($selectedItem.data('clear')) {\n\t\t \tconsole.log('PP8');\n\t\t \tdom_object.text('');\n\n\t\t \tref_object.content = null;\n\t\t \tref_object.row = null;\n\t\t \tref_object.column = null;\n\t\t \tdelete ref_object.function_called;\n\t\t \tdelete ref_object.parameters_list;\n\n\t\t \trenderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);\n\t\t }\n\n\t\t if ($selectedItem.data('exp')) {\n\t\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t\t }\n\t },\n\t\t selectOnKeydown: false\n\t\t});\n\t}\n\n\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\tAttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj);\n\t}*/\n}\n\nfunction openInputToVariable (command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected, expression_element) {\n\t\n\tref_object.content = variable_selected;\n\n\tmenu_var_or_value.find('.text').text(' ');\n\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\tvar variable_render = '<div class=\"variable_rendered\"> <span class=\"var_name\">'+variable_selected.name+'</span>';\n\n\tif (variable_selected.dimensions == 1 && ref_object.dimensions != 1) {\n\t\tvariable_render += ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n\t}\n\tif (variable_selected.dimensions == 2 && ref_object.dimensions != 2) {\n\t\tvariable_render += ' <span>[ </span> <div class=\"row_container\"></div> <span> ]</span> ';\n\t\tvariable_render += ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n\t}\n\n\n\tvariable_render += '</div>';\n\n\tvariable_render = $(variable_render);\n\n\tdom_object.append(variable_render);\n\n\tif (variable_selected.dimensions == 1 && ref_object.dimensions != 1) {\n\t\tref_object.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\trenderMenu(command, ref_object.column, variable_render.find('.column_container'), function_obj, 2, expression_element);\n\t}\n\tif (variable_selected.dimensions == 2 && ref_object.dimensions != 2) {\n\t\tref_object.row = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\trenderMenu(command, ref_object.row, variable_render.find('.row_container'), function_obj, 2, expression_element);\n\n\t\tref_object.column = new Models.VariableValueMenu(VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\t\trenderMenu(command, ref_object.column, variable_render.find('.column_container'), function_obj, 2, expression_element);\n\t}\n\n\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t/*if (command.type == Models.COMMAND_TYPES.attribution && !dom_object.hasClass('var_attributed')) {\n\t\tconsole.log(\"dom_object 10: \");\n\t\tconsole.log(dom_object);\n\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\tcontext_menu += '<div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\tcontext_menu += '</div></div>';\n\t}*/\n\n\tcontext_menu += '</div></div>';\n\n\tcontext_menu = $(context_menu);\n\n\tcontext_menu.insertAfter( dom_object.find('.variable_rendered') );\n\n\tcontext_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t\t\tconsole.log('S10');\n\t if ($selectedItem.data('clear')) {\n\t \tconsole.log('PP9');\n\t \tdom_object.text('');\n\n\t \tref_object.content = null;\n\t \tref_object.row = null;\n\t \tref_object.column = null;\n\n\t \tdelete ref_object.function_called;\n\t\t delete ref_object.parameters_list;\n\n\t \trenderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);\n\t }\n\n\t if ($selectedItem.data('exp')) {\n\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t }\n\n\t if (command.type == Models.COMMAND_TYPES.repeatNtimes) {\n\t \tRepeatNTimesManagement.manageClearExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t }\n },\n\t selectOnKeydown: false\n\t});\n\n\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\tAttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected);\n\t}*/\n}\n\n\nfunction openInputToValue (command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element) {\n\n\tif (ref_object.content == null) {\n\t\tref_object.content = \"\";\n\t}\n\n\tmenu_var_or_value.find('.text').text(' ');\n\tvar field = $('<input type=\"text\" size=\"2\" class=\"width-dynamic-minus\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />');\n\tfield.insertBefore(dom_object.find('.menu_var_or_value_dom'));\n\tvar rendered = $('<div class=\"value_rendered\"></div>');\n\trendered.insertBefore(field);\n\n\tfield.focus();\n\tfield.val(ref_object.content);\n\n\tvar context_menu = '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n\tcontext_menu += '<div class=\"item\" data-clear=\"true\">'+LocalizedStrings.getUI('btn_clear')+'</div>';\n\n\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\tcontext_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n\t\tcontext_menu += '<div class=\"menu\">';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n\t\tcontext_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n\t\tcontext_menu += '</div></div>';\n\t}*/\n\n\tcontext_menu += '</div></div>';\n\n\tcontext_menu = $(context_menu);\n\n\tdom_object.find('.menu_var_or_value_dom').remove();\n\n\tif (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n\t\tcontext_menu.insertAfter( field );\n\t}\n\n\tcontext_menu.dropdown({\n\t\tonChange: function(value, text, $selectedItem) {\n\t\t\tconsole.log('S11');\n\t if ($selectedItem.data('clear')) {\n\t \tconsole.log('PP10');\n\t \tdom_object.text('');\n\n\t \tdom_object.find('.value_rendered').remove();\n\t\t\tdom_object.find('.context_menu_clear').remove();\n\t\t\tdom_object.find('.width-dynamic-minus').remove();\n\n\t\t\tref_object.content = null;\n\t\t ref_object.row = null;\n\t\t ref_object.column = null;\n\n\t\t\tdelete ref_object.function_called;\n\t\t delete ref_object.parameters_list;\n\n\t \trenderMenu(command, ref_object, dom_object, function_obj, 2, expression_element);\n\t }\n\n\t if ($selectedItem.data('exp')) {\n\t \tAttribuitionsManagement.manageExpressionElements(command, ref_object, dom_object, menu_var_or_value, function_obj, $selectedItem, expression_element);\n\t }\n },\n\t selectOnKeydown: false\n\t});\n\n\tdom_object.find('.width-dynamic-minus').focusout(function() {\n\t\tif ($(this).val().trim()) {\n\t\t\tref_object.content = $(this).val().trim();\n\t\t}\n\n\t\trendered.text(ref_object.content);\n\t\t$(this).remove();\n\n\t});\n\n\tdom_object.find('.width-dynamic-minus').on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif ($(this).val().trim()) {\n\t\t\t\tref_object.content = $(this).val().trim();\n\t\t\t}\n\t\t\trendered.text(ref_object.content);\n\n\t\t\t$(this).remove();\n\t\t}\n\t\tif(code == 27) {\n\t\t\trendered.text(ref_object.content);\n\n\t\t\t$(this).remove();\n\t\t}\n\t});\n\n\tif (command.type == Models.COMMAND_TYPES.comment) {\n\t\t/*rendered.parent().on('click', function(e) {\n\t\t\trendered.parent().off();\n\t\t\tconsole.log(\"TTT14\");\n\t\t\trendered.remove();\n\t\t\trendered.empty();\n\t\t\trendered.remove();\n\t\t\tdom_object.empty();\n\t\t\tdom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\t\t\t\n\t\t\topenInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)\n\t\t});*/\n\t}\n\n\trendered.on('click', function(e) {\n\t\tconsole.log(\"TTT2\");\n\t\trendered.remove();\n\t\trendered.empty();\n\t\trendered.remove();\n\t\tdom_object.empty();\n\t\tdom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\t\t\n\t\topenInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)\n\t});\n\n\t/*if (command.type == Models.COMMAND_TYPES.attribution) {\n\t\tAttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj);\n\t}*/\n}\n\n\n$.fn.textWidth = function(text, font) {\n \n if (!$.fn.textWidth.fakeEl) $.fn.textWidth.fakeEl = $('<span>').hide().appendTo(document.body);\n \n $.fn.textWidth.fakeEl.text(text || this.val() || this.text() || this.attr('placeholder')).css('font', font || this.css('font'));\n \n return $.fn.textWidth.fakeEl.width();\n};\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as ContextualizedMenu from './contextualized_menu';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui whiletrue created_element\"> <i class=\"ui icon small sync\"></i> <span> ' + LocalizedStrings.getUI('text_code_while') + ' ( x < 10 ) <br> </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui whiletrue command_container\"> <i class=\"ui icon small sync command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <div class=\"ui context_menu\"></div> <span class=\"span_command_spec\"> ' + LocalizedStrings.getUI('text_code_while') + ' </span>';\n\tret += '<span class=\"span_command_spec\"> ( </span> <div class=\"conditional_expression\"></div> <span class=\"span_command_spec\"> ) </span>';\n\tret += ' </span>';\n\tret += '<div class=\"ui block_commands\">';\n\tret += '</div>';\n\tret += '<span> </span>';\n\tret += '</div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\tel.find('.block_commands').data('command', command);\n\n\taddHandlers(command, function_obj, el);\n\n\tContextualizedMenu.renderMenu(command, el.find('.context_menu'), function_obj, el);\n\n\tConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\n\tif (command.commands_block) {\n\t\tfor (var j = 0; j < command.commands_block.length; j++) {\n\t\t CommandsManagement.renderCommand(command.commands_block[j], $(el.find('.block_commands')[0]), 3, function_obj);\n\t\t}\n\t}\n\n\treturn el;\n}\n\nfunction addHandlers (command, function_obj, whiletrue_dom) {\n\n\twhiletrue_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, whiletrue_dom)) {\n\t\t\twhiletrue_dom.fadeOut(400, function() {\n\t\t\t\twhiletrue_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n}\n","import $ from 'jquery';\nimport { Types } from '../types';\nimport * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as GlobalsManagement from '../globals';\nimport * as VariablesManagement from '../variables';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as VariableValueMenuManagement from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\n\nimport '../../Sortable.js';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui writer created_element\"> <i class=\"ui icon small upload\"></i> <span> '+LocalizedStrings.getUI('text_command_write')+' var </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tvar ret = '';\n\tret += '<div class=\"ui writer command_container\"> <i class=\"ui icon small upload command_drag\"></i> <i class=\"ui icon times red button_remove_command\"></i> <span class=\"span_command_spec\">'+LocalizedStrings.getUI('text_command_write')+' ( </span><div class=\"all_elements_write\"></div> <span class=\"close_parentheses span_command_spec\">)</span> </div>';\n\n\tvar el = $(ret);\n\tel.data('command', command);\n\n\tfor (var i = 0; i < command.content.length; i ++) {\n\t\tvar new_div_item = $( '<div class=\"var_value_menu_div\"></div>' );\n\t\tvar div_parent_with_handler = $( '<div class=\"div_parent_handler\"></div>' );\n\t\tdiv_parent_with_handler.append($('<i class=\"ui icon ellipsis vertical inverted handler\"></i>'));\n\t\tdiv_parent_with_handler.append(new_div_item);\n\t\tdiv_parent_with_handler.append($('<i class=\"white inverted icon times handler\"></i>'));\n\n\t\tel.find('.all_elements_write').append(div_parent_with_handler);\n\t\tVariableValueMenu.renderMenu(command, command.content[i], new_div_item, function_obj);\n\n\t\taddHandlerIconAdd(el.find('.all_elements_write'), command, function_obj);\n\n\t\taddHandlersManager(command, function_obj, el, div_parent_with_handler, command.content[i]);\n\t}\n\n\tif (command.content.length == 0) {\n\t\taddHandlerIconAdd(el.find('.all_elements_write'), command, function_obj);\n\t}\n\n\taddHandlers(command, function_obj, el);\n\treturn el;\n}\n\nfunction addHandlersManager (command, function_obj, writer_dom, item_div, content_element) {\n\n\titem_div.find('.times').on('click', function() {\n\t\tfor (var i = 0; i < command.content.length; i++) {\n\t\t\tif (command.content[i] == content_element) {\n\t\t\t\tdelete command.content[i];\n\t \t\t\tcommand.content.splice(i, 1);\n\t\t\t\t\n\t\t\t\titem_div.children().off();\n\t\t\t\titem_div.off();\n\t\t\t\titem_div.fadeOut();\n\n\t\t\t\tif (command.content.length > 0) {\n\t\t\t\t\titem_div.next('.icon_add_item_to_writer').fadeOut();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction addHandlers (command, function_obj, writer_dom) {\n\n\twriter_dom.find('.button_remove_command').on('click', function() {\n\t\tif (CommandsManagement.removeCommand(command, function_obj, writer_dom)) {\n\t\t\twriter_dom.fadeOut(400, function() {\n\t\t\t\twriter_dom.remove();\n\t\t\t});\n\t\t}\n\t});\n\n\tSortable.create(writer_dom.find(\".all_elements_write\")[0], {\n\t handle: '.ellipsis',\n\t animation: 100,\n\t ghostClass: 'ghost',\n\t group: 'writer_' + Math.floor(Math.random() * 10000000),\n\t draggable: '.div_parent_handler',\n\t onEnd: function (evt) {\n\t \t\n\t \tcommand.content.splice(evt.newIndex, 0, command.content.splice(evt.oldIndex, 1)[0]);\n\n\t \twriter_dom.empty();\n\t \twriter_dom.replaceWith(renderCommand(command, function_obj));\n\t }\n\t });\n\n\n}\n\nfunction addHandlerIconAdd (dom_object, command, function_obj, insert_after = false, after_which = null) {\n\tvar icon_add_item = $( '<i class=\"ui icon plus square outline icon_add_item_to_writer\"></i> ' );\n\tif (!insert_after) {\n\t\tdom_object.append(icon_add_item);\n\t} else {\n\t\ticon_add_item.insertAfter(after_which);\n\t}\n\t\n\ticon_add_item.on('click', function(e) {\n\t\tvar div_parent_with_handler = $( '<div class=\"div_parent_handler\" style=\"display:none;\"></div>' );\n\t\tvar new_div_item = $( '<div class=\"var_value_menu_div\"></div>' );\n\t\tdiv_parent_with_handler.append($('<i class=\"ui icon ellipsis vertical inverted handler\"></i>'));\n\t\tdiv_parent_with_handler.append(new_div_item);\n\t\tdiv_parent_with_handler.append($('<i class=\"white inverted icon times handler\"></i>'));\n\t\tdiv_parent_with_handler.insertAfter(icon_add_item);\n\n\t\tvar new_related_menu = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\n\t\tVariableValueMenu.renderMenu(command, new_related_menu, new_div_item, function_obj);\n\n\t\taddHandlerIconAdd(dom_object, command, function_obj, true, div_parent_with_handler);\n\n\t\taddHandlersManager(command, function_obj, dom_object, div_parent_with_handler, new_related_menu);\n\t\tvar pos = 1;\n\t\tdom_object.find('.icon_add_item_to_writer').each(function() {\n\t\t\tif ($(this).get(0) === icon_add_item.get(0)) {\n\t\t\t\tcommand.content.splice(pos, 0, new_related_menu);\n\t\t\t} else {\n\t\t\t\tpos ++;\n\t\t\t}\n\t\t});\n\t\tif (command.content.length == 1) {\n\t\t\ticon_add_item.remove();\n\t\t}\n\t\tdiv_parent_with_handler.fadeIn();\n\t});\n}\n\nexport function addContent (command, ref_object, dom_object, menu_var_or_value, function_obj, ref_object_content) {\n\t\n\tif (dom_object.hasClass('var_value_menu_div')) {\n\t\tvar icon_add_item = $( '<i class=\"ui icon plus square outline icon_add_item_to_writer\"></i> ' );\n\t\ticon_add_item.insertAfter(dom_object);\n\n\t\ticon_add_item.on('click', function(e) {\n\t\t\tvar div_parent_with_handler = $( '<div class=\"div_parent_handler\"></div>' );\n\t\t\tdiv_parent_with_handler.append($('<i class=\"ui icon ellipsis vertical inverted handler\"></i>'));\n\t\t\tdiv_parent_with_handler.append(new_div_item);\n\t\t\tdiv_parent_with_handler.append($('<i class=\"white inverted icon times handler\"></i>'));\n\n\t\t\tdiv_parent_with_handler.insertAfter(icon_add_item);\n\t\t\tvar new_related_menu = new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true);\n\n\t\t\tVariableValueMenu.renderMenu(command, new_related_menu, new_div_item, function_obj);\n\n\t\t\taddHandlersManager(command, function_obj, dom_object, div_parent_with_handler, new_related_menu);\n\n\t\t\tcommand.content.push(new_related_menu);\n\n\t\t\tif (command.content.length == 1) {\n\t\t\t\ticon_add_item.remove();\n\t\t\t}\n\t\t});\n\t}\n}\n","import $ from 'jquery';\nimport { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as GlobalsManagement from './globals';\nimport * as VariablesManagement from './variables';\nimport * as CommandsManagement from './commands';\nimport * as CodeManagement from './code_generator';\nimport * as VariableValueMenu from './commands/variable_value_menu';\nimport { DOMConsole } from './../io/domConsole';\nimport { IVProgParser } from './../ast/ivprogParser';\nimport { IVProgProcessor } from './../processor/ivprogProcessor';\nimport WatchJS from 'melanke-watchjs';\nimport { SemanticAnalyser } from '../processor/semantic/semanticAnalyser';\nimport { IVProgAssessment } from '../assessment/ivprogAssessment';\nimport * as AlgorithmManagement from './algorithm';\nimport * as Utils from './utils';\nimport VersionInfo from './../../.ima_version.json';\n\nimport '../Sortable.js'; \n\nvar counter_new_functions = 0;\nvar counter_new_parameters = 0;\nvar ivprog_version = VersionInfo.version;\n\nconst globalChangeListeners = [];\nconst functionsChangeListeners = [];\nlet domConsole = null;\nwindow.studentGrade = null;\nwindow.LocalizedStrings = LocalizedStrings;\nconst program = new Models.Program();\n\nwindow.system_functions = [];\n// Adding math functions:\nwindow.system_functions.push(new Models.SystemFunction('$sin', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$cos', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$tan', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$sqrt', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$pow', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true), new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$log', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$abs', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$negate', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$invert', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$max', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\nwindow.system_functions.push(new Models.SystemFunction('$min', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.math));\n// Adding text functions:\nwindow.system_functions.push(new Models.SystemFunction('$substring', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true),\n new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true),new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$length', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$uppercase', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$lowercase', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\nwindow.system_functions.push(new Models.SystemFunction('$charAt', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true), new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.text));\n// Adding arrangement functions:\nwindow.system_functions.push(new Models.SystemFunction('$numElements', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, 1)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement));\nwindow.system_functions.push(new Models.SystemFunction('$matrixLines', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, 2)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement));\nwindow.system_functions.push(new Models.SystemFunction('$matrixColumns', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.variable_and_function, null, null, null, true, 2)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement));\n// Adding conversion functions:\nwindow.system_functions.push(new Models.SystemFunction('$isReal', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$isInt', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$isBool', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castReal', Types.REAL, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castInt', Types.INTEGER, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castBool', Types.BOOLEAN, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\nwindow.system_functions.push(new Models.SystemFunction('$castString', Types.TEXT, 0, [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)],\n null, Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion));\n\nconsole.log(' ___ ___ ________ \\n / / / / / ____/ \\n / / / / / / \\n / / / / ______ ___ / /__ \\n / / / / / \\\\ / / / ___/ \\n / /______ / / / /\\\\ \\\\/ / / / \\n / / / / / / \\\\ / / /____ \\n/__________/ /___/ /___/ \\\\___/ /________/ \\n\\n Laboratório de Informática na Educação\\n http://line.ime.usp.br');\n\nconst mainFunction = new Models.Function(LocalizedStrings.getUI(\"start\"), Types.VOID, 0, [], true, false);\nmainFunction.function_comment = new Models.Comment(LocalizedStrings.getUI('text_comment_main'));\nprogram.addFunction(mainFunction);\n\nwindow.program_obj = program;\n\nwindow.generator = CodeManagement.generate;\nwindow.runCodeAssessment = runCodeAssessment;\nwindow.renderAlgorithm = AlgorithmManagement.renderAlgorithm;\nwindow.insertContext = false;\nwindow.watchW = WatchJS;\n\nWatchJS.watch(window.program_obj.globals, function(){\n if (window.insertContext) {\n setTimeout(function() {\n AlgorithmManagement.renderAlgorithm();\n globalChangeListeners.forEach(x => x());\n }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n globalChangeListeners.forEach(x => x());\n }\n}, 1);\n\nWatchJS.watch(window.program_obj.functions, function(){\n if (window.insertContext) {\n setTimeout(function(){\n AlgorithmManagement.renderAlgorithm();\n functionsChangeListeners.forEach( x => x());\n }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n functionsChangeListeners.forEach( x => x());\n }\n}, 1);\n\nfunction addFunctionHandler () {\n\n\tvar new_function = new Models.Function(LocalizedStrings.getUI(\"new_function\") + \"_\" + counter_new_functions, Types.VOID, 0, [], false, false, [], new Models.Comment(LocalizedStrings.getUI('text_comment_start')));\n\tprogram.addFunction(new_function);\n\n\tcounter_new_functions ++;\n\n window.insertContext = true;\n\n var newe = renderFunction(new_function);\n\n /*newe.css('display', 'none');\n newe.fadeIn();*/\n}\n\nfunction addParameter (function_obj, function_container, is_from_click = false) {\n if (function_obj.parameters_list == null) {\n function_obj.parameters_list = [];\n }\n var new_parameter = new Models.Variable(Types.INTEGER, LocalizedStrings.getUI(\"new_parameter\") + \"_\" + counter_new_parameters);\n function_obj.parameters_list.push(new_parameter);\n counter_new_parameters ++;\n\n var newe = renderParameter(function_obj, new_parameter, function_container);\n\n if (is_from_click) {\n /*newe.css('display', 'none');\n newe.fadeIn();*/\n }\n}\n\nfunction updateReturnType (function_obj, new_type, new_dimensions = 0) {\n function_obj.return_type = new_type;\n function_obj.return_dimensions = new_dimensions;\n}\n\nfunction removeFunction (function_obj) {\n var index = program.functions.indexOf(function_obj);\n if (index > -1) {\n program.functions.splice(index, 1);\n }\n}\n\nfunction minimizeFunction (function_obj) {\n function_obj.is_hidden = !function_obj.is_hidden;\n}\n\nfunction addHandlers (function_obj, function_container) {\n\n function_container.find('.ui.dropdown.function_return').dropdown({\n onChange: function(value, text, $selectedItem) {\n if ($selectedItem.data('dimensions')) {\n updateReturnType(function_obj, Types[$selectedItem.data('type')], $selectedItem.data('dimensions'));\n } else {\n updateReturnType(function_obj, Types[$selectedItem.data('type')]);\n }\n },\n selectOnKeydown: false\n });\n\n function_container.find( \".name_function_updated\" ).on('click', function(e){\n enableNameFunctionUpdate(function_obj, function_container);\n });\n\n function_container.find( \".add_parameter_button\" ).on('click', function(e){\n window.insertContext = true;\n addParameter(function_obj, function_container, true);\n });\n\n function_container.find('.menu_commands').dropdown({\n on: 'hover'\n });\n\n function_container.find('.menu_commands a').on('click', function(evt){\n if (function_obj.commands == null || function_obj.commands.length == 0) {\n function_obj.commands = [];\n var new_cmd = CommandsManagement.genericCreateCommand($(this).data('command'));\n function_obj.commands.push(new_cmd);\n\n CommandsManagement.renderCommand(new_cmd, function_container.find('.commands_list_div'), 3, function_obj);\n } else {\n CommandsManagement.createFloatingCommand(function_obj, function_container, $(this).data('command'), evt);\n }\n\n });\n\n function_container.find('.add_var_button_function').on('click', function(e){\n window.insertContext = true;\n VariablesManagement.addVariable(function_obj, function_container, true);\n });\n\n function_container.find('.remove_function_button').on('click', function(e){\n removeFunction(function_obj);\n function_container.fadeOut();\n });\n\n function_container.find('.minimize_function_button').on('click', function(e){\n minimizeFunction(function_obj);\n if (function_obj.is_hidden) {\n function_container.find(\".add_var_button_function\").toggle();\n function_container.find(\".inline_add_command\").toggle();\n function_container.find(\".function_area\").slideToggle();\n } else {\n function_container.find(\".function_area\").slideToggle(function(){\n function_container.find(\".add_var_button_function\").toggle();\n function_container.find(\".inline_add_command\").toggle();\n });\n }\n \n });\n}\n\n// Essa função imprime o tipo de retorno da função e cria o menu do tipo 'select' para alteração\nfunction renderFunctionReturn (function_obj, function_element) {\n\n var ret = '<div class=\"ui dropdown function_return\">';\n \n if (function_obj.return_dimensions > 0) {\n ret += '<div class=\"text\">'+ LocalizedStrings.getUI(\"vector\") +':'+ LocalizedStrings.getUI(function_obj.return_type);\n if (function_obj.return_dimensions == 1) {\n ret += ' [ ] ';\n } else {\n ret += ' [ ] [ ] ';\n }\n ret += '</div>';\n } else {\n ret += '<div class=\"text\">'+LocalizedStrings.getUI(function_obj.return_type)+'</div>';\n }\n\n ret += '<div class=\"menu\">';\n\n\n for (var tm in Types) {\n ret += '<div class=\"item ' + (function_obj.return_type == tm.toLowerCase() && function_obj.return_dimensions < 1 ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(tm.toLowerCase())+'</div>';\n }\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n ret += '<div class=\"item\">'\n + '<i class=\"dropdown icon\"></i>'\n + LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())\n + '<div class=\"menu\">'\n + '<div class=\"item '+(function_obj.return_type == tm.toLowerCase() && function_obj.return_dimensions > 0 ? ' selected ' : '')+'\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\">[ ]</div>'\n + '<div class=\"item '+(function_obj.return_type == tm.toLowerCase() && function_obj.return_dimensions > 0 ? ' selected ' : '')+'\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\">[ ] [ ] </div>'\n + '</div>'\n + '</div>'; \n }\n\n ret += '</div></div>';\n\n ret = $(ret);\n \n function_element.find('.function_return').append(ret);\n}\n\nvar cont = 0;\n\nexport function renderFunction (function_obj) {\n \n var appender = '<div class=\"ui secondary segment function_div list-group-item function_cont_'+cont+'\">';\n\n if (function_obj.function_comment) {\n //appender += renderComment(function_obj.function_comment, sequence, true, -1);\n }\n \n appender += '<span class=\"glyphicon glyphicon-move move_function\" aria-hidden=\"true\"><i class=\"icon sort alternate vertical\"></i></span>';\n\n appender += (function_obj.is_main ? '<div class=\"div_start_minimize_v\"> </div>' : '<button class=\"ui icon button large remove_function_button\"><i class=\"red icon times\"></i></button>')\n + '<button class=\"ui icon button tiny minimize_function_button\"><i class=\"icon window minimize\"></i></button>';\n\n appender += '<div class=\"function_signature_div\">'+LocalizedStrings.getUI(\"function\")+' ';\n\n if (function_obj.is_main) {\n appender += '<div class=\"function_name_div\"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' + LocalizedStrings.getUI('void') + ' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class=\"span_name_function\" >'+function_obj.name+'</span> </div> '\n + ' <span class=\"parethesis_function\">( </span> <div class=\"ui large labels parameters_list\">';\n } else {\n appender += '<div class=\"ui function_return\"></div>';\n\n appender += '<div class=\"function_name_div function_name_div_updated\"><span class=\"span_name_function name_function_updated\">'+function_obj.name+'</span> </div> ' \n + ' <span class=\"parethesis_function\"> ( </span> <i class=\"ui icon plus square outline add_parameter_button\"></i> <div class=\"ui large labels parameters_list container_parameters_list\">';\n }\n \n appender += '</div> <span class=\"parethesis_function\"> ) </span> </div>'\n + (function_obj.is_hidden ? ' <div class=\"function_area\" style=\"display: none;\"> ' : ' <div class=\"function_area\"> ');\n\n appender += '<div class=\"ui add_var_context add_var_button_function\" style=\"float: left;\"><i class=\"icon plus circle purple\"></i><i class=\"icon circle white back\"></i><div class=\"ui icon button purple\"><i class=\"icon superscript\"></i></div></div>';\n\n appender += '<div class=\"ui top attached segment variables_list_div\"></div>';\n\n \n\n appender += '<div class=\"ui bottom attached segment commands_list_div commands_cont_'+cont+'\">'\n + '<div class=\"ui rail\" style=\"width: 35px; margin-left: -36px;\"><div class=\"ui sticky sticky_cont_'+cont+'\" style=\"top: 50px !important;\">';\n\n\n appender += '<i class=\"icon plus circle purple\"></i><i class=\"icon circle white back\"></i><div class=\"ui icon button dropdown menu_commands orange\" ><i class=\"icon code\"></i> <div class=\"menu\"> ';\n appender += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.reader+'\"><i class=\"download icon\"></i> ' +LocalizedStrings.getUI('text_read_var')+ '</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.writer+'\"><i class=\"upload icon\"></i> '+LocalizedStrings.getUI('text_write_var')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.comment+'\"><i class=\"quote left icon\"></i> '+LocalizedStrings.getUI('text_comment')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.attribution+'\"><i class=\"arrow left icon\"></i> '+LocalizedStrings.getUI('text_attribution')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.functioncall+'\"><i class=\"hand point right icon\"></i> '+LocalizedStrings.getUI('text_functioncall')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.iftrue+'\" ><i class=\"random icon\"></i> '+LocalizedStrings.getUI('text_iftrue')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.repeatNtimes+'\"><i class=\"sync icon\"></i> '+LocalizedStrings.getUI('text_repeatNtimes')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.whiletrue+'\"><i class=\"sync icon\"></i> '+LocalizedStrings.getUI('text_whiletrue')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.dowhiletrue+'\"><i class=\"sync icon\"></i> '+LocalizedStrings.getUI('text_dowhiletrue')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.switch+'\"><i class=\"list icon\"></i> '+LocalizedStrings.getUI('text_switch')+'</a>'\n + '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.return+'\"><i class=\"reply icon\"></i> '+LocalizedStrings.getUI('text_btn_return')+'</a>'\n + '</div></div>';\n\n\n appender += '</div></div>'\n +'</div>';\n\n appender += '</div></div>';\n\n appender = $(appender);\n\n $('.all_functions').append(appender);\n\n appender.data('fun', function_obj);\n appender.find('.commands_list_div').data('fun', function_obj);\n\n renderFunctionReturn(function_obj, appender);\n\n addHandlers(function_obj, appender);\n\n // Rendering parameters: \n for (var j = 0; j < function_obj.parameters_list.length; j++) {\n renderParameter(function_obj, function_obj.parameters_list[j], appender);\n }\n\n // Rendering variables:\n for (var j = 0; j < function_obj.variables_list.length; j++) {\n VariablesManagement.renderVariable(appender, function_obj.variables_list[j], function_obj);\n }\n // Rendering commands:\n for (var j = 0; j < function_obj.commands.length; j++) {\n CommandsManagement.renderCommand(function_obj.commands[j], $(appender.find('.commands_list_div')[0]), 3, function_obj);\n }\n $('.minimize_function_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_minimize\"),\n delay: {\n show: 750,\n hide: 0\n }\n });\n\n var function_index = program.functions.indexOf(function_obj);\n\n Sortable.create(appender.find(\".variables_list_div\")[0], {\n handle: '.ellipsis',\n animation: 100,\n ghostClass: 'ghost',\n group: 'local_vars_drag_' + function_index,\n onEnd: function (evt) {\n updateSequenceLocals(evt.oldIndex, evt.newIndex, function_obj);\n }\n });\n\n addSortableHandler(appender.find(\".commands_list_div\")[0], function_index);\n\n if (!function_obj.is_main) {\n Sortable.create(appender.find(\".container_parameters_list\")[0], {\n handle: '.ellipsis',\n animation: 100,\n ghostClass: 'ghost',\n group: 'parameters_drag_' + program.functions.indexOf(function_obj),\n onEnd: function (evt) {\n updateSequenceParameters(evt.oldIndex, evt.newIndex, function_obj);\n }\n });\n }\n\n if (function_obj.commands.length > 0) {\n var teste = '.ui.sticky.sticky_cont_'+cont;\n $(teste).sticky({\n context: '.ui.bottom.attached.segment.commands_list_div.commands_cont_'+cont,\n scrollContext: '.ivprog_visual_panel',\n observeChanges: true,\n offset: 40,\n onStick: function (evt) {\n $(teste).css('top', '20px', 'important');\n }, \n onBottom: function (evt) {\n $(teste).css('top', '20px', 'important');\n },\n onUnstick: function (evt) {\n $(teste).css('top', '20px', 'important');\n },\n onReposition: function (evt) {\n $(teste).css('top', '20px', 'important');\n },\n onScroll: function (evt) {\n $(teste).css('top', '20px', 'important');\n if (!isVisible($(teste), $(teste).parent())) {\n $(teste).removeClass('fixed');\n }\n },\n onTop: function (evt) {\n $(teste).css('top', '20px', 'important');\n }\n });\n }\n \n cont ++;\n\n return appender;\n}\n\nfunction isVisible (element, container) {\n\n var elementTop = $(element).offset().top,\n elementHeight = $(element).height(),\n containerTop = $(container).offset().top,\n containerHeight = $(container).height() - 30;\n\n return ((((elementTop - containerTop) + elementHeight) > 0)\n && ((elementTop - containerTop) < containerHeight));\n}\n\n\nwindow.evento_drag;\n\nfunction updateProgramObjDrag () {\n var nodes = Array.prototype.slice.call( $('.all_functions').children() );\n var function_index;\n var start_index;\n var function_obj;\n $(evento_drag.item).parentsUntil(\".all_functions\").each(function (index) {\n if ($(this).hasClass('function_div')) {\n function_index = nodes.indexOf(this);\n start_index = index;\n function_obj = $(this);\n }\n });\n\n console.log(function_index);\n\n var path_target = [];\n $(evento_drag.item).parentsUntil(\".all_functions\").each(function (index) {\n if ($(this).hasClass('command_container')) {\n path_target.push(this);\n }\n });\n if (path_target.length == 0) {\n //console.log('soltou na raiz, na posição: ' + evento_drag.newIndex + ' mas ainda não sei de onde saiu ');\n } else {\n //console.log('soltou dentro de algum bloco, sequência vem logo abaixo (de baixo pra cima): ');\n //console.log(path_target);\n }\n\n var index_each = [];\n var path_relative = [];\n for (var i = path_target.length - 1; i >= 0; i --) {\n console.log('da vez', $(path_target[i + 1]));\n if (i == (path_target.length - 1)) { // está na raiz\n var indice_na_raiz = function_obj.find('.command_container').index(path_target[i]);\n console.log('índice na raiz: ', indice_na_raiz);\n } else {\n if ($(path_target[i + 1]).hasClass('iftrue')) {\n if ($(path_target[i]).parent().hasClass('commands_if')) {\n path_relative.push('if');\n index_each.push($(path_target[i]).parent().find('.command_container').index(path_target[i]));\n } else {\n path_relative.push('else');\n index_each.push($(path_target[i]).parent().find('.command_container').index(path_target[i]));\n }\n } else if ($(path_target[i + 1]).hasClass('dowhiletrue')) {\n path_relative.push('dowhiletrue');\n index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n } else if ($(path_target[i + 1]).hasClass('repeatNtimes')) {\n path_relative.push('repeatNtimes');\n index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n } else if ($(path_target[i + 1]).hasClass('whiletrue')) {\n path_relative.push('whiletrue');\n index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n } else if ($(path_target[i + 1]).hasClass('switch')) {\n path_relative.push('switch');\n //index_each.push($(path_target[i + 1]).find('.command_container').index(path_target[i]));\n }\n }\n }\n var index_in_block = -1;\n var is_in_else = $(evento_drag.item).parent().hasClass('commands_else');\n\n index_in_block = $(evento_drag.item).parent().find('.command_container').index(evento_drag.item);\n\n var is_in_case_switch = $(evento_drag.item).parent().hasClass('case_commands_block');\n var index_case_of_switch = -1;\n if (is_in_case_switch) {\n index_case_of_switch = $(evento_drag.item).parent().parent().parent().find('.case_div').index($(evento_drag.item).parent().parent());\n }\n\n /*console.log('path_relative:');\n console.log(path_relative);\n console.log('index_each:');\n console.log(index_each);\n console.log('index_in_block:');\n console.log(index_in_block);\n console.log('ele está em algum bloco de senão? ');\n console.log(is_in_else);\n console.log('ele está dentro de um case de switch?');\n console.log(is_in_case_switch);\n console.log('qual é o índice do case: ');\n console.log(index_case_of_switch);*/\n\n // encontrar o elemento na árvore:\n var command_start_point = window.program_obj.functions[function_index].commands[indice_na_raiz];\n var block_to_insert = command_start_point;\n for (var i = 0; i < index_each.length; i++) {\n if (path_relative[i] == \"else\") {\n block_to_insert = block_to_insert.commands_else[index_each[i]];\n } else if (path_relative[i] == \"switch\") {\n\n } else {\n block_to_insert = block_to_insert.commands_block[index_each[i]]\n }\n }\n\n //console.log('command_start_point', command_start_point);\n //console.log('block_to_insert', block_to_insert);\n\n // agora tem que alocar o comando na árvore, mas considerar as quatro situações:\n // (1) se está em um else ou (2) se está em switch ou (3) será um caso padrão ou (4) se será na raiz.\n \n if (path_target.length == 0) { // soltou na raiz:\n window.program_obj.functions[function_index].commands.splice(evento_drag.newIndex, 0, command_in_drag);\n } else if (is_in_else) {\n if (block_to_insert.commands_else) {\n block_to_insert.commands_else.splice(evento_drag.newIndex, 0, command_in_drag);\n } else {\n block_to_insert.commands_else = [];\n block_to_insert.commands_else.push(command_in_drag);\n }\n } else if (is_in_case_switch) {\n\n } else {\n // verificar se tem alguma coisa no bloco:\n if (block_to_insert.commands_block) {\n block_to_insert.commands_block.splice(evento_drag.newIndex, 0, command_in_drag);\n } else {\n block_to_insert.commands_block = [];\n block_to_insert.commands_block.push(command_in_drag);\n }\n }\n\n window.draging = false;\n renderAlgorithm();\n \n\n}\n\nfunction prepareDragHandler (evt) {\n window.draging = true;\n\n var nodes = Array.prototype.slice.call( $('.all_functions').children() );\n var function_index;\n var function_obj;\n $(evt.item).parentsUntil(\".all_functions\").each(function (index) {\n if ($(this).hasClass('function_div')) {\n function_index = nodes.indexOf(this);\n function_obj = window.program_obj.functions[function_index];\n }\n });\n\n command_in_drag = $(evt.item).data(\"command\");\n\n //console.log('$(evt.item).parent(): ');\n //console.log($(evt.item).parent());\n\n // descobrir qual das quatro situações:\n if ($(evt.item).parent().hasClass('commands_list_div')) { // está na raiz:\n if (function_obj.commands.indexOf(command_in_drag) > -1) {\n function_obj.commands.splice(function_obj.commands.indexOf(command_in_drag), 1);\n }\n } else if ($(evt.item).parent().hasClass('commands_else')) { // está no else:\n if ($(evt.item).parent().data('command').commands_else.indexOf(command_in_drag) > -1) {\n $(evt.item).parent().data('command').commands_else.splice($(evt.item).parent().data('command').commands_else.indexOf(command_in_drag), 1);\n }\n } else if ($(evt.item).parent().hasClass('case_commands_block')) { // está em um switch:\n\n } else { // caso padrão:\n if ($(evt.item).parent().data('command').commands_block.indexOf(command_in_drag) > -1) {\n $(evt.item).parent().data('command').commands_block.splice($(evt.item).parent().data('command').commands_block.indexOf(command_in_drag), 1);\n }\n }\n\n}\n\nvar command_in_drag;\n\nfunction addSortableHandler (element, id_function) {\n var n_group = 'commands_drag_' + id_function;\n Sortable.create(element, {\n handle: '.command_drag',\n ghostClass: 'ghost',\n animation: 300,\n group: {name: n_group},\n onEnd: function (evt) {\n //updateSequenceLocals(evt.oldIndex, evt.newIndex, function_obj);\n var itemEl = evt.item; // dragged HTMLElement\n evt.to; // target list\n evt.from; // previous list\n evt.oldIndex; // element's old index within old parent\n evt.newIndex; // element's new index within new parent\n //console.log('::EVT::');\n //console.log(evt);\n\n window.evento_drag = evt;\n\n try {\n updateProgramObjDrag();\n } catch (e) {\n window.draging = false;\n }\n },\n onStart: function (evt) {\n //console.log(\"START::EVT::\");\n //console.log(evt);\n //console.log(\"\\n\\ncommand_in_drag\");\n try {\n prepareDragHandler(evt);\n } catch (e) {\n window.draging = false;\n }\n }\n });\n element = $(element);\n element.find(\".iftrue\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n addSortableHandler($(this).find(\".block_commands\")[1], id_function);\n });\n\n element.find(\".repeatNtimes\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n });\n\n element.find(\".dowhiletrue\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n });\n\n element.find(\".whiletrue\").each(function( index ) {\n addSortableHandler($(this).find(\".block_commands\")[0], id_function);\n });\n\n element.find(\".switch\").each(function( index ) {\n\n $(this).find(\".case_div\").each(function( index ) {\n addSortableHandler($(this).find(\".case_commands_block\")[0], id_function);\n });\n\n }); \n}\n\nexport function initVisualUI () {\n // MUST USE CONST, LET, OR VAR !!!!!!\n const mainDiv = $('#visual-main-div');\n // fill mainDiv with functions and globals...\n // renderAlgorithm()...\n $('.add_function_button').on('click', () => {\n addFunctionHandler();\n });\n $('.add_global_button').on('click', () => {\n window.insertContext = true;\n GlobalsManagement.addGlobal(program, true);\n });\n\n $('.run_button').on('click', () => {\n runCode();\n });\n\n $('.visual_coding_button').on('click', () => {\n toggleVisualCoding();\n });\n\n $('.textual_coding_button').on('click', () => {\n toggleTextualCoding();\n });\n\n $('.assessment').on('click', () => {\n runCodeAssessment();\n is_iassign = true;\n });\n\n $('.div_toggle_console').on('click', () => {\n toggleConsole();\n });\n $('.expand_button').on('click', () => {\n full_screen();\n });\n $('.help_button').on('click', () => {\n window.open('https://www.usp.br/line/ivprog/', '_blank');\n });\n $('.main_title h2').prop('title', LocalizedStrings.getUI('text_ivprog_description'));\n}\n\nvar is_iassign = false;\n\n$( document ).ready(function() {\n\n var time_show = 750;\n $('.visual_coding_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_visual\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.textual_coding_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_textual\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.upload_file_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_upload\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.download_file_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_download\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.undo_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_undo\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.redo_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_redo\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.run_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_run\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.assessment_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_evaluate\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.help_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_help\") + ' - ' + LocalizedStrings.getUI(\"text_ivprog_version\") + ' ' + ivprog_version,\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.add_global_button').popup({\n content : LocalizedStrings.getUI(\"tooltip_add_global\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n $('.div_toggle_console').popup({\n content : LocalizedStrings.getUI(\"tooltip_console\"),\n delay: {\n show: time_show,\n hide: 0\n }\n });\n\n Sortable.create(listWithHandle, {\n handle: '.glyphicon-move',\n animation: 100,\n ghostClass: 'ghost',\n group: 'functions_divs_drag',\n onEnd: function (evt) {\n updateSequenceFunction(evt.oldIndex, evt.newIndex);\n }\n });\n\n var listGlobalsHandle = document.getElementById(\"listGlobalsHandle\");\n Sortable.create(listGlobalsHandle, {\n handle: '.ellipsis',\n animation: 100,\n ghostClass: 'ghost',\n group: 'globals_divs_drag',\n onEnd: function (evt) {\n updateSequenceGlobals(evt.oldIndex, evt.newIndex);\n }\n });\n\n});\n\nfunction updateSequenceParameters (oldIndex, newIndex, function_obj) {\n function_obj.parameters_list.splice(newIndex, 0, function_obj.parameters_list.splice(oldIndex, 1)[0]);\n}\n\nfunction updateSequenceLocals (oldIndex, newIndex, function_obj) {\n function_obj.variables_list.splice(newIndex, 0, function_obj.variables_list.splice(oldIndex, 1)[0]);\n}\n\nfunction updateSequenceGlobals (oldIndex, newIndex) {\n program_obj.globals.splice(newIndex, 0, program_obj.globals.splice(oldIndex, 1)[0]);\n}\n\nfunction updateSequenceFunction (oldIndex, newIndex) {\n program_obj.functions.splice(newIndex, 0, program_obj.functions.splice(oldIndex, 1)[0]);\n}\n\nfunction runCodeAssessment () {\n \n window.studentGrade = null;\n const strCode = CodeManagement.generate();\n if (strCode == null) {\n return;\n }\n\n toggleConsole(true);\n\n if(domConsole == null)\n domConsole = new DOMConsole(\"#ivprog-term\");\n $(\"#ivprog-term\").slideDown(500);\n const runner = new IVProgAssessment(strCode, testCases, domConsole);\n\n runner.runTest().then(grade => {\n if (!is_iassign) {\n parent.getEvaluationCallback(grade);\n } else {\n is_iassign = false;\n }\n }).catch( err => console.log(err));\n \n}\n\nfunction runCode () {\n \n const strCode = CodeManagement.generate();\n if (strCode == null) {\n return;\n }\n \n toggleConsole(true);\n\n if(domConsole == null)\n domConsole = new DOMConsole(\"#ivprog-term\");\n $(\"#ivprog-term\").slideDown(500);\n try {\n const parser = IVProgParser.createParser(strCode);\n const analyser = new SemanticAnalyser(parser.parseTree());\n const data = analyser.analyseTree();\n const proc = new IVProgProcessor(data);\n proc.registerInput(domConsole);\n proc.registerOutput(domConsole);\n $(\"#ivprog-term\").addClass('ivprog-term-active');\n\n proc.interpretAST().then( _ => {\n domConsole.info(\"Programa executado com sucesso!\");\n $(\"#ivprog-term\").removeClass('ivprog-term-active');\n }).catch(err => {\n domConsole.err(err.message);\n $(\"#ivprog-term\").removeClass('ivprog-term-active');\n }) \n } catch (error) {\n domConsole.err(error.message);\n console.log(error);\n }\n \n}\n\nfunction toggleConsole (is_running) {\n\n if (is_running) {\n $('.ivprog-term-div').css('display', 'block');\n $('#ivprog-term').css('min-height', '160px');\n $('#ivprog-term').css('margin-top', '-170px');\n return;\n }\n\n if ($('#ivprog-term').css('min-height') == '160px') {\n // esconder\n $('.ivprog-term-div').css('display', 'none');\n $('#ivprog-term').css('min-height', '0');\n $('#ivprog-term').css('margin-top', '-30px');\n $('#ivprog-term').css('padding', '5px');\n } else {\n // mostrar\n $('.ivprog-term-div').css('display', 'block');\n $('#ivprog-term').css('min-height', '160px');\n $('#ivprog-term').css('margin-top', '-170px');\n }\n}\n\nfunction waitToCloseConsole () {\n domConsole.info(\"Aperte qualquer tecla para fechar...\");\n const p = new Promise((resolve, _) => {\n domConsole.requestInput(resolve, true);\n });\n p.then( _ => {\n domConsole.dispose();\n domConsole = null;\n $(\"#ivprog-term\").hide();\n })\n}\n\nfunction toggleTextualCoding () {\n var code = CodeManagement.generate();\n\n if (code == null) {\n return;\n }\n\n $('.ivprog_visual_panel').css('display', 'none');\n $('.ivprog_textual_panel').css('display', 'block');\n $('.ivprog_textual_panel').removeClass('loading');\n $('.ivprog_textual_code').text(code);\n\n $('.visual_coding_button').removeClass('active');\n $('.textual_coding_button').addClass('active');\n}\n\nfunction toggleVisualCoding () {\n $('.ivprog_textual_panel').addClass('loading');\n $('.ivprog_textual_panel').css('display', 'none');\n $('.ivprog_visual_panel').css('display', 'block');\n\n $('.textual_coding_button').removeClass('active');\n $('.visual_coding_button').addClass('active');\n}\n\nfunction removeParameter (function_obj, parameter_obj, parameter_container) {\n var index = function_obj.parameters_list.indexOf(parameter_obj);\n if (index > -1) {\n window.insertContext = true;\n function_obj.parameters_list.splice(index, 1);\n }\n $(parameter_container).fadeOut();\n}\n\nfunction updateParameterType (parameter_obj, new_type, new_dimensions = 0) {\n parameter_obj.type = new_type;\n parameter_obj.dimensions = new_dimensions;\n\n if (new_dimensions > 0) {\n parameter_obj.rows = new_dimensions;\n parameter_obj.columns = 2;\n }\n\n}\n\nfunction renderParameter (function_obj, parameter_obj, function_container) {\n var ret = \"\";\n\n ret += '<div class=\"ui label function_name_parameter pink\"><i class=\"ui icon ellipsis vertical inverted\"></i>';\n\n ret += '<div class=\"ui dropdown parameter_type\">';\n\n if (parameter_obj.dimensions > 0) {\n ret += '<div class=\"text\">'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(parameter_obj.type);\n if (parameter_obj.dimensions == 1) {\n ret += ' [ ] ';\n } else {\n ret += ' [ ] [ ] ';\n }\n ret += '</div>';\n } else {\n ret += '<div class=\"text\">'+LocalizedStrings.getUI(parameter_obj.type)+'</div>';\n }\n\n ret += '<div class=\"menu\">';\n\n \n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n ret += '<div class=\"item ' + (parameter_obj.type == tm.toLowerCase() ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(tm.toLowerCase())+'</div>';\n }\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n ret += '<div class=\"item\">'\n + '<i class=\"dropdown icon\"></i>'\n + LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())\n + '<div class=\"menu\">'\n + '<div class=\"item\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\">[ ]</div>'\n + '<div class=\"item\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\">[ ] [ ] </div>'\n + '</div>'\n + '</div>'; \n }\n\n ret += '</div></div>';\n\n ret += '<div class=\"parameter_div_edit\"><span class=\"span_name_parameter label_enable_name_parameter\">'+parameter_obj.name+'</span></div> ';\n\n ret += ' <i class=\"yellow inverted icon times remove_parameter\"></i></div>';\n\n ret = $(ret);\n \n function_container.find('.container_parameters_list').append(ret);\n\n ret.find('.remove_parameter').on('click', function(e){\n removeParameter(function_obj, parameter_obj, ret);\n });\n \n ret.find('.ui.dropdown.parameter_type').dropdown({\n onChange: function(value, text, $selectedItem) {\n if ($selectedItem.data('dimensions')) {\n updateParameterType(parameter_obj, Types[$selectedItem.data('type')], $selectedItem.data('dimensions'));\n } else {\n updateParameterType(parameter_obj, Types[$selectedItem.data('type')]);\n }\n },\n selectOnKeydown: false\n });\n\n ret.find('.label_enable_name_parameter').on('click', function(e){\n enableNameParameterUpdate(parameter_obj, ret, function_obj);\n });\n\n return ret;\n}\n\nfunction updateParameterName (parameter_var, new_name, parameter_obj_dom, function_obj) {\n \n if (parameter_var.name == new_name) {\n return;\n }\n\n if (isValidIdentifier(new_name)) {\n if (variableNameAlreadyExists(new_name, function_obj)) {\n Utils.renderErrorMessage(parameter_obj_dom.find('.parameter_div_edit'), LocalizedStrings.getUI('inform_valid_variable_duplicated'));\n } else {\n parameter_var.name = new_name;\n }\n } else {\n Utils.renderErrorMessage(parameter_obj_dom.find('.parameter_div_edit'), LocalizedStrings.getUI('inform_valid_name'));\n }\n}\n\nfunction variableNameAlreadyExists (name_var, function_obj) {\n\n if (function_obj.parameters_list) {\n for (var i = 0; i < function_obj.parameters_list.length; i++) {\n if (function_obj.parameters_list[i].name == name_var) {\n return true;\n }\n }\n }\n\n if (function_obj.variables_list) {\n for (var i = 0; i < function_obj.variables_list.length; i++) {\n if (function_obj.variables_list[i].name == name_var) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction updateFunctionName (function_var, new_name, function_obj_dom) {\n \n if (function_var.name == new_name) {\n return;\n }\n \n if (isValidIdentifier(new_name)) {\n if (functionNameAlreadyExists(new_name)) {\n Utils.renderErrorMessage(function_obj_dom.find('.function_name_div'), LocalizedStrings.getUI('inform_valid_name_duplicated'));\n } else {\n function_var.name = new_name;\n }\n } else {\n Utils.renderErrorMessage(function_obj_dom.find('.function_name_div'), LocalizedStrings.getUI('inform_valid_name'));\n }\n}\n\nfunction functionNameAlreadyExists (function_name) {\n for (var i = 0; i < window.program_obj.functions.length; i++) {\n if (window.program_obj.functions[i].name == function_name) {\n return true;\n }\n }\n return false;\n}\n\nfunction isValidIdentifier (identifier_str) {\n return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(identifier_str);\n}\n\nvar opened_name_parameter = false;\nvar opened_input_parameter = null;\nfunction enableNameParameterUpdate (parameter_obj, parent_node, function_obj) {\n if (opened_name_parameter) {\n opened_input_parameter.focus();\n return;\n }\n opened_name_parameter = true;\n parent_node = $(parent_node);\n\n var input_field;\n\n parent_node.find('.span_name_parameter').text('');\n input_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+parameter_obj.name+\"' />\" );\n input_field.insertBefore(parent_node.find('.span_name_parameter'));\n\n input_field.on('input', function() {\n var inputWidth = input_field.textWidth()+10;\n opened_input_parameter = input_field;\n input_field.focus();\n\n var tmpStr = input_field.val();\n input_field.val('');\n input_field.val(tmpStr);\n\n input_field.css({\n width: inputWidth\n })\n }).trigger('input');\n\n input_field.focusout(function() {\n /// update array:\n if (input_field.val().trim()) {\n updateParameterName(parameter_obj, input_field.val().trim(), parent_node, function_obj);\n parent_node.find('.span_name_parameter').text(parameter_obj.name);\n }\n input_field.off();\n input_field.remove();\n\n /// update elements:\n opened_name_parameter = false;\n opened_input_parameter = false;\n });\n\n input_field.on('keydown', function(e) {\n var code = e.keyCode || e.which;\n if(code == 13) {\n if (input_field.val().trim()) {\n updateParameterName(parameter_obj, input_field.val().trim(), parent_node, function_obj);\n parent_node.find('.span_name_parameter').text(parameter_obj.name);\n }\n input_field.off();\n input_field.remove();\n\n /// update elements:\n opened_name_parameter = false;\n opened_input_parameter = false;\n\n }\n if(code == 27) {\n parent_node.find('.span_name_parameter').text(parameter_obj.name);\n input_field.off();\n input_field.remove();\n\n /// update elements:\n opened_name_parameter = false;\n opened_input_parameter = false;\n }\n });\n input_field.select();\n}\n\nvar opened_name_function = false;\nvar opened_input = null;\nvar previousPadding = null;\nfunction enableNameFunctionUpdate (function_obj, parent_node) {\n if (opened_name_function) {\n opened_input.focus();\n return;\n }\n parent_node = $(parent_node);\n parent_node.find('.span_name_function').text('');\n var input_field;\n if (!previousPadding) {\n previousPadding = parent_node.find('.span_name_function').css('padding-left');\n }\n parent_node.find('.span_name_function').css('padding-left', '0');\n parent_node.find('.span_name_function').css('padding-right', '0');\n \n input_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+function_obj.name+\"' />\" );\n input_field.insertBefore(parent_node.find('.span_name_function'));\n\n input_field.on('input', function() {\n var inputWidth = input_field.textWidth()+10;\n opened_input = input_field;\n input_field.focus();\n\n var tmpStr = input_field.val();\n input_field.val('');\n input_field.val(tmpStr);\n\n input_field.css({\n width: inputWidth\n })\n }).trigger('input');\n\n input_field.focusout(function() {\n /// update array:\n if (input_field.val().trim()) {\n updateFunctionName(function_obj, input_field.val().trim(), parent_node);\n }\n input_field.off();\n input_field.remove();\n parent_node.find('.span_name_function').css('padding-left', previousPadding);\n parent_node.find('.span_name_function').css('padding-right', previousPadding);\n parent_node.find('.span_name_function').text(function_obj.name);\n\n /// update elements:\n opened_name_function = false;\n opened_input = false;\n });\n\n input_field.on('keydown', function(e) {\n var code = e.keyCode || e.which;\n if(code == 13) {\n if (input_field.val().trim()) {\n updateFunctionName(function_obj, input_field.val().trim(), parent_node);\n }\n input_field.off();\n input_field.remove();\n parent_node.find('.span_name_function').css('padding-left', previousPadding);\n parent_node.find('.span_name_function').css('padding-right', previousPadding);\n parent_node.find('.span_name_function').text(function_obj.name);\n\n /// update elements:\n opened_name_function = false;\n opened_input = false;\n }\n if(code == 27) {\n\n input_field.off();\n input_field.remove();\n parent_node.find('.span_name_function').css('padding-left', previousPadding);\n parent_node.find('.span_name_function').css('padding-right', previousPadding);\n parent_node.find('.span_name_function').text(function_obj.name);\n\n /// update elements:\n opened_name_function = false;\n opened_input = false;\n }\n });\n input_field.select();\n \n}\n\nexport function addFunctionChangeListener (callback) {\n functionsChangeListeners.push(callback);\n return functionsChangeListeners.length - 1;\n}\n\nexport function addGlobalChangeListener (callback) {\n globalChangeListeners.push(callback);\n return globalChangeListeners.length - 1;\n}\n\nexport function removeGlobalListener (index) {\n globalChangeListeners.splice(index, 1);\n}\n\nexport function removeFunctionListener (index) {\n functionsChangeListeners.splice(index);\n}","import $ from 'jquery';\nimport jQuery from 'jquery';\nimport { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as Utils from './utils';\n\n\nwindow.jQuery = jQuery;\n\nimport '../semantic/semantic.min.js';\n\nvar counter_new_globals = 0;\n\nexport function addGlobal (program, is_from_click = false) {\n\n\tvar new_global = new Models.Variable(Types.INTEGER, LocalizedStrings.getUI('new_global') + '_' + counter_new_globals, 1);\n\tcounter_new_globals ++;\n\n\tprogram.addGlobal(new_global);\n\n\tvar newe = renderGlobal(new_global);\n\n\tif (is_from_click) {\n\t\tnewe.css('display', 'none');\n\t\tnewe.fadeIn();\n\t}\n\n}\n\nfunction toggleConstant (global_var) {\n\tglobal_var.is_constant = !global_var.is_constant;\n}\n\nfunction updateName (global_var, new_name, global_obj_dom) {\n\n\tif (global_var.name == new_name) {\n\t\treturn;\n\t}\n\n\tif (isValidIdentifier(new_name)) {\n\t\tif (globalNameAlreadyExists(new_name)) {\n\t\t\tUtils.renderErrorMessage(global_obj_dom.find('.editing_name_var'), LocalizedStrings.getUI('inform_valid_global_duplicated'));\n\t\t} else {\n\t\t\tglobal_var.name = new_name;\n\t\t}\n\t} else {\n\t\tUtils.renderErrorMessage(global_obj_dom.find('.editing_name_var'), LocalizedStrings.getUI('inform_valid_name'));\n\t}\n}\n\nfunction globalNameAlreadyExists (global_name) {\n for (var i = 0; i < window.program_obj.globals.length; i++) {\n if (window.program_obj.globals[i].name == global_name) {\n return true;\n }\n }\n return false;\n}\n\nfunction isValidIdentifier (identifier_str) {\n\treturn /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(identifier_str);\n}\n\nfunction updateType (global_var, new_type, new_dimensions = 0) {\n\tglobal_var.type = new_type;\n\tglobal_var.dimensions = new_dimensions;\n\n\tif (new_dimensions > 0) {\n\t\tglobal_var.rows = new_dimensions;\n\t\tglobal_var.columns = 2;\n\t}\n\n\tupdateInitialValues(global_var);\n}\n\nfunction removeGlobal (global_var, global_container) {\n\tvar index = window.program_obj.globals.indexOf(global_var);\n\tif (index > -1) {\n\t\twindow.insertContext = true;\n\t window.program_obj.globals.splice(index, 1);\n\t}\n\tglobal_container.children().off();\n\tglobal_container.off();\n\tglobal_container.fadeOut();\n}\n\nfunction updateInitialValues (global_var) {\n\tif (global_var.type == Types.INTEGER) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = 1;\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [1, 1];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[1, 1], [1, 1]];\n\t\t}\n\t}\n\n\tif (global_var.type == Types.REAL) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = 1.0;\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [1.0, 1.0];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[1.0, 1.0], [1.0, 1.0]];\n\t\t}\n\t}\n\n\tif (global_var.type == Types.TEXT) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = LocalizedStrings.getUI('text_start');\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [LocalizedStrings.getUI('text_start'), LocalizedStrings.getUI('text_start')];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[LocalizedStrings.getUI('text_start'), LocalizedStrings.getUI('text_start')], \n\t\t\t\t\t\t\t\t\t[LocalizedStrings.getUI('text_start'), LocalizedStrings.getUI('text_start')]];\n\t\t}\n\t}\n\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = true;\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [true, true];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[true, true], [true, true]];\n\t\t}\n\t}\n}\n\nfunction alternateBooleanGlobalValue (global_var, value_container) {\n\tglobal_var.value = !global_var.value;\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(global_var.value));\n}\n\nfunction alternateBooleanGlobalVectorValue (global_var, index, value_container) {\n\tglobal_var.value[index] = !global_var.value[index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(global_var.value[index]));\n}\n\nfunction removeGlobalColumnVector (global_var) {\n\tif (global_var.columns == 0) {\n\t\treturn;\n\t}\n\n\tglobal_var.columns --;\n\tglobal_var.value.splice(global_var.value.length - 1, 1);\n}\n\nfunction addGlobalColumnVector (global_var) {\n\tglobal_var.columns ++;\n\n\tif (global_var.type == Types.INTEGER) {\n\t\tglobal_var.value.push(1);\n\t}\n\tif (global_var.type == Types.REAL) {\n\t\tglobal_var.value.push(1.0);\n\t}\n\tif (global_var.type == Types.TEXT) {\n\t\tglobal_var.value.push(LocalizedStrings.getUI('text_start'));\n\t}\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tglobal_var.value.push(true);\n\t}\n}\n\nfunction removeColumnGlobalMatrix (global_var) {\n\tif (global_var.columns == 0) {\n\t\treturn;\n\t}\n\n\tglobal_var.columns --;\n\n\tfor (var i = 0; i < global_var.rows; i++) {\n\t\tglobal_var.value[i].splice(global_var.value[i].length - 1, 1);\n\t}\n}\n\nfunction addColumnGlobalMatrix (global_var) {\n\tglobal_var.columns ++;\n\n\tif (global_var.type == Types.INTEGER) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(1);\n\t\t}\n\t}\n\tif (global_var.type == Types.REAL) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(1.0);\n\t\t}\n\t}\n\tif (global_var.type == Types.TEXT) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(LocalizedStrings.getUI('text_start'));\n\t\t}\n\t}\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(true);\n\t\t}\n\t}\n}\n\nfunction removeLineGlobalMatrix (global_var) {\n\tif (global_var.rows == 0) {\n\t\treturn;\n\t}\n\n\tglobal_var.rows --;\n\tglobal_var.value.splice(global_var.value.length - 1, 1);\n}\n\nfunction addLineGlobalMatrix (global_var) {\n\tglobal_var.rows ++;\n\n\tif (global_var.type == Types.INTEGER) {\n\t\tvar n_l = [];\n\t\tfor (var i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(1);\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n\tif (global_var.type == Types.REAL) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(1.0);\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n\n\tif (global_var.type == Types.TEXT) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(LocalizedStrings.getUI('text_start'));\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(true);\n\t\t}\n\t\tglobal_var.value.push(n_l);\n\t}\n}\n\nfunction alternateBooleanGlobalMatrixValue (global_var, row, index, value_container) {\n\tglobal_var.value[row][index] = !global_var.value[row][index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(global_var.value[row][index]));\n}\n\nfunction renderValues (global_var, global_container) {\n\n\tvar ret = \"\";\n\tvar j = 0;\n\n\tif (global_var.dimensions == 0) {\n\t\tif (global_var.type == Types.REAL) {\n\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+global_var.value.toFixed(1)+'</span> </div> ';\n\t\t} else {\n\t\t\tif (global_var.type == Types.BOOLEAN) {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable boolean_simple_type\">'+LocalizedStrings.getUI(global_var.value)+'</span> </div> ';\n\t\t\t} else {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+global_var.value+'</span> </div> ';\n\t\t\t}\n\t\t}\n\t} else {\n\t\tret += '<table class=\"tabela_var\">';\n\n\t\tif (global_var.dimensions == 1) {\n\t\t\tret += '<tr>';\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+global_var.value[k].toFixed(1)+'</span></td>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n\t\t\t\t\tif (global_var.type == Types.BOOLEAN) {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_vector_var\" data-index=\"'+k+'\">'+LocalizedStrings.getUI(global_var.value[k])+'</span></td>';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+global_var.value[k]+'</span>'+'</td>';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tret += '</tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_vector_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_vector_column\"></i></div>';\n\t\t}\n\n\t\tif (global_var.dimensions == 2) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tfor (var l = 0; l < global_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n \t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+global_var.value[l][k].toFixed(1)+'</span>'+'</td>';\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var l = 0; l < global_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < global_var.columns; k++) {\n \t\t\t\t\tif (global_var.type == Types.BOOLEAN) { \n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+LocalizedStrings.getUI(global_var.value[l][k])+'</span></td>';\n \t\t\t\t\t} else {\n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+global_var.value[l][k]+'</span></td>';\n \t\t\t\t\t}\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.rows == 0) {\n\t\t\t\tret += '<tr><td></td></tr>';\n\t\t\t}\n\t\t\tret += '<tr><td colspan=\"'+global_var.columns+'\" class=\"tr_manage_lines\"><i class=\"ui icon minus square outline remove_global_matrix_line\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_line\"></i></td></tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_matrix_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_column\"></i></div>';\n\t\t}\n\t\t\n\t}\n\n\tglobal_container.find( \".div_valor_var\" ).html('');\n\n\tret = $(ret);\n\n\tret.find('.span_value_variable').data('associatedOject', global_var);\n\n\tret.find( \".boolean_simple_type\" ).on('click', function(e){\n\t\talternateBooleanGlobalValue(global_var, this.parentNode);\n\t});\n\tret.find( \".simple_var\" ).on('click', function(e){\n\t\tenableGlobalValueUpdate(global_var, this.parentNode);\n\t});\n\n\tret.find( \".boolean_vector_var\" ).on('click', function(e){\n\t\talternateBooleanGlobalVectorValue(global_var, $(this).data('index'), this.parentNode);\n\t});\n\tret.find( \".vector_var\" ).on('click', function(e){\n\t\tenableGlobalVectorValueUpdate(global_var, $(this).data('index'), this.parentNode);\n\t});\n\tret.find( \".remove_global_vector_column\" ).on('click', function(e){\n\t\tremoveGlobalColumnVector(global_var);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".add_global_vector_column\" ).on('click', function(e){\n\t\taddGlobalColumnVector(global_var);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".remove_global_matrix_column\" ).on('click', function(e){\n\t\tremoveColumnGlobalMatrix(global_var);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".add_global_matrix_column\" ).on('click', function(e){\n\t\taddColumnGlobalMatrix(global_var);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".remove_global_matrix_line\" ).on('click', function(e){\n\t\tremoveLineGlobalMatrix(global_var);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".add_global_matrix_line\" ).on('click', function(e){\n\t\taddLineGlobalMatrix(global_var);\n\t\tglobal_container.find( \".div_valor_var\" ).html('');\n\t\trenderValues(global_var, global_container);\n\t});\n\tret.find( \".boolean_matrix_var\" ).on('click', function(e){\n\t\talternateBooleanGlobalMatrixValue(global_var, $(this).data('row'), $(this).data('index'), this.parentNode);\n\t});\n\tret.find( \".matrix_var\" ).on('click', function(e){\n\t\tenableGlobalMatrixValueUpdate(global_var, $(this).data('row'), $(this).data('index'), this.parentNode);\n\t});\n\tglobal_container.find( \".div_valor_var\" ).append(ret);\n\n\n\tupdateColumnsAndRowsText(global_container, global_var);\n\n}\n\nfunction addHandlers (global_container) {\n\tvar global_var = global_container.data('associatedOject'); \n\t// Manage constant option:\n\tglobal_container.find( \".alternate_constant\" ).on('click', function(e){\n\t\ttoggleConstant(global_var);\n\n\t\t$( this ).removeClass( \"on off\" );\n\t\tif (global_var.is_constant) {\n\t\t\t$( this ).addClass( \"on\" );\n\t\t} else {\n\t\t\t$( this ).addClass( \"off\" );\n\t\t}\n\t});\n\n\t// Manage global name: \n\tglobal_container.find( \".enable_edit_name_parameter\" ).on('click', function(e){\n\t\tenableNameUpdate(global_container);\n\t});\n\n\t// Menu to change type:\n\tglobal_container.find('.ui.dropdown.global_type').dropdown({\n\t onChange: function(value, text, $selectedItem) {\n\t \tif ($selectedItem.data('dimensions')) {\n\t \t\tupdateType(global_var, Types[$selectedItem.data('type')], $selectedItem.data('dimensions'));\n\t \t} else {\n\t \t\tupdateType(global_var, Types[$selectedItem.data('type')]);\n\t \t}\n\n\t \trenderValues(global_var, global_container);\n\n\t },\n\t selectOnKeydown: false\n\t});\n\n\t// Remove global: \n\tglobal_container.find( \".remove_global\" ).on('click', function(e){\n\t\tremoveGlobal(global_var, global_container);\n\t});\n\n}\n\nfunction updateColumnsAndRowsText (global_container, global_var) {\n\tvar prev = global_container.find('.text').text().split('[');\n\tif (prev.length == 2) {\n\t\tvar ff = prev[0] + '[ ' + global_var.columns + ' ] ';\n\t\tglobal_container.find('.text').empty();\n\t\tglobal_container.find('.text').text(ff);\n\t}\n\tif (prev.length == 3) {\n\t\tvar ff = prev[0] + '[ ' + global_var.columns + ' ] [ ' + global_var.rows + ' ] ';\n\t\tglobal_container.find('.text').empty();\n\t\tglobal_container.find('.text').text(ff);\n\t}\n}\n\nexport function renderGlobal (global_var) {\n\n\tvar element = '<div class=\"ui label global_container pink\"><i class=\"ui icon ellipsis vertical inverted\"></i><div class=\"global_const\">const: ';\n\n\telement += '<i class=\"ui icon toggle '+(global_var.is_constant?\"on\":\"off\")+' alternate_constant\"></i></div>';\n \t\n \telement += '<div class=\"ui dropdown global_type\">';\n\n \tif (global_var.dimensions > 0) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('vector')+ ':' + LocalizedStrings.getUI(global_var.type);\n \t\tfor (var i = 0; i < global_var.dimensions; i ++) {\n \t\t\telement += ' [ <span class=\"dimensions_'+i+'\"></span> ] ';\n \t\t}\n \t\telement += '</div>';\n \t} else {\n \t\telement += '<div class=\"text\">' + LocalizedStrings.getUI(global_var.type.toLowerCase()) + '</div>';\n \t}\n\telement += '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n \t\telement += '<div class=\"item ' + (global_var.type == tm.toLowerCase() ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(tm.toLowerCase())+'</div>';\n\t}\n\n \tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n \t\telement += '<div class=\"item\">'\n\t \t+ '<i class=\"dropdown icon\"></i>'\n\t \t+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())\n\t \t+ '<div class=\"menu\">'\n\t\t + '<div class=\"item\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\">[ ]</div>'\n\t\t + '<div class=\"item\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\">[ ] [ ] </div>'\n\t \t+ '</div>'\n\t \t+ '</div>';\t\n \t}\n\n element += '</div></div> <div class=\"editing_name_var\"> <span class=\"span_name_variable enable_edit_name_parameter\">'+global_var.name+'</span> </div> <span class=\"character_equals\"> = </span> ';\n\n\telement += '<div class=\"ui div_valor_var\">'+global_var.value+'</div>'; \n\n\telement += ' <i class=\"yellow inverted icon times remove_global\"></i></div>';\n\n\tvar complete_element = $(element);\n\n\tcomplete_element.data('associatedOject', global_var);\n\n\t$('.list_globals').append(complete_element);\n\n\taddHandlers(complete_element);\n\n\trenderValues(global_var, complete_element);\n\n\tif (global_var.dimensions == 1) {\n\t\tcomplete_element.find('.dimensions_0').text(global_var.columns);\n\t}\n\tif (global_var.dimensions == 2) {\n\t\tcomplete_element.find('.dimensions_0').text(global_var.columns);\n\t\tcomplete_element.find('.dimensions_1').text(global_var.rows);\n\t}\n\n\treturn complete_element;\n}\n\nvar opened_name_value_matrix_global_v = false;\nvar opened_input_value_matrix_global_v = null;\nfunction enableGlobalMatrixValueUpdate (global_var, row, index, parent_node) {\n\tif (opened_name_value_matrix_global_v) {\n\t\topened_input_value_matrix_global_v.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_matrix_global_v = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (global_var.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value[row][index].toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value[row][index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_matrix_global_v = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tglobal_var.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\tglobal_var.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tglobal_var.value[row][index] = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t}\n\t\tif (global_var.type == Types.TEXT) {\n\t\t\tglobal_var.value[row][index] = input_field.val();\n\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_matrix_global_v = false;\n\t\topened_input_value_matrix_global_v = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tglobal_var.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\t\tglobal_var.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tglobal_var.value[row][index] = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.type == Types.TEXT) {\n\t\t\t\tglobal_var.value[row][index] = input_field.val();\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[row][index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t});\n\tinput_field.select();\n}\n\nvar opened_name_value_global_var = false;\nvar opened_input_value_global_ar = null;\nfunction enableGlobalValueUpdate (global_var, parent_node) {\n\tif (opened_name_value_global_var) {\n\t\topened_input_value_global_ar.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_global_var = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (global_var.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value.toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_global_ar = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tglobal_var.value = parseFloat(input_field.val().trim());\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t} else{\n\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\tglobal_var.value = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tglobal_var.value = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t\t\n\t\t\t}\n\t\t} else {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t}\n\t\t}\n\t\tif (global_var.type == Types.TEXT) {\n\t\t\tglobal_var.value = input_field.val();\n\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_global_var = false;\n\t\topened_input_value_global_ar = false;\n\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tglobal_var.value = parseFloat(input_field.val().trim());\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\t\tglobal_var.value = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tglobal_var.value = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.type == Types.TEXT) {\n\t\t\t\tglobal_var.value = input_field.val();\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value.toFixed(1));\n\t\t\t} else{\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\n\nvar opened_name_global = false;\nvar opened_input_global = null;\nfunction enableNameUpdate (global_container) {\n\n\tvar global_var = global_container.data('associatedOject'); \n\n\tif (opened_name_global) {\n\t\topened_input_global.focus();\n\t\treturn;\n\t}\n\topened_name_global = true;\n\n\tglobal_container.find('.span_name_variable').text('');\n\tvar input_name = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+global_var.name+\"' />\" );\n\tinput_name.insertBefore(global_container.find('.span_name_variable'));\n\n\tinput_name.on('input', function() {\n\t var inputWidth = input_name.textWidth()+10;\n\t opened_input_global = input_name;\n\t opened_input_global.focus();\n\n\t opened_input_global.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_name.focusout(function() {\n\t\t/// update array:\n\t\tif (input_name.val().trim().length > 0) {\n\t\t\tupdateName(global_var, input_name.val().trim(), global_container);\n\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t} else {\n\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t}\n\t\tinput_name.off();\n\t\tinput_name.remove();\n\n\t\t/// update elements:\n\t\topened_name_global = false;\n\t\topened_input_global = false;\n\t});\n\n\tinput_name.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_name.val().trim()) {\n\t\t\t\tupdateName(global_var, input_name.val().trim(), global_container);\n\t\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t\t} else {\n\t\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t\t}\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t\tif(code == 27) {\n\n\t\t\tglobal_container.find('.span_name_variable').text(global_var.name);\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t});\n\n\tinput_name.select();\n\t\n}\n\n\nvar opened_name_value_vector_global_ = false;\nvar opened_input_value_vector_global_ = null;\nfunction enableGlobalVectorValueUpdate (global_var, index, parent_node) {\n\tif (opened_name_value_vector_global_) {\n\t\topened_input_value_vector_global_.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_vector_global_ = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (global_var.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value[index].toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ global_var.value[index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_vector_global_ = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tglobal_var.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t} else {\n\n\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\tglobal_var.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tglobal_var.value[index] = input_field.val().trim();\n\t\t\t\t}\n\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\n\t\t\t}\n\t\t} else {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t}\n\t\t}\n\t\tif (global_var.type == Types.TEXT) {\n\t\t\tglobal_var.value[index] = input_field.val();\n\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_vector_global_ = false;\n\t\topened_input_value_vector_global_ = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tglobal_var.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t\t} else {\n\n\t\t\t\t\tif (global_var.type == Types.INTEGER) {\n\t\t\t\t\t\tglobal_var.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tglobal_var.value[index] = input_field.val().trim();\n\t\t\t\t\t}\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (global_var.type == Types.TEXT) {\n\t\t\t\tglobal_var.value[index] = input_field.val();\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (global_var.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\n\n$.fn.textWidth = function(text, font) {\n \n if (!$.fn.textWidth.fakeEl) $.fn.textWidth.fakeEl = $('<span>').hide().appendTo(document.body);\n \n $.fn.textWidth.fakeEl.text(text || this.val() || this.text() || this.attr('placeholder')).css('font', font || this.css('font'));\n \n return $.fn.textWidth.fakeEl.width();\n};","import * as VariableValueMenuManagement from './commands/variable_value_menu';\nimport { Types } from './types';\nimport WatchJS from 'melanke-watchjs';\nimport * as AlgorithmManagement from './algorithm';\n\nexport const COMMAND_TYPES = Object.freeze({function:\"function\", comment:\"comment\", reader:\"reader\", writer:\"writer\", attribution:\"attribution\", iftrue:\"iftrue\",\n repeatNtimes:\"repeatNtimes\", whiletrue:\"whiletrue\", dowhiletrue:\"dowhiletrue\", switch:\"switch\", switchcase:\"switchcase\", functioncall:\"functioncall\", break:\"break\",\n return:\"return\"});\n\nexport const ARITHMETIC_TYPES = Object.freeze({plus:\"plus\", minus:\"minus\", multiplication:\"multiplication\", division:\"division\", module:\"module\", none:\"none\"});\n\nexport const EXPRESSION_ELEMENTS = Object.freeze({exp_op_exp:\"exp_op_exp\", op_exp:\"op_exp\", par_exp_par:\"par_exp_par\", start_point:\"start_point\"});\n\nexport const EXPRESSION_TYPES = Object.freeze({exp_conditional:\"exp_conditional\", exp_logic:\"exp_logic\", exp_arithmetic:\"exp_arithmetic\"});\n\nexport const ARITHMETIC_COMPARISON = Object.freeze({greater_than:\"greater_than\", less_than:\"less_than\", equals_to:\"equals_to\", not_equals_to:\"not_equals_to\", greater_than_or_equals_to:\"greater_than_or_equals_to\", less_than_or_equals_to:\"less_than_or_equals_to\"});\n\nexport const LOGIC_COMPARISON = Object.freeze({equals_to:\"equals_to\", not_equals_to:\"not_equals_to\", and:\"and\", or:\"or\", not:\"not\"});\n\nexport const SYSTEM_FUNCTIONS_CATEGORIES = Object.freeze({math:\"math\", text:\"text_t\", arrangement:\"arrangement\", conversion:\"conversion\"});\n\nexport class Variable {\n\n constructor (type, name, value, dimensions = 0, is_constant = false, rows = 0, columns = 0) {\n this.type = type;\n this.name = name;\n this.value = value;\n this.dimensions = dimensions;\n this.is_constant = is_constant;\n this.rows = rows;\n this.columns = columns;\n }\n}\n\nexport class Function {\n\n constructor (name, return_type = Types.VOID, return_dimensions = 0, parameters_list = [], is_main = false, is_hidden = false, variables_list = [], function_comment = null, commands = []) {\n this.type = COMMAND_TYPES.function;\n this.name = name;\n this.return_type = return_type;\n this.return_dimensions = return_dimensions;\n this.parameters_list = parameters_list;\n this.is_main = is_main;\n this.is_hidden = is_hidden;\n this.variables_list = variables_list;\n this.function_comment = function_comment;\n this.commands = commands;\n }\n}\n\nexport class SystemFunction {\n\n constructor (identifier, return_type, return_dimensions, parameters_list, function_comment = null, category) {\n this.type = COMMAND_TYPES.function;\n this.identifier = identifier;\n this.return_type = return_type;\n this.return_dimensions = return_dimensions;\n this.parameters_list = parameters_list;\n this.function_comment = function_comment;\n this.category = category;\n }\n}\n\nexport class Comment {\n \n constructor (comment_text) {\n this.type = COMMAND_TYPES.comment;\n this.comment_text = comment_text;\n }\n}\n\nexport class Break {\n \n constructor () {\n this.type = COMMAND_TYPES.break;\n }\n}\n\nexport class Reader {\n \n constructor (variable_value_menu = new VariableValueMenu()) {\n this.type = COMMAND_TYPES.reader;\n this.variable_value_menu = variable_value_menu;\n }\n}\n\nexport class Writer {\n\n constructor (content) {\n this.type = COMMAND_TYPES.writer;\n this.content = content;\n }\n}\n\nexport class Attribution {\n\n constructor (variable, expression = []) {\n this.type = COMMAND_TYPES.attribution;\n this.variable = variable;\n this.expression = expression;\n }\n}\n\nexport class ExpressionOperator {\n\n constructor (type_op, item) {\n this.type_op = type_op; // Logic, Arithmetic OR Relational\n this.item = item;\n }\n}\n\nexport class ExpressionElement {\n\n constructor (type_exp, itens = []) {\n this.type_exp = type_exp;\n this.itens = itens;\n }\n}\n\nexport class ConditionalExpression {\n\n constructor (expression) {\n this.type = EXPRESSION_TYPES.exp_conditional;\n this.expression = expression;\n }\n}\n\nexport class LogicExpression {\n\n constructor (has_neg, first_operand, second_operand, operator) {\n this.type = EXPRESSION_TYPES.exp_logic;\n this.has_neg = has_neg;\n this.first_operand = first_operand;\n this.second_operand = second_operand;\n this.operator = operator;\n }\n}\n\nexport class ArithmeticExpression {\n\n constructor (first_operand, second_operand, operator) {\n this.type = EXPRESSION_TYPES.exp_arithmetic;\n this.first_operand = first_operand;\n this.second_operand = second_operand;\n this.operator = operator;\n }\n}\n\nexport class IfTrue {\n\n constructor (expression, commands_block, commands_else) {\n this.type = COMMAND_TYPES.iftrue;\n this.expression = expression;\n this.commands_block = commands_block;\n this.commands_else = commands_else;\n }\n}\n\nexport class RepeatNTimes {\n\n constructor (var_attribution, var_incrementation, expression1, expression2, expression3, commands_block) {\n this.type = COMMAND_TYPES.repeatNtimes;\n this.var_attribution = var_attribution;\n this.var_incrementation = var_incrementation;\n this.expression1 = expression1;\n this.expression2 = expression2;\n this.expression3 = expression3;\n this.commands_block = commands_block;\n }\n}\n\nexport class WhileTrue {\n\n constructor (expression, commands_block) {\n this.type = COMMAND_TYPES.whiletrue;\n this.expression = expression;\n this.commands_block = commands_block;\n }\n}\n\nexport class DoWhileTrue {\n\n constructor (expression, commands_block) {\n this.type = COMMAND_TYPES.dowhiletrue;\n this.expression = expression;\n this.commands_block = commands_block;\n }\n}\n\nexport class Switch {\n\n constructor (variable, cases = []) {\n this.type = COMMAND_TYPES.switch;\n this.variable = variable;\n this.cases = cases;\n }\n}\n\nexport class Return {\n\n constructor (variable_value_menu) {\n this.type = COMMAND_TYPES.return;\n this.variable_value_menu = variable_value_menu;\n } \n}\n\nexport class SwitchCase {\n\n constructor (variable_value_menu, commands_block = []) {\n this.type = COMMAND_TYPES.switchcase;\n this.variable_value_menu = variable_value_menu;\n this.commands_block = commands_block;\n } \n}\n\nexport class FunctionCall {\n\n constructor (function_called, parameters_list) {\n this.type = COMMAND_TYPES.functioncall;\n this.function_called = function_called;\n this.parameters_list = parameters_list;\n }\n}\n\nexport class VariableValueMenu {\n\n constructor (variable_and_value = 7, content = null, row = null, column = null, include_constant = true, dimensions = 0) {\n this.type = \"var_value\";\n this.variable_and_value = variable_and_value;\n this.content = content;\n this.row = row;\n this.column = column;\n this.include_constant = include_constant;\n this.dimensions = dimensions;\n }\n}\n\nexport class FunctionCallMenu {\n \n constructor (function_called = null, parameters_list = []) {\n this.type = \"function_call\";\n this.function_called = function_called;\n this.parameters_list = parameters_list;\n }\n}\n\nexport class Program {\n\n constructor () {\n this.functions = [];\n this.globals = [];\n }\n\n addFunction (function_to_add) {\n\n WatchJS.watch(function_to_add.parameters_list, function(){\n if (window.insertContext) {\n setTimeout(function(){ AlgorithmManagement.renderAlgorithm(); }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n }\n }, 1);\n\n WatchJS.watch(function_to_add.variables_list, function(){\n if (window.insertContext) {\n setTimeout(function(){ AlgorithmManagement.renderAlgorithm(); }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n }\n }, 1);\n\n this.functions.push(function_to_add);\n }\n\n addVariable (function_to_receive, variable) {\n if (this.functions[function_to_receive].variable === null) {\n this.functions[function_to_receive].variables_list = [];\n }\n this.functions[function_to_receive].variables_list.push(variable);\n }\n\n addGlobal (variable) {\n this.globals.push(variable);\n }\n}\n","export const Types = Object.freeze({\n INTEGER: \"integer\",\n REAL: \"real\",\n TEXT: \"text\",\n BOOLEAN: \"boolean\",\n VOID: \"void\"\n});","\nimport $ from 'jquery';\n\nexport function renderErrorMessage (dom_obj_target, message_text) {\n\n\tdom_obj_target.popup({\n\t\thtml : '<i class=\"ui icon inverted exclamation triangle yellow\"></i>' + message_text,\n\t\ttransition : \"fade up\",\n\t\ton : 'click',\n \t\tclosable : true,\n \t\tmovePopup : true,\n \t\tboundary : window,\n \t\tpreserve : false,\n \t\ttarget : false,\n\t\tclassName : {\n\t\t popup : 'ui popup invalid-identifier'\n\t\t},\n\t\tonHidden : function($module) {\n\t\t\tdom_obj_target.popup('destroy');\n\t\t}\n\n\t}).popup('toggle');\n\n}","import $ from 'jquery';\nimport jQuery from 'jquery';\nimport { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as Utils from './utils';\n\nwindow.jQuery = jQuery;\n\nimport '../semantic/semantic.min.js';\n\nvar counter_new_variables = 0;\n\nexport function addVariable (function_obj, function_container, is_in_click = false) {\n\tvar new_var = new Models.Variable(Types.INTEGER, LocalizedStrings.getUI('new_variable') + '_' + counter_new_variables, 1);\n\tif (function_obj.variables_list == null) {\n\t\tfunction_obj.variables_list = [];\n\t}\n\tfunction_obj.variables_list.push(new_var);\n\n\tcounter_new_variables ++;\n\n\tvar newe = renderVariable(function_container, new_var, function_obj);\n\n\tif (is_in_click) {\n\t\tnewe.css('display', 'none');\n\t\tnewe.fadeIn();\n\t}\n}\n\nfunction updateName (variable_obj, new_name, variable_obj_dom, function_obj) {\n\n\tif (variable_obj.name == new_name) {\n\t\treturn;\n\t}\n\n\tif (isValidIdentifier(new_name)) {\n\t\tif (variableNameAlreadyExists(new_name, function_obj)) {\n\t\t\tUtils.renderErrorMessage(variable_obj_dom.find('.editing_name_var'), LocalizedStrings.getUI('inform_valid_variable_duplicated'));\n\t\t} else {\n\t\t\tvariable_obj.name = new_name;\n\t\t}\n\t} else {\n\t\tUtils.renderErrorMessage(variable_obj_dom.find('.editing_name_var'), LocalizedStrings.getUI('inform_valid_name'));\n\t}\n}\n\nfunction variableNameAlreadyExists (name_var, function_obj) {\n\n\tif (function_obj.parameters_list) {\n\t\tfor (var i = 0; i < function_obj.parameters_list.length; i++) {\n\t\t\tif (function_obj.parameters_list[i].name == name_var) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (function_obj.variables_list) {\n\t\tfor (var i = 0; i < function_obj.variables_list.length; i++) {\n\t\t\tif (function_obj.variables_list[i].name == name_var) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction isValidIdentifier (identifier_str) {\n\treturn /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(identifier_str);\n}\n\nfunction removeVariable (variable_obj, variable_container) {\n\tvar function_associated = variable_container.data('associatedFunction');\n\n\tvar index = function_associated.variables_list.indexOf(variable_obj);\n\tif (index > -1) {\n\t window.insertContext = true;\n\t delete function_associated.variables_list[index];\n\t function_associated.variables_list.splice(index, 1);\n\t}\n\tvariable_container.children().off();\n\tvariable_container.off();\n\tvariable_container.fadeOut();\n}\n\nfunction updateType (variable_obj, new_type, new_dimensions = 0) {\n\tvariable_obj.type = new_type;\n\tvariable_obj.dimensions = new_dimensions;\n\n\tif (new_dimensions > 0) {\n\t\tvariable_obj.rows = new_dimensions;\n\t\tvariable_obj.columns = 2;\n\t}\n\n\tupdateInitialValues(variable_obj);\n}\n\nfunction addHandlers (variable_obj, variable_container, function_obj) {\n\n\t// Manage variable name: \n\tvariable_container.find( \".enable_edit_name_variable\" ).on('click', function(e){\n\t\tenableNameUpdate(variable_obj, variable_container, function_obj);\n\t});\n\n\t// Menu to change type:\n\tvariable_container.find('.ui.dropdown.variable_type').dropdown({\n\t onChange: function(value, text, $selectedItem) {\n\t \tif ($selectedItem.data('dimensions')) {\n\t \t\tupdateType(variable_obj, Types[$selectedItem.data('type')], $selectedItem.data('dimensions'));\n\t \t} else {\n\t \t\tupdateType(variable_obj, Types[$selectedItem.data('type')]);\n\t \t}\n\n\t \trenderValues(variable_obj, variable_container);\n\t },\n\t selectOnKeydown: false\n\t});\n\n\t// Remove variable: \n\tvariable_container.find( \".remove_variable\" ).on('click', function(e){\n\t\tremoveVariable(variable_obj, variable_container);\n\t});\n\n}\n\n\nexport function renderVariable (function_container, new_var, function_obj) {\n\n\tvar element = '<div class=\"ui label variable_container pink\"><i class=\"ui icon ellipsis vertical inverted\"></i>';\n\n\telement += '<div class=\"ui dropdown variable_type\">';\n\n \tif (new_var.dimensions > 0) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('vector') + ':' + LocalizedStrings.getUI(new_var.type.toLowerCase());\n \t\tfor (var i = 0; i < new_var.dimensions; i ++) {\n \t\t\telement += ' [ ] ';\n \t\t}\n \t\telement += '</div>';\n \t} else {\n \t\telement += '<div class=\"text\">' + LocalizedStrings.getUI(new_var.type.toLowerCase()) + '</div>';\n \t}\n\telement += '<div class=\"menu\">';\n\n\tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n \t\telement += '<div class=\"item ' + (new_var.type == tm.toLowerCase() ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(tm.toLowerCase())+'</div>';\n\t}\n\n \tfor (var tm in Types) {\n \t\tif (tm == Types.VOID.toUpperCase()) {\n \t\t\tcontinue;\n \t\t}\n \t\telement += '<div class=\"item\">'\n \t\t\t+ '<i class=\"dropdown icon\"></i>'\n\t \t+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())\n\t \t+ '<div class=\"menu\">'\n\t\t + '<div class=\"item\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\">[ ]</div>'\n\t\t + '<div class=\"item\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(tm.toLowerCase())+' [ ] [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\">[ ] [ ] </div>'\n\t \t+ '</div>'\n\t \t+ '</div>';\t\n \t}\n\n element += '</div></div> ';\n\n element += '<div class=\"editing_name_var\"><span class=\"span_name_variable enable_edit_name_variable\">'+new_var.name+'</span> </div>';\n\n\telement += ' <span class=\"character_equals\"> = </span> <div class=\"ui div_valor_var\">'+new_var.value+'</div>'; \n\n\telement += ' <i class=\"yellow inverted icon times remove_variable\"></i></div>';\n\n\telement = $(element);\n\n\telement.data('associatedFunction', function_obj);\n\n\tfunction_container.find('.variables_list_div').append(element);\n\n\taddHandlers(new_var, element, function_obj);\n\n\trenderValues(new_var, element);\n\n\treturn element;\n}\n\nfunction updateColumnsAndRowsText (variable_container, variable_var) {\n\tvar prev = variable_container.find('.text').text().split('[');\n\tif (prev.length == 2) {\n\t\tvar ff = prev[0] + '[ ' + variable_var.columns + ' ] ';\n\t\tvariable_container.find('.text').empty();\n\t\tvariable_container.find('.text').text(ff);\n\t}\n\tif (prev.length == 3) {\n\t\tvar ff = prev[0] + '[ ' + variable_var.columns + ' ] [ ' + variable_var.rows + ' ] ';\n\t\tvariable_container.find('.text').empty();\n\t\tvariable_container.find('.text').text(ff);\n\t}\n}\n\nfunction renderValues (new_var, variable_container) {\n\n\tvar ret = \"\";\n\tvar j = 0;\n\n\tif (new_var.dimensions == 0) {\n\t\tif (new_var.type == Types.REAL) {\n\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+new_var.value.toFixed(1)+'</span> </div> ';\n\t\t} else {\n\t\t\tif (new_var.type == Types.BOOLEAN) {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable boolean_simple_type\">'+LocalizedStrings.getUI(new_var.value)+'</span> </div> ';\n\t\t\t} else {\n\t\t\t\tret += '<div class=\"created_div_valor_var\"><span class=\"span_value_variable simple_var\">'+new_var.value+'</span> </div> ';\n\t\t\t}\n\t\t}\n\t} else {\n\t\tret += '<table class=\"tabela_var\">';\n\n\t\tif (new_var.dimensions == 1) {\n\t\t\tret += '<tr>';\n\t\t\tif (new_var.type == Types.REAL) {\n\t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+new_var.value[k].toFixed(1)+'</span></td>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n\t\t\t\t\tif (new_var.type == Types.BOOLEAN) {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_vector_var\" data-index=\"'+k+'\">'+LocalizedStrings.getUI(new_var.value[k])+'</span></td>';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tret += '<td><span class=\"span_value_variable vector_var\" data-index=\"'+k+'\">'+new_var.value[k]+'</span>'+'</td>';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tret += '</tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_vector_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_vector_column\"></i></div>';\n\t\t}\n\n\t\tif (new_var.dimensions == 2) {\n\t\t\tif (new_var.type == Types.REAL) {\n\t\t\t\tfor (var l = 0; l < new_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n \t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+new_var.value[l][k].toFixed(1)+'</span>'+'</td>';\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var l = 0; l < new_var.rows; l++) {\n \t\t\t\tret += '<tr>';\n \t\t\t\tfor (var k = 0; k < new_var.columns; k++) {\n \t\t\t\t\tif (new_var.type == Types.BOOLEAN) { \n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable boolean_matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+LocalizedStrings.getUI(new_var.value[l][k])+'</span></td>';\n \t\t\t\t\t} else {\n \t\t\t\t\t\tret += '<td><span class=\"span_value_variable matrix_var\" data-index=\"'+k+'\" data-row=\"'+l+'\">'+new_var.value[l][k]+'</span></td>';\n \t\t\t\t\t}\n \t\t\t\t} \n \t\t\t\tret += '</tr>';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (new_var.rows == 0) {\n\t\t\t\tret += '<tr><td></td></tr>';\n\t\t\t}\n\t\t\tret += '<tr><td colspan=\"'+new_var.columns+'\" class=\"tr_manage_lines\"><i class=\"ui icon minus square outline remove_global_matrix_line\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_line\"></i></td></tr>';\n\t\t\tret += '</table>';\n\n\t\t\tret += '<div class=\"buttons_manage_columns\"><i class=\"ui icon minus square outline remove_global_matrix_column\"></i>'\n\t\t \t+ ' <i class=\"ui icon plus square outline add_global_matrix_column\"></i></div>';\n\t\t}\n\t\t\n\t}\n\n\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\n\tret = $(ret);\n\n\t$(ret).find('.span_value_variable').data('associatedOject', new_var);\n\n\t$( ret ).find( \".boolean_simple_type\" ).on('click', function(e){\n\t\talternateBooleanValue(new_var, this.parentNode);\n\t});\n\t$( ret ).find( \".simple_var\" ).on('click', function(e){\n\t\tenableValueUpdate(new_var, this.parentNode);\n\t});\n\n\t$( ret ).find( \".boolean_vector_var\" ).on('click', function(e){\n\t\talternateBooleanVectorValue(new_var, $(this).data('index'), this.parentNode);\n\t});\n\t$( ret ).find( \".vector_var\" ).on('click', function(e){\n\t\tenableVectorValueUpdate(new_var, $(this).data('index'), this.parentNode);\n\t});\n\t$( ret ).find( \".remove_global_vector_column\" ).on('click', function(e){\n\t\tremoveColumnVector(new_var);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container);\n\t});\n\t$( ret ).find( \".add_global_vector_column\" ).on('click', function(e){\n\t\taddColumnVector(new_var);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container);\n\t});\n\t$( ret ).find( \".remove_global_matrix_column\" ).on('click', function(e){\n\t\tremoveColumnMatrix(new_var);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container);\n\t});\n\t$( ret ).find( \".add_global_matrix_column\" ).on('click', function(e){\n\t\taddColumnMatrix(new_var);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container);\n\t});\n\t$( ret ).find( \".remove_global_matrix_line\" ).on('click', function(e){\n\t\tremoveLineMatrix(new_var);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container);\n\t});\n\t$( ret ).find( \".add_global_matrix_line\" ).on('click', function(e){\n\t\taddLineMatrix(new_var);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container);\n\t});\n\t$( ret ).find( \".boolean_matrix_var\" ).on('click', function(e){\n\t\talternateBooleanMatrixValue(new_var, $(this).data('row'), $(this).data('index'), this.parentNode);\n\t});\n\t$( ret ).find( \".matrix_var\" ).on('click', function(e){\n\t\tenableMatrixValueUpdate(new_var, $(this).data('row'), $(this).data('index'), this.parentNode);\n\t});\n\t$( variable_container ).find( \".div_valor_var\" ).append(ret);\n\n\tupdateColumnsAndRowsText(variable_container, new_var);\n\n}\n\nfunction alternateBooleanMatrixValue (var_obj, row, index, value_container) {\n\tvar_obj.value[row][index] = !var_obj.value[row][index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(var_obj.value[row][index]));\n}\n\nfunction addLineMatrix (var_obj) {\n\tvar_obj.rows ++;\n\n\tif (var_obj.type == Types.INTEGER) {\n\t\tvar n_l = [];\n\t\tfor (var i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(1);\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n\tif (var_obj.type == Types.REAL) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(1.0);\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n\n\tif (var_obj.type == Types.TEXT) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(LocalizedStrings.getUI('text_start'));\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n\n\tif (var_obj.type == Types.BOOLEAN) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(true);\n\t\t}\n\t\tvar_obj.value.push(n_l);\n\t}\n}\n\nfunction removeLineMatrix (var_obj) {\n\tif (var_obj.rows == 0) {\n\t\treturn;\n\t}\n\n\tvar_obj.rows --;\n\tvar_obj.value.splice(var_obj.value.length - 1, 1);\n}\n\nfunction addColumnMatrix (var_obj) {\n\tvar_obj.columns ++;\n\n\tif (var_obj.type == Types.INTEGER) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(1);\n\t\t}\n\t}\n\tif (var_obj.type == Types.REAL) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(1.0);\n\t\t}\n\t}\n\tif (var_obj.type == Types.TEXT) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(LocalizedStrings.getUI('text_start'));\n\t\t}\n\t}\n\tif (var_obj.type == Types.BOOLEAN) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(true);\n\t\t}\n\t}\n}\n\nfunction removeColumnMatrix (var_obj) {\n\tif (var_obj.columns == 0) {\n\t\treturn;\n\t}\n\n\tvar_obj.columns --;\n\n\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\tvar_obj.value[i].splice(var_obj.value[i].length - 1, 1);\n\t}\n}\n\nfunction addColumnVector (var_obj) {\n\tvar_obj.columns ++;\n\n\tif (var_obj.type == Types.INTEGER) {\n\t\tvar_obj.value.push(1);\n\t}\n\tif (var_obj.type == Types.REAL) {\n\t\tvar_obj.value.push(1.0);\n\t}\n\tif (var_obj.type == Types.TEXT) {\n\t\tvar_obj.value.push(LocalizedStrings.getUI('text_start'));\n\t}\n\tif (var_obj.type == Types.BOOLEAN) {\n\t\tvar_obj.value.push(true);\n\t}\n}\n\nfunction removeColumnVector (var_obj) {\n\tif (var_obj.columns == 0) {\n\t\treturn;\n\t}\n\n\tvar_obj.columns --;\n\tvar_obj.value.splice(var_obj.value.length - 1, 1);\n}\n\nfunction alternateBooleanValue (var_obj, value_container) {\n\tvar_obj.value = !var_obj.value;\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(var_obj.value));\n}\n\nfunction alternateBooleanVectorValue (var_obj, index, value_container) {\n\tvar_obj.value[index] = !var_obj.value[index];\n\t$(value_container).find('.span_value_variable').text(LocalizedStrings.getUI(var_obj.value[index]));\n}\n\nfunction updateInitialValues (variable_obj) {\n\tif (variable_obj.type == Types.INTEGER) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = 1;\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [1, 1];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[1, 1], [1, 1]];\n\t\t}\n\t}\n\n\tif (variable_obj.type == Types.REAL) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = 1.0;\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [1.0, 1.0];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[1.0, 1.0], [1.0, 1.0]];\n\t\t}\n\t}\n\n\tif (variable_obj.type == Types.TEXT) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = LocalizedStrings.getUI('text_start');\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [LocalizedStrings.getUI('text_start'), LocalizedStrings.getUI('text_start')];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[LocalizedStrings.getUI('text_start'), LocalizedStrings.getUI('text_start')], \n\t\t\t\t\t\t\t\t\t[LocalizedStrings.getUI('text_start'), LocalizedStrings.getUI('text_start')]];\n\t\t}\n\t}\n\n\tif (variable_obj.type == Types.BOOLEAN) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = true;\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [true, true];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[true, true], [true, true]];\n\t\t}\n\t}\n}\n\nvar opened_name_value_vector_global_ = false;\nvar opened_input_value_vector_global_ = null;\nfunction enableVectorValueUpdate (var_obj, index, parent_node) {\n\tif (opened_name_value_vector_global_) {\n\t\topened_input_value_vector_global_.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_vector_global_ = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (var_obj.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[index].toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_vector_global_ = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tvar_obj.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t} else {\n\n\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\tvar_obj.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tvar_obj.value[index] = input_field.val().trim();\n\t\t\t\t}\n\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\n\t\t\t}\n\t\t} else {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t}\n\t\t}\n\t\tif (var_obj.type == Types.TEXT) {\n\t\t\tvar_obj.value[index] = input_field.val();\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_vector_global_ = false;\n\t\topened_input_value_vector_global_ = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tvar_obj.value[index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t\t} else {\n\n\t\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\t\tvar_obj.value[index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar_obj.value[index] = input_field.val().trim();\n\t\t\t\t\t}\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (var_obj.type == Types.TEXT) {\n\t\t\t\tvar_obj.value[index] = input_field.val();\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_vector_global_ = false;\n\t\t\topened_input_value_vector_global_ = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\nvar opened_name_value_global_var = false;\nvar opened_input_value_global_ar = null;\nfunction enableValueUpdate (var_obj, parent_node) {\n\tif (opened_name_value_global_var) {\n\t\topened_input_value_global_ar.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_global_var = true;\n\n\tvar input_field;\n\n\tparent_node.find('.span_value_variable').text('');\n\tif (var_obj.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value.toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_global_ar = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tvar_obj.value = parseFloat(input_field.val().trim());\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t} else{\n\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\tvar_obj.value = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tvar_obj.value = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t\t\n\t\t\t}\n\t\t} else {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t}\n\t\t}\n\t\tif (var_obj.type == Types.TEXT) {\n\t\t\tvar_obj.value = input_field.val();\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_global_var = false;\n\t\topened_input_value_global_ar = false;\n\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tvar_obj.value = parseFloat(input_field.val().trim());\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t\t} else{\n\t\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\t\tvar_obj.value = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar_obj.value = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (var_obj.type == Types.TEXT) {\n\t\t\t\tvar_obj.value = input_field.val();\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value.toFixed(1));\n\t\t\t} else{\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_global_var = false;\n\t\t\topened_input_value_global_ar = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n\nvar opened_name_global = false;\nvar opened_input_global = null;\nfunction enableNameUpdate (variable_obj, variable_container, function_obj) {\n\n\tif (opened_name_global) {\n\t\topened_input_global.focus();\n\t\treturn;\n\t}\n\topened_name_global = true;\n\n\tvariable_container.find('.span_name_variable').text('');\n\n\tvar input_name;\n\n\tinput_name = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"+variable_obj.name+\"' />\" );\n\tinput_name.insertBefore(variable_container.find('.span_name_variable'));\n\n\tinput_name.on('input', function() {\n\t var inputWidth = input_name.textWidth()+10;\n\t opened_input_global = input_name;\n\t input_name.focus();\n\n\t var tmpStr = input_name.val();\n\t\tinput_name.val('');\n\t\tinput_name.val(tmpStr);\n\n\t input_name.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_name.focusout(function() {\n\t\t/// update array:\n\t\tif (input_name.val().trim().length > 0) {\n\t\t\tupdateName(variable_obj, input_name.val().trim(), variable_container, function_obj);\n\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t} else {\n\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t}\n\t\tinput_name.off();\n\t\tinput_name.remove();\n\n\t\t/// update elements:\n\t\topened_name_global = false;\n\t\topened_input_global = false;\n\t});\n\n\tinput_name.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_name.val().trim().length > 0) {\n\t\t\t\tupdateName(variable_obj, input_name.val().trim(), variable_container, function_obj);\n\t\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t\t} else {\n\t\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t\t}\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t\tif(code == 27) {\n\n\t\t\tvariable_container.find('.span_name_variable').text(variable_obj.name);\n\t\t\tinput_name.off();\n\t\t\tinput_name.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_global = false;\n\t\t\topened_input_global = false;\n\t\t}\n\t});\n\n\tinput_name.select();\n\t\n}\n\n\nvar opened_name_value_matrix_global_v = false;\nvar opened_input_value_matrix_global_v = null;\nfunction enableMatrixValueUpdate (var_obj, row, index, parent_node) {\n\tif (opened_name_value_matrix_global_v) {\n\t\topened_input_value_matrix_global_v.focus();\n\t\treturn;\n\t}\n\tparent_node = $(parent_node);\n\topened_name_value_matrix_global_v = true;\n\n\tparent_node.find('.span_value_variable').text('');\n\n\tvar input_field;\n\n\tif (var_obj.type == Types.REAL) {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[row][index].toFixed(1) + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t} else {\n\t\tinput_field = $( \"<input type='text' class='width-dynamic input_name_function' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' value='\"\n\t\t\t+ var_obj.value[row][index] + \"' />\" );\n\t\tinput_field.insertBefore(parent_node.find('.span_value_variable'));\n\t}\n\n\tinput_field.on('input', function() {\n\t var inputWidth = input_field.textWidth()+10;\n\t opened_input_value_matrix_global_v = input_field;\n\t input_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t input_field.css({\n\t width: inputWidth\n\t })\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\t/// update array:\n\t\tif (input_field.val().trim()) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tvar_obj.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\tvar_obj.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t} else {\n\t\t\t\t\tvar_obj.value[row][index] = input_field.val().trim();\n\t\t\t\t}\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t}\n\t\tif (var_obj.type == Types.TEXT) {\n\t\t\tvar_obj.value[row][index] = input_field.val();\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t}\n\t\tinput_field.off();\n\t\tinput_field.remove();\n\n\t\t/// update elements:\n\t\topened_name_value_matrix_global_v = false;\n\t\topened_input_value_matrix_global_v = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tvar code = e.keyCode || e.which;\n\t\tif(code == 13) {\n\t\t\tif (input_field.val().trim()) {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tvar_obj.value[row][index] = parseFloat(input_field.val().trim());\n\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tif (var_obj.type == Types.INTEGER) {\n\t\t\t\t\t\tvar_obj.value[row][index] = parseInt(input_field.val().trim());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar_obj.value[row][index] = input_field.val().trim();\n\t\t\t\t\t}\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t\t} else {\n\t\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (var_obj.type == Types.TEXT) {\n\t\t\t\tvar_obj.value[row][index] = input_field.val();\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t\tif(code == 27) {\n\t\t\tif (var_obj.type == Types.REAL) {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index].toFixed(1));\n\t\t\t} else {\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t\tinput_field.off();\n\t\t\tinput_field.remove();\n\n\t\t\t/// update elements:\n\t\t\topened_name_value_matrix_global_v = false;\n\t\t\topened_input_value_matrix_global_v = false;\n\t\t}\n\t});\n\n\tinput_field.select();\n}\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// This implementation of {@link TokenStream} loads tokens from a\n// {@link TokenSource} on-demand, and places the tokens in a buffer to provide\n// access to any previous token by index.\n//\n// <p>\n// This token stream ignores the value of {@link Token//getChannel}. If your\n// parser requires the token stream filter tokens to only those on a particular\n// channel, such as {@link Token//DEFAULT_CHANNEL} or\n// {@link Token//HIDDEN_CHANNEL}, use a filtering token stream such a\n// {@link CommonTokenStream}.</p>\n\nvar Token = require('./Token').Token;\nvar Lexer = require('./Lexer').Lexer;\nvar Interval = require('./IntervalSet').Interval;\n\n// this is just to keep meaningful parameter types to Parser\nfunction TokenStream() {\n\treturn this;\n}\n\nfunction BufferedTokenStream(tokenSource) {\n\n\tTokenStream.call(this);\n\t// The {@link TokenSource} from which tokens for this stream are fetched.\n\tthis.tokenSource = tokenSource;\n\n\t// A collection of all tokens fetched from the token source. The list is\n\t// considered a complete view of the input once {@link //fetchedEOF} is set\n\t// to {@code true}.\n\tthis.tokens = [];\n\n\t// The index into {@link //tokens} of the current token (next token to\n\t// {@link //consume}). {@link //tokens}{@code [}{@link //p}{@code ]} should\n\t// be\n\t// {@link //LT LT(1)}.\n\t//\n\t// <p>This field is set to -1 when the stream is first constructed or when\n\t// {@link //setTokenSource} is called, indicating that the first token has\n\t// not yet been fetched from the token source. For additional information,\n\t// see the documentation of {@link IntStream} for a description of\n\t// Initializing Methods.</p>\n\tthis.index = -1;\n\n\t// Indicates whether the {@link Token//EOF} token has been fetched from\n\t// {@link //tokenSource} and added to {@link //tokens}. This field improves\n\t// performance for the following cases:\n\t//\n\t// <ul>\n\t// <li>{@link //consume}: The lookahead check in {@link //consume} to\n\t// prevent\n\t// consuming the EOF symbol is optimized by checking the values of\n\t// {@link //fetchedEOF} and {@link //p} instead of calling {@link\n\t// //LA}.</li>\n\t// <li>{@link //fetch}: The check to prevent adding multiple EOF symbols\n\t// into\n\t// {@link //tokens} is trivial with this field.</li>\n\t// <ul>\n\tthis.fetchedEOF = false;\n\treturn this;\n}\n\nBufferedTokenStream.prototype = Object.create(TokenStream.prototype);\nBufferedTokenStream.prototype.constructor = BufferedTokenStream;\n\nBufferedTokenStream.prototype.mark = function() {\n\treturn 0;\n};\n\nBufferedTokenStream.prototype.release = function(marker) {\n\t// no resources to release\n};\n\nBufferedTokenStream.prototype.reset = function() {\n\tthis.seek(0);\n};\n\nBufferedTokenStream.prototype.seek = function(index) {\n\tthis.lazyInit();\n\tthis.index = this.adjustSeekIndex(index);\n};\n\nBufferedTokenStream.prototype.get = function(index) {\n\tthis.lazyInit();\n\treturn this.tokens[index];\n};\n\nBufferedTokenStream.prototype.consume = function() {\n\tvar skipEofCheck = false;\n\tif (this.index >= 0) {\n\t\tif (this.fetchedEOF) {\n\t\t\t// the last token in tokens is EOF. skip check if p indexes any\n\t\t\t// fetched token except the last.\n\t\t\tskipEofCheck = this.index < this.tokens.length - 1;\n\t\t} else {\n\t\t\t// no EOF token in tokens. skip check if p indexes a fetched token.\n\t\t\tskipEofCheck = this.index < this.tokens.length;\n\t\t}\n\t} else {\n\t\t// not yet initialized\n\t\tskipEofCheck = false;\n\t}\n\tif (!skipEofCheck && this.LA(1) === Token.EOF) {\n\t\tthrow \"cannot consume EOF\";\n\t}\n\tif (this.sync(this.index + 1)) {\n\t\tthis.index = this.adjustSeekIndex(this.index + 1);\n\t}\n};\n\n// Make sure index {@code i} in tokens has a token.\n//\n// @return {@code true} if a token is located at index {@code i}, otherwise\n// {@code false}.\n// @see //get(int i)\n// /\nBufferedTokenStream.prototype.sync = function(i) {\n\tvar n = i - this.tokens.length + 1; // how many more elements we need?\n\tif (n > 0) {\n\t\tvar fetched = this.fetch(n);\n\t\treturn fetched >= n;\n\t}\n\treturn true;\n};\n\n// Add {@code n} elements to buffer.\n//\n// @return The actual number of elements added to the buffer.\n// /\nBufferedTokenStream.prototype.fetch = function(n) {\n\tif (this.fetchedEOF) {\n\t\treturn 0;\n\t}\n\tfor (var i = 0; i < n; i++) {\n\t\tvar t = this.tokenSource.nextToken();\n\t\tt.tokenIndex = this.tokens.length;\n\t\tthis.tokens.push(t);\n\t\tif (t.type === Token.EOF) {\n\t\t\tthis.fetchedEOF = true;\n\t\t\treturn i + 1;\n\t\t}\n\t}\n\treturn n;\n};\n\n// Get all tokens from start..stop inclusively///\nBufferedTokenStream.prototype.getTokens = function(start, stop, types) {\n\tif (types === undefined) {\n\t\ttypes = null;\n\t}\n\tif (start < 0 || stop < 0) {\n\t\treturn null;\n\t}\n\tthis.lazyInit();\n\tvar subset = [];\n\tif (stop >= this.tokens.length) {\n\t\tstop = this.tokens.length - 1;\n\t}\n\tfor (var i = start; i < stop; i++) {\n\t\tvar t = this.tokens[i];\n\t\tif (t.type === Token.EOF) {\n\t\t\tbreak;\n\t\t}\n\t\tif (types === null || types.contains(t.type)) {\n\t\t\tsubset.push(t);\n\t\t}\n\t}\n\treturn subset;\n};\n\nBufferedTokenStream.prototype.LA = function(i) {\n\treturn this.LT(i).type;\n};\n\nBufferedTokenStream.prototype.LB = function(k) {\n\tif (this.index - k < 0) {\n\t\treturn null;\n\t}\n\treturn this.tokens[this.index - k];\n};\n\nBufferedTokenStream.prototype.LT = function(k) {\n\tthis.lazyInit();\n\tif (k === 0) {\n\t\treturn null;\n\t}\n\tif (k < 0) {\n\t\treturn this.LB(-k);\n\t}\n\tvar i = this.index + k - 1;\n\tthis.sync(i);\n\tif (i >= this.tokens.length) { // return EOF token\n\t\t// EOF must be last token\n\t\treturn this.tokens[this.tokens.length - 1];\n\t}\n\treturn this.tokens[i];\n};\n\n// Allowed derived classes to modify the behavior of operations which change\n// the current stream position by adjusting the target token index of a seek\n// operation. The default implementation simply returns {@code i}. If an\n// exception is thrown in this method, the current stream index should not be\n// changed.\n//\n// <p>For example, {@link CommonTokenStream} overrides this method to ensure\n// that\n// the seek target is always an on-channel token.</p>\n//\n// @param i The target token index.\n// @return The adjusted target token index.\n\nBufferedTokenStream.prototype.adjustSeekIndex = function(i) {\n\treturn i;\n};\n\nBufferedTokenStream.prototype.lazyInit = function() {\n\tif (this.index === -1) {\n\t\tthis.setup();\n\t}\n};\n\nBufferedTokenStream.prototype.setup = function() {\n\tthis.sync(0);\n\tthis.index = this.adjustSeekIndex(0);\n};\n\n// Reset this token stream by setting its token source.///\nBufferedTokenStream.prototype.setTokenSource = function(tokenSource) {\n\tthis.tokenSource = tokenSource;\n\tthis.tokens = [];\n\tthis.index = -1;\n\tthis.fetchedEOF = false;\n};\n\n\n// Given a starting index, return the index of the next token on channel.\n// Return i if tokens[i] is on channel. Return -1 if there are no tokens\n// on channel between i and EOF.\n// /\nBufferedTokenStream.prototype.nextTokenOnChannel = function(i, channel) {\n\tthis.sync(i);\n\tif (i >= this.tokens.length) {\n\t\treturn -1;\n\t}\n\tvar token = this.tokens[i];\n\twhile (token.channel !== this.channel) {\n\t\tif (token.type === Token.EOF) {\n\t\t\treturn -1;\n\t\t}\n\t\ti += 1;\n\t\tthis.sync(i);\n\t\ttoken = this.tokens[i];\n\t}\n\treturn i;\n};\n\n// Given a starting index, return the index of the previous token on channel.\n// Return i if tokens[i] is on channel. Return -1 if there are no tokens\n// on channel between i and 0.\nBufferedTokenStream.prototype.previousTokenOnChannel = function(i, channel) {\n\twhile (i >= 0 && this.tokens[i].channel !== channel) {\n\t\ti -= 1;\n\t}\n\treturn i;\n};\n\n// Collect all tokens on specified channel to the right of\n// the current token up until we see a token on DEFAULT_TOKEN_CHANNEL or\n// EOF. If channel is -1, find any non default channel token.\nBufferedTokenStream.prototype.getHiddenTokensToRight = function(tokenIndex,\n\t\tchannel) {\n\tif (channel === undefined) {\n\t\tchannel = -1;\n\t}\n\tthis.lazyInit();\n\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\n\t\tthrow \"\" + tokenIndex + \" not in 0..\" + this.tokens.length - 1;\n\t}\n\tvar nextOnChannel = this.nextTokenOnChannel(tokenIndex + 1, Lexer.DEFAULT_TOKEN_CHANNEL);\n\tvar from_ = tokenIndex + 1;\n\t// if none onchannel to right, nextOnChannel=-1 so set to = last token\n\tvar to = nextOnChannel === -1 ? this.tokens.length - 1 : nextOnChannel;\n\treturn this.filterForChannel(from_, to, channel);\n};\n\n// Collect all tokens on specified channel to the left of\n// the current token up until we see a token on DEFAULT_TOKEN_CHANNEL.\n// If channel is -1, find any non default channel token.\nBufferedTokenStream.prototype.getHiddenTokensToLeft = function(tokenIndex,\n\t\tchannel) {\n\tif (channel === undefined) {\n\t\tchannel = -1;\n\t}\n\tthis.lazyInit();\n\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\n\t\tthrow \"\" + tokenIndex + \" not in 0..\" + this.tokens.length - 1;\n\t}\n\tvar prevOnChannel = this.previousTokenOnChannel(tokenIndex - 1, Lexer.DEFAULT_TOKEN_CHANNEL);\n\tif (prevOnChannel === tokenIndex - 1) {\n\t\treturn null;\n\t}\n\t// if none on channel to left, prevOnChannel=-1 then from=0\n\tvar from_ = prevOnChannel + 1;\n\tvar to = tokenIndex - 1;\n\treturn this.filterForChannel(from_, to, channel);\n};\n\nBufferedTokenStream.prototype.filterForChannel = function(left, right, channel) {\n\tvar hidden = [];\n\tfor (var i = left; i < right + 1; i++) {\n\t\tvar t = this.tokens[i];\n\t\tif (channel === -1) {\n\t\t\tif (t.channel !== Lexer.DEFAULT_TOKEN_CHANNEL) {\n\t\t\t\thidden.push(t);\n\t\t\t}\n\t\t} else if (t.channel === channel) {\n\t\t\thidden.push(t);\n\t\t}\n\t}\n\tif (hidden.length === 0) {\n\t\treturn null;\n\t}\n\treturn hidden;\n};\n\nBufferedTokenStream.prototype.getSourceName = function() {\n\treturn this.tokenSource.getSourceName();\n};\n\n// Get the text of all tokens in this buffer.///\nBufferedTokenStream.prototype.getText = function(interval) {\n\tthis.lazyInit();\n\tthis.fill();\n\tif (interval === undefined || interval === null) {\n\t\tinterval = new Interval(0, this.tokens.length - 1);\n\t}\n\tvar start = interval.start;\n\tif (start instanceof Token) {\n\t\tstart = start.tokenIndex;\n\t}\n\tvar stop = interval.stop;\n\tif (stop instanceof Token) {\n\t\tstop = stop.tokenIndex;\n\t}\n\tif (start === null || stop === null || start < 0 || stop < 0) {\n\t\treturn \"\";\n\t}\n\tif (stop >= this.tokens.length) {\n\t\tstop = this.tokens.length - 1;\n\t}\n\tvar s = \"\";\n\tfor (var i = start; i < stop + 1; i++) {\n\t\tvar t = this.tokens[i];\n\t\tif (t.type === Token.EOF) {\n\t\t\tbreak;\n\t\t}\n\t\ts = s + t.text;\n\t}\n\treturn s;\n};\n\n// Get all tokens from lexer until EOF///\nBufferedTokenStream.prototype.fill = function() {\n\tthis.lazyInit();\n\twhile (this.fetch(1000) === 1000) {\n\t\tcontinue;\n\t}\n};\n\nexports.BufferedTokenStream = BufferedTokenStream;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar InputStream = require('./InputStream').InputStream;\n\nvar isNodeJs = typeof window === 'undefined' && typeof importScripts === 'undefined';\nvar fs = isNodeJs ? require(\"fs\") : null;\n\n// Utility functions to create InputStreams from various sources.\n//\n// All returned InputStreams support the full range of Unicode\n// up to U+10FFFF (the default behavior of InputStream only supports\n// code points up to U+FFFF).\nvar CharStreams = {\n // Creates an InputStream from a string.\n fromString: function(str) {\n return new InputStream(str, true);\n },\n\n // Asynchronously creates an InputStream from a blob given the\n // encoding of the bytes in that blob (defaults to 'utf8' if\n // encoding is null).\n //\n // Invokes onLoad(result) on success, onError(error) on\n // failure.\n fromBlob: function(blob, encoding, onLoad, onError) {\n var reader = FileReader();\n reader.onload = function(e) {\n var is = new InputStream(e.target.result, true);\n onLoad(is);\n };\n reader.onerror = onError;\n reader.readAsText(blob, encoding);\n },\n\n // Creates an InputStream from a Buffer given the\n // encoding of the bytes in that buffer (defaults to 'utf8' if\n // encoding is null).\n fromBuffer: function(buffer, encoding) {\n return new InputStream(buffer.toString(encoding), true);\n },\n\n // Asynchronously creates an InputStream from a file on disk given\n // the encoding of the bytes in that file (defaults to 'utf8' if\n // encoding is null).\n //\n // Invokes callback(error, result) on completion.\n fromPath: function(path, encoding, callback) {\n fs.readFile(path, encoding, function(err, data) {\n var is = null;\n if (data !== null) {\n is = new InputStream(data, true);\n }\n callback(err, is);\n });\n },\n\n // Synchronously creates an InputStream given a path to a file\n // on disk and the encoding of the bytes in that file (defaults to\n // 'utf8' if encoding is null).\n fromPathSync: function(path, encoding) {\n var data = fs.readFileSync(path, encoding);\n return new InputStream(data, true);\n }\n};\n\nexports.CharStreams = CharStreams;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// This default implementation of {@link TokenFactory} creates\n// {@link CommonToken} objects.\n//\n\nvar CommonToken = require('./Token').CommonToken;\n\nfunction TokenFactory() {\n\treturn this;\n}\n\nfunction CommonTokenFactory(copyText) {\n\tTokenFactory.call(this);\n // Indicates whether {@link CommonToken//setText} should be called after\n // constructing tokens to explicitly set the text. This is useful for cases\n // where the input stream might not be able to provide arbitrary substrings\n // of text from the input after the lexer creates a token (e.g. the\n // implementation of {@link CharStream//getText} in\n // {@link UnbufferedCharStream} throws an\n // {@link UnsupportedOperationException}). Explicitly setting the token text\n // allows {@link Token//getText} to be called at any time regardless of the\n // input stream implementation.\n //\n // <p>\n // The default value is {@code false} to avoid the performance and memory\n // overhead of copying text for every token unless explicitly requested.</p>\n //\n this.copyText = copyText===undefined ? false : copyText;\n\treturn this;\n}\n\nCommonTokenFactory.prototype = Object.create(TokenFactory.prototype);\nCommonTokenFactory.prototype.constructor = CommonTokenFactory;\n\n//\n// The default {@link CommonTokenFactory} instance.\n//\n// <p>\n// This token factory does not explicitly copy token text when constructing\n// tokens.</p>\n//\nCommonTokenFactory.DEFAULT = new CommonTokenFactory();\n\nCommonTokenFactory.prototype.create = function(source, type, text, channel, start, stop, line, column) {\n var t = new CommonToken(source, type, channel, start, stop);\n t.line = line;\n t.column = column;\n if (text !==null) {\n t.text = text;\n } else if (this.copyText && source[1] !==null) {\n t.text = source[1].getText(start,stop);\n }\n return t;\n};\n\nCommonTokenFactory.prototype.createThin = function(type, text) {\n var t = new CommonToken(null, type);\n t.text = text;\n return t;\n};\n\nexports.CommonTokenFactory = CommonTokenFactory;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n//\n// This class extends {@link BufferedTokenStream} with functionality to filter\n// token streams to tokens on a particular channel (tokens where\n// {@link Token//getChannel} returns a particular value).\n//\n// <p>\n// This token stream provides access to all tokens by index or when calling\n// methods like {@link //getText}. The channel filtering is only used for code\n// accessing tokens via the lookahead methods {@link //LA}, {@link //LT}, and\n// {@link //LB}.</p>\n//\n// <p>\n// By default, tokens are placed on the default channel\n// ({@link Token//DEFAULT_CHANNEL}), but may be reassigned by using the\n// {@code ->channel(HIDDEN)} lexer command, or by using an embedded action to\n// call {@link Lexer//setChannel}.\n// </p>\n//\n// <p>\n// Note: lexer rules which use the {@code ->skip} lexer command or call\n// {@link Lexer//skip} do not produce tokens at all, so input text matched by\n// such a rule will not be available as part of the token stream, regardless of\n// channel.</p>\n///\n\nvar Token = require('./Token').Token;\nvar BufferedTokenStream = require('./BufferedTokenStream').BufferedTokenStream;\n\nfunction CommonTokenStream(lexer, channel) {\n\tBufferedTokenStream.call(this, lexer);\n this.channel = channel===undefined ? Token.DEFAULT_CHANNEL : channel;\n return this;\n}\n\nCommonTokenStream.prototype = Object.create(BufferedTokenStream.prototype);\nCommonTokenStream.prototype.constructor = CommonTokenStream;\n\nCommonTokenStream.prototype.adjustSeekIndex = function(i) {\n return this.nextTokenOnChannel(i, this.channel);\n};\n\nCommonTokenStream.prototype.LB = function(k) {\n if (k===0 || this.index-k<0) {\n return null;\n }\n var i = this.index;\n var n = 1;\n // find k good tokens looking backwards\n while (n <= k) {\n // skip off-channel tokens\n i = this.previousTokenOnChannel(i - 1, this.channel);\n n += 1;\n }\n if (i < 0) {\n return null;\n }\n return this.tokens[i];\n};\n\nCommonTokenStream.prototype.LT = function(k) {\n this.lazyInit();\n if (k === 0) {\n return null;\n }\n if (k < 0) {\n return this.LB(-k);\n }\n var i = this.index;\n var n = 1; // we know tokens[pos] is a good one\n // find k good tokens\n while (n < k) {\n // skip off-channel tokens, but make sure to not look past EOF\n if (this.sync(i + 1)) {\n i = this.nextTokenOnChannel(i + 1, this.channel);\n }\n n += 1;\n }\n return this.tokens[i];\n};\n\n// Count EOF just once.///\nCommonTokenStream.prototype.getNumberOfOnChannelTokens = function() {\n var n = 0;\n this.fill();\n for (var i =0; i< this.tokens.length;i++) {\n var t = this.tokens[i];\n if( t.channel===this.channel) {\n n += 1;\n }\n if( t.type===Token.EOF) {\n break;\n }\n }\n return n;\n};\n\nexports.CommonTokenStream = CommonTokenStream;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// This is an InputStream that is loaded from a file all at once\n// when you construct the object.\n//\nvar InputStream = require('./InputStream').InputStream;\nvar isNodeJs = typeof window === 'undefined' && typeof importScripts === 'undefined';\nvar fs = isNodeJs ? require(\"fs\") : null;\n\nfunction FileStream(fileName, decodeToUnicodeCodePoints) {\n\tvar data = fs.readFileSync(fileName, \"utf8\");\n\tInputStream.call(this, data, decodeToUnicodeCodePoints);\n\tthis.fileName = fileName;\n\treturn this;\n}\n\nFileStream.prototype = Object.create(InputStream.prototype);\nFileStream.prototype.constructor = FileStream;\n\nexports.FileStream = FileStream;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar Token = require('./Token').Token;\nrequire('./polyfills/codepointat');\nrequire('./polyfills/fromcodepoint');\n\n// Vacuum all input from a string and then treat it like a buffer.\n\nfunction _loadString(stream) {\n\tstream._index = 0;\n\tstream.data = [];\n\tif (stream.decodeToUnicodeCodePoints) {\n\t\tfor (var i = 0; i < stream.strdata.length; ) {\n\t\t\tvar codePoint = stream.strdata.codePointAt(i);\n\t\t\tstream.data.push(codePoint);\n\t\t\ti += codePoint <= 0xFFFF ? 1 : 2;\n\t\t}\n\t} else {\n\t\tfor (var i = 0; i < stream.strdata.length; i++) {\n\t\t\tvar codeUnit = stream.strdata.charCodeAt(i);\n\t\t\tstream.data.push(codeUnit);\n\t\t}\n\t}\n\tstream._size = stream.data.length;\n}\n\n// If decodeToUnicodeCodePoints is true, the input is treated\n// as a series of Unicode code points.\n//\n// Otherwise, the input is treated as a series of 16-bit UTF-16 code\n// units.\nfunction InputStream(data, decodeToUnicodeCodePoints) {\n\tthis.name = \"<empty>\";\n\tthis.strdata = data;\n\tthis.decodeToUnicodeCodePoints = decodeToUnicodeCodePoints || false;\n\t_loadString(this);\n\treturn this;\n}\n\nObject.defineProperty(InputStream.prototype, \"index\", {\n\tget : function() {\n\t\treturn this._index;\n\t}\n});\n\nObject.defineProperty(InputStream.prototype, \"size\", {\n\tget : function() {\n\t\treturn this._size;\n\t}\n});\n\n// Reset the stream so that it's in the same state it was\n// when the object was created *except* the data array is not\n// touched.\n//\nInputStream.prototype.reset = function() {\n\tthis._index = 0;\n};\n\nInputStream.prototype.consume = function() {\n\tif (this._index >= this._size) {\n\t\t// assert this.LA(1) == Token.EOF\n\t\tthrow (\"cannot consume EOF\");\n\t}\n\tthis._index += 1;\n};\n\nInputStream.prototype.LA = function(offset) {\n\tif (offset === 0) {\n\t\treturn 0; // undefined\n\t}\n\tif (offset < 0) {\n\t\toffset += 1; // e.g., translate LA(-1) to use offset=0\n\t}\n\tvar pos = this._index + offset - 1;\n\tif (pos < 0 || pos >= this._size) { // invalid\n\t\treturn Token.EOF;\n\t}\n\treturn this.data[pos];\n};\n\nInputStream.prototype.LT = function(offset) {\n\treturn this.LA(offset);\n};\n\n// mark/release do nothing; we have entire buffer\nInputStream.prototype.mark = function() {\n\treturn -1;\n};\n\nInputStream.prototype.release = function(marker) {\n};\n\n// consume() ahead until p==_index; can't just set p=_index as we must\n// update line and column. If we seek backwards, just set p\n//\nInputStream.prototype.seek = function(_index) {\n\tif (_index <= this._index) {\n\t\tthis._index = _index; // just jump; don't update stream state (line,\n\t\t\t\t\t\t\t\t// ...)\n\t\treturn;\n\t}\n\t// seek forward\n\tthis._index = Math.min(_index, this._size);\n};\n\nInputStream.prototype.getText = function(start, stop) {\n\tif (stop >= this._size) {\n\t\tstop = this._size - 1;\n\t}\n\tif (start >= this._size) {\n\t\treturn \"\";\n\t} else {\n\t\tif (this.decodeToUnicodeCodePoints) {\n\t\t\tvar result = \"\";\n\t\t\tfor (var i = start; i <= stop; i++) {\n\t\t\t\tresult += String.fromCodePoint(this.data[i]);\n\t\t\t}\n\t\t\treturn result;\n\t\t} else {\n\t\t\treturn this.strdata.slice(start, stop + 1);\n\t\t}\n\t}\n};\n\nInputStream.prototype.toString = function() {\n\treturn this.strdata;\n};\n\nexports.InputStream = InputStream;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/*jslint smarttabs:true */\n\nvar Token = require('./Token').Token;\n\n/* stop is not included! */\nfunction Interval(start, stop) {\n\tthis.start = start;\n\tthis.stop = stop;\n\treturn this;\n}\n\nInterval.prototype.contains = function(item) {\n\treturn item >= this.start && item < this.stop;\n};\n\nInterval.prototype.toString = function() {\n\tif(this.start===this.stop-1) {\n\t\treturn this.start.toString();\n\t} else {\n\t\treturn this.start.toString() + \"..\" + (this.stop-1).toString();\n\t}\n};\n\n\nObject.defineProperty(Interval.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.stop - this.start;\n\t}\n});\n\nfunction IntervalSet() {\n\tthis.intervals = null;\n\tthis.readOnly = false;\n}\n\nIntervalSet.prototype.first = function(v) {\n\tif (this.intervals === null || this.intervals.length===0) {\n\t\treturn Token.INVALID_TYPE;\n\t} else {\n\t\treturn this.intervals[0].start;\n\t}\n};\n\nIntervalSet.prototype.addOne = function(v) {\n\tthis.addInterval(new Interval(v, v + 1));\n};\n\nIntervalSet.prototype.addRange = function(l, h) {\n\tthis.addInterval(new Interval(l, h + 1));\n};\n\nIntervalSet.prototype.addInterval = function(v) {\n\tif (this.intervals === null) {\n\t\tthis.intervals = [];\n\t\tthis.intervals.push(v);\n\t} else {\n\t\t// find insert pos\n\t\tfor (var k = 0; k < this.intervals.length; k++) {\n\t\t\tvar i = this.intervals[k];\n\t\t\t// distinct range -> insert\n\t\t\tif (v.stop < i.start) {\n\t\t\t\tthis.intervals.splice(k, 0, v);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// contiguous range -> adjust\n\t\t\telse if (v.stop === i.start) {\n\t\t\t\tthis.intervals[k].start = v.start;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// overlapping range -> adjust and reduce\n\t\t\telse if (v.start <= i.stop) {\n\t\t\t\tthis.intervals[k] = new Interval(Math.min(i.start, v.start), Math.max(i.stop, v.stop));\n\t\t\t\tthis.reduce(k);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// greater than any existing\n\t\tthis.intervals.push(v);\n\t}\n};\n\nIntervalSet.prototype.addSet = function(other) {\n\tif (other.intervals !== null) {\n\t\tfor (var k = 0; k < other.intervals.length; k++) {\n\t\t\tvar i = other.intervals[k];\n\t\t\tthis.addInterval(new Interval(i.start, i.stop));\n\t\t}\n\t}\n\treturn this;\n};\n\nIntervalSet.prototype.reduce = function(k) {\n\t// only need to reduce if k is not the last\n\tif (k < this.intervalslength - 1) {\n\t\tvar l = this.intervals[k];\n\t\tvar r = this.intervals[k + 1];\n\t\t// if r contained in l\n\t\tif (l.stop >= r.stop) {\n\t\t\tthis.intervals.pop(k + 1);\n\t\t\tthis.reduce(k);\n\t\t} else if (l.stop >= r.start) {\n\t\t\tthis.intervals[k] = new Interval(l.start, r.stop);\n\t\t\tthis.intervals.pop(k + 1);\n\t\t}\n\t}\n};\n\nIntervalSet.prototype.complement = function(start, stop) {\n var result = new IntervalSet();\n result.addInterval(new Interval(start,stop+1));\n for(var i=0; i<this.intervals.length; i++) {\n result.removeRange(this.intervals[i]);\n }\n return result;\n};\n\nIntervalSet.prototype.contains = function(item) {\n\tif (this.intervals === null) {\n\t\treturn false;\n\t} else {\n\t\tfor (var k = 0; k < this.intervals.length; k++) {\n\t\t\tif(this.intervals[k].contains(item)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n};\n\nObject.defineProperty(IntervalSet.prototype, \"length\", {\n\tget : function() {\n\t\tvar len = 0;\n\t\tthis.intervals.map(function(i) {len += i.length;});\n\t\treturn len;\n\t}\n});\n\nIntervalSet.prototype.removeRange = function(v) {\n if(v.start===v.stop-1) {\n this.removeOne(v.start);\n } else if (this.intervals!==null) {\n var k = 0;\n for(var n=0; n<this.intervals.length; n++) {\n var i = this.intervals[k];\n // intervals are ordered\n if (v.stop<=i.start) {\n return;\n }\n // check for including range, split it\n else if(v.start>i.start && v.stop<i.stop) {\n this.intervals[k] = new Interval(i.start, v.start);\n var x = new Interval(v.stop, i.stop);\n this.intervals.splice(k, 0, x);\n return;\n }\n // check for included range, remove it\n else if(v.start<=i.start && v.stop>=i.stop) {\n this.intervals.splice(k, 1);\n k = k - 1; // need another pass\n }\n // check for lower boundary\n else if(v.start<i.stop) {\n this.intervals[k] = new Interval(i.start, v.start);\n }\n // check for upper boundary\n else if(v.stop<i.stop) {\n this.intervals[k] = new Interval(v.stop, i.stop);\n }\n k += 1;\n }\n }\n};\n\nIntervalSet.prototype.removeOne = function(v) {\n\tif (this.intervals !== null) {\n\t\tfor (var k = 0; k < this.intervals.length; k++) {\n\t\t\tvar i = this.intervals[k];\n\t\t\t// intervals is ordered\n\t\t\tif (v < i.start) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// check for single value range\n\t\t\telse if (v === i.start && v === i.stop - 1) {\n\t\t\t\tthis.intervals.splice(k, 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// check for lower boundary\n\t\t\telse if (v === i.start) {\n\t\t\t\tthis.intervals[k] = new Interval(i.start + 1, i.stop);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// check for upper boundary\n\t\t\telse if (v === i.stop - 1) {\n\t\t\t\tthis.intervals[k] = new Interval(i.start, i.stop - 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// split existing range\n\t\t\telse if (v < i.stop - 1) {\n\t\t\t\tvar x = new Interval(i.start, v);\n\t\t\t\ti.start = v + 1;\n\t\t\t\tthis.intervals.splice(k, 0, x);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nIntervalSet.prototype.toString = function(literalNames, symbolicNames, elemsAreChar) {\n\tliteralNames = literalNames || null;\n\tsymbolicNames = symbolicNames || null;\n\telemsAreChar = elemsAreChar || false;\n\tif (this.intervals === null) {\n\t\treturn \"{}\";\n\t} else if(literalNames!==null || symbolicNames!==null) {\n\t\treturn this.toTokenString(literalNames, symbolicNames);\n\t} else if(elemsAreChar) {\n\t\treturn this.toCharString();\n\t} else {\n\t\treturn this.toIndexString();\n\t}\n};\n\nIntervalSet.prototype.toCharString = function() {\n\tvar names = [];\n\tfor (var i = 0; i < this.intervals.length; i++) {\n\t\tvar v = this.intervals[i];\n\t\tif(v.stop===v.start+1) {\n\t\t\tif ( v.start===Token.EOF ) {\n\t\t\t\tnames.push(\"<EOF>\");\n\t\t\t} else {\n\t\t\t\tnames.push(\"'\" + String.fromCharCode(v.start) + \"'\");\n\t\t\t}\n\t\t} else {\n\t\t\tnames.push(\"'\" + String.fromCharCode(v.start) + \"'..'\" + String.fromCharCode(v.stop-1) + \"'\");\n\t\t}\n\t}\n\tif (names.length > 1) {\n\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t} else {\n\t\treturn names[0];\n\t}\n};\n\n\nIntervalSet.prototype.toIndexString = function() {\n\tvar names = [];\n\tfor (var i = 0; i < this.intervals.length; i++) {\n\t\tvar v = this.intervals[i];\n\t\tif(v.stop===v.start+1) {\n\t\t\tif ( v.start===Token.EOF ) {\n\t\t\t\tnames.push(\"<EOF>\");\n\t\t\t} else {\n\t\t\t\tnames.push(v.start.toString());\n\t\t\t}\n\t\t} else {\n\t\t\tnames.push(v.start.toString() + \"..\" + (v.stop-1).toString());\n\t\t}\n\t}\n\tif (names.length > 1) {\n\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t} else {\n\t\treturn names[0];\n\t}\n};\n\n\nIntervalSet.prototype.toTokenString = function(literalNames, symbolicNames) {\n\tvar names = [];\n\tfor (var i = 0; i < this.intervals.length; i++) {\n\t\tvar v = this.intervals[i];\n\t\tfor (var j = v.start; j < v.stop; j++) {\n\t\t\tnames.push(this.elementName(literalNames, symbolicNames, j));\n\t\t}\n\t}\n\tif (names.length > 1) {\n\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t} else {\n\t\treturn names[0];\n\t}\n};\n\nIntervalSet.prototype.elementName = function(literalNames, symbolicNames, a) {\n\tif (a === Token.EOF) {\n\t\treturn \"<EOF>\";\n\t} else if (a === Token.EPSILON) {\n\t\treturn \"<EPSILON>\";\n\t} else {\n\t\treturn literalNames[a] || symbolicNames[a];\n\t}\n};\n\nexports.Interval = Interval;\nexports.IntervalSet = IntervalSet;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar Set = require('./Utils').Set;\nvar BitSet = require('./Utils').BitSet;\nvar Token = require('./Token').Token;\nvar ATNConfig = require('./atn/ATNConfig').ATNConfig;\nvar Interval = require('./IntervalSet').Interval;\nvar IntervalSet = require('./IntervalSet').IntervalSet;\nvar RuleStopState = require('./atn/ATNState').RuleStopState;\nvar RuleTransition = require('./atn/Transition').RuleTransition;\nvar NotSetTransition = require('./atn/Transition').NotSetTransition;\nvar WildcardTransition = require('./atn/Transition').WildcardTransition;\nvar AbstractPredicateTransition = require('./atn/Transition').AbstractPredicateTransition;\n\nvar pc = require('./PredictionContext');\nvar predictionContextFromRuleContext = pc.predictionContextFromRuleContext;\nvar PredictionContext = pc.PredictionContext;\nvar SingletonPredictionContext = pc.SingletonPredictionContext;\n\nfunction LL1Analyzer (atn) {\n this.atn = atn;\n}\n\n//* Special value added to the lookahead sets to indicate that we hit\n// a predicate during analysis if {@code seeThruPreds==false}.\n///\nLL1Analyzer.HIT_PRED = Token.INVALID_TYPE;\n\n\n//*\n// Calculates the SLL(1) expected lookahead set for each outgoing transition\n// of an {@link ATNState}. The returned array has one element for each\n// outgoing transition in {@code s}. If the closure from transition\n// <em>i</em> leads to a semantic predicate before matching a symbol, the\n// element at index <em>i</em> of the result will be {@code null}.\n//\n// @param s the ATN state\n// @return the expected symbols for each outgoing transition of {@code s}.\n///\nLL1Analyzer.prototype.getDecisionLookahead = function(s) {\n if (s === null) {\n return null;\n }\n var count = s.transitions.length;\n var look = [];\n for(var alt=0; alt< count; alt++) {\n look[alt] = new IntervalSet();\n var lookBusy = new Set();\n var seeThruPreds = false; // fail to get lookahead upon pred\n this._LOOK(s.transition(alt).target, null, PredictionContext.EMPTY,\n look[alt], lookBusy, new BitSet(), seeThruPreds, false);\n // Wipe out lookahead for this alternative if we found nothing\n // or we had a predicate when we !seeThruPreds\n if (look[alt].length===0 || look[alt].contains(LL1Analyzer.HIT_PRED)) {\n look[alt] = null;\n }\n }\n return look;\n};\n\n//*\n// Compute set of tokens that can follow {@code s} in the ATN in the\n// specified {@code ctx}.\n//\n// <p>If {@code ctx} is {@code null} and the end of the rule containing\n// {@code s} is reached, {@link Token//EPSILON} is added to the result set.\n// If {@code ctx} is not {@code null} and the end of the outermost rule is\n// reached, {@link Token//EOF} is added to the result set.</p>\n//\n// @param s the ATN state\n// @param stopState the ATN state to stop at. This can be a\n// {@link BlockEndState} to detect epsilon paths through a closure.\n// @param ctx the complete parser context, or {@code null} if the context\n// should be ignored\n//\n// @return The set of tokens that can follow {@code s} in the ATN in the\n// specified {@code ctx}.\n///\nLL1Analyzer.prototype.LOOK = function(s, stopState, ctx) {\n var r = new IntervalSet();\n var seeThruPreds = true; // ignore preds; get all lookahead\n\tctx = ctx || null;\n var lookContext = ctx!==null ? predictionContextFromRuleContext(s.atn, ctx) : null;\n this._LOOK(s, stopState, lookContext, r, new Set(), new BitSet(), seeThruPreds, true);\n return r;\n};\n\n//*\n// Compute set of tokens that can follow {@code s} in the ATN in the\n// specified {@code ctx}.\n//\n// <p>If {@code ctx} is {@code null} and {@code stopState} or the end of the\n// rule containing {@code s} is reached, {@link Token//EPSILON} is added to\n// the result set. If {@code ctx} is not {@code null} and {@code addEOF} is\n// {@code true} and {@code stopState} or the end of the outermost rule is\n// reached, {@link Token//EOF} is added to the result set.</p>\n//\n// @param s the ATN state.\n// @param stopState the ATN state to stop at. This can be a\n// {@link BlockEndState} to detect epsilon paths through a closure.\n// @param ctx The outer context, or {@code null} if the outer context should\n// not be used.\n// @param look The result lookahead set.\n// @param lookBusy A set used for preventing epsilon closures in the ATN\n// from causing a stack overflow. Outside code should pass\n// {@code new Set<ATNConfig>} for this argument.\n// @param calledRuleStack A set used for preventing left recursion in the\n// ATN from causing a stack overflow. Outside code should pass\n// {@code new BitSet()} for this argument.\n// @param seeThruPreds {@code true} to true semantic predicates as\n// implicitly {@code true} and \"see through them\", otherwise {@code false}\n// to treat semantic predicates as opaque and add {@link //HIT_PRED} to the\n// result if one is encountered.\n// @param addEOF Add {@link Token//EOF} to the result if the end of the\n// outermost context is reached. This parameter has no effect if {@code ctx}\n// is {@code null}.\n///\nLL1Analyzer.prototype._LOOK = function(s, stopState , ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF) {\n var c = new ATNConfig({state:s, alt:0, context: ctx}, null);\n if (lookBusy.contains(c)) {\n return;\n }\n lookBusy.add(c);\n if (s === stopState) {\n if (ctx ===null) {\n look.addOne(Token.EPSILON);\n return;\n } else if (ctx.isEmpty() && addEOF) {\n look.addOne(Token.EOF);\n return;\n }\n }\n if (s instanceof RuleStopState ) {\n if (ctx ===null) {\n look.addOne(Token.EPSILON);\n return;\n } else if (ctx.isEmpty() && addEOF) {\n look.addOne(Token.EOF);\n return;\n }\n if (ctx !== PredictionContext.EMPTY) {\n // run thru all possible stack tops in ctx\n for(var i=0; i<ctx.length; i++) {\n var returnState = this.atn.states[ctx.getReturnState(i)];\n var removed = calledRuleStack.contains(returnState.ruleIndex);\n try {\n calledRuleStack.remove(returnState.ruleIndex);\n this._LOOK(returnState, stopState, ctx.getParent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } finally {\n if (removed) {\n calledRuleStack.add(returnState.ruleIndex);\n }\n }\n }\n return;\n }\n }\n for(var j=0; j<s.transitions.length; j++) {\n var t = s.transitions[j];\n if (t.constructor === RuleTransition) {\n if (calledRuleStack.contains(t.target.ruleIndex)) {\n continue;\n }\n var newContext = SingletonPredictionContext.create(ctx, t.followState.stateNumber);\n try {\n calledRuleStack.add(t.target.ruleIndex);\n this._LOOK(t.target, stopState, newContext, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } finally {\n calledRuleStack.remove(t.target.ruleIndex);\n }\n } else if (t instanceof AbstractPredicateTransition ) {\n if (seeThruPreds) {\n this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } else {\n look.addOne(LL1Analyzer.HIT_PRED);\n }\n } else if( t.isEpsilon) {\n this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } else if (t.constructor === WildcardTransition) {\n look.addRange( Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType );\n } else {\n var set = t.label;\n if (set !== null) {\n if (t instanceof NotSetTransition) {\n set = set.complement(Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType);\n }\n look.addSet(set);\n }\n }\n }\n};\n\nexports.LL1Analyzer = LL1Analyzer;\n\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// A lexer is recognizer that draws input symbols from a character stream.\n// lexer grammars result in a subclass of this object. A Lexer object\n// uses simplified match() and error recovery mechanisms in the interest of speed.\n\nvar Token = require('./Token').Token;\nvar Recognizer = require('./Recognizer').Recognizer;\nvar CommonTokenFactory = require('./CommonTokenFactory').CommonTokenFactory;\nvar RecognitionException = require('./error/Errors').RecognitionException;\nvar LexerNoViableAltException = require('./error/Errors').LexerNoViableAltException;\n\nfunction TokenSource() {\n\treturn this;\n}\n\nfunction Lexer(input) {\n\tRecognizer.call(this);\n\tthis._input = input;\n\tthis._factory = CommonTokenFactory.DEFAULT;\n\tthis._tokenFactorySourcePair = [ this, input ];\n\n\tthis._interp = null; // child classes must populate this\n\n\t// The goal of all lexer rules/methods is to create a token object.\n\t// this is an instance variable as multiple rules may collaborate to\n\t// create a single token. nextToken will return this object after\n\t// matching lexer rule(s). If you subclass to allow multiple token\n\t// emissions, then set this to the last token to be matched or\n\t// something nonnull so that the auto token emit mechanism will not\n\t// emit another token.\n\tthis._token = null;\n\n\t// What character index in the stream did the current token start at?\n\t// Needed, for example, to get the text for current token. Set at\n\t// the start of nextToken.\n\tthis._tokenStartCharIndex = -1;\n\n\t// The line on which the first character of the token resides///\n\tthis._tokenStartLine = -1;\n\n\t// The character position of first character within the line///\n\tthis._tokenStartColumn = -1;\n\n\t// Once we see EOF on char stream, next token will be EOF.\n\t// If you have DONE : EOF ; then you see DONE EOF.\n\tthis._hitEOF = false;\n\n\t// The channel number for the current token///\n\tthis._channel = Token.DEFAULT_CHANNEL;\n\n\t// The token type for the current token///\n\tthis._type = Token.INVALID_TYPE;\n\n\tthis._modeStack = [];\n\tthis._mode = Lexer.DEFAULT_MODE;\n\n\t// You can set the text for the current token to override what is in\n\t// the input char buffer. Use setText() or can set this instance var.\n\t// /\n\tthis._text = null;\n\n\treturn this;\n}\n\nLexer.prototype = Object.create(Recognizer.prototype);\nLexer.prototype.constructor = Lexer;\n\nLexer.DEFAULT_MODE = 0;\nLexer.MORE = -2;\nLexer.SKIP = -3;\n\nLexer.DEFAULT_TOKEN_CHANNEL = Token.DEFAULT_CHANNEL;\nLexer.HIDDEN = Token.HIDDEN_CHANNEL;\nLexer.MIN_CHAR_VALUE = 0x0000;\nLexer.MAX_CHAR_VALUE = 0x10FFFF;\n\nLexer.prototype.reset = function() {\n\t// wack Lexer state variables\n\tif (this._input !== null) {\n\t\tthis._input.seek(0); // rewind the input\n\t}\n\tthis._token = null;\n\tthis._type = Token.INVALID_TYPE;\n\tthis._channel = Token.DEFAULT_CHANNEL;\n\tthis._tokenStartCharIndex = -1;\n\tthis._tokenStartColumn = -1;\n\tthis._tokenStartLine = -1;\n\tthis._text = null;\n\n\tthis._hitEOF = false;\n\tthis._mode = Lexer.DEFAULT_MODE;\n\tthis._modeStack = [];\n\n\tthis._interp.reset();\n};\n\n// Return a token from this source; i.e., match a token on the char stream.\nLexer.prototype.nextToken = function() {\n\tif (this._input === null) {\n\t\tthrow \"nextToken requires a non-null input stream.\";\n\t}\n\n\t// Mark start location in char stream so unbuffered streams are\n\t// guaranteed at least have text of current token\n\tvar tokenStartMarker = this._input.mark();\n\ttry {\n\t\twhile (true) {\n\t\t\tif (this._hitEOF) {\n\t\t\t\tthis.emitEOF();\n\t\t\t\treturn this._token;\n\t\t\t}\n\t\t\tthis._token = null;\n\t\t\tthis._channel = Token.DEFAULT_CHANNEL;\n\t\t\tthis._tokenStartCharIndex = this._input.index;\n\t\t\tthis._tokenStartColumn = this._interp.column;\n\t\t\tthis._tokenStartLine = this._interp.line;\n\t\t\tthis._text = null;\n\t\t\tvar continueOuter = false;\n\t\t\twhile (true) {\n\t\t\t\tthis._type = Token.INVALID_TYPE;\n\t\t\t\tvar ttype = Lexer.SKIP;\n\t\t\t\ttry {\n\t\t\t\t\tttype = this._interp.match(this._input, this._mode);\n\t\t\t\t} catch (e) {\n\t\t\t\t if(e instanceof RecognitionException) {\n this.notifyListeners(e); // report error\n this.recover(e);\n } else {\n console.log(e.stack);\n throw e;\n }\n\t\t\t\t}\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis._hitEOF = true;\n\t\t\t\t}\n\t\t\t\tif (this._type === Token.INVALID_TYPE) {\n\t\t\t\t\tthis._type = ttype;\n\t\t\t\t}\n\t\t\t\tif (this._type === Lexer.SKIP) {\n\t\t\t\t\tcontinueOuter = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (this._type !== Lexer.MORE) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (continueOuter) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (this._token === null) {\n\t\t\t\tthis.emit();\n\t\t\t}\n\t\t\treturn this._token;\n\t\t}\n\t} finally {\n\t\t// make sure we release marker after match or\n\t\t// unbuffered char stream will keep buffering\n\t\tthis._input.release(tokenStartMarker);\n\t}\n};\n\n// Instruct the lexer to skip creating a token for current lexer rule\n// and look for another token. nextToken() knows to keep looking when\n// a lexer rule finishes with token set to SKIP_TOKEN. Recall that\n// if token==null at end of any token rule, it creates one for you\n// and emits it.\n// /\nLexer.prototype.skip = function() {\n\tthis._type = Lexer.SKIP;\n};\n\nLexer.prototype.more = function() {\n\tthis._type = Lexer.MORE;\n};\n\nLexer.prototype.mode = function(m) {\n\tthis._mode = m;\n};\n\nLexer.prototype.pushMode = function(m) {\n\tif (this._interp.debug) {\n\t\tconsole.log(\"pushMode \" + m);\n\t}\n\tthis._modeStack.push(this._mode);\n\tthis.mode(m);\n};\n\nLexer.prototype.popMode = function() {\n\tif (this._modeStack.length === 0) {\n\t\tthrow \"Empty Stack\";\n\t}\n\tif (this._interp.debug) {\n\t\tconsole.log(\"popMode back to \" + this._modeStack.slice(0, -1));\n\t}\n\tthis.mode(this._modeStack.pop());\n\treturn this._mode;\n};\n\n// Set the char stream and reset the lexer\nObject.defineProperty(Lexer.prototype, \"inputStream\", {\n\tget : function() {\n\t\treturn this._input;\n\t},\n\tset : function(input) {\n\t\tthis._input = null;\n\t\tthis._tokenFactorySourcePair = [ this, this._input ];\n\t\tthis.reset();\n\t\tthis._input = input;\n\t\tthis._tokenFactorySourcePair = [ this, this._input ];\n\t}\n});\n\nObject.defineProperty(Lexer.prototype, \"sourceName\", {\n\tget : function sourceName() {\n\t\treturn this._input.sourceName;\n\t}\n});\n\n// By default does not support multiple emits per nextToken invocation\n// for efficiency reasons. Subclass and override this method, nextToken,\n// and getToken (to push tokens into a list and pull from that list\n// rather than a single variable as this implementation does).\n// /\nLexer.prototype.emitToken = function(token) {\n\tthis._token = token;\n};\n\n// The standard method called to automatically emit a token at the\n// outermost lexical rule. The token object should point into the\n// char buffer start..stop. If there is a text override in 'text',\n// use that to set the token's text. Override this method to emit\n// custom Token objects or provide a new factory.\n// /\nLexer.prototype.emit = function() {\n\tvar t = this._factory.create(this._tokenFactorySourcePair, this._type,\n\t\t\tthis._text, this._channel, this._tokenStartCharIndex, this\n\t\t\t\t\t.getCharIndex() - 1, this._tokenStartLine,\n\t\t\tthis._tokenStartColumn);\n\tthis.emitToken(t);\n\treturn t;\n};\n\nLexer.prototype.emitEOF = function() {\n\tvar cpos = this.column;\n\tvar lpos = this.line;\n\tvar eof = this._factory.create(this._tokenFactorySourcePair, Token.EOF,\n\t\t\tnull, Token.DEFAULT_CHANNEL, this._input.index,\n\t\t\tthis._input.index - 1, lpos, cpos);\n\tthis.emitToken(eof);\n\treturn eof;\n};\n\nObject.defineProperty(Lexer.prototype, \"type\", {\n\tget : function() {\n\t\treturn this.type;\n\t},\n\tset : function(type) {\n\t\tthis._type = type;\n\t}\n});\n\nObject.defineProperty(Lexer.prototype, \"line\", {\n\tget : function() {\n\t\treturn this._interp.line;\n\t},\n\tset : function(line) {\n\t\tthis._interp.line = line;\n\t}\n});\n\nObject.defineProperty(Lexer.prototype, \"column\", {\n\tget : function() {\n\t\treturn this._interp.column;\n\t},\n\tset : function(column) {\n\t\tthis._interp.column = column;\n\t}\n});\n\n\n// What is the index of the current character of lookahead?///\nLexer.prototype.getCharIndex = function() {\n\treturn this._input.index;\n};\n\n// Return the text matched so far for the current token or any text override.\n//Set the complete text of this token; it wipes any previous changes to the text.\nObject.defineProperty(Lexer.prototype, \"text\", {\n\tget : function() {\n\t\tif (this._text !== null) {\n\t\t\treturn this._text;\n\t\t} else {\n\t\t\treturn this._interp.getText(this._input);\n\t\t}\n\t},\n\tset : function(text) {\n\t\tthis._text = text;\n\t}\n});\n// Return a list of all Token objects in input char stream.\n// Forces load of all tokens. Does not include EOF token.\n// /\nLexer.prototype.getAllTokens = function() {\n\tvar tokens = [];\n\tvar t = this.nextToken();\n\twhile (t.type !== Token.EOF) {\n\t\ttokens.push(t);\n\t\tt = this.nextToken();\n\t}\n\treturn tokens;\n};\n\nLexer.prototype.notifyListeners = function(e) {\n\tvar start = this._tokenStartCharIndex;\n\tvar stop = this._input.index;\n\tvar text = this._input.getText(start, stop);\n\tvar msg = \"token recognition error at: '\" + this.getErrorDisplay(text) + \"'\";\n\tvar listener = this.getErrorListenerDispatch();\n\tlistener.syntaxError(this, null, this._tokenStartLine,\n\t\t\tthis._tokenStartColumn, msg, e);\n};\n\nLexer.prototype.getErrorDisplay = function(s) {\n\tvar d = [];\n\tfor (var i = 0; i < s.length; i++) {\n\t\td.push(s[i]);\n\t}\n\treturn d.join('');\n};\n\nLexer.prototype.getErrorDisplayForChar = function(c) {\n\tif (c.charCodeAt(0) === Token.EOF) {\n\t\treturn \"<EOF>\";\n\t} else if (c === '\\n') {\n\t\treturn \"\\\\n\";\n\t} else if (c === '\\t') {\n\t\treturn \"\\\\t\";\n\t} else if (c === '\\r') {\n\t\treturn \"\\\\r\";\n\t} else {\n\t\treturn c;\n\t}\n};\n\nLexer.prototype.getCharErrorDisplay = function(c) {\n\treturn \"'\" + this.getErrorDisplayForChar(c) + \"'\";\n};\n\n// Lexers can normally match any char in it's vocabulary after matching\n// a token, so do the easy thing and just kill a character and hope\n// it all works out. You can instead use the rule invocation stack\n// to do sophisticated error recovery if you are in a fragment rule.\n// /\nLexer.prototype.recover = function(re) {\n\tif (this._input.LA(1) !== Token.EOF) {\n\t\tif (re instanceof LexerNoViableAltException) {\n\t\t\t// skip a char and try again\n\t\t\tthis._interp.consume(this._input);\n\t\t} else {\n\t\t\t// TODO: Do we lose character or line position information?\n\t\t\tthis._input.consume();\n\t\t}\n\t}\n};\n\nexports.Lexer = Lexer;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Token = require('./Token').Token;\nvar ParseTreeListener = require('./tree/Tree').ParseTreeListener;\nvar Recognizer = require('./Recognizer').Recognizer;\nvar DefaultErrorStrategy = require('./error/ErrorStrategy').DefaultErrorStrategy;\nvar ATNDeserializer = require('./atn/ATNDeserializer').ATNDeserializer;\nvar ATNDeserializationOptions = require('./atn/ATNDeserializationOptions').ATNDeserializationOptions;\nvar TerminalNode = require('./tree/Tree').TerminalNode;\nvar ErrorNode = require('./tree/Tree').ErrorNode;\n\nfunction TraceListener(parser) {\n\tParseTreeListener.call(this);\n this.parser = parser;\n\treturn this;\n}\n\nTraceListener.prototype = Object.create(ParseTreeListener.prototype);\nTraceListener.prototype.constructor = TraceListener;\n\nTraceListener.prototype.enterEveryRule = function(ctx) {\n\tconsole.log(\"enter \" + this.parser.ruleNames[ctx.ruleIndex] + \", LT(1)=\" + this.parser._input.LT(1).text);\n};\n\nTraceListener.prototype.visitTerminal = function( node) {\n\tconsole.log(\"consume \" + node.symbol + \" rule \" + this.parser.ruleNames[this.parser._ctx.ruleIndex]);\n};\n\nTraceListener.prototype.exitEveryRule = function(ctx) {\n\tconsole.log(\"exit \" + this.parser.ruleNames[ctx.ruleIndex] + \", LT(1)=\" + this.parser._input.LT(1).text);\n};\n\n// this is all the parsing support code essentially; most of it is error\n// recovery stuff.//\nfunction Parser(input) {\n\tRecognizer.call(this);\n\t// The input stream.\n\tthis._input = null;\n\t// The error handling strategy for the parser. The default value is a new\n\t// instance of {@link DefaultErrorStrategy}.\n\tthis._errHandler = new DefaultErrorStrategy();\n\tthis._precedenceStack = [];\n\tthis._precedenceStack.push(0);\n\t// The {@link ParserRuleContext} object for the currently executing rule.\n\t// this is always non-null during the parsing process.\n\tthis._ctx = null;\n\t// Specifies whether or not the parser should construct a parse tree during\n\t// the parsing process. The default value is {@code true}.\n\tthis.buildParseTrees = true;\n\t// When {@link //setTrace}{@code (true)} is called, a reference to the\n\t// {@link TraceListener} is stored here so it can be easily removed in a\n\t// later call to {@link //setTrace}{@code (false)}. The listener itself is\n\t// implemented as a parser listener so this field is not directly used by\n\t// other parser methods.\n\tthis._tracer = null;\n\t// The list of {@link ParseTreeListener} listeners registered to receive\n\t// events during the parse.\n\tthis._parseListeners = null;\n\t// The number of syntax errors reported during parsing. this value is\n\t// incremented each time {@link //notifyErrorListeners} is called.\n\tthis._syntaxErrors = 0;\n\tthis.setInputStream(input);\n\treturn this;\n}\n\nParser.prototype = Object.create(Recognizer.prototype);\nParser.prototype.contructor = Parser;\n\n// this field maps from the serialized ATN string to the deserialized {@link\n// ATN} with\n// bypass alternatives.\n//\n// @see ATNDeserializationOptions//isGenerateRuleBypassTransitions()\n//\nParser.bypassAltsAtnCache = {};\n\n// reset the parser's state//\nParser.prototype.reset = function() {\n\tif (this._input !== null) {\n\t\tthis._input.seek(0);\n\t}\n\tthis._errHandler.reset(this);\n\tthis._ctx = null;\n\tthis._syntaxErrors = 0;\n\tthis.setTrace(false);\n\tthis._precedenceStack = [];\n\tthis._precedenceStack.push(0);\n\tif (this._interp !== null) {\n\t\tthis._interp.reset();\n\t}\n};\n\n// Match current input symbol against {@code ttype}. If the symbol type\n// matches, {@link ANTLRErrorStrategy//reportMatch} and {@link //consume} are\n// called to complete the match process.\n//\n// <p>If the symbol type does not match,\n// {@link ANTLRErrorStrategy//recoverInline} is called on the current error\n// strategy to attempt recovery. If {@link //getBuildParseTree} is\n// {@code true} and the token index of the symbol returned by\n// {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to\n// the parse tree by calling {@link ParserRuleContext//addErrorNode}.</p>\n//\n// @param ttype the token type to match\n// @return the matched symbol\n// @throws RecognitionException if the current input symbol did not match\n// {@code ttype} and the error strategy could not recover from the\n// mismatched symbol\n\nParser.prototype.match = function(ttype) {\n\tvar t = this.getCurrentToken();\n\tif (t.type === ttype) {\n\t\tthis._errHandler.reportMatch(this);\n\t\tthis.consume();\n\t} else {\n\t\tt = this._errHandler.recoverInline(this);\n\t\tif (this.buildParseTrees && t.tokenIndex === -1) {\n\t\t\t// we must have conjured up a new token during single token\n\t\t\t// insertion\n\t\t\t// if it's not the current symbol\n\t\t\tthis._ctx.addErrorNode(t);\n\t\t}\n\t}\n\treturn t;\n};\n// Match current input symbol as a wildcard. If the symbol type matches\n// (i.e. has a value greater than 0), {@link ANTLRErrorStrategy//reportMatch}\n// and {@link //consume} are called to complete the match process.\n//\n// <p>If the symbol type does not match,\n// {@link ANTLRErrorStrategy//recoverInline} is called on the current error\n// strategy to attempt recovery. If {@link //getBuildParseTree} is\n// {@code true} and the token index of the symbol returned by\n// {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to\n// the parse tree by calling {@link ParserRuleContext//addErrorNode}.</p>\n//\n// @return the matched symbol\n// @throws RecognitionException if the current input symbol did not match\n// a wildcard and the error strategy could not recover from the mismatched\n// symbol\n\nParser.prototype.matchWildcard = function() {\n\tvar t = this.getCurrentToken();\n\tif (t.type > 0) {\n\t\tthis._errHandler.reportMatch(this);\n\t\tthis.consume();\n\t} else {\n\t\tt = this._errHandler.recoverInline(this);\n\t\tif (this._buildParseTrees && t.tokenIndex === -1) {\n\t\t\t// we must have conjured up a new token during single token\n\t\t\t// insertion\n\t\t\t// if it's not the current symbol\n\t\t\tthis._ctx.addErrorNode(t);\n\t\t}\n\t}\n\treturn t;\n};\n\nParser.prototype.getParseListeners = function() {\n\treturn this._parseListeners || [];\n};\n\n// Registers {@code listener} to receive events during the parsing process.\n//\n// <p>To support output-preserving grammar transformations (including but not\n// limited to left-recursion removal, automated left-factoring, and\n// optimized code generation), calls to listener methods during the parse\n// may differ substantially from calls made by\n// {@link ParseTreeWalker//DEFAULT} used after the parse is complete. In\n// particular, rule entry and exit events may occur in a different order\n// during the parse than after the parser. In addition, calls to certain\n// rule entry methods may be omitted.</p>\n//\n// <p>With the following specific exceptions, calls to listener events are\n// <em>deterministic</em>, i.e. for identical input the calls to listener\n// methods will be the same.</p>\n//\n// <ul>\n// <li>Alterations to the grammar used to generate code may change the\n// behavior of the listener calls.</li>\n// <li>Alterations to the command line options passed to ANTLR 4 when\n// generating the parser may change the behavior of the listener calls.</li>\n// <li>Changing the version of the ANTLR Tool used to generate the parser\n// may change the behavior of the listener calls.</li>\n// </ul>\n//\n// @param listener the listener to add\n//\n// @throws NullPointerException if {@code} listener is {@code null}\n//\nParser.prototype.addParseListener = function(listener) {\n\tif (listener === null) {\n\t\tthrow \"listener\";\n\t}\n\tif (this._parseListeners === null) {\n\t\tthis._parseListeners = [];\n\t}\n\tthis._parseListeners.push(listener);\n};\n\n//\n// Remove {@code listener} from the list of parse listeners.\n//\n// <p>If {@code listener} is {@code null} or has not been added as a parse\n// listener, this method does nothing.</p>\n// @param listener the listener to remove\n//\nParser.prototype.removeParseListener = function(listener) {\n\tif (this._parseListeners !== null) {\n\t\tvar idx = this._parseListeners.indexOf(listener);\n\t\tif (idx >= 0) {\n\t\t\tthis._parseListeners.splice(idx, 1);\n\t\t}\n\t\tif (this._parseListeners.length === 0) {\n\t\t\tthis._parseListeners = null;\n\t\t}\n\t}\n};\n\n// Remove all parse listeners.\nParser.prototype.removeParseListeners = function() {\n\tthis._parseListeners = null;\n};\n\n// Notify any parse listeners of an enter rule event.\nParser.prototype.triggerEnterRuleEvent = function() {\n\tif (this._parseListeners !== null) {\n var ctx = this._ctx;\n\t\tthis._parseListeners.map(function(listener) {\n\t\t\tlistener.enterEveryRule(ctx);\n\t\t\tctx.enterRule(listener);\n\t\t});\n\t}\n};\n\n//\n// Notify any parse listeners of an exit rule event.\n//\n// @see //addParseListener\n//\nParser.prototype.triggerExitRuleEvent = function() {\n\tif (this._parseListeners !== null) {\n\t\t// reverse order walk of listeners\n var ctx = this._ctx;\n\t\tthis._parseListeners.slice(0).reverse().map(function(listener) {\n\t\t\tctx.exitRule(listener);\n\t\t\tlistener.exitEveryRule(ctx);\n\t\t});\n\t}\n};\n\nParser.prototype.getTokenFactory = function() {\n\treturn this._input.tokenSource._factory;\n};\n\n// Tell our token source and error strategy about a new way to create tokens.//\nParser.prototype.setTokenFactory = function(factory) {\n\tthis._input.tokenSource._factory = factory;\n};\n\n// The ATN with bypass alternatives is expensive to create so we create it\n// lazily.\n//\n// @throws UnsupportedOperationException if the current parser does not\n// implement the {@link //getSerializedATN()} method.\n//\nParser.prototype.getATNWithBypassAlts = function() {\n\tvar serializedAtn = this.getSerializedATN();\n\tif (serializedAtn === null) {\n\t\tthrow \"The current parser does not support an ATN with bypass alternatives.\";\n\t}\n\tvar result = this.bypassAltsAtnCache[serializedAtn];\n\tif (result === null) {\n\t\tvar deserializationOptions = new ATNDeserializationOptions();\n\t\tdeserializationOptions.generateRuleBypassTransitions = true;\n\t\tresult = new ATNDeserializer(deserializationOptions)\n\t\t\t\t.deserialize(serializedAtn);\n\t\tthis.bypassAltsAtnCache[serializedAtn] = result;\n\t}\n\treturn result;\n};\n\n// The preferred method of getting a tree pattern. For example, here's a\n// sample use:\n//\n// <pre>\n// ParseTree t = parser.expr();\n// ParseTreePattern p = parser.compileParseTreePattern(\"&lt;ID&gt;+0\",\n// MyParser.RULE_expr);\n// ParseTreeMatch m = p.match(t);\n// String id = m.get(\"ID\");\n// </pre>\n\nvar Lexer = require('./Lexer').Lexer;\n\nParser.prototype.compileParseTreePattern = function(pattern, patternRuleIndex, lexer) {\n\tlexer = lexer || null;\n\tif (lexer === null) {\n\t\tif (this.getTokenStream() !== null) {\n\t\t\tvar tokenSource = this.getTokenStream().tokenSource;\n\t\t\tif (tokenSource instanceof Lexer) {\n\t\t\t\tlexer = tokenSource;\n\t\t\t}\n\t\t}\n\t}\n\tif (lexer === null) {\n\t\tthrow \"Parser can't discover a lexer to use\";\n\t}\n\tvar m = new ParseTreePatternMatcher(lexer, this);\n\treturn m.compile(pattern, patternRuleIndex);\n};\n\nParser.prototype.getInputStream = function() {\n\treturn this.getTokenStream();\n};\n\nParser.prototype.setInputStream = function(input) {\n\tthis.setTokenStream(input);\n};\n\nParser.prototype.getTokenStream = function() {\n\treturn this._input;\n};\n\n// Set the token stream and reset the parser.//\nParser.prototype.setTokenStream = function(input) {\n\tthis._input = null;\n\tthis.reset();\n\tthis._input = input;\n};\n\n// Match needs to return the current input symbol, which gets put\n// into the label for the associated token ref; e.g., x=ID.\n//\nParser.prototype.getCurrentToken = function() {\n\treturn this._input.LT(1);\n};\n\nParser.prototype.notifyErrorListeners = function(msg, offendingToken, err) {\n\toffendingToken = offendingToken || null;\n\terr = err || null;\n\tif (offendingToken === null) {\n\t\toffendingToken = this.getCurrentToken();\n\t}\n\tthis._syntaxErrors += 1;\n\tvar line = offendingToken.line;\n\tvar column = offendingToken.column;\n\tvar listener = this.getErrorListenerDispatch();\n\tlistener.syntaxError(this, offendingToken, line, column, msg, err);\n};\n\n//\n// Consume and return the {@linkplain //getCurrentToken current symbol}.\n//\n// <p>E.g., given the following input with {@code A} being the current\n// lookahead symbol, this function moves the cursor to {@code B} and returns\n// {@code A}.</p>\n//\n// <pre>\n// A B\n// ^\n// </pre>\n//\n// If the parser is not in error recovery mode, the consumed symbol is added\n// to the parse tree using {@link ParserRuleContext//addChild(Token)}, and\n// {@link ParseTreeListener//visitTerminal} is called on any parse listeners.\n// If the parser <em>is</em> in error recovery mode, the consumed symbol is\n// added to the parse tree using\n// {@link ParserRuleContext//addErrorNode(Token)}, and\n// {@link ParseTreeListener//visitErrorNode} is called on any parse\n// listeners.\n//\nParser.prototype.consume = function() {\n\tvar o = this.getCurrentToken();\n\tif (o.type !== Token.EOF) {\n\t\tthis.getInputStream().consume();\n\t}\n\tvar hasListener = this._parseListeners !== null && this._parseListeners.length > 0;\n\tif (this.buildParseTrees || hasListener) {\n\t\tvar node;\n\t\tif (this._errHandler.inErrorRecoveryMode(this)) {\n\t\t\tnode = this._ctx.addErrorNode(o);\n\t\t} else {\n\t\t\tnode = this._ctx.addTokenNode(o);\n\t\t}\n node.invokingState = this.state;\n\t\tif (hasListener) {\n\t\t\tthis._parseListeners.map(function(listener) {\n\t\t\t\tif (node instanceof ErrorNode || (node.isErrorNode !== undefined && node.isErrorNode())) {\n\t\t\t\t\tlistener.visitErrorNode(node);\n\t\t\t\t} else if (node instanceof TerminalNode) {\n\t\t\t\t\tlistener.visitTerminal(node);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn o;\n};\n\nParser.prototype.addContextToParseTree = function() {\n\t// add current context to parent if we have a parent\n\tif (this._ctx.parentCtx !== null) {\n\t\tthis._ctx.parentCtx.addChild(this._ctx);\n\t}\n};\n\n// Always called by generated parsers upon entry to a rule. Access field\n// {@link //_ctx} get the current context.\n\nParser.prototype.enterRule = function(localctx, state, ruleIndex) {\n\tthis.state = state;\n\tthis._ctx = localctx;\n\tthis._ctx.start = this._input.LT(1);\n\tif (this.buildParseTrees) {\n\t\tthis.addContextToParseTree();\n\t}\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerEnterRuleEvent();\n\t}\n};\n\nParser.prototype.exitRule = function() {\n\tthis._ctx.stop = this._input.LT(-1);\n\t// trigger event on _ctx, before it reverts to parent\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerExitRuleEvent();\n\t}\n\tthis.state = this._ctx.invokingState;\n\tthis._ctx = this._ctx.parentCtx;\n};\n\nParser.prototype.enterOuterAlt = function(localctx, altNum) {\n \tlocalctx.setAltNumber(altNum);\n\t// if we have new localctx, make sure we replace existing ctx\n\t// that is previous child of parse tree\n\tif (this.buildParseTrees && this._ctx !== localctx) {\n\t\tif (this._ctx.parentCtx !== null) {\n\t\t\tthis._ctx.parentCtx.removeLastChild();\n\t\t\tthis._ctx.parentCtx.addChild(localctx);\n\t\t}\n\t}\n\tthis._ctx = localctx;\n};\n\n// Get the precedence level for the top-most precedence rule.\n//\n// @return The precedence level for the top-most precedence rule, or -1 if\n// the parser context is not nested within a precedence rule.\n\nParser.prototype.getPrecedence = function() {\n\tif (this._precedenceStack.length === 0) {\n\t\treturn -1;\n\t} else {\n\t\treturn this._precedenceStack[this._precedenceStack.length-1];\n\t}\n};\n\nParser.prototype.enterRecursionRule = function(localctx, state, ruleIndex,\n\t\tprecedence) {\n\tthis.state = state;\n\tthis._precedenceStack.push(precedence);\n\tthis._ctx = localctx;\n\tthis._ctx.start = this._input.LT(1);\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerEnterRuleEvent(); // simulates rule entry for\n\t\t\t\t\t\t\t\t\t\t// left-recursive rules\n\t}\n};\n\n//\n// Like {@link //enterRule} but for recursive rules.\n\nParser.prototype.pushNewRecursionContext = function(localctx, state, ruleIndex) {\n\tvar previous = this._ctx;\n\tprevious.parentCtx = localctx;\n\tprevious.invokingState = state;\n\tprevious.stop = this._input.LT(-1);\n\n\tthis._ctx = localctx;\n\tthis._ctx.start = previous.start;\n\tif (this.buildParseTrees) {\n\t\tthis._ctx.addChild(previous);\n\t}\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerEnterRuleEvent(); // simulates rule entry for\n\t\t\t\t\t\t\t\t\t\t// left-recursive rules\n\t}\n};\n\nParser.prototype.unrollRecursionContexts = function(parentCtx) {\n\tthis._precedenceStack.pop();\n\tthis._ctx.stop = this._input.LT(-1);\n\tvar retCtx = this._ctx; // save current ctx (return value)\n\t// unroll so _ctx is as it was before call to recursive method\n\tif (this._parseListeners !== null) {\n\t\twhile (this._ctx !== parentCtx) {\n\t\t\tthis.triggerExitRuleEvent();\n\t\t\tthis._ctx = this._ctx.parentCtx;\n\t\t}\n\t} else {\n\t\tthis._ctx = parentCtx;\n\t}\n\t// hook into tree\n\tretCtx.parentCtx = parentCtx;\n\tif (this.buildParseTrees && parentCtx !== null) {\n\t\t// add return ctx into invoking rule's tree\n\t\tparentCtx.addChild(retCtx);\n\t}\n};\n\nParser.prototype.getInvokingContext = function(ruleIndex) {\n\tvar ctx = this._ctx;\n\twhile (ctx !== null) {\n\t\tif (ctx.ruleIndex === ruleIndex) {\n\t\t\treturn ctx;\n\t\t}\n\t\tctx = ctx.parentCtx;\n\t}\n\treturn null;\n};\n\nParser.prototype.precpred = function(localctx, precedence) {\n\treturn precedence >= this._precedenceStack[this._precedenceStack.length-1];\n};\n\nParser.prototype.inContext = function(context) {\n\t// TODO: useful in parser?\n\treturn false;\n};\n\n//\n// Checks whether or not {@code symbol} can follow the current state in the\n// ATN. The behavior of this method is equivalent to the following, but is\n// implemented such that the complete context-sensitive follow set does not\n// need to be explicitly constructed.\n//\n// <pre>\n// return getExpectedTokens().contains(symbol);\n// </pre>\n//\n// @param symbol the symbol type to check\n// @return {@code true} if {@code symbol} can follow the current state in\n// the ATN, otherwise {@code false}.\n\nParser.prototype.isExpectedToken = function(symbol) {\n\tvar atn = this._interp.atn;\n\tvar ctx = this._ctx;\n\tvar s = atn.states[this.state];\n\tvar following = atn.nextTokens(s);\n\tif (following.contains(symbol)) {\n\t\treturn true;\n\t}\n\tif (!following.contains(Token.EPSILON)) {\n\t\treturn false;\n\t}\n\twhile (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\n\t\tvar invokingState = atn.states[ctx.invokingState];\n\t\tvar rt = invokingState.transitions[0];\n\t\tfollowing = atn.nextTokens(rt.followState);\n\t\tif (following.contains(symbol)) {\n\t\t\treturn true;\n\t\t}\n\t\tctx = ctx.parentCtx;\n\t}\n\tif (following.contains(Token.EPSILON) && symbol === Token.EOF) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n// Computes the set of input symbols which could follow the current parser\n// state and context, as given by {@link //getState} and {@link //getContext},\n// respectively.\n//\n// @see ATN//getExpectedTokens(int, RuleContext)\n//\nParser.prototype.getExpectedTokens = function() {\n\treturn this._interp.atn.getExpectedTokens(this.state, this._ctx);\n};\n\nParser.prototype.getExpectedTokensWithinCurrentRule = function() {\n\tvar atn = this._interp.atn;\n\tvar s = atn.states[this.state];\n\treturn atn.nextTokens(s);\n};\n\n// Get a rule's index (i.e., {@code RULE_ruleName} field) or -1 if not found.//\nParser.prototype.getRuleIndex = function(ruleName) {\n\tvar ruleIndex = this.getRuleIndexMap()[ruleName];\n\tif (ruleIndex !== null) {\n\t\treturn ruleIndex;\n\t} else {\n\t\treturn -1;\n\t}\n};\n\n// Return List&lt;String&gt; of the rule names in your parser instance\n// leading up to a call to the current rule. You could override if\n// you want more details such as the file/line info of where\n// in the ATN a rule is invoked.\n//\n// this is very useful for error messages.\n//\nParser.prototype.getRuleInvocationStack = function(p) {\n\tp = p || null;\n\tif (p === null) {\n\t\tp = this._ctx;\n\t}\n\tvar stack = [];\n\twhile (p !== null) {\n\t\t// compute what follows who invoked us\n\t\tvar ruleIndex = p.ruleIndex;\n\t\tif (ruleIndex < 0) {\n\t\t\tstack.push(\"n/a\");\n\t\t} else {\n\t\t\tstack.push(this.ruleNames[ruleIndex]);\n\t\t}\n\t\tp = p.parentCtx;\n\t}\n\treturn stack;\n};\n\n// For debugging and other purposes.//\nParser.prototype.getDFAStrings = function() {\n\treturn this._interp.decisionToDFA.toString();\n};\n// For debugging and other purposes.//\nParser.prototype.dumpDFA = function() {\n\tvar seenOne = false;\n\tfor (var i = 0; i < this._interp.decisionToDFA.length; i++) {\n\t\tvar dfa = this._interp.decisionToDFA[i];\n\t\tif (dfa.states.length > 0) {\n\t\t\tif (seenOne) {\n\t\t\t\tconsole.log();\n\t\t\t}\n\t\t\tthis.printer.println(\"Decision \" + dfa.decision + \":\");\n\t\t\tthis.printer.print(dfa.toString(this.literalNames, this.symbolicNames));\n\t\t\tseenOne = true;\n\t\t}\n\t}\n};\n\n/*\n\"\t\t\tprinter = function() {\\r\\n\" +\n\"\t\t\t\tthis.println = function(s) { document.getElementById('output') += s + '\\\\n'; }\\r\\n\" +\n\"\t\t\t\tthis.print = function(s) { document.getElementById('output') += s; }\\r\\n\" +\n\"\t\t\t};\\r\\n\" +\n*/\n\nParser.prototype.getSourceName = function() {\n\treturn this._input.sourceName;\n};\n\n// During a parse is sometimes useful to listen in on the rule entry and exit\n// events as well as token matches. this is for quick and dirty debugging.\n//\nParser.prototype.setTrace = function(trace) {\n\tif (!trace) {\n\t\tthis.removeParseListener(this._tracer);\n\t\tthis._tracer = null;\n\t} else {\n\t\tif (this._tracer !== null) {\n\t\t\tthis.removeParseListener(this._tracer);\n\t\t}\n\t\tthis._tracer = new TraceListener(this);\n\t\tthis.addParseListener(this._tracer);\n\t}\n};\n\nexports.Parser = Parser;","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n//* A rule invocation record for parsing.\n//\n// Contains all of the information about the current rule not stored in the\n// RuleContext. It handles parse tree children list, Any ATN state\n// tracing, and the default values available for rule indications:\n// start, stop, rule index, current alt number, current\n// ATN state.\n//\n// Subclasses made for each rule and grammar track the parameters,\n// return values, locals, and labels specific to that rule. These\n// are the objects that are returned from rules.\n//\n// Note text is not an actual field of a rule return value; it is computed\n// from start and stop using the input stream's toString() method. I\n// could add a ctor to this so that we can pass in and store the input\n// stream, but I'm not sure we want to do that. It would seem to be undefined\n// to get the .text property anyway if the rule matches tokens from multiple\n// input streams.\n//\n// I do not use getters for fields of objects that are used simply to\n// group values such as this aggregate. The getters/setters are there to\n// satisfy the superclass interface.\n\nvar RuleContext = require('./RuleContext').RuleContext;\nvar Tree = require('./tree/Tree');\nvar INVALID_INTERVAL = Tree.INVALID_INTERVAL;\nvar TerminalNode = Tree.TerminalNode;\nvar TerminalNodeImpl = Tree.TerminalNodeImpl;\nvar ErrorNodeImpl = Tree.ErrorNodeImpl;\nvar Interval = require(\"./IntervalSet\").Interval;\n\nfunction ParserRuleContext(parent, invokingStateNumber) {\n\tparent = parent || null;\n\tinvokingStateNumber = invokingStateNumber || null;\n\tRuleContext.call(this, parent, invokingStateNumber);\n\tthis.ruleIndex = -1;\n // * If we are debugging or building a parse tree for a visitor,\n // we need to track all of the tokens and rule invocations associated\n // with this rule's context. This is empty for parsing w/o tree constr.\n // operation because we don't the need to track the details about\n // how we parse this rule.\n // /\n this.children = null;\n this.start = null;\n this.stop = null;\n // The exception that forced this rule to return. If the rule successfully\n // completed, this is {@code null}.\n this.exception = null;\n}\n\nParserRuleContext.prototype = Object.create(RuleContext.prototype);\nParserRuleContext.prototype.constructor = ParserRuleContext;\n\n// * COPY a ctx (I'm deliberately not using copy constructor)///\nParserRuleContext.prototype.copyFrom = function(ctx) {\n // from RuleContext\n this.parentCtx = ctx.parentCtx;\n this.invokingState = ctx.invokingState;\n this.children = null;\n this.start = ctx.start;\n this.stop = ctx.stop;\n // copy any error nodes to alt label node\n if(ctx.children) {\n this.children = [];\n // reset parent pointer for any error nodes\n \tctx.children.map(function(child) {\n \t\tif (child instanceof ErrorNodeImpl) {\n this.children.push(child);\n child.parentCtx = this;\n }\n\t\t}, this);\n\t}\n};\n\n// Double dispatch methods for listeners\nParserRuleContext.prototype.enterRule = function(listener) {\n};\n\nParserRuleContext.prototype.exitRule = function(listener) {\n};\n\n// * Does not set parent link; other add methods do that///\nParserRuleContext.prototype.addChild = function(child) {\n if (this.children === null) {\n this.children = [];\n }\n this.children.push(child);\n return child;\n};\n\n// * Used by enterOuterAlt to toss out a RuleContext previously added as\n// we entered a rule. If we have // label, we will need to remove\n// generic ruleContext object.\n// /\nParserRuleContext.prototype.removeLastChild = function() {\n if (this.children !== null) {\n this.children.pop();\n }\n};\n\nParserRuleContext.prototype.addTokenNode = function(token) {\n var node = new TerminalNodeImpl(token);\n this.addChild(node);\n node.parentCtx = this;\n return node;\n};\n\nParserRuleContext.prototype.addErrorNode = function(badToken) {\n var node = new ErrorNodeImpl(badToken);\n this.addChild(node);\n node.parentCtx = this;\n return node;\n};\n\nParserRuleContext.prototype.getChild = function(i, type) {\n\ttype = type || null;\n\tif (this.children === null || i < 0 || i >= this.children.length) {\n\t\treturn null;\n\t}\n\tif (type === null) {\n\t\treturn this.children[i];\n\t} else {\n\t\tfor(var j=0; j<this.children.length; j++) {\n\t\t\tvar child = this.children[j];\n\t\t\tif(child instanceof type) {\n\t\t\t\tif(i===0) {\n\t\t\t\t\treturn child;\n\t\t\t\t} else {\n\t\t\t\t\ti -= 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n }\n};\n\n\nParserRuleContext.prototype.getToken = function(ttype, i) {\n\tif (this.children === null || i < 0 || i >= this.children.length) {\n\t\treturn null;\n\t}\n\tfor(var j=0; j<this.children.length; j++) {\n\t\tvar child = this.children[j];\n\t\tif (child instanceof TerminalNode) {\n\t\t\tif (child.symbol.type === ttype) {\n\t\t\t\tif(i===0) {\n\t\t\t\t\treturn child;\n\t\t\t\t} else {\n\t\t\t\t\ti -= 1;\n\t\t\t\t}\n\t\t\t}\n }\n\t}\n return null;\n};\n\nParserRuleContext.prototype.getTokens = function(ttype ) {\n if (this.children=== null) {\n return [];\n } else {\n\t\tvar tokens = [];\n\t\tfor(var j=0; j<this.children.length; j++) {\n\t\t\tvar child = this.children[j];\n\t\t\tif (child instanceof TerminalNode) {\n\t\t\t\tif (child.symbol.type === ttype) {\n\t\t\t\t\ttokens.push(child);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn tokens;\n }\n};\n\nParserRuleContext.prototype.getTypedRuleContext = function(ctxType, i) {\n return this.getChild(i, ctxType);\n};\n\nParserRuleContext.prototype.getTypedRuleContexts = function(ctxType) {\n if (this.children=== null) {\n return [];\n } else {\n\t\tvar contexts = [];\n\t\tfor(var j=0; j<this.children.length; j++) {\n\t\t\tvar child = this.children[j];\n\t\t\tif (child instanceof ctxType) {\n\t\t\t\tcontexts.push(child);\n\t\t\t}\n\t\t}\n\t\treturn contexts;\n\t}\n};\n\nParserRuleContext.prototype.getChildCount = function() {\n\tif (this.children=== null) {\n\t\treturn 0;\n\t} else {\n\t\treturn this.children.length;\n\t}\n};\n\nParserRuleContext.prototype.getSourceInterval = function() {\n if( this.start === null || this.stop === null) {\n return INVALID_INTERVAL;\n } else {\n return new Interval(this.start.tokenIndex, this.stop.tokenIndex);\n }\n};\n\nRuleContext.EMPTY = new ParserRuleContext();\n\nfunction InterpreterRuleContext(parent, invokingStateNumber, ruleIndex) {\n\tParserRuleContext.call(parent, invokingStateNumber);\n this.ruleIndex = ruleIndex;\n return this;\n}\n\nInterpreterRuleContext.prototype = Object.create(ParserRuleContext.prototype);\nInterpreterRuleContext.prototype.constructor = InterpreterRuleContext;\n\nexports.ParserRuleContext = ParserRuleContext;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar RuleContext = require('./RuleContext').RuleContext;\nvar Hash = require('./Utils').Hash;\n\nfunction PredictionContext(cachedHashCode) {\n\tthis.cachedHashCode = cachedHashCode;\n}\n\n// Represents {@code $} in local context prediction, which means wildcard.\n// {@code//+x =//}.\n// /\nPredictionContext.EMPTY = null;\n\n// Represents {@code $} in an array in full context mode, when {@code $}\n// doesn't mean wildcard: {@code $ + x = [$,x]}. Here,\n// {@code $} = {@link //EMPTY_RETURN_STATE}.\n// /\nPredictionContext.EMPTY_RETURN_STATE = 0x7FFFFFFF;\n\nPredictionContext.globalNodeCount = 1;\nPredictionContext.id = PredictionContext.globalNodeCount;\n\n// Stores the computed hash code of this {@link PredictionContext}. The hash\n// code is computed in parts to match the following reference algorithm.\n//\n// <pre>\n// private int referenceHashCode() {\n// int hash = {@link MurmurHash//initialize MurmurHash.initialize}({@link\n// //INITIAL_HASH});\n//\n// for (int i = 0; i &lt; {@link //size()}; i++) {\n// hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link //getParent\n// getParent}(i));\n// }\n//\n// for (int i = 0; i &lt; {@link //size()}; i++) {\n// hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link\n// //getReturnState getReturnState}(i));\n// }\n//\n// hash = {@link MurmurHash//finish MurmurHash.finish}(hash, 2// {@link\n// //size()});\n// return hash;\n// }\n// </pre>\n// /\n\n// This means only the {@link //EMPTY} context is in set.\nPredictionContext.prototype.isEmpty = function() {\n\treturn this === PredictionContext.EMPTY;\n};\n\nPredictionContext.prototype.hasEmptyPath = function() {\n\treturn this.getReturnState(this.length - 1) === PredictionContext.EMPTY_RETURN_STATE;\n};\n\nPredictionContext.prototype.hashCode = function() {\n\treturn this.cachedHashCode;\n};\n\n\nPredictionContext.prototype.updateHashCode = function(hash) {\n hash.update(this.cachedHashCode);\n};\n/*\nfunction calculateHashString(parent, returnState) {\n\treturn \"\" + parent + returnState;\n}\n*/\n\n// Used to cache {@link PredictionContext} objects. Its used for the shared\n// context cash associated with contexts in DFA states. This cache\n// can be used for both lexers and parsers.\n\nfunction PredictionContextCache() {\n\tthis.cache = {};\n\treturn this;\n}\n\n// Add a context to the cache and return it. If the context already exists,\n// return that one instead and do not add a new context to the cache.\n// Protect shared cache from unsafe thread access.\n//\nPredictionContextCache.prototype.add = function(ctx) {\n\tif (ctx === PredictionContext.EMPTY) {\n\t\treturn PredictionContext.EMPTY;\n\t}\n\tvar existing = this.cache[ctx] || null;\n\tif (existing !== null) {\n\t\treturn existing;\n\t}\n\tthis.cache[ctx] = ctx;\n\treturn ctx;\n};\n\nPredictionContextCache.prototype.get = function(ctx) {\n\treturn this.cache[ctx] || null;\n};\n\nObject.defineProperty(PredictionContextCache.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.cache.length;\n\t}\n});\n\nfunction SingletonPredictionContext(parent, returnState) {\n\tvar hashCode = 0;\n\tif(parent !== null) {\n\t\tvar hash = new Hash();\n\t\thash.update(parent, returnState);\n hashCode = hash.finish();\n\t}\n\tPredictionContext.call(this, hashCode);\n\tthis.parentCtx = parent;\n\tthis.returnState = returnState;\n}\n\nSingletonPredictionContext.prototype = Object.create(PredictionContext.prototype);\nSingletonPredictionContext.prototype.contructor = SingletonPredictionContext;\n\nSingletonPredictionContext.create = function(parent, returnState) {\n\tif (returnState === PredictionContext.EMPTY_RETURN_STATE && parent === null) {\n\t\t// someone can pass in the bits of an array ctx that mean $\n\t\treturn PredictionContext.EMPTY;\n\t} else {\n\t\treturn new SingletonPredictionContext(parent, returnState);\n\t}\n};\n\nObject.defineProperty(SingletonPredictionContext.prototype, \"length\", {\n\tget : function() {\n\t\treturn 1;\n\t}\n});\n\nSingletonPredictionContext.prototype.getParent = function(index) {\n\treturn this.parentCtx;\n};\n\nSingletonPredictionContext.prototype.getReturnState = function(index) {\n\treturn this.returnState;\n};\n\nSingletonPredictionContext.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof SingletonPredictionContext)) {\n\t\treturn false;\n\t} else if (this.hashCode() !== other.hashCode()) {\n\t\treturn false; // can't be same if hash is different\n\t} else {\n\t\tif(this.returnState !== other.returnState)\n return false;\n else if(this.parentCtx==null)\n return other.parentCtx==null\n\t\telse\n return this.parentCtx.equals(other.parentCtx);\n\t}\n};\n\nSingletonPredictionContext.prototype.toString = function() {\n\tvar up = this.parentCtx === null ? \"\" : this.parentCtx.toString();\n\tif (up.length === 0) {\n\t\tif (this.returnState === PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\treturn \"$\";\n\t\t} else {\n\t\t\treturn \"\" + this.returnState;\n\t\t}\n\t} else {\n\t\treturn \"\" + this.returnState + \" \" + up;\n\t}\n};\n\nfunction EmptyPredictionContext() {\n\tSingletonPredictionContext.call(this, null, PredictionContext.EMPTY_RETURN_STATE);\n\treturn this;\n}\n\nEmptyPredictionContext.prototype = Object.create(SingletonPredictionContext.prototype);\nEmptyPredictionContext.prototype.constructor = EmptyPredictionContext;\n\nEmptyPredictionContext.prototype.isEmpty = function() {\n\treturn true;\n};\n\nEmptyPredictionContext.prototype.getParent = function(index) {\n\treturn null;\n};\n\nEmptyPredictionContext.prototype.getReturnState = function(index) {\n\treturn this.returnState;\n};\n\nEmptyPredictionContext.prototype.equals = function(other) {\n\treturn this === other;\n};\n\nEmptyPredictionContext.prototype.toString = function() {\n\treturn \"$\";\n};\n\nPredictionContext.EMPTY = new EmptyPredictionContext();\n\nfunction ArrayPredictionContext(parents, returnStates) {\n\t// Parent can be null only if full ctx mode and we make an array\n\t// from {@link //EMPTY} and non-empty. We merge {@link //EMPTY} by using\n\t// null parent and\n\t// returnState == {@link //EMPTY_RETURN_STATE}.\n\tvar h = new Hash();\n\th.update(parents, returnStates);\n\tvar hashCode = h.finish();\n\tPredictionContext.call(this, hashCode);\n\tthis.parents = parents;\n\tthis.returnStates = returnStates;\n\treturn this;\n}\n\nArrayPredictionContext.prototype = Object.create(PredictionContext.prototype);\nArrayPredictionContext.prototype.constructor = ArrayPredictionContext;\n\nArrayPredictionContext.prototype.isEmpty = function() {\n\t// since EMPTY_RETURN_STATE can only appear in the last position, we\n\t// don't need to verify that size==1\n\treturn this.returnStates[0] === PredictionContext.EMPTY_RETURN_STATE;\n};\n\nObject.defineProperty(ArrayPredictionContext.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.returnStates.length;\n\t}\n});\n\nArrayPredictionContext.prototype.getParent = function(index) {\n\treturn this.parents[index];\n};\n\nArrayPredictionContext.prototype.getReturnState = function(index) {\n\treturn this.returnStates[index];\n};\n\nArrayPredictionContext.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof ArrayPredictionContext)) {\n\t\treturn false;\n\t} else if (this.hashCode() !== other.hashCode()) {\n\t\treturn false; // can't be same if hash is different\n\t} else {\n\t\treturn this.returnStates === other.returnStates &&\n\t\t\t\tthis.parents === other.parents;\n\t}\n};\n\nArrayPredictionContext.prototype.toString = function() {\n\tif (this.isEmpty()) {\n\t\treturn \"[]\";\n\t} else {\n\t\tvar s = \"[\";\n\t\tfor (var i = 0; i < this.returnStates.length; i++) {\n\t\t\tif (i > 0) {\n\t\t\t\ts = s + \", \";\n\t\t\t}\n\t\t\tif (this.returnStates[i] === PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\t\ts = s + \"$\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ts = s + this.returnStates[i];\n\t\t\tif (this.parents[i] !== null) {\n\t\t\t\ts = s + \" \" + this.parents[i];\n\t\t\t} else {\n\t\t\t\ts = s + \"null\";\n\t\t\t}\n\t\t}\n\t\treturn s + \"]\";\n\t}\n};\n\n// Convert a {@link RuleContext} tree to a {@link PredictionContext} graph.\n// Return {@link //EMPTY} if {@code outerContext} is empty or null.\n// /\nfunction predictionContextFromRuleContext(atn, outerContext) {\n\tif (outerContext === undefined || outerContext === null) {\n\t\touterContext = RuleContext.EMPTY;\n\t}\n\t// if we are in RuleContext of start rule, s, then PredictionContext\n\t// is EMPTY. Nobody called us. (if we are empty, return empty)\n\tif (outerContext.parentCtx === null || outerContext === RuleContext.EMPTY) {\n\t\treturn PredictionContext.EMPTY;\n\t}\n\t// If we have a parent, convert it to a PredictionContext graph\n\tvar parent = predictionContextFromRuleContext(atn, outerContext.parentCtx);\n\tvar state = atn.states[outerContext.invokingState];\n\tvar transition = state.transitions[0];\n\treturn SingletonPredictionContext.create(parent, transition.followState.stateNumber);\n}\n/*\nfunction calculateListsHashString(parents, returnStates) {\n\tvar s = \"\";\n\tparents.map(function(p) {\n\t\ts = s + p;\n\t});\n\treturnStates.map(function(r) {\n\t\ts = s + r;\n\t});\n\treturn s;\n}\n*/\nfunction merge(a, b, rootIsWildcard, mergeCache) {\n\t// share same graph if both same\n\tif (a === b) {\n\t\treturn a;\n\t}\n\tif (a instanceof SingletonPredictionContext && b instanceof SingletonPredictionContext) {\n\t\treturn mergeSingletons(a, b, rootIsWildcard, mergeCache);\n\t}\n\t// At least one of a or b is array\n\t// If one is $ and rootIsWildcard, return $ as// wildcard\n\tif (rootIsWildcard) {\n\t\tif (a instanceof EmptyPredictionContext) {\n\t\t\treturn a;\n\t\t}\n\t\tif (b instanceof EmptyPredictionContext) {\n\t\t\treturn b;\n\t\t}\n\t}\n\t// convert singleton so both are arrays to normalize\n\tif (a instanceof SingletonPredictionContext) {\n\t\ta = new ArrayPredictionContext([a.getParent()], [a.returnState]);\n\t}\n\tif (b instanceof SingletonPredictionContext) {\n\t\tb = new ArrayPredictionContext([b.getParent()], [b.returnState]);\n\t}\n\treturn mergeArrays(a, b, rootIsWildcard, mergeCache);\n}\n\n//\n// Merge two {@link SingletonPredictionContext} instances.\n//\n// <p>Stack tops equal, parents merge is same; return left graph.<br>\n// <embed src=\"images/SingletonMerge_SameRootSamePar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Same stack top, parents differ; merge parents giving array node, then\n// remainders of those graphs. A new root node is created to point to the\n// merged parents.<br>\n// <embed src=\"images/SingletonMerge_SameRootDiffPar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Different stack tops pointing to same parent. Make array node for the\n// root where both element in the root point to the same (original)\n// parent.<br>\n// <embed src=\"images/SingletonMerge_DiffRootSamePar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Different stack tops pointing to different parents. Make array node for\n// the root where each element points to the corresponding original\n// parent.<br>\n// <embed src=\"images/SingletonMerge_DiffRootDiffPar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// @param a the first {@link SingletonPredictionContext}\n// @param b the second {@link SingletonPredictionContext}\n// @param rootIsWildcard {@code true} if this is a local-context merge,\n// otherwise false to indicate a full-context merge\n// @param mergeCache\n// /\nfunction mergeSingletons(a, b, rootIsWildcard, mergeCache) {\n\tif (mergeCache !== null) {\n\t\tvar previous = mergeCache.get(a, b);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t\tprevious = mergeCache.get(b, a);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t}\n\n\tvar rootMerge = mergeRoot(a, b, rootIsWildcard);\n\tif (rootMerge !== null) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, rootMerge);\n\t\t}\n\t\treturn rootMerge;\n\t}\n\tif (a.returnState === b.returnState) {\n\t\tvar parent = merge(a.parentCtx, b.parentCtx, rootIsWildcard, mergeCache);\n\t\t// if parent is same as existing a or b parent or reduced to a parent,\n\t\t// return it\n\t\tif (parent === a.parentCtx) {\n\t\t\treturn a; // ax + bx = ax, if a=b\n\t\t}\n\t\tif (parent === b.parentCtx) {\n\t\t\treturn b; // ax + bx = bx, if a=b\n\t\t}\n\t\t// else: ax + ay = a'[x,y]\n\t\t// merge parents x and y, giving array node with x,y then remainders\n\t\t// of those graphs. dup a, a' points at merged array\n\t\t// new joined parent so create new singleton pointing to it, a'\n\t\tvar spc = SingletonPredictionContext.create(parent, a.returnState);\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, spc);\n\t\t}\n\t\treturn spc;\n\t} else { // a != b payloads differ\n\t\t// see if we can collapse parents due to $+x parents if local ctx\n\t\tvar singleParent = null;\n\t\tif (a === b || (a.parentCtx !== null && a.parentCtx === b.parentCtx)) { // ax +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// bx =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// [a,b]x\n\t\t\tsingleParent = a.parentCtx;\n\t\t}\n\t\tif (singleParent !== null) { // parents are same\n\t\t\t// sort payloads and use same parent\n\t\t\tvar payloads = [ a.returnState, b.returnState ];\n\t\t\tif (a.returnState > b.returnState) {\n\t\t\t\tpayloads[0] = b.returnState;\n\t\t\t\tpayloads[1] = a.returnState;\n\t\t\t}\n\t\t\tvar parents = [ singleParent, singleParent ];\n\t\t\tvar apc = new ArrayPredictionContext(parents, payloads);\n\t\t\tif (mergeCache !== null) {\n\t\t\t\tmergeCache.set(a, b, apc);\n\t\t\t}\n\t\t\treturn apc;\n\t\t}\n\t\t// parents differ and can't merge them. Just pack together\n\t\t// into array; can't merge.\n\t\t// ax + by = [ax,by]\n\t\tvar payloads = [ a.returnState, b.returnState ];\n\t\tvar parents = [ a.parentCtx, b.parentCtx ];\n\t\tif (a.returnState > b.returnState) { // sort by payload\n\t\t\tpayloads[0] = b.returnState;\n\t\t\tpayloads[1] = a.returnState;\n\t\t\tparents = [ b.parentCtx, a.parentCtx ];\n\t\t}\n\t\tvar a_ = new ArrayPredictionContext(parents, payloads);\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, a_);\n\t\t}\n\t\treturn a_;\n\t}\n}\n\n//\n// Handle case where at least one of {@code a} or {@code b} is\n// {@link //EMPTY}. In the following diagrams, the symbol {@code $} is used\n// to represent {@link //EMPTY}.\n//\n// <h2>Local-Context Merges</h2>\n//\n// <p>These local-context merge operations are used when {@code rootIsWildcard}\n// is true.</p>\n//\n// <p>{@link //EMPTY} is superset of any graph; return {@link //EMPTY}.<br>\n// <embed src=\"images/LocalMerge_EmptyRoot.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>{@link //EMPTY} and anything is {@code //EMPTY}, so merged parent is\n// {@code //EMPTY}; return left graph.<br>\n// <embed src=\"images/LocalMerge_EmptyParent.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Special case of last merge if local context.<br>\n// <embed src=\"images/LocalMerge_DiffRoots.svg\" type=\"image/svg+xml\"/></p>\n//\n// <h2>Full-Context Merges</h2>\n//\n// <p>These full-context merge operations are used when {@code rootIsWildcard}\n// is false.</p>\n//\n// <p><embed src=\"images/FullMerge_EmptyRoots.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Must keep all contexts; {@link //EMPTY} in array is a special value (and\n// null parent).<br>\n// <embed src=\"images/FullMerge_EmptyRoot.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p><embed src=\"images/FullMerge_SameRoot.svg\" type=\"image/svg+xml\"/></p>\n//\n// @param a the first {@link SingletonPredictionContext}\n// @param b the second {@link SingletonPredictionContext}\n// @param rootIsWildcard {@code true} if this is a local-context merge,\n// otherwise false to indicate a full-context merge\n// /\nfunction mergeRoot(a, b, rootIsWildcard) {\n\tif (rootIsWildcard) {\n\t\tif (a === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // // + b =//\n\t\t}\n\t\tif (b === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // a +// =//\n\t\t}\n\t} else {\n\t\tif (a === PredictionContext.EMPTY && b === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // $ + $ = $\n\t\t} else if (a === PredictionContext.EMPTY) { // $ + x = [$,x]\n\t\t\tvar payloads = [ b.returnState,\n\t\t\t\t\tPredictionContext.EMPTY_RETURN_STATE ];\n\t\t\tvar parents = [ b.parentCtx, null ];\n\t\t\treturn new ArrayPredictionContext(parents, payloads);\n\t\t} else if (b === PredictionContext.EMPTY) { // x + $ = [$,x] ($ is always first if present)\n\t\t\tvar payloads = [ a.returnState, PredictionContext.EMPTY_RETURN_STATE ];\n\t\t\tvar parents = [ a.parentCtx, null ];\n\t\t\treturn new ArrayPredictionContext(parents, payloads);\n\t\t}\n\t}\n\treturn null;\n}\n\n//\n// Merge two {@link ArrayPredictionContext} instances.\n//\n// <p>Different tops, different parents.<br>\n// <embed src=\"images/ArrayMerge_DiffTopDiffPar.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Shared top, same parents.<br>\n// <embed src=\"images/ArrayMerge_ShareTopSamePar.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Shared top, different parents.<br>\n// <embed src=\"images/ArrayMerge_ShareTopDiffPar.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Shared top, all shared parents.<br>\n// <embed src=\"images/ArrayMerge_ShareTopSharePar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Equal tops, merge parents and reduce top to\n// {@link SingletonPredictionContext}.<br>\n// <embed src=\"images/ArrayMerge_EqualTop.svg\" type=\"image/svg+xml\"/></p>\n// /\nfunction mergeArrays(a, b, rootIsWildcard, mergeCache) {\n\tif (mergeCache !== null) {\n\t\tvar previous = mergeCache.get(a, b);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t\tprevious = mergeCache.get(b, a);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t}\n\t// merge sorted payloads a + b => M\n\tvar i = 0; // walks a\n\tvar j = 0; // walks b\n\tvar k = 0; // walks target M array\n\n\tvar mergedReturnStates = [];\n\tvar mergedParents = [];\n\t// walk and merge to yield mergedParents, mergedReturnStates\n\twhile (i < a.returnStates.length && j < b.returnStates.length) {\n\t\tvar a_parent = a.parents[i];\n\t\tvar b_parent = b.parents[j];\n\t\tif (a.returnStates[i] === b.returnStates[j]) {\n\t\t\t// same payload (stack tops are equal), must yield merged singleton\n\t\t\tvar payload = a.returnStates[i];\n\t\t\t// $+$ = $\n\t\t\tvar bothDollars = payload === PredictionContext.EMPTY_RETURN_STATE &&\n\t\t\t\t\ta_parent === null && b_parent === null;\n\t\t\tvar ax_ax = (a_parent !== null && b_parent !== null && a_parent === b_parent); // ax+ax\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// ->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// ax\n\t\t\tif (bothDollars || ax_ax) {\n\t\t\t\tmergedParents[k] = a_parent; // choose left\n\t\t\t\tmergedReturnStates[k] = payload;\n\t\t\t} else { // ax+ay -> a'[x,y]\n\t\t\t\tvar mergedParent = merge(a_parent, b_parent, rootIsWildcard, mergeCache);\n\t\t\t\tmergedParents[k] = mergedParent;\n\t\t\t\tmergedReturnStates[k] = payload;\n\t\t\t}\n\t\t\ti += 1; // hop over left one as usual\n\t\t\tj += 1; // but also skip one in right side since we merge\n\t\t} else if (a.returnStates[i] < b.returnStates[j]) { // copy a[i] to M\n\t\t\tmergedParents[k] = a_parent;\n\t\t\tmergedReturnStates[k] = a.returnStates[i];\n\t\t\ti += 1;\n\t\t} else { // b > a, copy b[j] to M\n\t\t\tmergedParents[k] = b_parent;\n\t\t\tmergedReturnStates[k] = b.returnStates[j];\n\t\t\tj += 1;\n\t\t}\n\t\tk += 1;\n\t}\n\t// copy over any payloads remaining in either array\n\tif (i < a.returnStates.length) {\n\t\tfor (var p = i; p < a.returnStates.length; p++) {\n\t\t\tmergedParents[k] = a.parents[p];\n\t\t\tmergedReturnStates[k] = a.returnStates[p];\n\t\t\tk += 1;\n\t\t}\n\t} else {\n\t\tfor (var p = j; p < b.returnStates.length; p++) {\n\t\t\tmergedParents[k] = b.parents[p];\n\t\t\tmergedReturnStates[k] = b.returnStates[p];\n\t\t\tk += 1;\n\t\t}\n\t}\n\t// trim merged if we combined a few that had same stack tops\n\tif (k < mergedParents.length) { // write index < last position; trim\n\t\tif (k === 1) { // for just one merged element, return singleton top\n\t\t\tvar a_ = SingletonPredictionContext.create(mergedParents[0],\n\t\t\t\t\tmergedReturnStates[0]);\n\t\t\tif (mergeCache !== null) {\n\t\t\t\tmergeCache.set(a, b, a_);\n\t\t\t}\n\t\t\treturn a_;\n\t\t}\n\t\tmergedParents = mergedParents.slice(0, k);\n\t\tmergedReturnStates = mergedReturnStates.slice(0, k);\n\t}\n\n\tvar M = new ArrayPredictionContext(mergedParents, mergedReturnStates);\n\n\t// if we created same array as a or b, return that instead\n\t// TODO: track whether this is possible above during merge sort for speed\n\tif (M === a) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, a);\n\t\t}\n\t\treturn a;\n\t}\n\tif (M === b) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, b);\n\t\t}\n\t\treturn b;\n\t}\n\tcombineCommonParents(mergedParents);\n\n\tif (mergeCache !== null) {\n\t\tmergeCache.set(a, b, M);\n\t}\n\treturn M;\n}\n\n//\n// Make pass over all <em>M</em> {@code parents}; merge any {@code equals()}\n// ones.\n// /\nfunction combineCommonParents(parents) {\n\tvar uniqueParents = {};\n\n\tfor (var p = 0; p < parents.length; p++) {\n\t\tvar parent = parents[p];\n\t\tif (!(parent in uniqueParents)) {\n\t\t\tuniqueParents[parent] = parent;\n\t\t}\n\t}\n\tfor (var q = 0; q < parents.length; q++) {\n\t\tparents[q] = uniqueParents[parents[q]];\n\t}\n}\n\nfunction getCachedPredictionContext(context, contextCache, visited) {\n\tif (context.isEmpty()) {\n\t\treturn context;\n\t}\n\tvar existing = visited[context] || null;\n\tif (existing !== null) {\n\t\treturn existing;\n\t}\n\texisting = contextCache.get(context);\n\tif (existing !== null) {\n\t\tvisited[context] = existing;\n\t\treturn existing;\n\t}\n\tvar changed = false;\n\tvar parents = [];\n\tfor (var i = 0; i < parents.length; i++) {\n\t\tvar parent = getCachedPredictionContext(context.getParent(i), contextCache, visited);\n\t\tif (changed || parent !== context.getParent(i)) {\n\t\t\tif (!changed) {\n\t\t\t\tparents = [];\n\t\t\t\tfor (var j = 0; j < context.length; j++) {\n\t\t\t\t\tparents[j] = context.getParent(j);\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tparents[i] = parent;\n\t\t}\n\t}\n\tif (!changed) {\n\t\tcontextCache.add(context);\n\t\tvisited[context] = context;\n\t\treturn context;\n\t}\n\tvar updated = null;\n\tif (parents.length === 0) {\n\t\tupdated = PredictionContext.EMPTY;\n\t} else if (parents.length === 1) {\n\t\tupdated = SingletonPredictionContext.create(parents[0], context\n\t\t\t\t.getReturnState(0));\n\t} else {\n\t\tupdated = new ArrayPredictionContext(parents, context.returnStates);\n\t}\n\tcontextCache.add(updated);\n\tvisited[updated] = updated;\n\tvisited[context] = updated;\n\n\treturn updated;\n}\n\n// ter's recursive version of Sam's getAllNodes()\nfunction getAllContextNodes(context, nodes, visited) {\n\tif (nodes === null) {\n\t\tnodes = [];\n\t\treturn getAllContextNodes(context, nodes, visited);\n\t} else if (visited === null) {\n\t\tvisited = {};\n\t\treturn getAllContextNodes(context, nodes, visited);\n\t} else {\n\t\tif (context === null || visited[context] !== null) {\n\t\t\treturn nodes;\n\t\t}\n\t\tvisited[context] = context;\n\t\tnodes.push(context);\n\t\tfor (var i = 0; i < context.length; i++) {\n\t\t\tgetAllContextNodes(context.getParent(i), nodes, visited);\n\t\t}\n\t\treturn nodes;\n\t}\n}\n\nexports.merge = merge;\nexports.PredictionContext = PredictionContext;\nexports.PredictionContextCache = PredictionContextCache;\nexports.SingletonPredictionContext = SingletonPredictionContext;\nexports.predictionContextFromRuleContext = predictionContextFromRuleContext;\nexports.getCachedPredictionContext = getCachedPredictionContext;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar Token = require('./Token').Token;\nvar ConsoleErrorListener = require('./error/ErrorListener').ConsoleErrorListener;\nvar ProxyErrorListener = require('./error/ErrorListener').ProxyErrorListener;\n\nfunction Recognizer() {\n this._listeners = [ ConsoleErrorListener.INSTANCE ];\n this._interp = null;\n this._stateNumber = -1;\n return this;\n}\n\nRecognizer.tokenTypeMapCache = {};\nRecognizer.ruleIndexMapCache = {};\n\n\nRecognizer.prototype.checkVersion = function(toolVersion) {\n var runtimeVersion = \"4.7.2\";\n if (runtimeVersion!==toolVersion) {\n console.log(\"ANTLR runtime and generated code versions disagree: \"+runtimeVersion+\"!=\"+toolVersion);\n }\n};\n\nRecognizer.prototype.addErrorListener = function(listener) {\n this._listeners.push(listener);\n};\n\nRecognizer.prototype.removeErrorListeners = function() {\n this._listeners = [];\n};\n\nRecognizer.prototype.getTokenTypeMap = function() {\n var tokenNames = this.getTokenNames();\n if (tokenNames===null) {\n throw(\"The current recognizer does not provide a list of token names.\");\n }\n var result = this.tokenTypeMapCache[tokenNames];\n if(result===undefined) {\n result = tokenNames.reduce(function(o, k, i) { o[k] = i; });\n result.EOF = Token.EOF;\n this.tokenTypeMapCache[tokenNames] = result;\n }\n return result;\n};\n\n// Get a map from rule names to rule indexes.\n//\n// <p>Used for XPath and tree pattern compilation.</p>\n//\nRecognizer.prototype.getRuleIndexMap = function() {\n var ruleNames = this.ruleNames;\n if (ruleNames===null) {\n throw(\"The current recognizer does not provide a list of rule names.\");\n }\n var result = this.ruleIndexMapCache[ruleNames];\n if(result===undefined) {\n result = ruleNames.reduce(function(o, k, i) { o[k] = i; });\n this.ruleIndexMapCache[ruleNames] = result;\n }\n return result;\n};\n\nRecognizer.prototype.getTokenType = function(tokenName) {\n var ttype = this.getTokenTypeMap()[tokenName];\n if (ttype !==undefined) {\n return ttype;\n } else {\n return Token.INVALID_TYPE;\n }\n};\n\n\n// What is the error header, normally line/character position information?//\nRecognizer.prototype.getErrorHeader = function(e) {\n var line = e.getOffendingToken().line;\n var column = e.getOffendingToken().column;\n return \"line \" + line + \":\" + column;\n};\n\n\n// How should a token be displayed in an error message? The default\n// is to display just the text, but during development you might\n// want to have a lot of information spit out. Override in that case\n// to use t.toString() (which, for CommonToken, dumps everything about\n// the token). This is better than forcing you to override a method in\n// your token objects because you don't have to go modify your lexer\n// so that it creates a new Java type.\n//\n// @deprecated This method is not called by the ANTLR 4 Runtime. Specific\n// implementations of {@link ANTLRErrorStrategy} may provide a similar\n// feature when necessary. For example, see\n// {@link DefaultErrorStrategy//getTokenErrorDisplay}.\n//\nRecognizer.prototype.getTokenErrorDisplay = function(t) {\n if (t===null) {\n return \"<no token>\";\n }\n var s = t.text;\n if (s===null) {\n if (t.type===Token.EOF) {\n s = \"<EOF>\";\n } else {\n s = \"<\" + t.type + \">\";\n }\n }\n s = s.replace(\"\\n\",\"\\\\n\").replace(\"\\r\",\"\\\\r\").replace(\"\\t\",\"\\\\t\");\n return \"'\" + s + \"'\";\n};\n\nRecognizer.prototype.getErrorListenerDispatch = function() {\n return new ProxyErrorListener(this._listeners);\n};\n\n// subclass needs to override these if there are sempreds or actions\n// that the ATN interp needs to execute\nRecognizer.prototype.sempred = function(localctx, ruleIndex, actionIndex) {\n return true;\n};\n\nRecognizer.prototype.precpred = function(localctx , precedence) {\n return true;\n};\n\n//Indicate that the recognizer has changed internal state that is\n//consistent with the ATN state passed in. This way we always know\n//where we are in the ATN as the parser goes along. The rule\n//context objects form a stack that lets us see the stack of\n//invoking rules. Combine this and we have complete ATN\n//configuration information.\n\nObject.defineProperty(Recognizer.prototype, \"state\", {\n\tget : function() {\n\t\treturn this._stateNumber;\n\t},\n\tset : function(state) {\n\t\tthis._stateNumber = state;\n\t}\n});\n\n\nexports.Recognizer = Recognizer;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// A rule context is a record of a single rule invocation. It knows\n// which context invoked it, if any. If there is no parent context, then\n// naturally the invoking state is not valid. The parent link\n// provides a chain upwards from the current rule invocation to the root\n// of the invocation tree, forming a stack. We actually carry no\n// information about the rule associated with this context (except\n// when parsing). We keep only the state number of the invoking state from\n// the ATN submachine that invoked this. Contrast this with the s\n// pointer inside ParserRuleContext that tracks the current state\n// being \"executed\" for the current rule.\n//\n// The parent contexts are useful for computing lookahead sets and\n// getting error information.\n//\n// These objects are used during parsing and prediction.\n// For the special case of parsers, we use the subclass\n// ParserRuleContext.\n//\n// @see ParserRuleContext\n///\n\nvar RuleNode = require('./tree/Tree').RuleNode;\nvar INVALID_INTERVAL = require('./tree/Tree').INVALID_INTERVAL;\nvar INVALID_ALT_NUMBER = require('./atn/ATN').INVALID_ALT_NUMBER;\n\nfunction RuleContext(parent, invokingState) {\n\tRuleNode.call(this);\n\t// What context invoked this rule?\n\tthis.parentCtx = parent || null;\n\t// What state invoked the rule associated with this context?\n\t// The \"return address\" is the followState of invokingState\n\t// If parent is null, this should be -1.\n\tthis.invokingState = invokingState || -1;\n\treturn this;\n}\n\nRuleContext.prototype = Object.create(RuleNode.prototype);\nRuleContext.prototype.constructor = RuleContext;\n\nRuleContext.prototype.depth = function() {\n\tvar n = 0;\n\tvar p = this;\n\twhile (p !== null) {\n\t\tp = p.parentCtx;\n\t\tn += 1;\n\t}\n\treturn n;\n};\n\n// A context is empty if there is no invoking state; meaning nobody call\n// current context.\nRuleContext.prototype.isEmpty = function() {\n\treturn this.invokingState === -1;\n};\n\n// satisfy the ParseTree / SyntaxTree interface\n\nRuleContext.prototype.getSourceInterval = function() {\n\treturn INVALID_INTERVAL;\n};\n\nRuleContext.prototype.getRuleContext = function() {\n\treturn this;\n};\n\nRuleContext.prototype.getPayload = function() {\n\treturn this;\n};\n\n// Return the combined text of all child nodes. This method only considers\n// tokens which have been added to the parse tree.\n// <p>\n// Since tokens on hidden channels (e.g. whitespace or comments) are not\n// added to the parse trees, they will not appear in the output of this\n// method.\n// /\nRuleContext.prototype.getText = function() {\n\tif (this.getChildCount() === 0) {\n\t\treturn \"\";\n\t} else {\n\t\treturn this.children.map(function(child) {\n\t\t\treturn child.getText();\n\t\t}).join(\"\");\n\t}\n};\n\n// For rule associated with this parse tree internal node, return\n// the outer alternative number used to match the input. Default\n// implementation does not compute nor store this alt num. Create\n// a subclass of ParserRuleContext with backing field and set\n// option contextSuperClass.\n// to set it.\nRuleContext.prototype.getAltNumber = function() { return INVALID_ALT_NUMBER; }\n\n// Set the outer alternative number for this context node. Default\n// implementation does nothing to avoid backing field overhead for\n// trees that don't need it. Create\n// a subclass of ParserRuleContext with backing field and set\n// option contextSuperClass.\nRuleContext.prototype.setAltNumber = function(altNumber) { }\n\nRuleContext.prototype.getChild = function(i) {\n\treturn null;\n};\n\nRuleContext.prototype.getChildCount = function() {\n\treturn 0;\n};\n\nRuleContext.prototype.accept = function(visitor) {\n\treturn visitor.visitChildren(this);\n};\n\n//need to manage circular dependencies, so export now\nexports.RuleContext = RuleContext;\nvar Trees = require('./tree/Trees').Trees;\n\n\n// Print out a whole tree, not just a node, in LISP format\n// (root child1 .. childN). Print just a node if this is a leaf.\n//\n\nRuleContext.prototype.toStringTree = function(ruleNames, recog) {\n\treturn Trees.toStringTree(this, ruleNames, recog);\n};\n\nRuleContext.prototype.toString = function(ruleNames, stop) {\n\truleNames = ruleNames || null;\n\tstop = stop || null;\n\tvar p = this;\n\tvar s = \"[\";\n\twhile (p !== null && p !== stop) {\n\t\tif (ruleNames === null) {\n\t\t\tif (!p.isEmpty()) {\n\t\t\t\ts += p.invokingState;\n\t\t\t}\n\t\t} else {\n\t\t\tvar ri = p.ruleIndex;\n\t\t\tvar ruleName = (ri >= 0 && ri < ruleNames.length) ? ruleNames[ri]\n\t\t\t\t\t: \"\" + ri;\n\t\t\ts += ruleName;\n\t\t}\n\t\tif (p.parentCtx !== null && (ruleNames !== null || !p.parentCtx.isEmpty())) {\n\t\t\ts += \" \";\n\t\t}\n\t\tp = p.parentCtx;\n\t}\n\ts += \"]\";\n\treturn s;\n};\n\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// A token has properties: text, type, line, character position in the line\n// (so we can ignore tabs), token channel, index, and source from which\n// we obtained this token.\n\nfunction Token() {\n\tthis.source = null;\n\tthis.type = null; // token type of the token\n\tthis.channel = null; // The parser ignores everything not on DEFAULT_CHANNEL\n\tthis.start = null; // optional; return -1 if not implemented.\n\tthis.stop = null; // optional; return -1 if not implemented.\n\tthis.tokenIndex = null; // from 0..n-1 of the token object in the input stream\n\tthis.line = null; // line=1..n of the 1st character\n\tthis.column = null; // beginning of the line at which it occurs, 0..n-1\n\tthis._text = null; // text of the token.\n\treturn this;\n}\n\nToken.INVALID_TYPE = 0;\n\n// During lookahead operations, this \"token\" signifies we hit rule end ATN state\n// and did not follow it despite needing to.\nToken.EPSILON = -2;\n\nToken.MIN_USER_TOKEN_TYPE = 1;\n\nToken.EOF = -1;\n\n// All tokens go to the parser (unless skip() is called in that rule)\n// on a particular \"channel\". The parser tunes to a particular channel\n// so that whitespace etc... can go to the parser on a \"hidden\" channel.\n\nToken.DEFAULT_CHANNEL = 0;\n\n// Anything on different channel than DEFAULT_CHANNEL is not parsed\n// by parser.\n\nToken.HIDDEN_CHANNEL = 1;\n\n// Explicitly set the text for this token. If {code text} is not\n// {@code null}, then {@link //getText} will return this value rather than\n// extracting the text from the input.\n//\n// @param text The explicit text of the token, or {@code null} if the text\n// should be obtained from the input along with the start and stop indexes\n// of the token.\n\nObject.defineProperty(Token.prototype, \"text\", {\n\tget : function() {\n\t\treturn this._text;\n\t},\n\tset : function(text) {\n\t\tthis._text = text;\n\t}\n});\n\nToken.prototype.getTokenSource = function() {\n\treturn this.source[0];\n};\n\nToken.prototype.getInputStream = function() {\n\treturn this.source[1];\n};\n\nfunction CommonToken(source, type, channel, start, stop) {\n\tToken.call(this);\n\tthis.source = source !== undefined ? source : CommonToken.EMPTY_SOURCE;\n\tthis.type = type !== undefined ? type : null;\n\tthis.channel = channel !== undefined ? channel : Token.DEFAULT_CHANNEL;\n\tthis.start = start !== undefined ? start : -1;\n\tthis.stop = stop !== undefined ? stop : -1;\n\tthis.tokenIndex = -1;\n\tif (this.source[0] !== null) {\n\t\tthis.line = source[0].line;\n\t\tthis.column = source[0].column;\n\t} else {\n\t\tthis.column = -1;\n\t}\n\treturn this;\n}\n\nCommonToken.prototype = Object.create(Token.prototype);\nCommonToken.prototype.constructor = CommonToken;\n\n// An empty {@link Pair} which is used as the default value of\n// {@link //source} for tokens that do not have a source.\nCommonToken.EMPTY_SOURCE = [ null, null ];\n\n// Constructs a new {@link CommonToken} as a copy of another {@link Token}.\n//\n// <p>\n// If {@code oldToken} is also a {@link CommonToken} instance, the newly\n// constructed token will share a reference to the {@link //text} field and\n// the {@link Pair} stored in {@link //source}. Otherwise, {@link //text} will\n// be assigned the result of calling {@link //getText}, and {@link //source}\n// will be constructed from the result of {@link Token//getTokenSource} and\n// {@link Token//getInputStream}.</p>\n//\n// @param oldToken The token to copy.\n//\nCommonToken.prototype.clone = function() {\n\tvar t = new CommonToken(this.source, this.type, this.channel, this.start,\n\t\t\tthis.stop);\n\tt.tokenIndex = this.tokenIndex;\n\tt.line = this.line;\n\tt.column = this.column;\n\tt.text = this.text;\n\treturn t;\n};\n\nObject.defineProperty(CommonToken.prototype, \"text\", {\n\tget : function() {\n\t\tif (this._text !== null) {\n\t\t\treturn this._text;\n\t\t}\n\t\tvar input = this.getInputStream();\n\t\tif (input === null) {\n\t\t\treturn null;\n\t\t}\n\t\tvar n = input.size;\n\t\tif (this.start < n && this.stop < n) {\n\t\t\treturn input.getText(this.start, this.stop);\n\t\t} else {\n\t\t\treturn \"<EOF>\";\n\t\t}\n\t},\n\tset : function(text) {\n\t\tthis._text = text;\n\t}\n});\n\nCommonToken.prototype.toString = function() {\n\tvar txt = this.text;\n\tif (txt !== null) {\n\t\ttxt = txt.replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/\\t/g, \"\\\\t\");\n\t} else {\n\t\ttxt = \"<no text>\";\n\t}\n\treturn \"[@\" + this.tokenIndex + \",\" + this.start + \":\" + this.stop + \"='\" +\n\t\t\ttxt + \"',<\" + this.type + \">\" +\n\t\t\t(this.channel > 0 ? \",channel=\" + this.channel : \"\") + \",\" +\n\t\t\tthis.line + \":\" + this.column + \"]\";\n};\n\nexports.Token = Token;\nexports.CommonToken = CommonToken;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nfunction arrayToString(a) {\n return \"[\" + a.join(\", \") + \"]\";\n}\n\nString.prototype.seed = String.prototype.seed || Math.round(Math.random() * Math.pow(2, 32));\n\nString.prototype.hashCode = function () {\n var remainder, bytes, h1, h1b, c1, c1b, c2, c2b, k1, i,\n key = this.toString();\n\n remainder = key.length & 3; // key.length % 4\n bytes = key.length - remainder;\n h1 = String.prototype.seed;\n c1 = 0xcc9e2d51;\n c2 = 0x1b873593;\n i = 0;\n\n while (i < bytes) {\n k1 =\n ((key.charCodeAt(i) & 0xff)) |\n ((key.charCodeAt(++i) & 0xff) << 8) |\n ((key.charCodeAt(++i) & 0xff) << 16) |\n ((key.charCodeAt(++i) & 0xff) << 24);\n ++i;\n\n k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\n\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\n h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\n }\n\n k1 = 0;\n\n switch (remainder) {\n case 3:\n k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\n case 2:\n k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\n case 1:\n k1 ^= (key.charCodeAt(i) & 0xff);\n\n k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= k1;\n }\n\n h1 ^= key.length;\n\n h1 ^= h1 >>> 16;\n h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= h1 >>> 13;\n h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\n h1 ^= h1 >>> 16;\n\n return h1 >>> 0;\n};\n\nfunction standardEqualsFunction(a, b) {\n return a.equals(b);\n}\n\nfunction standardHashCodeFunction(a) {\n return a.hashCode();\n}\n\nfunction Set(hashFunction, equalsFunction) {\n this.data = {};\n this.hashFunction = hashFunction || standardHashCodeFunction;\n this.equalsFunction = equalsFunction || standardEqualsFunction;\n return this;\n}\n\nObject.defineProperty(Set.prototype, \"length\", {\n get: function () {\n var l = 0;\n for (var key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l + this.data[key].length;\n }\n }\n return l;\n }\n});\n\nSet.prototype.add = function (value) {\n var hash = this.hashFunction(value);\n var key = \"hash_\" + hash;\n if (key in this.data) {\n var values = this.data[key];\n for (var i = 0; i < values.length; i++) {\n if (this.equalsFunction(value, values[i])) {\n return values[i];\n }\n }\n values.push(value);\n return value;\n } else {\n this.data[key] = [value];\n return value;\n }\n};\n\nSet.prototype.contains = function (value) {\n return this.get(value) != null;\n};\n\nSet.prototype.get = function (value) {\n var hash = this.hashFunction(value);\n var key = \"hash_\" + hash;\n if (key in this.data) {\n var values = this.data[key];\n for (var i = 0; i < values.length; i++) {\n if (this.equalsFunction(value, values[i])) {\n return values[i];\n }\n }\n }\n return null;\n};\n\nSet.prototype.values = function () {\n var l = [];\n for (var key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l.concat(this.data[key]);\n }\n }\n return l;\n};\n\nSet.prototype.toString = function () {\n return arrayToString(this.values());\n};\n\nfunction BitSet() {\n this.data = [];\n return this;\n}\n\nBitSet.prototype.add = function (value) {\n this.data[value] = true;\n};\n\nBitSet.prototype.or = function (set) {\n var bits = this;\n Object.keys(set.data).map(function (alt) {\n bits.add(alt);\n });\n};\n\nBitSet.prototype.remove = function (value) {\n delete this.data[value];\n};\n\nBitSet.prototype.contains = function (value) {\n return this.data[value] === true;\n};\n\nBitSet.prototype.values = function () {\n return Object.keys(this.data);\n};\n\nBitSet.prototype.minValue = function () {\n return Math.min.apply(null, this.values());\n};\n\nBitSet.prototype.hashCode = function () {\n var hash = new Hash();\n hash.update(this.values());\n return hash.finish();\n};\n\nBitSet.prototype.equals = function (other) {\n if (!(other instanceof BitSet)) {\n return false;\n }\n return this.hashCode() === other.hashCode();\n};\n\nObject.defineProperty(BitSet.prototype, \"length\", {\n get: function () {\n return this.values().length;\n }\n});\n\nBitSet.prototype.toString = function () {\n return \"{\" + this.values().join(\", \") + \"}\";\n};\n\nfunction Map(hashFunction, equalsFunction) {\n this.data = {};\n this.hashFunction = hashFunction || standardHashCodeFunction;\n this.equalsFunction = equalsFunction || standardEqualsFunction;\n return this;\n}\n\nObject.defineProperty(Map.prototype, \"length\", {\n get: function () {\n var l = 0;\n for (var hashKey in this.data) {\n if (hashKey.indexOf(\"hash_\") === 0) {\n l = l + this.data[hashKey].length;\n }\n }\n return l;\n }\n});\n\nMap.prototype.put = function (key, value) {\n var hashKey = \"hash_\" + this.hashFunction(key);\n if (hashKey in this.data) {\n var entries = this.data[hashKey];\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n if (this.equalsFunction(key, entry.key)) {\n var oldValue = entry.value;\n entry.value = value;\n return oldValue;\n }\n }\n entries.push({key:key, value:value});\n return value;\n } else {\n this.data[hashKey] = [{key:key, value:value}];\n return value;\n }\n};\n\nMap.prototype.containsKey = function (key) {\n var hashKey = \"hash_\" + this.hashFunction(key);\n if(hashKey in this.data) {\n var entries = this.data[hashKey];\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n if (this.equalsFunction(key, entry.key))\n return true;\n }\n }\n return false;\n};\n\nMap.prototype.get = function (key) {\n var hashKey = \"hash_\" + this.hashFunction(key);\n if(hashKey in this.data) {\n var entries = this.data[hashKey];\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n if (this.equalsFunction(key, entry.key))\n return entry.value;\n }\n }\n return null;\n};\n\nMap.prototype.entries = function () {\n var l = [];\n for (var key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l.concat(this.data[key]);\n }\n }\n return l;\n};\n\n\nMap.prototype.getKeys = function () {\n return this.entries().map(function(e) {\n return e.key;\n });\n};\n\n\nMap.prototype.getValues = function () {\n return this.entries().map(function(e) {\n return e.value;\n });\n};\n\n\nMap.prototype.toString = function () {\n var ss = this.entries().map(function(entry) {\n return '{' + entry.key + ':' + entry.value + '}';\n });\n return '[' + ss.join(\", \") + ']';\n};\n\n\nfunction AltDict() {\n this.data = {};\n return this;\n}\n\n\nAltDict.prototype.get = function (key) {\n key = \"k-\" + key;\n if (key in this.data) {\n return this.data[key];\n } else {\n return null;\n }\n};\n\nAltDict.prototype.put = function (key, value) {\n key = \"k-\" + key;\n this.data[key] = value;\n};\n\nAltDict.prototype.values = function () {\n var data = this.data;\n var keys = Object.keys(this.data);\n return keys.map(function (key) {\n return data[key];\n });\n};\n\nfunction DoubleDict() {\n return this;\n}\n\nfunction Hash() {\n this.count = 0;\n this.hash = 0;\n return this;\n}\n\nHash.prototype.update = function () {\n for(var i=0;i<arguments.length;i++) {\n var value = arguments[i];\n if (value == null)\n continue;\n if(Array.isArray(value))\n this.update.apply(value);\n else {\n var k = 0;\n switch (typeof(value)) {\n case 'undefined':\n case 'function':\n continue;\n case 'number':\n case 'boolean':\n k = value;\n break;\n case 'string':\n k = value.hashCode();\n break;\n default:\n value.updateHashCode(this);\n continue;\n }\n k = k * 0xCC9E2D51;\n k = (k << 15) | (k >>> (32 - 15));\n k = k * 0x1B873593;\n this.count = this.count + 1;\n var hash = this.hash ^ k;\n hash = (hash << 13) | (hash >>> (32 - 13));\n hash = hash * 5 + 0xE6546B64;\n this.hash = hash;\n }\n }\n}\n\nHash.prototype.finish = function () {\n var hash = this.hash ^ (this.count * 4);\n hash = hash ^ (hash >>> 16);\n hash = hash * 0x85EBCA6B;\n hash = hash ^ (hash >>> 13);\n hash = hash * 0xC2B2AE35;\n hash = hash ^ (hash >>> 16);\n return hash;\n}\n\nfunction hashStuff() {\n var hash = new Hash();\n hash.update.apply(arguments);\n return hash.finish();\n}\n\nDoubleDict.prototype.get = function (a, b) {\n var d = this[a] || null;\n return d === null ? null : (d[b] || null);\n};\n\nDoubleDict.prototype.set = function (a, b, o) {\n var d = this[a] || null;\n if (d === null) {\n d = {};\n this[a] = d;\n }\n d[b] = o;\n};\n\n\nfunction escapeWhitespace(s, escapeSpaces) {\n s = s.replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\");\n if (escapeSpaces) {\n s = s.replace(/ /g, \"\\u00B7\");\n }\n return s;\n}\n\nfunction titleCase(str) {\n return str.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1);\n });\n};\n\nfunction equalArrays(a, b)\n{\n if (!Array.isArray(a) || !Array.isArray(b))\n return false;\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (var i = 0; i < a.length; i++) {\n if (a[i] == b[i])\n continue;\n if (!a[i].equals(b[i]))\n return false;\n }\n return true;\n};\n\nexports.Hash = Hash;\nexports.Set = Set;\nexports.Map = Map;\nexports.BitSet = BitSet;\nexports.AltDict = AltDict;\nexports.DoubleDict = DoubleDict;\nexports.hashStuff = hashStuff;\nexports.escapeWhitespace = escapeWhitespace;\nexports.arrayToString = arrayToString;\nexports.titleCase = titleCase;\nexports.equalArrays = equalArrays;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar LL1Analyzer = require('./../LL1Analyzer').LL1Analyzer;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\n\nfunction ATN(grammarType , maxTokenType) {\n\n // Used for runtime deserialization of ATNs from strings///\n // The type of the ATN.\n this.grammarType = grammarType;\n // The maximum value for any symbol recognized by a transition in the ATN.\n this.maxTokenType = maxTokenType;\n this.states = [];\n // Each subrule/rule is a decision point and we must track them so we\n // can go back later and build DFA predictors for them. This includes\n // all the rules, subrules, optional blocks, ()+, ()* etc...\n this.decisionToState = [];\n // Maps from rule index to starting state number.\n this.ruleToStartState = [];\n // Maps from rule index to stop state number.\n this.ruleToStopState = null;\n this.modeNameToStartState = {};\n // For lexer ATNs, this maps the rule index to the resulting token type.\n // For parser ATNs, this maps the rule index to the generated bypass token\n // type if the\n // {@link ATNDeserializationOptions//isGenerateRuleBypassTransitions}\n // deserialization option was specified; otherwise, this is {@code null}.\n this.ruleToTokenType = null;\n // For lexer ATNs, this is an array of {@link LexerAction} objects which may\n // be referenced by action transitions in the ATN.\n this.lexerActions = null;\n this.modeToStartState = [];\n\n return this;\n}\n\n// Compute the set of valid tokens that can occur starting in state {@code s}.\n// If {@code ctx} is null, the set of tokens will not include what can follow\n// the rule surrounding {@code s}. In other words, the set will be\n// restricted to tokens reachable staying within {@code s}'s rule.\nATN.prototype.nextTokensInContext = function(s, ctx) {\n var anal = new LL1Analyzer(this);\n return anal.LOOK(s, null, ctx);\n};\n\n// Compute the set of valid tokens that can occur starting in {@code s} and\n// staying in same rule. {@link Token//EPSILON} is in set if we reach end of\n// rule.\nATN.prototype.nextTokensNoContext = function(s) {\n if (s.nextTokenWithinRule !== null ) {\n return s.nextTokenWithinRule;\n }\n s.nextTokenWithinRule = this.nextTokensInContext(s, null);\n s.nextTokenWithinRule.readOnly = true;\n return s.nextTokenWithinRule;\n};\n\nATN.prototype.nextTokens = function(s, ctx) {\n if ( ctx===undefined ) {\n return this.nextTokensNoContext(s);\n } else {\n return this.nextTokensInContext(s, ctx);\n }\n};\n\nATN.prototype.addState = function( state) {\n if ( state !== null ) {\n state.atn = this;\n state.stateNumber = this.states.length;\n }\n this.states.push(state);\n};\n\nATN.prototype.removeState = function( state) {\n this.states[state.stateNumber] = null; // just free mem, don't shift states in list\n};\n\nATN.prototype.defineDecisionState = function( s) {\n this.decisionToState.push(s);\n s.decision = this.decisionToState.length-1;\n return s.decision;\n};\n\nATN.prototype.getDecisionState = function( decision) {\n if (this.decisionToState.length===0) {\n return null;\n } else {\n return this.decisionToState[decision];\n }\n};\n\n// Computes the set of input symbols which could follow ATN state number\n// {@code stateNumber} in the specified full {@code context}. This method\n// considers the complete parser context, but does not evaluate semantic\n// predicates (i.e. all predicates encountered during the calculation are\n// assumed true). If a path in the ATN exists from the starting state to the\n// {@link RuleStopState} of the outermost context without matching any\n// symbols, {@link Token//EOF} is added to the returned set.\n//\n// <p>If {@code context} is {@code null}, it is treated as\n// {@link ParserRuleContext//EMPTY}.</p>\n//\n// @param stateNumber the ATN state number\n// @param context the full parse context\n// @return The set of potentially valid input symbols which could follow the\n// specified state in the specified context.\n// @throws IllegalArgumentException if the ATN does not contain a state with\n// number {@code stateNumber}\nvar Token = require('./../Token').Token;\n\nATN.prototype.getExpectedTokens = function( stateNumber, ctx ) {\n if ( stateNumber < 0 || stateNumber >= this.states.length ) {\n throw(\"Invalid state number.\");\n }\n var s = this.states[stateNumber];\n var following = this.nextTokens(s);\n if (!following.contains(Token.EPSILON)) {\n return following;\n }\n var expected = new IntervalSet();\n expected.addSet(following);\n expected.removeOne(Token.EPSILON);\n while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\n var invokingState = this.states[ctx.invokingState];\n var rt = invokingState.transitions[0];\n following = this.nextTokens(rt.followState);\n expected.addSet(following);\n expected.removeOne(Token.EPSILON);\n ctx = ctx.parentCtx;\n }\n if (following.contains(Token.EPSILON)) {\n expected.addOne(Token.EOF);\n }\n return expected;\n};\n\nATN.INVALID_ALT_NUMBER = 0;\n\nexports.ATN = ATN;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// A tuple: (ATN state, predicted alt, syntactic, semantic context).\n// The syntactic context is a graph-structured stack node whose\n// path(s) to the root is the rule invocation(s)\n// chain used to arrive at the state. The semantic context is\n// the tree of semantic predicates encountered before reaching\n// an ATN state.\n///\n\nvar DecisionState = require('./ATNState').DecisionState;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar Hash = require(\"../Utils\").Hash;\n\n\nfunction checkParams(params, isCfg) {\n\tif(params===null) {\n\t\tvar result = { state:null, alt:null, context:null, semanticContext:null };\n\t\tif(isCfg) {\n\t\t\tresult.reachesIntoOuterContext = 0;\n\t\t}\n\t\treturn result;\n\t} else {\n\t\tvar props = {};\n\t\tprops.state = params.state || null;\n\t\tprops.alt = (params.alt === undefined) ? null : params.alt;\n\t\tprops.context = params.context || null;\n\t\tprops.semanticContext = params.semanticContext || null;\n\t\tif(isCfg) {\n\t\t\tprops.reachesIntoOuterContext = params.reachesIntoOuterContext || 0;\n\t\t\tprops.precedenceFilterSuppressed = params.precedenceFilterSuppressed || false;\n\t\t}\n\t\treturn props;\n\t}\n}\n\nfunction ATNConfig(params, config) {\n\tthis.checkContext(params, config);\n\tparams = checkParams(params);\n\tconfig = checkParams(config, true);\n // The ATN state associated with this configuration///\n this.state = params.state!==null ? params.state : config.state;\n // What alt (or lexer rule) is predicted by this configuration///\n this.alt = params.alt!==null ? params.alt : config.alt;\n // The stack of invoking states leading to the rule/states associated\n // with this config. We track only those contexts pushed during\n // execution of the ATN simulator.\n this.context = params.context!==null ? params.context : config.context;\n this.semanticContext = params.semanticContext!==null ? params.semanticContext :\n (config.semanticContext!==null ? config.semanticContext : SemanticContext.NONE);\n // We cannot execute predicates dependent upon local context unless\n // we know for sure we are in the correct context. Because there is\n // no way to do this efficiently, we simply cannot evaluate\n // dependent predicates unless we are in the rule that initially\n // invokes the ATN simulator.\n //\n // closure() tracks the depth of how far we dip into the\n // outer context: depth &gt; 0. Note that it may not be totally\n // accurate depth since I don't ever decrement. TODO: make it a boolean then\n this.reachesIntoOuterContext = config.reachesIntoOuterContext;\n this.precedenceFilterSuppressed = config.precedenceFilterSuppressed;\n return this;\n}\n\nATNConfig.prototype.checkContext = function(params, config) {\n\tif((params.context===null || params.context===undefined) &&\n\t\t\t(config===null || config.context===null || config.context===undefined)) {\n\t\tthis.context = null;\n\t}\n};\n\n\nATNConfig.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish();\n};\n\n\nATNConfig.prototype.updateHashCode = function(hash) {\n hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext);\n};\n\n// An ATN configuration is equal to another if both have\n// the same state, they predict the same alternative, and\n// syntactic/semantic contexts are the same.\n\nATNConfig.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof ATNConfig)) {\n return false;\n } else {\n return this.state.stateNumber===other.state.stateNumber &&\n this.alt===other.alt &&\n (this.context===null ? other.context===null : this.context.equals(other.context)) &&\n this.semanticContext.equals(other.semanticContext) &&\n this.precedenceFilterSuppressed===other.precedenceFilterSuppressed;\n }\n};\n\n\nATNConfig.prototype.hashCodeForConfigSet = function() {\n var hash = new Hash();\n hash.update(this.state.stateNumber, this.alt, this.semanticContext);\n return hash.finish();\n};\n\n\nATNConfig.prototype.equalsForConfigSet = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof ATNConfig)) {\n return false;\n } else {\n return this.state.stateNumber===other.state.stateNumber &&\n this.alt===other.alt &&\n this.semanticContext.equals(other.semanticContext);\n }\n};\n\n\nATNConfig.prototype.toString = function() {\n return \"(\" + this.state + \",\" + this.alt +\n (this.context!==null ? \",[\" + this.context.toString() + \"]\" : \"\") +\n (this.semanticContext !== SemanticContext.NONE ?\n (\",\" + this.semanticContext.toString())\n : \"\") +\n (this.reachesIntoOuterContext>0 ?\n (\",up=\" + this.reachesIntoOuterContext)\n : \"\") + \")\";\n};\n\n\nfunction LexerATNConfig(params, config) {\n\tATNConfig.call(this, params, config);\n\n // This is the backing field for {@link //getLexerActionExecutor}.\n\tvar lexerActionExecutor = params.lexerActionExecutor || null;\n this.lexerActionExecutor = lexerActionExecutor || (config!==null ? config.lexerActionExecutor : null);\n this.passedThroughNonGreedyDecision = config!==null ? this.checkNonGreedyDecision(config, this.state) : false;\n return this;\n}\n\nLexerATNConfig.prototype = Object.create(ATNConfig.prototype);\nLexerATNConfig.prototype.constructor = LexerATNConfig;\n\nLexerATNConfig.prototype.updateHashCode = function(hash) {\n hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext, this.passedThroughNonGreedyDecision, this.lexerActionExecutor);\n};\n\nLexerATNConfig.prototype.equals = function(other) {\n return this === other ||\n (other instanceof LexerATNConfig &&\n this.passedThroughNonGreedyDecision == other.passedThroughNonGreedyDecision &&\n (this.lexerActionExecutor ? this.lexerActionExecutor.equals(other.lexerActionExecutor) : !other.lexerActionExecutor) &&\n ATNConfig.prototype.equals.call(this, other));\n};\n\nLexerATNConfig.prototype.hashCodeForConfigSet = LexerATNConfig.prototype.hashCode;\n\nLexerATNConfig.prototype.equalsForConfigSet = LexerATNConfig.prototype.equals;\n\n\nLexerATNConfig.prototype.checkNonGreedyDecision = function(source, target) {\n return source.passedThroughNonGreedyDecision ||\n (target instanceof DecisionState) && target.nonGreedy;\n};\n\nexports.ATNConfig = ATNConfig;\nexports.LexerATNConfig = LexerATNConfig;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n//\n// Specialized {@link Set}{@code <}{@link ATNConfig}{@code >} that can track\n// info about the set, with support for combining similar configurations using a\n// graph-structured stack.\n///\n\nvar ATN = require('./ATN').ATN;\nvar Utils = require('./../Utils');\nvar Hash = Utils.Hash;\nvar Set = Utils.Set;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar merge = require('./../PredictionContext').merge;\n\nfunction hashATNConfig(c) {\n\treturn c.hashCodeForConfigSet();\n}\n\nfunction equalATNConfigs(a, b) {\n\tif ( a===b ) {\n\t\treturn true;\n\t} else if ( a===null || b===null ) {\n\t\treturn false;\n\t} else\n return a.equalsForConfigSet(b);\n }\n\n\nfunction ATNConfigSet(fullCtx) {\n\t//\n\t// The reason that we need this is because we don't want the hash map to use\n\t// the standard hash code and equals. We need all configurations with the\n\t// same\n\t// {@code (s,i,_,semctx)} to be equal. Unfortunately, this key effectively\n\t// doubles\n\t// the number of objects associated with ATNConfigs. The other solution is\n\t// to\n\t// use a hash table that lets us specify the equals/hashcode operation.\n\t// All configs but hashed by (s, i, _, pi) not including context. Wiped out\n\t// when we go readonly as this set becomes a DFA state.\n\tthis.configLookup = new Set(hashATNConfig, equalATNConfigs);\n\t// Indicates that this configuration set is part of a full context\n\t// LL prediction. It will be used to determine how to merge $. With SLL\n\t// it's a wildcard whereas it is not for LL context merge.\n\tthis.fullCtx = fullCtx === undefined ? true : fullCtx;\n\t// Indicates that the set of configurations is read-only. Do not\n\t// allow any code to manipulate the set; DFA states will point at\n\t// the sets and they must not change. This does not protect the other\n\t// fields; in particular, conflictingAlts is set after\n\t// we've made this readonly.\n\tthis.readOnly = false;\n\t// Track the elements as they are added to the set; supports get(i)///\n\tthis.configs = [];\n\n\t// TODO: these fields make me pretty uncomfortable but nice to pack up info\n\t// together, saves recomputation\n\t// TODO: can we track conflicts as they are added to save scanning configs\n\t// later?\n\tthis.uniqueAlt = 0;\n\tthis.conflictingAlts = null;\n\n\t// Used in parser and lexer. In lexer, it indicates we hit a pred\n\t// while computing a closure operation. Don't make a DFA state from this.\n\tthis.hasSemanticContext = false;\n\tthis.dipsIntoOuterContext = false;\n\n\tthis.cachedHashCode = -1;\n\n\treturn this;\n}\n\n// Adding a new config means merging contexts with existing configs for\n// {@code (s, i, pi, _)}, where {@code s} is the\n// {@link ATNConfig//state}, {@code i} is the {@link ATNConfig//alt}, and\n// {@code pi} is the {@link ATNConfig//semanticContext}. We use\n// {@code (s,i,pi)} as key.\n//\n// <p>This method updates {@link //dipsIntoOuterContext} and\n// {@link //hasSemanticContext} when necessary.</p>\n// /\nATNConfigSet.prototype.add = function(config, mergeCache) {\n\tif (mergeCache === undefined) {\n\t\tmergeCache = null;\n\t}\n\tif (this.readOnly) {\n\t\tthrow \"This set is readonly\";\n\t}\n\tif (config.semanticContext !== SemanticContext.NONE) {\n\t\tthis.hasSemanticContext = true;\n\t}\n\tif (config.reachesIntoOuterContext > 0) {\n\t\tthis.dipsIntoOuterContext = true;\n\t}\n\tvar existing = this.configLookup.add(config);\n\tif (existing === config) {\n\t\tthis.cachedHashCode = -1;\n\t\tthis.configs.push(config); // track order here\n\t\treturn true;\n\t}\n\t// a previous (s,i,pi,_), merge with it and save result\n\tvar rootIsWildcard = !this.fullCtx;\n\tvar merged = merge(existing.context, config.context, rootIsWildcard, mergeCache);\n\t// no need to check for existing.context, config.context in cache\n\t// since only way to create new graphs is \"call rule\" and here. We\n\t// cache at both places.\n\texisting.reachesIntoOuterContext = Math.max( existing.reachesIntoOuterContext, config.reachesIntoOuterContext);\n\t// make sure to preserve the precedence filter suppression during the merge\n\tif (config.precedenceFilterSuppressed) {\n\t\texisting.precedenceFilterSuppressed = true;\n\t}\n\texisting.context = merged; // replace context; no need to alt mapping\n\treturn true;\n};\n\nATNConfigSet.prototype.getStates = function() {\n\tvar states = new Set();\n\tfor (var i = 0; i < this.configs.length; i++) {\n\t\tstates.add(this.configs[i].state);\n\t}\n\treturn states;\n};\n\nATNConfigSet.prototype.getPredicates = function() {\n\tvar preds = [];\n\tfor (var i = 0; i < this.configs.length; i++) {\n\t\tvar c = this.configs[i].semanticContext;\n\t\tif (c !== SemanticContext.NONE) {\n\t\t\tpreds.push(c.semanticContext);\n\t\t}\n\t}\n\treturn preds;\n};\n\nObject.defineProperty(ATNConfigSet.prototype, \"items\", {\n\tget : function() {\n\t\treturn this.configs;\n\t}\n});\n\nATNConfigSet.prototype.optimizeConfigs = function(interpreter) {\n\tif (this.readOnly) {\n\t\tthrow \"This set is readonly\";\n\t}\n\tif (this.configLookup.length === 0) {\n\t\treturn;\n\t}\n\tfor (var i = 0; i < this.configs.length; i++) {\n\t\tvar config = this.configs[i];\n\t\tconfig.context = interpreter.getCachedContext(config.context);\n\t}\n};\n\nATNConfigSet.prototype.addAll = function(coll) {\n\tfor (var i = 0; i < coll.length; i++) {\n\t\tthis.add(coll[i]);\n\t}\n\treturn false;\n};\n\nATNConfigSet.prototype.equals = function(other) {\n\treturn this === other ||\n\t\t(other instanceof ATNConfigSet &&\n\t\tUtils.equalArrays(this.configs, other.configs) &&\n\t\tthis.fullCtx === other.fullCtx &&\n\t\tthis.uniqueAlt === other.uniqueAlt &&\n\t\tthis.conflictingAlts === other.conflictingAlts &&\n\t\tthis.hasSemanticContext === other.hasSemanticContext &&\n\t\tthis.dipsIntoOuterContext === other.dipsIntoOuterContext);\n};\n\nATNConfigSet.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish();\n};\n\n\nATNConfigSet.prototype.updateHashCode = function(hash) {\n\tif (this.readOnly) {\n\t\tif (this.cachedHashCode === -1) {\n var hash = new Hash();\n hash.update(this.configs);\n\t\t\tthis.cachedHashCode = hash.finish();\n\t\t}\n hash.update(this.cachedHashCode);\n\t} else {\n hash.update(this.configs);\n\t}\n};\n\n\nObject.defineProperty(ATNConfigSet.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.configs.length;\n\t}\n});\n\nATNConfigSet.prototype.isEmpty = function() {\n\treturn this.configs.length === 0;\n};\n\nATNConfigSet.prototype.contains = function(item) {\n\tif (this.configLookup === null) {\n\t\tthrow \"This method is not implemented for readonly sets.\";\n\t}\n\treturn this.configLookup.contains(item);\n};\n\nATNConfigSet.prototype.containsFast = function(item) {\n\tif (this.configLookup === null) {\n\t\tthrow \"This method is not implemented for readonly sets.\";\n\t}\n\treturn this.configLookup.containsFast(item);\n};\n\nATNConfigSet.prototype.clear = function() {\n\tif (this.readOnly) {\n\t\tthrow \"This set is readonly\";\n\t}\n\tthis.configs = [];\n\tthis.cachedHashCode = -1;\n\tthis.configLookup = new Set();\n};\n\nATNConfigSet.prototype.setReadonly = function(readOnly) {\n\tthis.readOnly = readOnly;\n\tif (readOnly) {\n\t\tthis.configLookup = null; // can't mod, no need for lookup cache\n\t}\n};\n\nATNConfigSet.prototype.toString = function() {\n\treturn Utils.arrayToString(this.configs) +\n\t\t(this.hasSemanticContext ? \",hasSemanticContext=\" + this.hasSemanticContext : \"\") +\n\t\t(this.uniqueAlt !== ATN.INVALID_ALT_NUMBER ? \",uniqueAlt=\" + this.uniqueAlt : \"\") +\n\t\t(this.conflictingAlts !== null ? \",conflictingAlts=\" + this.conflictingAlts : \"\") +\n\t\t(this.dipsIntoOuterContext ? \",dipsIntoOuterContext\" : \"\");\n};\n\nfunction OrderedATNConfigSet() {\n\tATNConfigSet.call(this);\n\tthis.configLookup = new Set();\n\treturn this;\n}\n\nOrderedATNConfigSet.prototype = Object.create(ATNConfigSet.prototype);\nOrderedATNConfigSet.prototype.constructor = OrderedATNConfigSet;\n\nexports.ATNConfigSet = ATNConfigSet;\nexports.OrderedATNConfigSet = OrderedATNConfigSet;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nfunction ATNDeserializationOptions(copyFrom) {\n\tif(copyFrom===undefined) {\n\t\tcopyFrom = null;\n\t}\n\tthis.readOnly = false;\n this.verifyATN = copyFrom===null ? true : copyFrom.verifyATN;\n this.generateRuleBypassTransitions = copyFrom===null ? false : copyFrom.generateRuleBypassTransitions;\n\n return this;\n}\n\nATNDeserializationOptions.defaultOptions = new ATNDeserializationOptions();\nATNDeserializationOptions.defaultOptions.readOnly = true;\n\n// def __setattr__(self, key, value):\n// if key!=\"readOnly\" and self.readOnly:\n// raise Exception(\"The object is read only.\")\n// super(type(self), self).__setattr__(key,value)\n\nexports.ATNDeserializationOptions = ATNDeserializationOptions;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Token = require('./../Token').Token;\nvar ATN = require('./ATN').ATN;\nvar ATNType = require('./ATNType').ATNType;\nvar ATNStates = require('./ATNState');\nvar ATNState = ATNStates.ATNState;\nvar BasicState = ATNStates.BasicState;\nvar DecisionState = ATNStates.DecisionState;\nvar BlockStartState = ATNStates.BlockStartState;\nvar BlockEndState = ATNStates.BlockEndState;\nvar LoopEndState = ATNStates.LoopEndState;\nvar RuleStartState = ATNStates.RuleStartState;\nvar RuleStopState = ATNStates.RuleStopState;\nvar TokensStartState = ATNStates.TokensStartState;\nvar PlusLoopbackState = ATNStates.PlusLoopbackState;\nvar StarLoopbackState = ATNStates.StarLoopbackState;\nvar StarLoopEntryState = ATNStates.StarLoopEntryState;\nvar PlusBlockStartState = ATNStates.PlusBlockStartState;\nvar StarBlockStartState = ATNStates.StarBlockStartState;\nvar BasicBlockStartState = ATNStates.BasicBlockStartState;\nvar Transitions = require('./Transition');\nvar Transition = Transitions.Transition;\nvar AtomTransition = Transitions.AtomTransition;\nvar SetTransition = Transitions.SetTransition;\nvar NotSetTransition = Transitions.NotSetTransition;\nvar RuleTransition = Transitions.RuleTransition;\nvar RangeTransition = Transitions.RangeTransition;\nvar ActionTransition = Transitions.ActionTransition;\nvar EpsilonTransition = Transitions.EpsilonTransition;\nvar WildcardTransition = Transitions.WildcardTransition;\nvar PredicateTransition = Transitions.PredicateTransition;\nvar PrecedencePredicateTransition = Transitions.PrecedencePredicateTransition;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\nvar Interval = require('./../IntervalSet').Interval;\nvar ATNDeserializationOptions = require('./ATNDeserializationOptions').ATNDeserializationOptions;\nvar LexerActions = require('./LexerAction');\nvar LexerActionType = LexerActions.LexerActionType;\nvar LexerSkipAction = LexerActions.LexerSkipAction;\nvar LexerChannelAction = LexerActions.LexerChannelAction;\nvar LexerCustomAction = LexerActions.LexerCustomAction;\nvar LexerMoreAction = LexerActions.LexerMoreAction;\nvar LexerTypeAction = LexerActions.LexerTypeAction;\nvar LexerPushModeAction = LexerActions.LexerPushModeAction;\nvar LexerPopModeAction = LexerActions.LexerPopModeAction;\nvar LexerModeAction = LexerActions.LexerModeAction;\n// This is the earliest supported serialized UUID.\n// stick to serialized version for now, we don't need a UUID instance\nvar BASE_SERIALIZED_UUID = \"AADB8D7E-AEEF-4415-AD2B-8204D6CF042E\";\n\n//\n// This UUID indicates the serialized ATN contains two sets of\n// IntervalSets, where the second set's values are encoded as\n// 32-bit integers to support the full Unicode SMP range up to U+10FFFF.\n//\nvar ADDED_UNICODE_SMP = \"59627784-3BE5-417A-B9EB-8131A7286089\";\n\n// This list contains all of the currently supported UUIDs, ordered by when\n// the feature first appeared in this branch.\nvar SUPPORTED_UUIDS = [ BASE_SERIALIZED_UUID, ADDED_UNICODE_SMP ];\n\nvar SERIALIZED_VERSION = 3;\n\n// This is the current serialized UUID.\nvar SERIALIZED_UUID = ADDED_UNICODE_SMP;\n\nfunction initArray( length, value) {\n\tvar tmp = [];\n\ttmp[length-1] = value;\n\treturn tmp.map(function(i) {return value;});\n}\n\nfunction ATNDeserializer (options) {\n\n if ( options=== undefined || options === null ) {\n options = ATNDeserializationOptions.defaultOptions;\n }\n this.deserializationOptions = options;\n this.stateFactories = null;\n this.actionFactories = null;\n\n return this;\n}\n\n// Determines if a particular serialized representation of an ATN supports\n// a particular feature, identified by the {@link UUID} used for serializing\n// the ATN at the time the feature was first introduced.\n//\n// @param feature The {@link UUID} marking the first time the feature was\n// supported in the serialized ATN.\n// @param actualUuid The {@link UUID} of the actual serialized ATN which is\n// currently being deserialized.\n// @return {@code true} if the {@code actualUuid} value represents a\n// serialized ATN at or after the feature identified by {@code feature} was\n// introduced; otherwise, {@code false}.\n\nATNDeserializer.prototype.isFeatureSupported = function(feature, actualUuid) {\n var idx1 = SUPPORTED_UUIDS.indexOf(feature);\n if (idx1<0) {\n return false;\n }\n var idx2 = SUPPORTED_UUIDS.indexOf(actualUuid);\n return idx2 >= idx1;\n};\n\nATNDeserializer.prototype.deserialize = function(data) {\n this.reset(data);\n this.checkVersion();\n this.checkUUID();\n var atn = this.readATN();\n this.readStates(atn);\n this.readRules(atn);\n this.readModes(atn);\n var sets = [];\n // First, deserialize sets with 16-bit arguments <= U+FFFF.\n this.readSets(atn, sets, this.readInt.bind(this));\n // Next, if the ATN was serialized with the Unicode SMP feature,\n // deserialize sets with 32-bit arguments <= U+10FFFF.\n if (this.isFeatureSupported(ADDED_UNICODE_SMP, this.uuid)) {\n this.readSets(atn, sets, this.readInt32.bind(this));\n }\n this.readEdges(atn, sets);\n this.readDecisions(atn);\n this.readLexerActions(atn);\n this.markPrecedenceDecisions(atn);\n this.verifyATN(atn);\n if (this.deserializationOptions.generateRuleBypassTransitions && atn.grammarType === ATNType.PARSER ) {\n this.generateRuleBypassTransitions(atn);\n // re-verify after modification\n this.verifyATN(atn);\n }\n return atn;\n};\n\nATNDeserializer.prototype.reset = function(data) {\n\tvar adjust = function(c) {\n var v = c.charCodeAt(0);\n return v>1 ? v-2 : v + 65533;\n\t};\n var temp = data.split(\"\").map(adjust);\n // don't adjust the first value since that's the version number\n temp[0] = data.charCodeAt(0);\n this.data = temp;\n this.pos = 0;\n};\n\nATNDeserializer.prototype.checkVersion = function() {\n var version = this.readInt();\n if ( version !== SERIALIZED_VERSION ) {\n throw (\"Could not deserialize ATN with version \" + version + \" (expected \" + SERIALIZED_VERSION + \").\");\n }\n};\n\nATNDeserializer.prototype.checkUUID = function() {\n var uuid = this.readUUID();\n if (SUPPORTED_UUIDS.indexOf(uuid)<0) {\n throw (\"Could not deserialize ATN with UUID: \" + uuid +\n \" (expected \" + SERIALIZED_UUID + \" or a legacy UUID).\", uuid, SERIALIZED_UUID);\n }\n this.uuid = uuid;\n};\n\nATNDeserializer.prototype.readATN = function() {\n var grammarType = this.readInt();\n var maxTokenType = this.readInt();\n return new ATN(grammarType, maxTokenType);\n};\n\nATNDeserializer.prototype.readStates = function(atn) {\n\tvar j, pair, stateNumber;\n var loopBackStateNumbers = [];\n var endStateNumbers = [];\n var nstates = this.readInt();\n for(var i=0; i<nstates; i++) {\n var stype = this.readInt();\n // ignore bad type of states\n if (stype===ATNState.INVALID_TYPE) {\n atn.addState(null);\n continue;\n }\n var ruleIndex = this.readInt();\n if (ruleIndex === 0xFFFF) {\n ruleIndex = -1;\n }\n var s = this.stateFactory(stype, ruleIndex);\n if (stype === ATNState.LOOP_END) { // special case\n var loopBackStateNumber = this.readInt();\n loopBackStateNumbers.push([s, loopBackStateNumber]);\n } else if(s instanceof BlockStartState) {\n var endStateNumber = this.readInt();\n endStateNumbers.push([s, endStateNumber]);\n }\n atn.addState(s);\n }\n // delay the assignment of loop back and end states until we know all the\n\t// state instances have been initialized\n for (j=0; j<loopBackStateNumbers.length; j++) {\n pair = loopBackStateNumbers[j];\n pair[0].loopBackState = atn.states[pair[1]];\n }\n\n for (j=0; j<endStateNumbers.length; j++) {\n pair = endStateNumbers[j];\n pair[0].endState = atn.states[pair[1]];\n }\n\n var numNonGreedyStates = this.readInt();\n for (j=0; j<numNonGreedyStates; j++) {\n stateNumber = this.readInt();\n atn.states[stateNumber].nonGreedy = true;\n }\n\n var numPrecedenceStates = this.readInt();\n for (j=0; j<numPrecedenceStates; j++) {\n stateNumber = this.readInt();\n atn.states[stateNumber].isPrecedenceRule = true;\n }\n};\n\nATNDeserializer.prototype.readRules = function(atn) {\n var i;\n var nrules = this.readInt();\n if (atn.grammarType === ATNType.LEXER ) {\n atn.ruleToTokenType = initArray(nrules, 0);\n }\n atn.ruleToStartState = initArray(nrules, 0);\n for (i=0; i<nrules; i++) {\n var s = this.readInt();\n var startState = atn.states[s];\n atn.ruleToStartState[i] = startState;\n if ( atn.grammarType === ATNType.LEXER ) {\n var tokenType = this.readInt();\n if (tokenType === 0xFFFF) {\n tokenType = Token.EOF;\n }\n atn.ruleToTokenType[i] = tokenType;\n }\n }\n atn.ruleToStopState = initArray(nrules, 0);\n for (i=0; i<atn.states.length; i++) {\n var state = atn.states[i];\n if (!(state instanceof RuleStopState)) {\n continue;\n }\n atn.ruleToStopState[state.ruleIndex] = state;\n atn.ruleToStartState[state.ruleIndex].stopState = state;\n }\n};\n\nATNDeserializer.prototype.readModes = function(atn) {\n var nmodes = this.readInt();\n for (var i=0; i<nmodes; i++) {\n var s = this.readInt();\n atn.modeToStartState.push(atn.states[s]);\n }\n};\n\nATNDeserializer.prototype.readSets = function(atn, sets, readUnicode) {\n var m = this.readInt();\n for (var i=0; i<m; i++) {\n var iset = new IntervalSet();\n sets.push(iset);\n var n = this.readInt();\n var containsEof = this.readInt();\n if (containsEof!==0) {\n iset.addOne(-1);\n }\n for (var j=0; j<n; j++) {\n var i1 = readUnicode();\n var i2 = readUnicode();\n iset.addRange(i1, i2);\n }\n }\n};\n\nATNDeserializer.prototype.readEdges = function(atn, sets) {\n\tvar i, j, state, trans, target;\n var nedges = this.readInt();\n for (i=0; i<nedges; i++) {\n var src = this.readInt();\n var trg = this.readInt();\n var ttype = this.readInt();\n var arg1 = this.readInt();\n var arg2 = this.readInt();\n var arg3 = this.readInt();\n trans = this.edgeFactory(atn, ttype, src, trg, arg1, arg2, arg3, sets);\n var srcState = atn.states[src];\n srcState.addTransition(trans);\n }\n // edges for rule stop states can be derived, so they aren't serialized\n for (i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n for (j=0; j<state.transitions.length; j++) {\n var t = state.transitions[j];\n if (!(t instanceof RuleTransition)) {\n continue;\n }\n\t\t\tvar outermostPrecedenceReturn = -1;\n\t\t\tif (atn.ruleToStartState[t.target.ruleIndex].isPrecedenceRule) {\n\t\t\t\tif (t.precedence === 0) {\n\t\t\t\t\toutermostPrecedenceReturn = t.target.ruleIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttrans = new EpsilonTransition(t.followState, outermostPrecedenceReturn);\n atn.ruleToStopState[t.target.ruleIndex].addTransition(trans);\n }\n }\n\n for (i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n if (state instanceof BlockStartState) {\n // we need to know the end state to set its start state\n if (state.endState === null) {\n throw (\"IllegalState\");\n }\n // block end states can only be associated to a single block start\n\t\t\t// state\n if ( state.endState.startState !== null) {\n throw (\"IllegalState\");\n }\n state.endState.startState = state;\n }\n if (state instanceof PlusLoopbackState) {\n for (j=0; j<state.transitions.length; j++) {\n target = state.transitions[j].target;\n if (target instanceof PlusBlockStartState) {\n target.loopBackState = state;\n }\n }\n } else if (state instanceof StarLoopbackState) {\n for (j=0; j<state.transitions.length; j++) {\n target = state.transitions[j].target;\n if (target instanceof StarLoopEntryState) {\n target.loopBackState = state;\n }\n }\n }\n }\n};\n\nATNDeserializer.prototype.readDecisions = function(atn) {\n var ndecisions = this.readInt();\n for (var i=0; i<ndecisions; i++) {\n var s = this.readInt();\n var decState = atn.states[s];\n atn.decisionToState.push(decState);\n decState.decision = i;\n }\n};\n\nATNDeserializer.prototype.readLexerActions = function(atn) {\n if (atn.grammarType === ATNType.LEXER) {\n var count = this.readInt();\n atn.lexerActions = initArray(count, null);\n for (var i=0; i<count; i++) {\n var actionType = this.readInt();\n var data1 = this.readInt();\n if (data1 === 0xFFFF) {\n data1 = -1;\n }\n var data2 = this.readInt();\n if (data2 === 0xFFFF) {\n data2 = -1;\n }\n var lexerAction = this.lexerActionFactory(actionType, data1, data2);\n atn.lexerActions[i] = lexerAction;\n }\n }\n};\n\nATNDeserializer.prototype.generateRuleBypassTransitions = function(atn) {\n\tvar i;\n var count = atn.ruleToStartState.length;\n for(i=0; i<count; i++) {\n atn.ruleToTokenType[i] = atn.maxTokenType + i + 1;\n }\n for(i=0; i<count; i++) {\n this.generateRuleBypassTransition(atn, i);\n }\n};\n\nATNDeserializer.prototype.generateRuleBypassTransition = function(atn, idx) {\n\tvar i, state;\n var bypassStart = new BasicBlockStartState();\n bypassStart.ruleIndex = idx;\n atn.addState(bypassStart);\n\n var bypassStop = new BlockEndState();\n bypassStop.ruleIndex = idx;\n atn.addState(bypassStop);\n\n bypassStart.endState = bypassStop;\n atn.defineDecisionState(bypassStart);\n\n bypassStop.startState = bypassStart;\n\n var excludeTransition = null;\n var endState = null;\n\n if (atn.ruleToStartState[idx].isPrecedenceRule) {\n // wrap from the beginning of the rule to the StarLoopEntryState\n endState = null;\n for(i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n if (this.stateIsEndStateFor(state, idx)) {\n endState = state;\n excludeTransition = state.loopBackState.transitions[0];\n break;\n }\n }\n if (excludeTransition === null) {\n throw (\"Couldn't identify final state of the precedence rule prefix section.\");\n }\n } else {\n endState = atn.ruleToStopState[idx];\n }\n\n // all non-excluded transitions that currently target end state need to\n\t// target blockEnd instead\n for(i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n for(var j=0; j<state.transitions.length; j++) {\n var transition = state.transitions[j];\n if (transition === excludeTransition) {\n continue;\n }\n if (transition.target === endState) {\n transition.target = bypassStop;\n }\n }\n }\n\n // all transitions leaving the rule start state need to leave blockStart\n\t// instead\n var ruleToStartState = atn.ruleToStartState[idx];\n var count = ruleToStartState.transitions.length;\n while ( count > 0) {\n bypassStart.addTransition(ruleToStartState.transitions[count-1]);\n ruleToStartState.transitions = ruleToStartState.transitions.slice(-1);\n }\n // link the new states\n atn.ruleToStartState[idx].addTransition(new EpsilonTransition(bypassStart));\n bypassStop.addTransition(new EpsilonTransition(endState));\n\n var matchState = new BasicState();\n atn.addState(matchState);\n matchState.addTransition(new AtomTransition(bypassStop, atn.ruleToTokenType[idx]));\n bypassStart.addTransition(new EpsilonTransition(matchState));\n};\n\nATNDeserializer.prototype.stateIsEndStateFor = function(state, idx) {\n if ( state.ruleIndex !== idx) {\n return null;\n }\n if (!( state instanceof StarLoopEntryState)) {\n return null;\n }\n var maybeLoopEndState = state.transitions[state.transitions.length - 1].target;\n if (!( maybeLoopEndState instanceof LoopEndState)) {\n return null;\n }\n if (maybeLoopEndState.epsilonOnlyTransitions &&\n (maybeLoopEndState.transitions[0].target instanceof RuleStopState)) {\n return state;\n } else {\n return null;\n }\n};\n\n//\n// Analyze the {@link StarLoopEntryState} states in the specified ATN to set\n// the {@link StarLoopEntryState//isPrecedenceDecision} field to the\n// correct value.\n//\n// @param atn The ATN.\n//\nATNDeserializer.prototype.markPrecedenceDecisions = function(atn) {\n\tfor(var i=0; i<atn.states.length; i++) {\n\t\tvar state = atn.states[i];\n\t\tif (!( state instanceof StarLoopEntryState)) {\n continue;\n }\n // We analyze the ATN to determine if this ATN decision state is the\n // decision for the closure block that determines whether a\n // precedence rule should continue or complete.\n //\n if ( atn.ruleToStartState[state.ruleIndex].isPrecedenceRule) {\n var maybeLoopEndState = state.transitions[state.transitions.length - 1].target;\n if (maybeLoopEndState instanceof LoopEndState) {\n if ( maybeLoopEndState.epsilonOnlyTransitions &&\n (maybeLoopEndState.transitions[0].target instanceof RuleStopState)) {\n state.isPrecedenceDecision = true;\n }\n }\n }\n\t}\n};\n\nATNDeserializer.prototype.verifyATN = function(atn) {\n if (!this.deserializationOptions.verifyATN) {\n return;\n }\n // verify assumptions\n\tfor(var i=0; i<atn.states.length; i++) {\n var state = atn.states[i];\n if (state === null) {\n continue;\n }\n this.checkCondition(state.epsilonOnlyTransitions || state.transitions.length <= 1);\n if (state instanceof PlusBlockStartState) {\n this.checkCondition(state.loopBackState !== null);\n } else if (state instanceof StarLoopEntryState) {\n this.checkCondition(state.loopBackState !== null);\n this.checkCondition(state.transitions.length === 2);\n if (state.transitions[0].target instanceof StarBlockStartState) {\n this.checkCondition(state.transitions[1].target instanceof LoopEndState);\n this.checkCondition(!state.nonGreedy);\n } else if (state.transitions[0].target instanceof LoopEndState) {\n this.checkCondition(state.transitions[1].target instanceof StarBlockStartState);\n this.checkCondition(state.nonGreedy);\n } else {\n throw(\"IllegalState\");\n }\n } else if (state instanceof StarLoopbackState) {\n this.checkCondition(state.transitions.length === 1);\n this.checkCondition(state.transitions[0].target instanceof StarLoopEntryState);\n } else if (state instanceof LoopEndState) {\n this.checkCondition(state.loopBackState !== null);\n } else if (state instanceof RuleStartState) {\n this.checkCondition(state.stopState !== null);\n } else if (state instanceof BlockStartState) {\n this.checkCondition(state.endState !== null);\n } else if (state instanceof BlockEndState) {\n this.checkCondition(state.startState !== null);\n } else if (state instanceof DecisionState) {\n this.checkCondition(state.transitions.length <= 1 || state.decision >= 0);\n } else {\n this.checkCondition(state.transitions.length <= 1 || (state instanceof RuleStopState));\n }\n\t}\n};\n\nATNDeserializer.prototype.checkCondition = function(condition, message) {\n if (!condition) {\n if (message === undefined || message===null) {\n message = \"IllegalState\";\n }\n throw (message);\n }\n};\n\nATNDeserializer.prototype.readInt = function() {\n return this.data[this.pos++];\n};\n\nATNDeserializer.prototype.readInt32 = function() {\n var low = this.readInt();\n var high = this.readInt();\n return low | (high << 16);\n};\n\nATNDeserializer.prototype.readLong = function() {\n var low = this.readInt32();\n var high = this.readInt32();\n return (low & 0x00000000FFFFFFFF) | (high << 32);\n};\n\nfunction createByteToHex() {\n\tvar bth = [];\n\tfor (var i = 0; i < 256; i++) {\n\t\tbth[i] = (i + 0x100).toString(16).substr(1).toUpperCase();\n\t}\n\treturn bth;\n}\n\nvar byteToHex = createByteToHex();\n\nATNDeserializer.prototype.readUUID = function() {\n\tvar bb = [];\n\tfor(var i=7;i>=0;i--) {\n\t\tvar int = this.readInt();\n\t\t/* jshint bitwise: false */\n\t\tbb[(2*i)+1] = int & 0xFF;\n\t\tbb[2*i] = (int >> 8) & 0xFF;\n\t}\n return byteToHex[bb[0]] + byteToHex[bb[1]] +\n byteToHex[bb[2]] + byteToHex[bb[3]] + '-' +\n byteToHex[bb[4]] + byteToHex[bb[5]] + '-' +\n byteToHex[bb[6]] + byteToHex[bb[7]] + '-' +\n byteToHex[bb[8]] + byteToHex[bb[9]] + '-' +\n byteToHex[bb[10]] + byteToHex[bb[11]] +\n byteToHex[bb[12]] + byteToHex[bb[13]] +\n byteToHex[bb[14]] + byteToHex[bb[15]];\n};\n\nATNDeserializer.prototype.edgeFactory = function(atn, type, src, trg, arg1, arg2, arg3, sets) {\n var target = atn.states[trg];\n switch(type) {\n case Transition.EPSILON:\n return new EpsilonTransition(target);\n case Transition.RANGE:\n return arg3 !== 0 ? new RangeTransition(target, Token.EOF, arg2) : new RangeTransition(target, arg1, arg2);\n case Transition.RULE:\n return new RuleTransition(atn.states[arg1], arg2, arg3, target);\n case Transition.PREDICATE:\n return new PredicateTransition(target, arg1, arg2, arg3 !== 0);\n case Transition.PRECEDENCE:\n return new PrecedencePredicateTransition(target, arg1);\n case Transition.ATOM:\n return arg3 !== 0 ? new AtomTransition(target, Token.EOF) : new AtomTransition(target, arg1);\n case Transition.ACTION:\n return new ActionTransition(target, arg1, arg2, arg3 !== 0);\n case Transition.SET:\n return new SetTransition(target, sets[arg1]);\n case Transition.NOT_SET:\n return new NotSetTransition(target, sets[arg1]);\n case Transition.WILDCARD:\n return new WildcardTransition(target);\n default:\n throw \"The specified transition type: \" + type + \" is not valid.\";\n }\n};\n\nATNDeserializer.prototype.stateFactory = function(type, ruleIndex) {\n if (this.stateFactories === null) {\n var sf = [];\n sf[ATNState.INVALID_TYPE] = null;\n sf[ATNState.BASIC] = function() { return new BasicState(); };\n sf[ATNState.RULE_START] = function() { return new RuleStartState(); };\n sf[ATNState.BLOCK_START] = function() { return new BasicBlockStartState(); };\n sf[ATNState.PLUS_BLOCK_START] = function() { return new PlusBlockStartState(); };\n sf[ATNState.STAR_BLOCK_START] = function() { return new StarBlockStartState(); };\n sf[ATNState.TOKEN_START] = function() { return new TokensStartState(); };\n sf[ATNState.RULE_STOP] = function() { return new RuleStopState(); };\n sf[ATNState.BLOCK_END] = function() { return new BlockEndState(); };\n sf[ATNState.STAR_LOOP_BACK] = function() { return new StarLoopbackState(); };\n sf[ATNState.STAR_LOOP_ENTRY] = function() { return new StarLoopEntryState(); };\n sf[ATNState.PLUS_LOOP_BACK] = function() { return new PlusLoopbackState(); };\n sf[ATNState.LOOP_END] = function() { return new LoopEndState(); };\n this.stateFactories = sf;\n }\n if (type>this.stateFactories.length || this.stateFactories[type] === null) {\n throw(\"The specified state type \" + type + \" is not valid.\");\n } else {\n var s = this.stateFactories[type]();\n if (s!==null) {\n s.ruleIndex = ruleIndex;\n return s;\n }\n }\n};\n\nATNDeserializer.prototype.lexerActionFactory = function(type, data1, data2) {\n if (this.actionFactories === null) {\n var af = [];\n af[LexerActionType.CHANNEL] = function(data1, data2) { return new LexerChannelAction(data1); };\n af[LexerActionType.CUSTOM] = function(data1, data2) { return new LexerCustomAction(data1, data2); };\n af[LexerActionType.MODE] = function(data1, data2) { return new LexerModeAction(data1); };\n af[LexerActionType.MORE] = function(data1, data2) { return LexerMoreAction.INSTANCE; };\n af[LexerActionType.POP_MODE] = function(data1, data2) { return LexerPopModeAction.INSTANCE; };\n af[LexerActionType.PUSH_MODE] = function(data1, data2) { return new LexerPushModeAction(data1); };\n af[LexerActionType.SKIP] = function(data1, data2) { return LexerSkipAction.INSTANCE; };\n af[LexerActionType.TYPE] = function(data1, data2) { return new LexerTypeAction(data1); };\n this.actionFactories = af;\n }\n if (type>this.actionFactories.length || this.actionFactories[type] === null) {\n throw(\"The specified lexer action type \" + type + \" is not valid.\");\n } else {\n return this.actionFactories[type](data1, data2);\n }\n};\n\n\nexports.ATNDeserializer = ATNDeserializer;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar DFAState = require('./../dfa/DFAState').DFAState;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar getCachedPredictionContext = require('./../PredictionContext').getCachedPredictionContext;\n\nfunction ATNSimulator(atn, sharedContextCache) {\n\n // The context cache maps all PredictionContext objects that are ==\n // to a single cached copy. This cache is shared across all contexts\n // in all ATNConfigs in all DFA states. We rebuild each ATNConfigSet\n // to use only cached nodes/graphs in addDFAState(). We don't want to\n // fill this during closure() since there are lots of contexts that\n // pop up but are not used ever again. It also greatly slows down closure().\n //\n // <p>This cache makes a huge difference in memory and a little bit in speed.\n // For the Java grammar on java.*, it dropped the memory requirements\n // at the end from 25M to 16M. We don't store any of the full context\n // graphs in the DFA because they are limited to local context only,\n // but apparently there's a lot of repetition there as well. We optimize\n // the config contexts before storing the config set in the DFA states\n // by literally rebuilding them with cached subgraphs only.</p>\n //\n // <p>I tried a cache for use during closure operations, that was\n // whacked after each adaptivePredict(). It cost a little bit\n // more time I think and doesn't save on the overall footprint\n // so it's not worth the complexity.</p>\n ///\n this.atn = atn;\n this.sharedContextCache = sharedContextCache;\n return this;\n}\n\n// Must distinguish between missing edge and edge we know leads nowhere///\nATNSimulator.ERROR = new DFAState(0x7FFFFFFF, new ATNConfigSet());\n\n\nATNSimulator.prototype.getCachedContext = function(context) {\n if (this.sharedContextCache ===null) {\n return context;\n }\n var visited = {};\n return getCachedPredictionContext(context, this.sharedContextCache, visited);\n};\n\nexports.ATNSimulator = ATNSimulator;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// The following images show the relation of states and\n// {@link ATNState//transitions} for various grammar constructs.\n//\n// <ul>\n//\n// <li>Solid edges marked with an &//0949; indicate a required\n// {@link EpsilonTransition}.</li>\n//\n// <li>Dashed edges indicate locations where any transition derived from\n// {@link Transition} might appear.</li>\n//\n// <li>Dashed nodes are place holders for either a sequence of linked\n// {@link BasicState} states or the inclusion of a block representing a nested\n// construct in one of the forms below.</li>\n//\n// <li>Nodes showing multiple outgoing alternatives with a {@code ...} support\n// any number of alternatives (one or more). Nodes without the {@code ...} only\n// support the exact number of alternatives shown in the diagram.</li>\n//\n// </ul>\n//\n// <h2>Basic Blocks</h2>\n//\n// <h3>Rule</h3>\n//\n// <embed src=\"images/Rule.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Block of 1 or more alternatives</h3>\n//\n// <embed src=\"images/Block.svg\" type=\"image/svg+xml\"/>\n//\n// <h2>Greedy Loops</h2>\n//\n// <h3>Greedy Closure: {@code (...)*}</h3>\n//\n// <embed src=\"images/ClosureGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Greedy Positive Closure: {@code (...)+}</h3>\n//\n// <embed src=\"images/PositiveClosureGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Greedy Optional: {@code (...)?}</h3>\n//\n// <embed src=\"images/OptionalGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h2>Non-Greedy Loops</h2>\n//\n// <h3>Non-Greedy Closure: {@code (...)*?}</h3>\n//\n// <embed src=\"images/ClosureNonGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Non-Greedy Positive Closure: {@code (...)+?}</h3>\n//\n// <embed src=\"images/PositiveClosureNonGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Non-Greedy Optional: {@code (...)??}</h3>\n//\n// <embed src=\"images/OptionalNonGreedy.svg\" type=\"image/svg+xml\"/>\n//\n\nvar INITIAL_NUM_TRANSITIONS = 4;\n\nfunction ATNState() {\n // Which ATN are we in?\n this.atn = null;\n this.stateNumber = ATNState.INVALID_STATE_NUMBER;\n this.stateType = null;\n this.ruleIndex = 0; // at runtime, we don't have Rule objects\n this.epsilonOnlyTransitions = false;\n // Track the transitions emanating from this ATN state.\n this.transitions = [];\n // Used to cache lookahead during parsing, not used during construction\n this.nextTokenWithinRule = null;\n return this;\n}\n\n// constants for serialization\nATNState.INVALID_TYPE = 0;\nATNState.BASIC = 1;\nATNState.RULE_START = 2;\nATNState.BLOCK_START = 3;\nATNState.PLUS_BLOCK_START = 4;\nATNState.STAR_BLOCK_START = 5;\nATNState.TOKEN_START = 6;\nATNState.RULE_STOP = 7;\nATNState.BLOCK_END = 8;\nATNState.STAR_LOOP_BACK = 9;\nATNState.STAR_LOOP_ENTRY = 10;\nATNState.PLUS_LOOP_BACK = 11;\nATNState.LOOP_END = 12;\n\nATNState.serializationNames = [\n \"INVALID\",\n \"BASIC\",\n \"RULE_START\",\n \"BLOCK_START\",\n \"PLUS_BLOCK_START\",\n \"STAR_BLOCK_START\",\n \"TOKEN_START\",\n \"RULE_STOP\",\n \"BLOCK_END\",\n \"STAR_LOOP_BACK\",\n \"STAR_LOOP_ENTRY\",\n \"PLUS_LOOP_BACK\",\n \"LOOP_END\" ];\n\nATNState.INVALID_STATE_NUMBER = -1;\n\nATNState.prototype.toString = function() {\n\treturn this.stateNumber;\n};\n\nATNState.prototype.equals = function(other) {\n if (other instanceof ATNState) {\n return this.stateNumber===other.stateNumber;\n } else {\n return false;\n }\n};\n\nATNState.prototype.isNonGreedyExitState = function() {\n return false;\n};\n\n\nATNState.prototype.addTransition = function(trans, index) {\n\tif(index===undefined) {\n\t\tindex = -1;\n\t}\n if (this.transitions.length===0) {\n this.epsilonOnlyTransitions = trans.isEpsilon;\n } else if(this.epsilonOnlyTransitions !== trans.isEpsilon) {\n this.epsilonOnlyTransitions = false;\n }\n if (index===-1) {\n this.transitions.push(trans);\n } else {\n this.transitions.splice(index, 1, trans);\n }\n};\n\nfunction BasicState() {\n\tATNState.call(this);\n this.stateType = ATNState.BASIC;\n return this;\n}\n\nBasicState.prototype = Object.create(ATNState.prototype);\nBasicState.prototype.constructor = BasicState;\n\n\nfunction DecisionState() {\n\tATNState.call(this);\n this.decision = -1;\n this.nonGreedy = false;\n return this;\n}\n\nDecisionState.prototype = Object.create(ATNState.prototype);\nDecisionState.prototype.constructor = DecisionState;\n\n\n// The start of a regular {@code (...)} block.\nfunction BlockStartState() {\n\tDecisionState.call(this);\n\tthis.endState = null;\n\treturn this;\n}\n\nBlockStartState.prototype = Object.create(DecisionState.prototype);\nBlockStartState.prototype.constructor = BlockStartState;\n\n\nfunction BasicBlockStartState() {\n\tBlockStartState.call(this);\n\tthis.stateType = ATNState.BLOCK_START;\n\treturn this;\n}\n\nBasicBlockStartState.prototype = Object.create(BlockStartState.prototype);\nBasicBlockStartState.prototype.constructor = BasicBlockStartState;\n\n\n// Terminal node of a simple {@code (a|b|c)} block.\nfunction BlockEndState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.BLOCK_END;\n this.startState = null;\n return this;\n}\n\nBlockEndState.prototype = Object.create(ATNState.prototype);\nBlockEndState.prototype.constructor = BlockEndState;\n\n\n// The last node in the ATN for a rule, unless that rule is the start symbol.\n// In that case, there is one transition to EOF. Later, we might encode\n// references to all calls to this rule to compute FOLLOW sets for\n// error handling.\n//\nfunction RuleStopState() {\n\tATNState.call(this);\n this.stateType = ATNState.RULE_STOP;\n return this;\n}\n\nRuleStopState.prototype = Object.create(ATNState.prototype);\nRuleStopState.prototype.constructor = RuleStopState;\n\nfunction RuleStartState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.RULE_START;\n\tthis.stopState = null;\n\tthis.isPrecedenceRule = false;\n\treturn this;\n}\n\nRuleStartState.prototype = Object.create(ATNState.prototype);\nRuleStartState.prototype.constructor = RuleStartState;\n\n// Decision state for {@code A+} and {@code (A|B)+}. It has two transitions:\n// one to the loop back to start of the block and one to exit.\n//\nfunction PlusLoopbackState() {\n\tDecisionState.call(this);\n\tthis.stateType = ATNState.PLUS_LOOP_BACK;\n\treturn this;\n}\n\nPlusLoopbackState.prototype = Object.create(DecisionState.prototype);\nPlusLoopbackState.prototype.constructor = PlusLoopbackState;\n\n\n// Start of {@code (A|B|...)+} loop. Technically a decision state, but\n// we don't use for code generation; somebody might need it, so I'm defining\n// it for completeness. In reality, the {@link PlusLoopbackState} node is the\n// real decision-making note for {@code A+}.\n//\nfunction PlusBlockStartState() {\n\tBlockStartState.call(this);\n\tthis.stateType = ATNState.PLUS_BLOCK_START;\n this.loopBackState = null;\n return this;\n}\n\nPlusBlockStartState.prototype = Object.create(BlockStartState.prototype);\nPlusBlockStartState.prototype.constructor = PlusBlockStartState;\n\n// The block that begins a closure loop.\nfunction StarBlockStartState() {\n\tBlockStartState.call(this);\n\tthis.stateType = ATNState.STAR_BLOCK_START;\n\treturn this;\n}\n\nStarBlockStartState.prototype = Object.create(BlockStartState.prototype);\nStarBlockStartState.prototype.constructor = StarBlockStartState;\n\n\nfunction StarLoopbackState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.STAR_LOOP_BACK;\n\treturn this;\n}\n\nStarLoopbackState.prototype = Object.create(ATNState.prototype);\nStarLoopbackState.prototype.constructor = StarLoopbackState;\n\n\nfunction StarLoopEntryState() {\n\tDecisionState.call(this);\n\tthis.stateType = ATNState.STAR_LOOP_ENTRY;\n this.loopBackState = null;\n // Indicates whether this state can benefit from a precedence DFA during SLL decision making.\n this.isPrecedenceDecision = null;\n return this;\n}\n\nStarLoopEntryState.prototype = Object.create(DecisionState.prototype);\nStarLoopEntryState.prototype.constructor = StarLoopEntryState;\n\n\n// Mark the end of a * or + loop.\nfunction LoopEndState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.LOOP_END;\n\tthis.loopBackState = null;\n\treturn this;\n}\n\nLoopEndState.prototype = Object.create(ATNState.prototype);\nLoopEndState.prototype.constructor = LoopEndState;\n\n\n// The Tokens rule start state linking to each lexer rule start state */\nfunction TokensStartState() {\n\tDecisionState.call(this);\n\tthis.stateType = ATNState.TOKEN_START;\n\treturn this;\n}\n\nTokensStartState.prototype = Object.create(DecisionState.prototype);\nTokensStartState.prototype.constructor = TokensStartState;\n\nexports.ATNState = ATNState;\nexports.BasicState = BasicState;\nexports.DecisionState = DecisionState;\nexports.BlockStartState = BlockStartState;\nexports.BlockEndState = BlockEndState;\nexports.LoopEndState = LoopEndState;\nexports.RuleStartState = RuleStartState;\nexports.RuleStopState = RuleStopState;\nexports.TokensStartState = TokensStartState;\nexports.PlusLoopbackState = PlusLoopbackState;\nexports.StarLoopbackState = StarLoopbackState;\nexports.StarLoopEntryState = StarLoopEntryState;\nexports.PlusBlockStartState = PlusBlockStartState;\nexports.StarBlockStartState = StarBlockStartState;\nexports.BasicBlockStartState = BasicBlockStartState;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// Represents the type of recognizer an ATN applies to.\n\nfunction ATNType() {\n\n}\n\nATNType.LEXER = 0;\nATNType.PARSER = 1;\n\nexports.ATNType = ATNType;\n\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// When we hit an accept state in either the DFA or the ATN, we\n// have to notify the character stream to start buffering characters\n// via {@link IntStream//mark} and record the current state. The current sim state\n// includes the current index into the input, the current line,\n// and current character position in that line. Note that the Lexer is\n// tracking the starting line and characterization of the token. These\n// variables track the \"state\" of the simulator when it hits an accept state.\n//\n// <p>We track these variables separately for the DFA and ATN simulation\n// because the DFA simulation often has to fail over to the ATN\n// simulation. If the ATN simulation fails, we need the DFA to fall\n// back to its previously accepted state, if any. If the ATN succeeds,\n// then the ATN does the accept and the DFA simulator that invoked it\n// can simply return the predicted token type.</p>\n///\n\nvar Token = require('./../Token').Token;\nvar Lexer = require('./../Lexer').Lexer;\nvar ATN = require('./ATN').ATN;\nvar ATNSimulator = require('./ATNSimulator').ATNSimulator;\nvar DFAState = require('./../dfa/DFAState').DFAState;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar OrderedATNConfigSet = require('./ATNConfigSet').OrderedATNConfigSet;\nvar PredictionContext = require('./../PredictionContext').PredictionContext;\nvar SingletonPredictionContext = require('./../PredictionContext').SingletonPredictionContext;\nvar RuleStopState = require('./ATNState').RuleStopState;\nvar LexerATNConfig = require('./ATNConfig').LexerATNConfig;\nvar Transition = require('./Transition').Transition;\nvar LexerActionExecutor = require('./LexerActionExecutor').LexerActionExecutor;\nvar LexerNoViableAltException = require('./../error/Errors').LexerNoViableAltException;\n\nfunction resetSimState(sim) {\n\tsim.index = -1;\n\tsim.line = 0;\n\tsim.column = -1;\n\tsim.dfaState = null;\n}\n\nfunction SimState() {\n\tresetSimState(this);\n\treturn this;\n}\n\nSimState.prototype.reset = function() {\n\tresetSimState(this);\n};\n\nfunction LexerATNSimulator(recog, atn, decisionToDFA, sharedContextCache) {\n\tATNSimulator.call(this, atn, sharedContextCache);\n\tthis.decisionToDFA = decisionToDFA;\n\tthis.recog = recog;\n\t// The current token's starting index into the character stream.\n\t// Shared across DFA to ATN simulation in case the ATN fails and the\n\t// DFA did not have a previous accept state. In this case, we use the\n\t// ATN-generated exception object.\n\tthis.startIndex = -1;\n\t// line number 1..n within the input///\n\tthis.line = 1;\n\t// The index of the character relative to the beginning of the line\n\t// 0..n-1///\n\tthis.column = 0;\n\tthis.mode = Lexer.DEFAULT_MODE;\n\t// Used during DFA/ATN exec to record the most recent accept configuration\n\t// info\n\tthis.prevAccept = new SimState();\n\t// done\n\treturn this;\n}\n\nLexerATNSimulator.prototype = Object.create(ATNSimulator.prototype);\nLexerATNSimulator.prototype.constructor = LexerATNSimulator;\n\nLexerATNSimulator.debug = false;\nLexerATNSimulator.dfa_debug = false;\n\nLexerATNSimulator.MIN_DFA_EDGE = 0;\nLexerATNSimulator.MAX_DFA_EDGE = 127; // forces unicode to stay in ATN\n\nLexerATNSimulator.match_calls = 0;\n\nLexerATNSimulator.prototype.copyState = function(simulator) {\n\tthis.column = simulator.column;\n\tthis.line = simulator.line;\n\tthis.mode = simulator.mode;\n\tthis.startIndex = simulator.startIndex;\n};\n\nLexerATNSimulator.prototype.match = function(input, mode) {\n\tthis.match_calls += 1;\n\tthis.mode = mode;\n\tvar mark = input.mark();\n\ttry {\n\t\tthis.startIndex = input.index;\n\t\tthis.prevAccept.reset();\n\t\tvar dfa = this.decisionToDFA[mode];\n\t\tif (dfa.s0 === null) {\n\t\t\treturn this.matchATN(input);\n\t\t} else {\n\t\t\treturn this.execATN(input, dfa.s0);\n\t\t}\n\t} finally {\n\t\tinput.release(mark);\n\t}\n};\n\nLexerATNSimulator.prototype.reset = function() {\n\tthis.prevAccept.reset();\n\tthis.startIndex = -1;\n\tthis.line = 1;\n\tthis.column = 0;\n\tthis.mode = Lexer.DEFAULT_MODE;\n};\n\nLexerATNSimulator.prototype.matchATN = function(input) {\n\tvar startState = this.atn.modeToStartState[this.mode];\n\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"matchATN mode \" + this.mode + \" start: \" + startState);\n\t}\n\tvar old_mode = this.mode;\n\tvar s0_closure = this.computeStartState(input, startState);\n\tvar suppressEdge = s0_closure.hasSemanticContext;\n\ts0_closure.hasSemanticContext = false;\n\n\tvar next = this.addDFAState(s0_closure);\n\tif (!suppressEdge) {\n\t\tthis.decisionToDFA[this.mode].s0 = next;\n\t}\n\n\tvar predict = this.execATN(input, next);\n\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"DFA after matchATN: \" + this.decisionToDFA[old_mode].toLexerString());\n\t}\n\treturn predict;\n};\n\nLexerATNSimulator.prototype.execATN = function(input, ds0) {\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"start state closure=\" + ds0.configs);\n\t}\n\tif (ds0.isAcceptState) {\n\t\t// allow zero-length tokens\n\t\tthis.captureSimState(this.prevAccept, input, ds0);\n\t}\n\tvar t = input.LA(1);\n\tvar s = ds0; // s is current/from DFA state\n\n\twhile (true) { // while more work\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"execATN loop starting closure: \" + s.configs);\n\t\t}\n\n\t\t// As we move src->trg, src->trg, we keep track of the previous trg to\n\t\t// avoid looking up the DFA state again, which is expensive.\n\t\t// If the previous target was already part of the DFA, we might\n\t\t// be able to avoid doing a reach operation upon t. If s!=null,\n\t\t// it means that semantic predicates didn't prevent us from\n\t\t// creating a DFA state. Once we know s!=null, we check to see if\n\t\t// the DFA state has an edge already for t. If so, we can just reuse\n\t\t// it's configuration set; there's no point in re-computing it.\n\t\t// This is kind of like doing DFA simulation within the ATN\n\t\t// simulation because DFA simulation is really just a way to avoid\n\t\t// computing reach/closure sets. Technically, once we know that\n\t\t// we have a previously added DFA state, we could jump over to\n\t\t// the DFA simulator. But, that would mean popping back and forth\n\t\t// a lot and making things more complicated algorithmically.\n\t\t// This optimization makes a lot of sense for loops within DFA.\n\t\t// A character will take us back to an existing DFA state\n\t\t// that already has lots of edges out of it. e.g., .* in comments.\n\t\t// print(\"Target for:\" + str(s) + \" and:\" + str(t))\n\t\tvar target = this.getExistingTargetState(s, t);\n\t\t// print(\"Existing:\" + str(target))\n\t\tif (target === null) {\n\t\t\ttarget = this.computeTargetState(input, s, t);\n\t\t\t// print(\"Computed:\" + str(target))\n\t\t}\n\t\tif (target === ATNSimulator.ERROR) {\n\t\t\tbreak;\n\t\t}\n\t\t// If this is a consumable input element, make sure to consume before\n\t\t// capturing the accept state so the input index, line, and char\n\t\t// position accurately reflect the state of the interpreter at the\n\t\t// end of the token.\n\t\tif (t !== Token.EOF) {\n\t\t\tthis.consume(input);\n\t\t}\n\t\tif (target.isAcceptState) {\n\t\t\tthis.captureSimState(this.prevAccept, input, target);\n\t\t\tif (t === Token.EOF) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tt = input.LA(1);\n\t\ts = target; // flip; current DFA target becomes new src/from state\n\t}\n\treturn this.failOrAccept(this.prevAccept, input, s.configs, t);\n};\n\n// Get an existing target state for an edge in the DFA. If the target state\n// for the edge has not yet been computed or is otherwise not available,\n// this method returns {@code null}.\n//\n// @param s The current DFA state\n// @param t The next input symbol\n// @return The existing target DFA state for the given input symbol\n// {@code t}, or {@code null} if the target state for this edge is not\n// already cached\nLexerATNSimulator.prototype.getExistingTargetState = function(s, t) {\n\tif (s.edges === null || t < LexerATNSimulator.MIN_DFA_EDGE || t > LexerATNSimulator.MAX_DFA_EDGE) {\n\t\treturn null;\n\t}\n\n\tvar target = s.edges[t - LexerATNSimulator.MIN_DFA_EDGE];\n\tif(target===undefined) {\n\t\ttarget = null;\n\t}\n\tif (LexerATNSimulator.debug && target !== null) {\n\t\tconsole.log(\"reuse state \" + s.stateNumber + \" edge to \" + target.stateNumber);\n\t}\n\treturn target;\n};\n\n// Compute a target state for an edge in the DFA, and attempt to add the\n// computed state and corresponding edge to the DFA.\n//\n// @param input The input stream\n// @param s The current DFA state\n// @param t The next input symbol\n//\n// @return The computed target DFA state for the given input symbol\n// {@code t}. If {@code t} does not lead to a valid DFA state, this method\n// returns {@link //ERROR}.\nLexerATNSimulator.prototype.computeTargetState = function(input, s, t) {\n\tvar reach = new OrderedATNConfigSet();\n\t// if we don't find an existing DFA state\n\t// Fill reach starting from closure, following t transitions\n\tthis.getReachableConfigSet(input, s.configs, reach, t);\n\n\tif (reach.items.length === 0) { // we got nowhere on t from s\n\t\tif (!reach.hasSemanticContext) {\n\t\t\t// we got nowhere on t, don't throw out this knowledge; it'd\n\t\t\t// cause a failover from DFA later.\n\t\t\tthis.addDFAEdge(s, t, ATNSimulator.ERROR);\n\t\t}\n\t\t// stop when we can't match any more char\n\t\treturn ATNSimulator.ERROR;\n\t}\n\t// Add an edge from s to target DFA found/created for reach\n\treturn this.addDFAEdge(s, t, null, reach);\n};\n\nLexerATNSimulator.prototype.failOrAccept = function(prevAccept, input, reach, t) {\n\tif (this.prevAccept.dfaState !== null) {\n\t\tvar lexerActionExecutor = prevAccept.dfaState.lexerActionExecutor;\n\t\tthis.accept(input, lexerActionExecutor, this.startIndex,\n\t\t\t\tprevAccept.index, prevAccept.line, prevAccept.column);\n\t\treturn prevAccept.dfaState.prediction;\n\t} else {\n\t\t// if no accept and EOF is first char, return EOF\n\t\tif (t === Token.EOF && input.index === this.startIndex) {\n\t\t\treturn Token.EOF;\n\t\t}\n\t\tthrow new LexerNoViableAltException(this.recog, input, this.startIndex, reach);\n\t}\n};\n\n// Given a starting configuration set, figure out all ATN configurations\n// we can reach upon input {@code t}. Parameter {@code reach} is a return\n// parameter.\nLexerATNSimulator.prototype.getReachableConfigSet = function(input, closure,\n\t\treach, t) {\n\t// this is used to skip processing for configs which have a lower priority\n\t// than a config that already reached an accept state for the same rule\n\tvar skipAlt = ATN.INVALID_ALT_NUMBER;\n\tfor (var i = 0; i < closure.items.length; i++) {\n\t\tvar cfg = closure.items[i];\n\t\tvar currentAltReachedAcceptState = (cfg.alt === skipAlt);\n\t\tif (currentAltReachedAcceptState && cfg.passedThroughNonGreedyDecision) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"testing %s at %s\\n\", this.getTokenName(t), cfg\n\t\t\t\t\t.toString(this.recog, true));\n\t\t}\n\t\tfor (var j = 0; j < cfg.state.transitions.length; j++) {\n\t\t\tvar trans = cfg.state.transitions[j]; // for each transition\n\t\t\tvar target = this.getReachableTarget(trans, t);\n\t\t\tif (target !== null) {\n\t\t\t\tvar lexerActionExecutor = cfg.lexerActionExecutor;\n\t\t\t\tif (lexerActionExecutor !== null) {\n\t\t\t\t\tlexerActionExecutor = lexerActionExecutor.fixOffsetBeforeMatch(input.index - this.startIndex);\n\t\t\t\t}\n\t\t\t\tvar treatEofAsEpsilon = (t === Token.EOF);\n\t\t\t\tvar config = new LexerATNConfig({state:target, lexerActionExecutor:lexerActionExecutor}, cfg);\n\t\t\t\tif (this.closure(input, config, reach,\n\t\t\t\t\t\tcurrentAltReachedAcceptState, true, treatEofAsEpsilon)) {\n\t\t\t\t\t// any remaining configs for this alt have a lower priority\n\t\t\t\t\t// than the one that just reached an accept state.\n\t\t\t\t\tskipAlt = cfg.alt;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nLexerATNSimulator.prototype.accept = function(input, lexerActionExecutor,\n\t\tstartIndex, index, line, charPos) {\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"ACTION %s\\n\", lexerActionExecutor);\n\t}\n\t// seek to after last char in token\n\tinput.seek(index);\n\tthis.line = line;\n\tthis.column = charPos;\n\tif (lexerActionExecutor !== null && this.recog !== null) {\n\t\tlexerActionExecutor.execute(this.recog, input, startIndex);\n\t}\n};\n\nLexerATNSimulator.prototype.getReachableTarget = function(trans, t) {\n\tif (trans.matches(t, 0, Lexer.MAX_CHAR_VALUE)) {\n\t\treturn trans.target;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nLexerATNSimulator.prototype.computeStartState = function(input, p) {\n\tvar initialContext = PredictionContext.EMPTY;\n\tvar configs = new OrderedATNConfigSet();\n\tfor (var i = 0; i < p.transitions.length; i++) {\n\t\tvar target = p.transitions[i].target;\n var cfg = new LexerATNConfig({state:target, alt:i+1, context:initialContext}, null);\n\t\tthis.closure(input, cfg, configs, false, false, false);\n\t}\n\treturn configs;\n};\n\n// Since the alternatives within any lexer decision are ordered by\n// preference, this method stops pursuing the closure as soon as an accept\n// state is reached. After the first accept state is reached by depth-first\n// search from {@code config}, all other (potentially reachable) states for\n// this rule would have a lower priority.\n//\n// @return {@code true} if an accept state is reached, otherwise\n// {@code false}.\nLexerATNSimulator.prototype.closure = function(input, config, configs,\n\t\tcurrentAltReachedAcceptState, speculative, treatEofAsEpsilon) {\n\tvar cfg = null;\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"closure(\" + config.toString(this.recog, true) + \")\");\n\t}\n\tif (config.state instanceof RuleStopState) {\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tif (this.recog !== null) {\n\t\t\t\tconsole.log(\"closure at %s rule stop %s\\n\", this.recog.ruleNames[config.state.ruleIndex], config);\n\t\t\t} else {\n\t\t\t\tconsole.log(\"closure at rule stop %s\\n\", config);\n\t\t\t}\n\t\t}\n\t\tif (config.context === null || config.context.hasEmptyPath()) {\n\t\t\tif (config.context === null || config.context.isEmpty()) {\n\t\t\t\tconfigs.add(config);\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tconfigs.add(new LexerATNConfig({ state:config.state, context:PredictionContext.EMPTY}, config));\n\t\t\t\tcurrentAltReachedAcceptState = true;\n\t\t\t}\n\t\t}\n\t\tif (config.context !== null && !config.context.isEmpty()) {\n\t\t\tfor (var i = 0; i < config.context.length; i++) {\n\t\t\t\tif (config.context.getReturnState(i) !== PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\t\t\tvar newContext = config.context.getParent(i); // \"pop\" return state\n\t\t\t\t\tvar returnState = this.atn.states[config.context.getReturnState(i)];\n\t\t\t\t\tcfg = new LexerATNConfig({ state:returnState, context:newContext }, config);\n\t\t\t\t\tcurrentAltReachedAcceptState = this.closure(input, cfg,\n\t\t\t\t\t\t\tconfigs, currentAltReachedAcceptState, speculative,\n\t\t\t\t\t\t\ttreatEofAsEpsilon);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn currentAltReachedAcceptState;\n\t}\n\t// optimization\n\tif (!config.state.epsilonOnlyTransitions) {\n\t\tif (!currentAltReachedAcceptState || !config.passedThroughNonGreedyDecision) {\n\t\t\tconfigs.add(config);\n\t\t}\n\t}\n\tfor (var j = 0; j < config.state.transitions.length; j++) {\n\t\tvar trans = config.state.transitions[j];\n\t\tcfg = this.getEpsilonTarget(input, config, trans, configs, speculative, treatEofAsEpsilon);\n\t\tif (cfg !== null) {\n\t\t\tcurrentAltReachedAcceptState = this.closure(input, cfg, configs,\n\t\t\t\t\tcurrentAltReachedAcceptState, speculative, treatEofAsEpsilon);\n\t\t}\n\t}\n\treturn currentAltReachedAcceptState;\n};\n\n// side-effect: can alter configs.hasSemanticContext\nLexerATNSimulator.prototype.getEpsilonTarget = function(input, config, trans,\n\t\tconfigs, speculative, treatEofAsEpsilon) {\n\tvar cfg = null;\n\tif (trans.serializationType === Transition.RULE) {\n\t\tvar newContext = SingletonPredictionContext.create(config.context, trans.followState.stateNumber);\n\t\tcfg = new LexerATNConfig( { state:trans.target, context:newContext}, config);\n\t} else if (trans.serializationType === Transition.PRECEDENCE) {\n\t\tthrow \"Precedence predicates are not supported in lexers.\";\n\t} else if (trans.serializationType === Transition.PREDICATE) {\n\t\t// Track traversing semantic predicates. If we traverse,\n\t\t// we cannot add a DFA state for this \"reach\" computation\n\t\t// because the DFA would not test the predicate again in the\n\t\t// future. Rather than creating collections of semantic predicates\n\t\t// like v3 and testing them on prediction, v4 will test them on the\n\t\t// fly all the time using the ATN not the DFA. This is slower but\n\t\t// semantically it's not used that often. One of the key elements to\n\t\t// this predicate mechanism is not adding DFA states that see\n\t\t// predicates immediately afterwards in the ATN. For example,\n\n\t\t// a : ID {p1}? | ID {p2}? ;\n\n\t\t// should create the start state for rule 'a' (to save start state\n\t\t// competition), but should not create target of ID state. The\n\t\t// collection of ATN states the following ID references includes\n\t\t// states reached by traversing predicates. Since this is when we\n\t\t// test them, we cannot cash the DFA state target of ID.\n\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"EVAL rule \" + trans.ruleIndex + \":\" + trans.predIndex);\n\t\t}\n\t\tconfigs.hasSemanticContext = true;\n\t\tif (this.evaluatePredicate(input, trans.ruleIndex, trans.predIndex, speculative)) {\n\t\t\tcfg = new LexerATNConfig({ state:trans.target}, config);\n\t\t}\n\t} else if (trans.serializationType === Transition.ACTION) {\n\t\tif (config.context === null || config.context.hasEmptyPath()) {\n\t\t\t// execute actions anywhere in the start rule for a token.\n\t\t\t//\n\t\t\t// TODO: if the entry rule is invoked recursively, some\n\t\t\t// actions may be executed during the recursive call. The\n\t\t\t// problem can appear when hasEmptyPath() is true but\n\t\t\t// isEmpty() is false. In this case, the config needs to be\n\t\t\t// split into two contexts - one with just the empty path\n\t\t\t// and another with everything but the empty path.\n\t\t\t// Unfortunately, the current algorithm does not allow\n\t\t\t// getEpsilonTarget to return two configurations, so\n\t\t\t// additional modifications are needed before we can support\n\t\t\t// the split operation.\n\t\t\tvar lexerActionExecutor = LexerActionExecutor.append(config.lexerActionExecutor,\n\t\t\t\t\tthis.atn.lexerActions[trans.actionIndex]);\n\t\t\tcfg = new LexerATNConfig({ state:trans.target, lexerActionExecutor:lexerActionExecutor }, config);\n\t\t} else {\n\t\t\t// ignore actions in referenced rules\n\t\t\tcfg = new LexerATNConfig( { state:trans.target}, config);\n\t\t}\n\t} else if (trans.serializationType === Transition.EPSILON) {\n\t\tcfg = new LexerATNConfig({ state:trans.target}, config);\n\t} else if (trans.serializationType === Transition.ATOM ||\n\t\t\t\ttrans.serializationType === Transition.RANGE ||\n\t\t\t\ttrans.serializationType === Transition.SET) {\n\t\tif (treatEofAsEpsilon) {\n\t\t\tif (trans.matches(Token.EOF, 0, Lexer.MAX_CHAR_VALUE)) {\n\t\t\t\tcfg = new LexerATNConfig( { state:trans.target }, config);\n\t\t\t}\n\t\t}\n\t}\n\treturn cfg;\n};\n\n// Evaluate a predicate specified in the lexer.\n//\n// <p>If {@code speculative} is {@code true}, this method was called before\n// {@link //consume} for the matched character. This method should call\n// {@link //consume} before evaluating the predicate to ensure position\n// sensitive values, including {@link Lexer//getText}, {@link Lexer//getLine},\n// and {@link Lexer//getcolumn}, properly reflect the current\n// lexer state. This method should restore {@code input} and the simulator\n// to the original state before returning (i.e. undo the actions made by the\n// call to {@link //consume}.</p>\n//\n// @param input The input stream.\n// @param ruleIndex The rule containing the predicate.\n// @param predIndex The index of the predicate within the rule.\n// @param speculative {@code true} if the current index in {@code input} is\n// one character before the predicate's location.\n//\n// @return {@code true} if the specified predicate evaluates to\n// {@code true}.\n// /\nLexerATNSimulator.prototype.evaluatePredicate = function(input, ruleIndex,\n\t\tpredIndex, speculative) {\n\t// assume true if no recognizer was provided\n\tif (this.recog === null) {\n\t\treturn true;\n\t}\n\tif (!speculative) {\n\t\treturn this.recog.sempred(null, ruleIndex, predIndex);\n\t}\n\tvar savedcolumn = this.column;\n\tvar savedLine = this.line;\n\tvar index = input.index;\n\tvar marker = input.mark();\n\ttry {\n\t\tthis.consume(input);\n\t\treturn this.recog.sempred(null, ruleIndex, predIndex);\n\t} finally {\n\t\tthis.column = savedcolumn;\n\t\tthis.line = savedLine;\n\t\tinput.seek(index);\n\t\tinput.release(marker);\n\t}\n};\n\nLexerATNSimulator.prototype.captureSimState = function(settings, input, dfaState) {\n\tsettings.index = input.index;\n\tsettings.line = this.line;\n\tsettings.column = this.column;\n\tsettings.dfaState = dfaState;\n};\n\nLexerATNSimulator.prototype.addDFAEdge = function(from_, tk, to, cfgs) {\n\tif (to === undefined) {\n\t\tto = null;\n\t}\n\tif (cfgs === undefined) {\n\t\tcfgs = null;\n\t}\n\tif (to === null && cfgs !== null) {\n\t\t// leading to this call, ATNConfigSet.hasSemanticContext is used as a\n\t\t// marker indicating dynamic predicate evaluation makes this edge\n\t\t// dependent on the specific input sequence, so the static edge in the\n\t\t// DFA should be omitted. The target DFAState is still created since\n\t\t// execATN has the ability to resynchronize with the DFA state cache\n\t\t// following the predicate evaluation step.\n\t\t//\n\t\t// TJP notes: next time through the DFA, we see a pred again and eval.\n\t\t// If that gets us to a previously created (but dangling) DFA\n\t\t// state, we can continue in pure DFA mode from there.\n\t\t// /\n\t\tvar suppressEdge = cfgs.hasSemanticContext;\n\t\tcfgs.hasSemanticContext = false;\n\n\t\tto = this.addDFAState(cfgs);\n\n\t\tif (suppressEdge) {\n\t\t\treturn to;\n\t\t}\n\t}\n\t// add the edge\n\tif (tk < LexerATNSimulator.MIN_DFA_EDGE || tk > LexerATNSimulator.MAX_DFA_EDGE) {\n\t\t// Only track edges within the DFA bounds\n\t\treturn to;\n\t}\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"EDGE \" + from_ + \" -> \" + to + \" upon \" + tk);\n\t}\n\tif (from_.edges === null) {\n\t\t// make room for tokens 1..n and -1 masquerading as index 0\n\t\tfrom_.edges = [];\n\t}\n\tfrom_.edges[tk - LexerATNSimulator.MIN_DFA_EDGE] = to; // connect\n\n\treturn to;\n};\n\n// Add a new DFA state if there isn't one with this set of\n// configurations already. This method also detects the first\n// configuration containing an ATN rule stop state. Later, when\n// traversing the DFA, we will know which rule to accept.\nLexerATNSimulator.prototype.addDFAState = function(configs) {\n\tvar proposed = new DFAState(null, configs);\n\tvar firstConfigWithRuleStopState = null;\n\tfor (var i = 0; i < configs.items.length; i++) {\n\t\tvar cfg = configs.items[i];\n\t\tif (cfg.state instanceof RuleStopState) {\n\t\t\tfirstConfigWithRuleStopState = cfg;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (firstConfigWithRuleStopState !== null) {\n\t\tproposed.isAcceptState = true;\n\t\tproposed.lexerActionExecutor = firstConfigWithRuleStopState.lexerActionExecutor;\n\t\tproposed.prediction = this.atn.ruleToTokenType[firstConfigWithRuleStopState.state.ruleIndex];\n\t}\n\tvar dfa = this.decisionToDFA[this.mode];\n\tvar existing = dfa.states.get(proposed);\n\tif (existing!==null) {\n\t\treturn existing;\n\t}\n\tvar newState = proposed;\n\tnewState.stateNumber = dfa.states.length;\n\tconfigs.setReadonly(true);\n\tnewState.configs = configs;\n\tdfa.states.add(newState);\n\treturn newState;\n};\n\nLexerATNSimulator.prototype.getDFA = function(mode) {\n\treturn this.decisionToDFA[mode];\n};\n\n// Get the text matched so far for the current token.\nLexerATNSimulator.prototype.getText = function(input) {\n\t// index is first lookahead char, don't include.\n\treturn input.getText(this.startIndex, input.index - 1);\n};\n\nLexerATNSimulator.prototype.consume = function(input) {\n\tvar curChar = input.LA(1);\n\tif (curChar === \"\\n\".charCodeAt(0)) {\n\t\tthis.line += 1;\n\t\tthis.column = 0;\n\t} else {\n\t\tthis.column += 1;\n\t}\n\tinput.consume();\n};\n\nLexerATNSimulator.prototype.getTokenName = function(tt) {\n\tif (tt === -1) {\n\t\treturn \"EOF\";\n\t} else {\n\t\treturn \"'\" + String.fromCharCode(tt) + \"'\";\n\t}\n};\n\nexports.LexerATNSimulator = LexerATNSimulator;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n //\n\nfunction LexerActionType() {\n}\n\nLexerActionType.CHANNEL = 0; //The type of a {@link LexerChannelAction} action.\nLexerActionType.CUSTOM = 1; //The type of a {@link LexerCustomAction} action.\nLexerActionType.MODE = 2; //The type of a {@link LexerModeAction} action.\nLexerActionType.MORE = 3; //The type of a {@link LexerMoreAction} action.\nLexerActionType.POP_MODE = 4; //The type of a {@link LexerPopModeAction} action.\nLexerActionType.PUSH_MODE = 5; //The type of a {@link LexerPushModeAction} action.\nLexerActionType.SKIP = 6; //The type of a {@link LexerSkipAction} action.\nLexerActionType.TYPE = 7; //The type of a {@link LexerTypeAction} action.\n\nfunction LexerAction(action) {\n this.actionType = action;\n this.isPositionDependent = false;\n return this;\n}\n\nLexerAction.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish()\n};\n\nLexerAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType);\n};\n\nLexerAction.prototype.equals = function(other) {\n return this === other;\n};\n\n\n\n//\n// Implements the {@code skip} lexer action by calling {@link Lexer//skip}.\n//\n// <p>The {@code skip} command does not have any parameters, so this action is\n// implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\nfunction LexerSkipAction() {\n\tLexerAction.call(this, LexerActionType.SKIP);\n\treturn this;\n}\n\nLexerSkipAction.prototype = Object.create(LexerAction.prototype);\nLexerSkipAction.prototype.constructor = LexerSkipAction;\n\n// Provides a singleton instance of this parameterless lexer action.\nLexerSkipAction.INSTANCE = new LexerSkipAction();\n\nLexerSkipAction.prototype.execute = function(lexer) {\n lexer.skip();\n};\n\nLexerSkipAction.prototype.toString = function() {\n\treturn \"skip\";\n};\n\n// Implements the {@code type} lexer action by calling {@link Lexer//setType}\n// with the assigned type.\nfunction LexerTypeAction(type) {\n\tLexerAction.call(this, LexerActionType.TYPE);\n\tthis.type = type;\n\treturn this;\n}\n\nLexerTypeAction.prototype = Object.create(LexerAction.prototype);\nLexerTypeAction.prototype.constructor = LexerTypeAction;\n\nLexerTypeAction.prototype.execute = function(lexer) {\n lexer.type = this.type;\n};\n\nLexerTypeAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.type);\n};\n\n\nLexerTypeAction.prototype.equals = function(other) {\n if(this === other) {\n return true;\n } else if (! (other instanceof LexerTypeAction)) {\n return false;\n } else {\n return this.type === other.type;\n }\n};\n\nLexerTypeAction.prototype.toString = function() {\n return \"type(\" + this.type + \")\";\n};\n\n// Implements the {@code pushMode} lexer action by calling\n// {@link Lexer//pushMode} with the assigned mode.\nfunction LexerPushModeAction(mode) {\n\tLexerAction.call(this, LexerActionType.PUSH_MODE);\n this.mode = mode;\n return this;\n}\n\nLexerPushModeAction.prototype = Object.create(LexerAction.prototype);\nLexerPushModeAction.prototype.constructor = LexerPushModeAction;\n\n// <p>This action is implemented by calling {@link Lexer//pushMode} with the\n// value provided by {@link //getMode}.</p>\nLexerPushModeAction.prototype.execute = function(lexer) {\n lexer.pushMode(this.mode);\n};\n\nLexerPushModeAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.mode);\n};\n\nLexerPushModeAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerPushModeAction)) {\n return false;\n } else {\n return this.mode === other.mode;\n }\n};\n\nLexerPushModeAction.prototype.toString = function() {\n\treturn \"pushMode(\" + this.mode + \")\";\n};\n\n\n// Implements the {@code popMode} lexer action by calling {@link Lexer//popMode}.\n//\n// <p>The {@code popMode} command does not have any parameters, so this action is\n// implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\nfunction LexerPopModeAction() {\n\tLexerAction.call(this,LexerActionType.POP_MODE);\n\treturn this;\n}\n\nLexerPopModeAction.prototype = Object.create(LexerAction.prototype);\nLexerPopModeAction.prototype.constructor = LexerPopModeAction;\n\nLexerPopModeAction.INSTANCE = new LexerPopModeAction();\n\n// <p>This action is implemented by calling {@link Lexer//popMode}.</p>\nLexerPopModeAction.prototype.execute = function(lexer) {\n lexer.popMode();\n};\n\nLexerPopModeAction.prototype.toString = function() {\n\treturn \"popMode\";\n};\n\n// Implements the {@code more} lexer action by calling {@link Lexer//more}.\n//\n// <p>The {@code more} command does not have any parameters, so this action is\n// implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\nfunction LexerMoreAction() {\n\tLexerAction.call(this, LexerActionType.MORE);\n\treturn this;\n}\n\nLexerMoreAction.prototype = Object.create(LexerAction.prototype);\nLexerMoreAction.prototype.constructor = LexerMoreAction;\n\nLexerMoreAction.INSTANCE = new LexerMoreAction();\n\n// <p>This action is implemented by calling {@link Lexer//popMode}.</p>\nLexerMoreAction.prototype.execute = function(lexer) {\n lexer.more();\n};\n\nLexerMoreAction.prototype.toString = function() {\n return \"more\";\n};\n\n\n// Implements the {@code mode} lexer action by calling {@link Lexer//mode} with\n// the assigned mode.\nfunction LexerModeAction(mode) {\n\tLexerAction.call(this, LexerActionType.MODE);\n this.mode = mode;\n return this;\n}\n\nLexerModeAction.prototype = Object.create(LexerAction.prototype);\nLexerModeAction.prototype.constructor = LexerModeAction;\n\n// <p>This action is implemented by calling {@link Lexer//mode} with the\n// value provided by {@link //getMode}.</p>\nLexerModeAction.prototype.execute = function(lexer) {\n lexer.mode(this.mode);\n};\n\nLexerModeAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.mode);\n};\n\nLexerModeAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerModeAction)) {\n return false;\n } else {\n return this.mode === other.mode;\n }\n};\n\nLexerModeAction.prototype.toString = function() {\n return \"mode(\" + this.mode + \")\";\n};\n\n// Executes a custom lexer action by calling {@link Recognizer//action} with the\n// rule and action indexes assigned to the custom action. The implementation of\n// a custom action is added to the generated code for the lexer in an override\n// of {@link Recognizer//action} when the grammar is compiled.\n//\n// <p>This class may represent embedded actions created with the <code>{...}</code>\n// syntax in ANTLR 4, as well as actions created for lexer commands where the\n// command argument could not be evaluated when the grammar was compiled.</p>\n\n\n // Constructs a custom lexer action with the specified rule and action\n // indexes.\n //\n // @param ruleIndex The rule index to use for calls to\n // {@link Recognizer//action}.\n // @param actionIndex The action index to use for calls to\n // {@link Recognizer//action}.\n\nfunction LexerCustomAction(ruleIndex, actionIndex) {\n\tLexerAction.call(this, LexerActionType.CUSTOM);\n this.ruleIndex = ruleIndex;\n this.actionIndex = actionIndex;\n this.isPositionDependent = true;\n return this;\n}\n\nLexerCustomAction.prototype = Object.create(LexerAction.prototype);\nLexerCustomAction.prototype.constructor = LexerCustomAction;\n\n// <p>Custom actions are implemented by calling {@link Lexer//action} with the\n// appropriate rule and action indexes.</p>\nLexerCustomAction.prototype.execute = function(lexer) {\n lexer.action(null, this.ruleIndex, this.actionIndex);\n};\n\nLexerCustomAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.ruleIndex, this.actionIndex);\n};\n\nLexerCustomAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerCustomAction)) {\n return false;\n } else {\n return this.ruleIndex === other.ruleIndex && this.actionIndex === other.actionIndex;\n }\n};\n\n// Implements the {@code channel} lexer action by calling\n// {@link Lexer//setChannel} with the assigned channel.\n// Constructs a new {@code channel} action with the specified channel value.\n// @param channel The channel value to pass to {@link Lexer//setChannel}.\nfunction LexerChannelAction(channel) {\n\tLexerAction.call(this, LexerActionType.CHANNEL);\n this.channel = channel;\n return this;\n}\n\nLexerChannelAction.prototype = Object.create(LexerAction.prototype);\nLexerChannelAction.prototype.constructor = LexerChannelAction;\n\n// <p>This action is implemented by calling {@link Lexer//setChannel} with the\n// value provided by {@link //getChannel}.</p>\nLexerChannelAction.prototype.execute = function(lexer) {\n lexer._channel = this.channel;\n};\n\nLexerChannelAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.channel);\n};\n\nLexerChannelAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerChannelAction)) {\n return false;\n } else {\n return this.channel === other.channel;\n }\n};\n\nLexerChannelAction.prototype.toString = function() {\n return \"channel(\" + this.channel + \")\";\n};\n\n// This implementation of {@link LexerAction} is used for tracking input offsets\n// for position-dependent actions within a {@link LexerActionExecutor}.\n//\n// <p>This action is not serialized as part of the ATN, and is only required for\n// position-dependent lexer actions which appear at a location other than the\n// end of a rule. For more information about DFA optimizations employed for\n// lexer actions, see {@link LexerActionExecutor//append} and\n// {@link LexerActionExecutor//fixOffsetBeforeMatch}.</p>\n\n// Constructs a new indexed custom action by associating a character offset\n// with a {@link LexerAction}.\n//\n// <p>Note: This class is only required for lexer actions for which\n// {@link LexerAction//isPositionDependent} returns {@code true}.</p>\n//\n// @param offset The offset into the input {@link CharStream}, relative to\n// the token start index, at which the specified lexer action should be\n// executed.\n// @param action The lexer action to execute at a particular offset in the\n// input {@link CharStream}.\nfunction LexerIndexedCustomAction(offset, action) {\n\tLexerAction.call(this, action.actionType);\n this.offset = offset;\n this.action = action;\n this.isPositionDependent = true;\n return this;\n}\n\nLexerIndexedCustomAction.prototype = Object.create(LexerAction.prototype);\nLexerIndexedCustomAction.prototype.constructor = LexerIndexedCustomAction;\n\n// <p>This method calls {@link //execute} on the result of {@link //getAction}\n// using the provided {@code lexer}.</p>\nLexerIndexedCustomAction.prototype.execute = function(lexer) {\n // assume the input stream position was properly set by the calling code\n this.action.execute(lexer);\n};\n\nLexerIndexedCustomAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.offset, this.action);\n};\n\nLexerIndexedCustomAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerIndexedCustomAction)) {\n return false;\n } else {\n return this.offset === other.offset && this.action === other.action;\n }\n};\n\n\nexports.LexerActionType = LexerActionType;\nexports.LexerSkipAction = LexerSkipAction;\nexports.LexerChannelAction = LexerChannelAction;\nexports.LexerCustomAction = LexerCustomAction;\nexports.LexerIndexedCustomAction = LexerIndexedCustomAction;\nexports.LexerMoreAction = LexerMoreAction;\nexports.LexerTypeAction = LexerTypeAction;\nexports.LexerPushModeAction = LexerPushModeAction;\nexports.LexerPopModeAction = LexerPopModeAction;\nexports.LexerModeAction = LexerModeAction;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// Represents an executor for a sequence of lexer actions which traversed during\n// the matching operation of a lexer rule (token).\n//\n// <p>The executor tracks position information for position-dependent lexer actions\n// efficiently, ensuring that actions appearing only at the end of the rule do\n// not cause bloating of the {@link DFA} created for the lexer.</p>\n\nvar hashStuff = require(\"../Utils\").hashStuff;\nvar LexerIndexedCustomAction = require('./LexerAction').LexerIndexedCustomAction;\n\nfunction LexerActionExecutor(lexerActions) {\n\tthis.lexerActions = lexerActions === null ? [] : lexerActions;\n\t// Caches the result of {@link //hashCode} since the hash code is an element\n\t// of the performance-critical {@link LexerATNConfig//hashCode} operation.\n\tthis.cachedHashCode = hashStuff(lexerActions); // \"\".join([str(la) for la in\n\t// lexerActions]))\n\treturn this;\n}\n\n// Creates a {@link LexerActionExecutor} which executes the actions for\n// the input {@code lexerActionExecutor} followed by a specified\n// {@code lexerAction}.\n//\n// @param lexerActionExecutor The executor for actions already traversed by\n// the lexer while matching a token within a particular\n// {@link LexerATNConfig}. If this is {@code null}, the method behaves as\n// though it were an empty executor.\n// @param lexerAction The lexer action to execute after the actions\n// specified in {@code lexerActionExecutor}.\n//\n// @return A {@link LexerActionExecutor} for executing the combine actions\n// of {@code lexerActionExecutor} and {@code lexerAction}.\nLexerActionExecutor.append = function(lexerActionExecutor, lexerAction) {\n\tif (lexerActionExecutor === null) {\n\t\treturn new LexerActionExecutor([ lexerAction ]);\n\t}\n\tvar lexerActions = lexerActionExecutor.lexerActions.concat([ lexerAction ]);\n\treturn new LexerActionExecutor(lexerActions);\n};\n\n// Creates a {@link LexerActionExecutor} which encodes the current offset\n// for position-dependent lexer actions.\n//\n// <p>Normally, when the executor encounters lexer actions where\n// {@link LexerAction//isPositionDependent} returns {@code true}, it calls\n// {@link IntStream//seek} on the input {@link CharStream} to set the input\n// position to the <em>end</em> of the current token. This behavior provides\n// for efficient DFA representation of lexer actions which appear at the end\n// of a lexer rule, even when the lexer rule matches a variable number of\n// characters.</p>\n//\n// <p>Prior to traversing a match transition in the ATN, the current offset\n// from the token start index is assigned to all position-dependent lexer\n// actions which have not already been assigned a fixed offset. By storing\n// the offsets relative to the token start index, the DFA representation of\n// lexer actions which appear in the middle of tokens remains efficient due\n// to sharing among tokens of the same length, regardless of their absolute\n// position in the input stream.</p>\n//\n// <p>If the current executor already has offsets assigned to all\n// position-dependent lexer actions, the method returns {@code this}.</p>\n//\n// @param offset The current offset to assign to all position-dependent\n// lexer actions which do not already have offsets assigned.\n//\n// @return A {@link LexerActionExecutor} which stores input stream offsets\n// for all position-dependent lexer actions.\n// /\nLexerActionExecutor.prototype.fixOffsetBeforeMatch = function(offset) {\n\tvar updatedLexerActions = null;\n\tfor (var i = 0; i < this.lexerActions.length; i++) {\n\t\tif (this.lexerActions[i].isPositionDependent &&\n\t\t\t\t!(this.lexerActions[i] instanceof LexerIndexedCustomAction)) {\n\t\t\tif (updatedLexerActions === null) {\n\t\t\t\tupdatedLexerActions = this.lexerActions.concat([]);\n\t\t\t}\n\t\t\tupdatedLexerActions[i] = new LexerIndexedCustomAction(offset,\n\t\t\t\t\tthis.lexerActions[i]);\n\t\t}\n\t}\n\tif (updatedLexerActions === null) {\n\t\treturn this;\n\t} else {\n\t\treturn new LexerActionExecutor(updatedLexerActions);\n\t}\n};\n\n// Execute the actions encapsulated by this executor within the context of a\n// particular {@link Lexer}.\n//\n// <p>This method calls {@link IntStream//seek} to set the position of the\n// {@code input} {@link CharStream} prior to calling\n// {@link LexerAction//execute} on a position-dependent action. Before the\n// method returns, the input position will be restored to the same position\n// it was in when the method was invoked.</p>\n//\n// @param lexer The lexer instance.\n// @param input The input stream which is the source for the current token.\n// When this method is called, the current {@link IntStream//index} for\n// {@code input} should be the start of the following token, i.e. 1\n// character past the end of the current token.\n// @param startIndex The token start index. This value may be passed to\n// {@link IntStream//seek} to set the {@code input} position to the beginning\n// of the token.\n// /\nLexerActionExecutor.prototype.execute = function(lexer, input, startIndex) {\n\tvar requiresSeek = false;\n\tvar stopIndex = input.index;\n\ttry {\n\t\tfor (var i = 0; i < this.lexerActions.length; i++) {\n\t\t\tvar lexerAction = this.lexerActions[i];\n\t\t\tif (lexerAction instanceof LexerIndexedCustomAction) {\n\t\t\t\tvar offset = lexerAction.offset;\n\t\t\t\tinput.seek(startIndex + offset);\n\t\t\t\tlexerAction = lexerAction.action;\n\t\t\t\trequiresSeek = (startIndex + offset) !== stopIndex;\n\t\t\t} else if (lexerAction.isPositionDependent) {\n\t\t\t\tinput.seek(stopIndex);\n\t\t\t\trequiresSeek = false;\n\t\t\t}\n\t\t\tlexerAction.execute(lexer);\n\t\t}\n\t} finally {\n\t\tif (requiresSeek) {\n\t\t\tinput.seek(stopIndex);\n\t\t}\n\t}\n};\n\nLexerActionExecutor.prototype.hashCode = function() {\n\treturn this.cachedHashCode;\n};\n\nLexerActionExecutor.prototype.updateHashCode = function(hash) {\n hash.update(this.cachedHashCode);\n};\n\n\nLexerActionExecutor.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof LexerActionExecutor)) {\n\t\treturn false;\n\t} else if (this.cachedHashCode != other.cachedHashCode) {\n\t\treturn false;\n\t} else if (this.lexerActions.length != other.lexerActions.length) {\n\t\treturn false;\n\t} else {\n\t\tvar numActions = this.lexerActions.length\n\t\tfor (var idx = 0; idx < numActions; ++idx) {\n\t\t\tif (!this.lexerActions[idx].equals(other.lexerActions[idx])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n};\n\nexports.LexerActionExecutor = LexerActionExecutor;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// The embodiment of the adaptive LL(*), ALL(*), parsing strategy.\n//\n// <p>\n// The basic complexity of the adaptive strategy makes it harder to understand.\n// We begin with ATN simulation to build paths in a DFA. Subsequent prediction\n// requests go through the DFA first. If they reach a state without an edge for\n// the current symbol, the algorithm fails over to the ATN simulation to\n// complete the DFA path for the current input (until it finds a conflict state\n// or uniquely predicting state).</p>\n//\n// <p>\n// All of that is done without using the outer context because we want to create\n// a DFA that is not dependent upon the rule invocation stack when we do a\n// prediction. One DFA works in all contexts. We avoid using context not\n// necessarily because it's slower, although it can be, but because of the DFA\n// caching problem. The closure routine only considers the rule invocation stack\n// created during prediction beginning in the decision rule. For example, if\n// prediction occurs without invoking another rule's ATN, there are no context\n// stacks in the configurations. When lack of context leads to a conflict, we\n// don't know if it's an ambiguity or a weakness in the strong LL(*) parsing\n// strategy (versus full LL(*)).</p>\n//\n// <p>\n// When SLL yields a configuration set with conflict, we rewind the input and\n// retry the ATN simulation, this time using full outer context without adding\n// to the DFA. Configuration context stacks will be the full invocation stacks\n// from the start rule. If we get a conflict using full context, then we can\n// definitively say we have a true ambiguity for that input sequence. If we\n// don't get a conflict, it implies that the decision is sensitive to the outer\n// context. (It is not context-sensitive in the sense of context-sensitive\n// grammars.)</p>\n//\n// <p>\n// The next time we reach this DFA state with an SLL conflict, through DFA\n// simulation, we will again retry the ATN simulation using full context mode.\n// This is slow because we can't save the results and have to \"interpret\" the\n// ATN each time we get that input.</p>\n//\n// <p>\n// <strong>CACHING FULL CONTEXT PREDICTIONS</strong></p>\n//\n// <p>\n// We could cache results from full context to predicted alternative easily and\n// that saves a lot of time but doesn't work in presence of predicates. The set\n// of visible predicates from the ATN start state changes depending on the\n// context, because closure can fall off the end of a rule. I tried to cache\n// tuples (stack context, semantic context, predicted alt) but it was slower\n// than interpreting and much more complicated. Also required a huge amount of\n// memory. The goal is not to create the world's fastest parser anyway. I'd like\n// to keep this algorithm simple. By launching multiple threads, we can improve\n// the speed of parsing across a large number of files.</p>\n//\n// <p>\n// There is no strict ordering between the amount of input used by SLL vs LL,\n// which makes it really hard to build a cache for full context. Let's say that\n// we have input A B C that leads to an SLL conflict with full context X. That\n// implies that using X we might only use A B but we could also use A B C D to\n// resolve conflict. Input A B C D could predict alternative 1 in one position\n// in the input and A B C E could predict alternative 2 in another position in\n// input. The conflicting SLL configurations could still be non-unique in the\n// full context prediction, which would lead us to requiring more input than the\n// original A B C.\tTo make a\tprediction cache work, we have to track\tthe exact\n// input\tused during the previous prediction. That amounts to a cache that maps\n// X to a specific DFA for that context.</p>\n//\n// <p>\n// Something should be done for left-recursive expression predictions. They are\n// likely LL(1) + pred eval. Easier to do the whole SLL unless error and retry\n// with full LL thing Sam does.</p>\n//\n// <p>\n// <strong>AVOIDING FULL CONTEXT PREDICTION</strong></p>\n//\n// <p>\n// We avoid doing full context retry when the outer context is empty, we did not\n// dip into the outer context by falling off the end of the decision state rule,\n// or when we force SLL mode.</p>\n//\n// <p>\n// As an example of the not dip into outer context case, consider as super\n// constructor calls versus function calls. One grammar might look like\n// this:</p>\n//\n// <pre>\n// ctorBody\n// : '{' superCall? stat* '}'\n// ;\n// </pre>\n//\n// <p>\n// Or, you might see something like</p>\n//\n// <pre>\n// stat\n// : superCall ';'\n// | expression ';'\n// | ...\n// ;\n// </pre>\n//\n// <p>\n// In both cases I believe that no closure operations will dip into the outer\n// context. In the first case ctorBody in the worst case will stop at the '}'.\n// In the 2nd case it should stop at the ';'. Both cases should stay within the\n// entry rule and not dip into the outer context.</p>\n//\n// <p>\n// <strong>PREDICATES</strong></p>\n//\n// <p>\n// Predicates are always evaluated if present in either SLL or LL both. SLL and\n// LL simulation deals with predicates differently. SLL collects predicates as\n// it performs closure operations like ANTLR v3 did. It delays predicate\n// evaluation until it reaches and accept state. This allows us to cache the SLL\n// ATN simulation whereas, if we had evaluated predicates on-the-fly during\n// closure, the DFA state configuration sets would be different and we couldn't\n// build up a suitable DFA.</p>\n//\n// <p>\n// When building a DFA accept state during ATN simulation, we evaluate any\n// predicates and return the sole semantically valid alternative. If there is\n// more than 1 alternative, we report an ambiguity. If there are 0 alternatives,\n// we throw an exception. Alternatives without predicates act like they have\n// true predicates. The simple way to think about it is to strip away all\n// alternatives with false predicates and choose the minimum alternative that\n// remains.</p>\n//\n// <p>\n// When we start in the DFA and reach an accept state that's predicated, we test\n// those and return the minimum semantically viable alternative. If no\n// alternatives are viable, we throw an exception.</p>\n//\n// <p>\n// During full LL ATN simulation, closure always evaluates predicates and\n// on-the-fly. This is crucial to reducing the configuration set size during\n// closure. It hits a landmine when parsing with the Java grammar, for example,\n// without this on-the-fly evaluation.</p>\n//\n// <p>\n// <strong>SHARING DFA</strong></p>\n//\n// <p>\n// All instances of the same parser share the same decision DFAs through a\n// static field. Each instance gets its own ATN simulator but they share the\n// same {@link //decisionToDFA} field. They also share a\n// {@link PredictionContextCache} object that makes sure that all\n// {@link PredictionContext} objects are shared among the DFA states. This makes\n// a big size difference.</p>\n//\n// <p>\n// <strong>THREAD SAFETY</strong></p>\n//\n// <p>\n// The {@link ParserATNSimulator} locks on the {@link //decisionToDFA} field when\n// it adds a new DFA object to that array. {@link //addDFAEdge}\n// locks on the DFA for the current decision when setting the\n// {@link DFAState//edges} field. {@link //addDFAState} locks on\n// the DFA for the current decision when looking up a DFA state to see if it\n// already exists. We must make sure that all requests to add DFA states that\n// are equivalent result in the same shared DFA object. This is because lots of\n// threads will be trying to update the DFA at once. The\n// {@link //addDFAState} method also locks inside the DFA lock\n// but this time on the shared context cache when it rebuilds the\n// configurations' {@link PredictionContext} objects using cached\n// subgraphs/nodes. No other locking occurs, even during DFA simulation. This is\n// safe as long as we can guarantee that all threads referencing\n// {@code s.edge[t]} get the same physical target {@link DFAState}, or\n// {@code null}. Once into the DFA, the DFA simulation does not reference the\n// {@link DFA//states} map. It follows the {@link DFAState//edges} field to new\n// targets. The DFA simulator will either find {@link DFAState//edges} to be\n// {@code null}, to be non-{@code null} and {@code dfa.edges[t]} null, or\n// {@code dfa.edges[t]} to be non-null. The\n// {@link //addDFAEdge} method could be racing to set the field\n// but in either case the DFA simulator works; if {@code null}, and requests ATN\n// simulation. It could also race trying to get {@code dfa.edges[t]}, but either\n// way it will work because it's not doing a test and set operation.</p>\n//\n// <p>\n// <strong>Starting with SLL then failing to combined SLL/LL (Two-Stage\n// Parsing)</strong></p>\n//\n// <p>\n// Sam pointed out that if SLL does not give a syntax error, then there is no\n// point in doing full LL, which is slower. We only have to try LL if we get a\n// syntax error. For maximum speed, Sam starts the parser set to pure SLL\n// mode with the {@link BailErrorStrategy}:</p>\n//\n// <pre>\n// parser.{@link Parser//getInterpreter() getInterpreter()}.{@link //setPredictionMode setPredictionMode}{@code (}{@link PredictionMode//SLL}{@code )};\n// parser.{@link Parser//setErrorHandler setErrorHandler}(new {@link BailErrorStrategy}());\n// </pre>\n//\n// <p>\n// If it does not get a syntax error, then we're done. If it does get a syntax\n// error, we need to retry with the combined SLL/LL strategy.</p>\n//\n// <p>\n// The reason this works is as follows. If there are no SLL conflicts, then the\n// grammar is SLL (at least for that input set). If there is an SLL conflict,\n// the full LL analysis must yield a set of viable alternatives which is a\n// subset of the alternatives reported by SLL. If the LL set is a singleton,\n// then the grammar is LL but not SLL. If the LL set is the same size as the SLL\n// set, the decision is SLL. If the LL set has size &gt; 1, then that decision\n// is truly ambiguous on the current input. If the LL set is smaller, then the\n// SLL conflict resolution might choose an alternative that the full LL would\n// rule out as a possibility based upon better context information. If that's\n// the case, then the SLL parse will definitely get an error because the full LL\n// analysis says it's not viable. If SLL conflict resolution chooses an\n// alternative within the LL set, them both SLL and LL would choose the same\n// alternative because they both choose the minimum of multiple conflicting\n// alternatives.</p>\n//\n// <p>\n// Let's say we have a set of SLL conflicting alternatives {@code {1, 2, 3}} and\n// a smaller LL set called <em>s</em>. If <em>s</em> is {@code {2, 3}}, then SLL\n// parsing will get an error because SLL will pursue alternative 1. If\n// <em>s</em> is {@code {1, 2}} or {@code {1, 3}} then both SLL and LL will\n// choose the same alternative because alternative one is the minimum of either\n// set. If <em>s</em> is {@code {2}} or {@code {3}} then SLL will get a syntax\n// error. If <em>s</em> is {@code {1}} then SLL will succeed.</p>\n//\n// <p>\n// Of course, if the input is invalid, then we will get an error for sure in\n// both SLL and LL parsing. Erroneous input will therefore require 2 passes over\n// the input.</p>\n//\n\nvar Utils = require('./../Utils');\nvar Set = Utils.Set;\nvar BitSet = Utils.BitSet;\nvar DoubleDict = Utils.DoubleDict;\nvar ATN = require('./ATN').ATN;\nvar ATNState = require('./ATNState').ATNState;\nvar ATNConfig = require('./ATNConfig').ATNConfig;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar Token = require('./../Token').Token;\nvar DFAState = require('./../dfa/DFAState').DFAState;\nvar PredPrediction = require('./../dfa/DFAState').PredPrediction;\nvar ATNSimulator = require('./ATNSimulator').ATNSimulator;\nvar PredictionMode = require('./PredictionMode').PredictionMode;\nvar RuleContext = require('./../RuleContext').RuleContext;\nvar ParserRuleContext = require('./../ParserRuleContext').ParserRuleContext;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar StarLoopEntryState = require('./ATNState').StarLoopEntryState;\nvar RuleStopState = require('./ATNState').RuleStopState;\nvar PredictionContext = require('./../PredictionContext').PredictionContext;\nvar Interval = require('./../IntervalSet').Interval;\nvar Transitions = require('./Transition');\nvar Transition = Transitions.Transition;\nvar SetTransition = Transitions.SetTransition;\nvar NotSetTransition = Transitions.NotSetTransition;\nvar RuleTransition = Transitions.RuleTransition;\nvar ActionTransition = Transitions.ActionTransition;\nvar NoViableAltException = require('./../error/Errors').NoViableAltException;\n\nvar SingletonPredictionContext = require('./../PredictionContext').SingletonPredictionContext;\nvar predictionContextFromRuleContext = require('./../PredictionContext').predictionContextFromRuleContext;\n\nfunction ParserATNSimulator(parser, atn, decisionToDFA, sharedContextCache) {\n\tATNSimulator.call(this, atn, sharedContextCache);\n this.parser = parser;\n this.decisionToDFA = decisionToDFA;\n // SLL, LL, or LL + exact ambig detection?//\n this.predictionMode = PredictionMode.LL;\n // LAME globals to avoid parameters!!!!! I need these down deep in predTransition\n this._input = null;\n this._startIndex = 0;\n this._outerContext = null;\n this._dfa = null;\n // Each prediction operation uses a cache for merge of prediction contexts.\n // Don't keep around as it wastes huge amounts of memory. DoubleKeyMap\n // isn't synchronized but we're ok since two threads shouldn't reuse same\n // parser/atnsim object because it can only handle one input at a time.\n // This maps graphs a and b to merged result c. (a,b)&rarr;c. We can avoid\n // the merge if we ever see a and b again. Note that (b,a)&rarr;c should\n // also be examined during cache lookup.\n //\n this.mergeCache = null;\n return this;\n}\n\nParserATNSimulator.prototype = Object.create(ATNSimulator.prototype);\nParserATNSimulator.prototype.constructor = ParserATNSimulator;\n\nParserATNSimulator.prototype.debug = false;\nParserATNSimulator.prototype.debug_closure = false;\nParserATNSimulator.prototype.debug_add = false;\nParserATNSimulator.prototype.debug_list_atn_decisions = false;\nParserATNSimulator.prototype.dfa_debug = false;\nParserATNSimulator.prototype.retry_debug = false;\n\n\nParserATNSimulator.prototype.reset = function() {\n};\n\nParserATNSimulator.prototype.adaptivePredict = function(input, decision, outerContext) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"adaptivePredict decision \" + decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \" line \" + input.LT(1).line + \":\" +\n input.LT(1).column);\n }\n this._input = input;\n this._startIndex = input.index;\n this._outerContext = outerContext;\n\n var dfa = this.decisionToDFA[decision];\n this._dfa = dfa;\n var m = input.mark();\n var index = input.index;\n\n // Now we are certain to have a specific decision's DFA\n // But, do we still need an initial state?\n try {\n var s0;\n if (dfa.precedenceDfa) {\n // the start state for a precedence DFA depends on the current\n // parser precedence, and is provided by a DFA method.\n s0 = dfa.getPrecedenceStartState(this.parser.getPrecedence());\n } else {\n // the start state for a \"regular\" DFA is just s0\n s0 = dfa.s0;\n }\n if (s0===null) {\n if (outerContext===null) {\n outerContext = RuleContext.EMPTY;\n }\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"predictATN decision \" + dfa.decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \", outerContext=\" + outerContext.toString(this.parser.ruleNames));\n }\n\n var fullCtx = false;\n var s0_closure = this.computeStartState(dfa.atnStartState, RuleContext.EMPTY, fullCtx);\n\n if( dfa.precedenceDfa) {\n // If this is a precedence DFA, we use applyPrecedenceFilter\n // to convert the computed start state to a precedence start\n // state. We then use DFA.setPrecedenceStartState to set the\n // appropriate start state for the precedence level rather\n // than simply setting DFA.s0.\n //\n dfa.s0.configs = s0_closure; // not used for prediction but useful to know start configs anyway\n s0_closure = this.applyPrecedenceFilter(s0_closure);\n s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));\n dfa.setPrecedenceStartState(this.parser.getPrecedence(), s0);\n } else {\n s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));\n dfa.s0 = s0;\n }\n }\n var alt = this.execATN(dfa, s0, input, index, outerContext);\n if (this.debug) {\n console.log(\"DFA after predictATN: \" + dfa.toString(this.parser.literalNames));\n }\n return alt;\n } finally {\n this._dfa = null;\n this.mergeCache = null; // wack cache after each prediction\n input.seek(index);\n input.release(m);\n }\n};\n// Performs ATN simulation to compute a predicted alternative based\n// upon the remaining input, but also updates the DFA cache to avoid\n// having to traverse the ATN again for the same input sequence.\n\n// There are some key conditions we're looking for after computing a new\n// set of ATN configs (proposed DFA state):\n // if the set is empty, there is no viable alternative for current symbol\n // does the state uniquely predict an alternative?\n // does the state have a conflict that would prevent us from\n // putting it on the work list?\n\n// We also have some key operations to do:\n // add an edge from previous DFA state to potentially new DFA state, D,\n // upon current symbol but only if adding to work list, which means in all\n // cases except no viable alternative (and possibly non-greedy decisions?)\n // collecting predicates and adding semantic context to DFA accept states\n // adding rule context to context-sensitive DFA accept states\n // consuming an input symbol\n // reporting a conflict\n // reporting an ambiguity\n // reporting a context sensitivity\n // reporting insufficient predicates\n\n// cover these cases:\n// dead end\n// single alt\n// single alt + preds\n// conflict\n// conflict + preds\n//\nParserATNSimulator.prototype.execATN = function(dfa, s0, input, startIndex, outerContext ) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"execATN decision \" + dfa.decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \" line \" + input.LT(1).line + \":\" + input.LT(1).column);\n }\n var alt;\n var previousD = s0;\n\n if (this.debug) {\n console.log(\"s0 = \" + s0);\n }\n var t = input.LA(1);\n while(true) { // while more work\n var D = this.getExistingTargetState(previousD, t);\n if(D===null) {\n D = this.computeTargetState(dfa, previousD, t);\n }\n if(D===ATNSimulator.ERROR) {\n // if any configs in previous dipped into outer context, that\n // means that input up to t actually finished entry rule\n // at least for SLL decision. Full LL doesn't dip into outer\n // so don't need special case.\n // We will get an error no matter what so delay until after\n // decision; better error message. Also, no reachable target\n // ATN states in SLL implies LL will also get nowhere.\n // If conflict in states that dip out, choose min since we\n // will get error no matter what.\n var e = this.noViableAlt(input, outerContext, previousD.configs, startIndex);\n input.seek(startIndex);\n alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previousD.configs, outerContext);\n if(alt!==ATN.INVALID_ALT_NUMBER) {\n return alt;\n } else {\n throw e;\n }\n }\n if(D.requiresFullContext && this.predictionMode !== PredictionMode.SLL) {\n // IF PREDS, MIGHT RESOLVE TO SINGLE ALT => SLL (or syntax error)\n var conflictingAlts = null;\n if (D.predicates!==null) {\n if (this.debug) {\n console.log(\"DFA state has preds in DFA sim LL failover\");\n }\n var conflictIndex = input.index;\n if(conflictIndex !== startIndex) {\n input.seek(startIndex);\n }\n conflictingAlts = this.evalSemanticContext(D.predicates, outerContext, true);\n if (conflictingAlts.length===1) {\n if(this.debug) {\n console.log(\"Full LL avoided\");\n }\n return conflictingAlts.minValue();\n }\n if (conflictIndex !== startIndex) {\n // restore the index so reporting the fallback to full\n // context occurs with the index at the correct spot\n input.seek(conflictIndex);\n }\n }\n if (this.dfa_debug) {\n console.log(\"ctx sensitive state \" + outerContext +\" in \" + D);\n }\n var fullCtx = true;\n var s0_closure = this.computeStartState(dfa.atnStartState, outerContext, fullCtx);\n this.reportAttemptingFullContext(dfa, conflictingAlts, D.configs, startIndex, input.index);\n alt = this.execATNWithFullContext(dfa, D, s0_closure, input, startIndex, outerContext);\n return alt;\n }\n if (D.isAcceptState) {\n if (D.predicates===null) {\n return D.prediction;\n }\n var stopIndex = input.index;\n input.seek(startIndex);\n var alts = this.evalSemanticContext(D.predicates, outerContext, true);\n if (alts.length===0) {\n throw this.noViableAlt(input, outerContext, D.configs, startIndex);\n } else if (alts.length===1) {\n return alts.minValue();\n } else {\n // report ambiguity after predicate evaluation to make sure the correct set of ambig alts is reported.\n this.reportAmbiguity(dfa, D, startIndex, stopIndex, false, alts, D.configs);\n return alts.minValue();\n }\n }\n previousD = D;\n\n if (t !== Token.EOF) {\n input.consume();\n t = input.LA(1);\n }\n }\n};\n//\n// Get an existing target state for an edge in the DFA. If the target state\n// for the edge has not yet been computed or is otherwise not available,\n// this method returns {@code null}.\n//\n// @param previousD The current DFA state\n// @param t The next input symbol\n// @return The existing target DFA state for the given input symbol\n// {@code t}, or {@code null} if the target state for this edge is not\n// already cached\n//\nParserATNSimulator.prototype.getExistingTargetState = function(previousD, t) {\n var edges = previousD.edges;\n if (edges===null) {\n return null;\n } else {\n return edges[t + 1] || null;\n }\n};\n//\n// Compute a target state for an edge in the DFA, and attempt to add the\n// computed state and corresponding edge to the DFA.\n//\n// @param dfa The DFA\n// @param previousD The current DFA state\n// @param t The next input symbol\n//\n// @return The computed target DFA state for the given input symbol\n// {@code t}. If {@code t} does not lead to a valid DFA state, this method\n// returns {@link //ERROR}.\n//\nParserATNSimulator.prototype.computeTargetState = function(dfa, previousD, t) {\n var reach = this.computeReachSet(previousD.configs, t, false);\n if(reach===null) {\n this.addDFAEdge(dfa, previousD, t, ATNSimulator.ERROR);\n return ATNSimulator.ERROR;\n }\n // create new target state; we'll add to DFA after it's complete\n var D = new DFAState(null, reach);\n\n var predictedAlt = this.getUniqueAlt(reach);\n\n if (this.debug) {\n var altSubSets = PredictionMode.getConflictingAltSubsets(reach);\n console.log(\"SLL altSubSets=\" + Utils.arrayToString(altSubSets) +\n \", previous=\" + previousD.configs +\n \", configs=\" + reach +\n \", predict=\" + predictedAlt +\n \", allSubsetsConflict=\" +\n PredictionMode.allSubsetsConflict(altSubSets) + \", conflictingAlts=\" +\n this.getConflictingAlts(reach));\n }\n if (predictedAlt!==ATN.INVALID_ALT_NUMBER) {\n // NO CONFLICT, UNIQUELY PREDICTED ALT\n D.isAcceptState = true;\n D.configs.uniqueAlt = predictedAlt;\n D.prediction = predictedAlt;\n } else if (PredictionMode.hasSLLConflictTerminatingPrediction(this.predictionMode, reach)) {\n // MORE THAN ONE VIABLE ALTERNATIVE\n D.configs.conflictingAlts = this.getConflictingAlts(reach);\n D.requiresFullContext = true;\n // in SLL-only mode, we will stop at this state and return the minimum alt\n D.isAcceptState = true;\n D.prediction = D.configs.conflictingAlts.minValue();\n }\n if (D.isAcceptState && D.configs.hasSemanticContext) {\n this.predicateDFAState(D, this.atn.getDecisionState(dfa.decision));\n if( D.predicates!==null) {\n D.prediction = ATN.INVALID_ALT_NUMBER;\n }\n }\n // all adds to dfa are done after we've created full D state\n D = this.addDFAEdge(dfa, previousD, t, D);\n return D;\n};\n\nParserATNSimulator.prototype.predicateDFAState = function(dfaState, decisionState) {\n // We need to test all predicates, even in DFA states that\n // uniquely predict alternative.\n var nalts = decisionState.transitions.length;\n // Update DFA so reach becomes accept state with (predicate,alt)\n // pairs if preds found for conflicting alts\n var altsToCollectPredsFrom = this.getConflictingAltsOrUniqueAlt(dfaState.configs);\n var altToPred = this.getPredsForAmbigAlts(altsToCollectPredsFrom, dfaState.configs, nalts);\n if (altToPred!==null) {\n dfaState.predicates = this.getPredicatePredictions(altsToCollectPredsFrom, altToPred);\n dfaState.prediction = ATN.INVALID_ALT_NUMBER; // make sure we use preds\n } else {\n // There are preds in configs but they might go away\n // when OR'd together like {p}? || NONE == NONE. If neither\n // alt has preds, resolve to min alt\n dfaState.prediction = altsToCollectPredsFrom.minValue();\n }\n};\n\n// comes back with reach.uniqueAlt set to a valid alt\nParserATNSimulator.prototype.execATNWithFullContext = function(dfa, D, // how far we got before failing over\n s0,\n input,\n startIndex,\n outerContext) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"execATNWithFullContext \"+s0);\n }\n var fullCtx = true;\n var foundExactAmbig = false;\n var reach = null;\n var previous = s0;\n input.seek(startIndex);\n var t = input.LA(1);\n var predictedAlt = -1;\n while (true) { // while more work\n reach = this.computeReachSet(previous, t, fullCtx);\n if (reach===null) {\n // if any configs in previous dipped into outer context, that\n // means that input up to t actually finished entry rule\n // at least for LL decision. Full LL doesn't dip into outer\n // so don't need special case.\n // We will get an error no matter what so delay until after\n // decision; better error message. Also, no reachable target\n // ATN states in SLL implies LL will also get nowhere.\n // If conflict in states that dip out, choose min since we\n // will get error no matter what.\n var e = this.noViableAlt(input, outerContext, previous, startIndex);\n input.seek(startIndex);\n var alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previous, outerContext);\n if(alt!==ATN.INVALID_ALT_NUMBER) {\n return alt;\n } else {\n throw e;\n }\n }\n var altSubSets = PredictionMode.getConflictingAltSubsets(reach);\n if(this.debug) {\n console.log(\"LL altSubSets=\" + altSubSets + \", predict=\" +\n PredictionMode.getUniqueAlt(altSubSets) + \", resolvesToJustOneViableAlt=\" +\n PredictionMode.resolvesToJustOneViableAlt(altSubSets));\n }\n reach.uniqueAlt = this.getUniqueAlt(reach);\n // unique prediction?\n if(reach.uniqueAlt!==ATN.INVALID_ALT_NUMBER) {\n predictedAlt = reach.uniqueAlt;\n break;\n } else if (this.predictionMode !== PredictionMode.LL_EXACT_AMBIG_DETECTION) {\n predictedAlt = PredictionMode.resolvesToJustOneViableAlt(altSubSets);\n if(predictedAlt !== ATN.INVALID_ALT_NUMBER) {\n break;\n }\n } else {\n // In exact ambiguity mode, we never try to terminate early.\n // Just keeps scarfing until we know what the conflict is\n if (PredictionMode.allSubsetsConflict(altSubSets) && PredictionMode.allSubsetsEqual(altSubSets)) {\n foundExactAmbig = true;\n predictedAlt = PredictionMode.getSingleViableAlt(altSubSets);\n break;\n }\n // else there are multiple non-conflicting subsets or\n // we're not sure what the ambiguity is yet.\n // So, keep going.\n }\n previous = reach;\n if( t !== Token.EOF) {\n input.consume();\n t = input.LA(1);\n }\n }\n // If the configuration set uniquely predicts an alternative,\n // without conflict, then we know that it's a full LL decision\n // not SLL.\n if (reach.uniqueAlt !== ATN.INVALID_ALT_NUMBER ) {\n this.reportContextSensitivity(dfa, predictedAlt, reach, startIndex, input.index);\n return predictedAlt;\n }\n // We do not check predicates here because we have checked them\n // on-the-fly when doing full context prediction.\n\n //\n // In non-exact ambiguity detection mode, we might\tactually be able to\n // detect an exact ambiguity, but I'm not going to spend the cycles\n // needed to check. We only emit ambiguity warnings in exact ambiguity\n // mode.\n //\n // For example, we might know that we have conflicting configurations.\n // But, that does not mean that there is no way forward without a\n // conflict. It's possible to have nonconflicting alt subsets as in:\n\n // altSubSets=[{1, 2}, {1, 2}, {1}, {1, 2}]\n\n // from\n //\n // [(17,1,[5 $]), (13,1,[5 10 $]), (21,1,[5 10 $]), (11,1,[$]),\n // (13,2,[5 10 $]), (21,2,[5 10 $]), (11,2,[$])]\n //\n // In this case, (17,1,[5 $]) indicates there is some next sequence that\n // would resolve this without conflict to alternative 1. Any other viable\n // next sequence, however, is associated with a conflict. We stop\n // looking for input because no amount of further lookahead will alter\n // the fact that we should predict alternative 1. We just can't say for\n // sure that there is an ambiguity without looking further.\n\n this.reportAmbiguity(dfa, D, startIndex, input.index, foundExactAmbig, null, reach);\n\n return predictedAlt;\n};\n\nParserATNSimulator.prototype.computeReachSet = function(closure, t, fullCtx) {\n if (this.debug) {\n console.log(\"in computeReachSet, starting closure: \" + closure);\n }\n if( this.mergeCache===null) {\n this.mergeCache = new DoubleDict();\n }\n var intermediate = new ATNConfigSet(fullCtx);\n\n // Configurations already in a rule stop state indicate reaching the end\n // of the decision rule (local context) or end of the start rule (full\n // context). Once reached, these configurations are never updated by a\n // closure operation, so they are handled separately for the performance\n // advantage of having a smaller intermediate set when calling closure.\n //\n // For full-context reach operations, separate handling is required to\n // ensure that the alternative matching the longest overall sequence is\n // chosen when multiple such configurations can match the input.\n\n var skippedStopStates = null;\n\n // First figure out where we can reach on input t\n for (var i=0; i<closure.items.length;i++) {\n var c = closure.items[i];\n if(this.debug_add) {\n console.log(\"testing \" + this.getTokenName(t) + \" at \" + c);\n }\n if (c.state instanceof RuleStopState) {\n if (fullCtx || t === Token.EOF) {\n if (skippedStopStates===null) {\n skippedStopStates = [];\n }\n skippedStopStates.push(c);\n if(this.debug_add) {\n console.log(\"added \" + c + \" to skippedStopStates\");\n }\n }\n continue;\n }\n for(var j=0;j<c.state.transitions.length;j++) {\n var trans = c.state.transitions[j];\n var target = this.getReachableTarget(trans, t);\n if (target!==null) {\n var cfg = new ATNConfig({state:target}, c);\n intermediate.add(cfg, this.mergeCache);\n if(this.debug_add) {\n console.log(\"added \" + cfg + \" to intermediate\");\n }\n }\n }\n }\n // Now figure out where the reach operation can take us...\n var reach = null;\n\n // This block optimizes the reach operation for intermediate sets which\n // trivially indicate a termination state for the overall\n // adaptivePredict operation.\n //\n // The conditions assume that intermediate\n // contains all configurations relevant to the reach set, but this\n // condition is not true when one or more configurations have been\n // withheld in skippedStopStates, or when the current symbol is EOF.\n //\n if (skippedStopStates===null && t!==Token.EOF) {\n if (intermediate.items.length===1) {\n // Don't pursue the closure if there is just one state.\n // It can only have one alternative; just add to result\n // Also don't pursue the closure if there is unique alternative\n // among the configurations.\n reach = intermediate;\n } else if (this.getUniqueAlt(intermediate)!==ATN.INVALID_ALT_NUMBER) {\n // Also don't pursue the closure if there is unique alternative\n // among the configurations.\n reach = intermediate;\n }\n }\n // If the reach set could not be trivially determined, perform a closure\n // operation on the intermediate set to compute its initial value.\n //\n if (reach===null) {\n reach = new ATNConfigSet(fullCtx);\n var closureBusy = new Set();\n var treatEofAsEpsilon = t === Token.EOF;\n for (var k=0; k<intermediate.items.length;k++) {\n this.closure(intermediate.items[k], reach, closureBusy, false, fullCtx, treatEofAsEpsilon);\n }\n }\n if (t === Token.EOF) {\n // After consuming EOF no additional input is possible, so we are\n // only interested in configurations which reached the end of the\n // decision rule (local context) or end of the start rule (full\n // context). Update reach to contain only these configurations. This\n // handles both explicit EOF transitions in the grammar and implicit\n // EOF transitions following the end of the decision or start rule.\n //\n // When reach==intermediate, no closure operation was performed. In\n // this case, removeAllConfigsNotInRuleStopState needs to check for\n // reachable rule stop states as well as configurations already in\n // a rule stop state.\n //\n // This is handled before the configurations in skippedStopStates,\n // because any configurations potentially added from that list are\n // already guaranteed to meet this condition whether or not it's\n // required.\n //\n reach = this.removeAllConfigsNotInRuleStopState(reach, reach === intermediate);\n }\n // If skippedStopStates!==null, then it contains at least one\n // configuration. For full-context reach operations, these\n // configurations reached the end of the start rule, in which case we\n // only add them back to reach if no configuration during the current\n // closure operation reached such a state. This ensures adaptivePredict\n // chooses an alternative matching the longest overall sequence when\n // multiple alternatives are viable.\n //\n if (skippedStopStates!==null && ( (! fullCtx) || (! PredictionMode.hasConfigInRuleStopState(reach)))) {\n for (var l=0; l<skippedStopStates.length;l++) {\n reach.add(skippedStopStates[l], this.mergeCache);\n }\n }\n if (reach.items.length===0) {\n return null;\n } else {\n return reach;\n }\n};\n//\n// Return a configuration set containing only the configurations from\n// {@code configs} which are in a {@link RuleStopState}. If all\n// configurations in {@code configs} are already in a rule stop state, this\n// method simply returns {@code configs}.\n//\n// <p>When {@code lookToEndOfRule} is true, this method uses\n// {@link ATN//nextTokens} for each configuration in {@code configs} which is\n// not already in a rule stop state to see if a rule stop state is reachable\n// from the configuration via epsilon-only transitions.</p>\n//\n// @param configs the configuration set to update\n// @param lookToEndOfRule when true, this method checks for rule stop states\n// reachable by epsilon-only transitions from each configuration in\n// {@code configs}.\n//\n// @return {@code configs} if all configurations in {@code configs} are in a\n// rule stop state, otherwise return a new configuration set containing only\n// the configurations from {@code configs} which are in a rule stop state\n//\nParserATNSimulator.prototype.removeAllConfigsNotInRuleStopState = function(configs, lookToEndOfRule) {\n if (PredictionMode.allConfigsInRuleStopStates(configs)) {\n return configs;\n }\n var result = new ATNConfigSet(configs.fullCtx);\n for(var i=0; i<configs.items.length;i++) {\n var config = configs.items[i];\n if (config.state instanceof RuleStopState) {\n result.add(config, this.mergeCache);\n continue;\n }\n if (lookToEndOfRule && config.state.epsilonOnlyTransitions) {\n var nextTokens = this.atn.nextTokens(config.state);\n if (nextTokens.contains(Token.EPSILON)) {\n var endOfRuleState = this.atn.ruleToStopState[config.state.ruleIndex];\n result.add(new ATNConfig({state:endOfRuleState}, config), this.mergeCache);\n }\n }\n }\n return result;\n};\n\nParserATNSimulator.prototype.computeStartState = function(p, ctx, fullCtx) {\n // always at least the implicit call to start rule\n var initialContext = predictionContextFromRuleContext(this.atn, ctx);\n var configs = new ATNConfigSet(fullCtx);\n for(var i=0;i<p.transitions.length;i++) {\n var target = p.transitions[i].target;\n var c = new ATNConfig({ state:target, alt:i+1, context:initialContext }, null);\n var closureBusy = new Set();\n this.closure(c, configs, closureBusy, true, fullCtx, false);\n }\n return configs;\n};\n\n//\n// This method transforms the start state computed by\n// {@link //computeStartState} to the special start state used by a\n// precedence DFA for a particular precedence value. The transformation\n// process applies the following changes to the start state's configuration\n// set.\n//\n// <ol>\n// <li>Evaluate the precedence predicates for each configuration using\n// {@link SemanticContext//evalPrecedence}.</li>\n// <li>Remove all configurations which predict an alternative greater than\n// 1, for which another configuration that predicts alternative 1 is in the\n// same ATN state with the same prediction context. This transformation is\n// valid for the following reasons:\n// <ul>\n// <li>The closure block cannot contain any epsilon transitions which bypass\n// the body of the closure, so all states reachable via alternative 1 are\n// part of the precedence alternatives of the transformed left-recursive\n// rule.</li>\n// <li>The \"primary\" portion of a left recursive rule cannot contain an\n// epsilon transition, so the only way an alternative other than 1 can exist\n// in a state that is also reachable via alternative 1 is by nesting calls\n// to the left-recursive rule, with the outer calls not being at the\n// preferred precedence level.</li>\n// </ul>\n// </li>\n// </ol>\n//\n// <p>\n// The prediction context must be considered by this filter to address\n// situations like the following.\n// </p>\n// <code>\n// <pre>\n// grammar TA;\n// prog: statement* EOF;\n// statement: letterA | statement letterA 'b' ;\n// letterA: 'a';\n// </pre>\n// </code>\n// <p>\n// If the above grammar, the ATN state immediately before the token\n// reference {@code 'a'} in {@code letterA} is reachable from the left edge\n// of both the primary and closure blocks of the left-recursive rule\n// {@code statement}. The prediction context associated with each of these\n// configurations distinguishes between them, and prevents the alternative\n// which stepped out to {@code prog} (and then back in to {@code statement}\n// from being eliminated by the filter.\n// </p>\n//\n// @param configs The configuration set computed by\n// {@link //computeStartState} as the start state for the DFA.\n// @return The transformed configuration set representing the start state\n// for a precedence DFA at a particular precedence level (determined by\n// calling {@link Parser//getPrecedence}).\n//\nParserATNSimulator.prototype.applyPrecedenceFilter = function(configs) {\n\tvar config;\n\tvar statesFromAlt1 = [];\n var configSet = new ATNConfigSet(configs.fullCtx);\n for(var i=0; i<configs.items.length; i++) {\n config = configs.items[i];\n // handle alt 1 first\n if (config.alt !== 1) {\n continue;\n }\n var updatedContext = config.semanticContext.evalPrecedence(this.parser, this._outerContext);\n if (updatedContext===null) {\n // the configuration was eliminated\n continue;\n }\n statesFromAlt1[config.state.stateNumber] = config.context;\n if (updatedContext !== config.semanticContext) {\n configSet.add(new ATNConfig({semanticContext:updatedContext}, config), this.mergeCache);\n } else {\n configSet.add(config, this.mergeCache);\n }\n }\n for(i=0; i<configs.items.length; i++) {\n config = configs.items[i];\n if (config.alt === 1) {\n // already handled\n continue;\n }\n // In the future, this elimination step could be updated to also\n // filter the prediction context for alternatives predicting alt>1\n // (basically a graph subtraction algorithm).\n\t\tif (!config.precedenceFilterSuppressed) {\n var context = statesFromAlt1[config.state.stateNumber] || null;\n if (context!==null && context.equals(config.context)) {\n // eliminated\n continue;\n }\n\t\t}\n configSet.add(config, this.mergeCache);\n }\n return configSet;\n};\n\nParserATNSimulator.prototype.getReachableTarget = function(trans, ttype) {\n if (trans.matches(ttype, 0, this.atn.maxTokenType)) {\n return trans.target;\n } else {\n return null;\n }\n};\n\nParserATNSimulator.prototype.getPredsForAmbigAlts = function(ambigAlts, configs, nalts) {\n // REACH=[1|1|[]|0:0, 1|2|[]|0:1]\n // altToPred starts as an array of all null contexts. The entry at index i\n // corresponds to alternative i. altToPred[i] may have one of three values:\n // 1. null: no ATNConfig c is found such that c.alt==i\n // 2. SemanticContext.NONE: At least one ATNConfig c exists such that\n // c.alt==i and c.semanticContext==SemanticContext.NONE. In other words,\n // alt i has at least one unpredicated config.\n // 3. Non-NONE Semantic Context: There exists at least one, and for all\n // ATNConfig c such that c.alt==i, c.semanticContext!=SemanticContext.NONE.\n //\n // From this, it is clear that NONE||anything==NONE.\n //\n var altToPred = [];\n for(var i=0;i<configs.items.length;i++) {\n var c = configs.items[i];\n if(ambigAlts.contains( c.alt )) {\n altToPred[c.alt] = SemanticContext.orContext(altToPred[c.alt] || null, c.semanticContext);\n }\n }\n var nPredAlts = 0;\n for (i =1;i< nalts+1;i++) {\n var pred = altToPred[i] || null;\n if (pred===null) {\n altToPred[i] = SemanticContext.NONE;\n } else if (pred !== SemanticContext.NONE) {\n nPredAlts += 1;\n }\n }\n // nonambig alts are null in altToPred\n if (nPredAlts===0) {\n altToPred = null;\n }\n if (this.debug) {\n console.log(\"getPredsForAmbigAlts result \" + Utils.arrayToString(altToPred));\n }\n return altToPred;\n};\n\nParserATNSimulator.prototype.getPredicatePredictions = function(ambigAlts, altToPred) {\n var pairs = [];\n var containsPredicate = false;\n for (var i=1; i<altToPred.length;i++) {\n var pred = altToPred[i];\n // unpredicated is indicated by SemanticContext.NONE\n if( ambigAlts!==null && ambigAlts.contains( i )) {\n pairs.push(new PredPrediction(pred, i));\n }\n if (pred !== SemanticContext.NONE) {\n containsPredicate = true;\n }\n }\n if (! containsPredicate) {\n return null;\n }\n return pairs;\n};\n\n//\n// This method is used to improve the localization of error messages by\n// choosing an alternative rather than throwing a\n// {@link NoViableAltException} in particular prediction scenarios where the\n// {@link //ERROR} state was reached during ATN simulation.\n//\n// <p>\n// The default implementation of this method uses the following\n// algorithm to identify an ATN configuration which successfully parsed the\n// decision entry rule. Choosing such an alternative ensures that the\n// {@link ParserRuleContext} returned by the calling rule will be complete\n// and valid, and the syntax error will be reported later at a more\n// localized location.</p>\n//\n// <ul>\n// <li>If a syntactically valid path or paths reach the end of the decision rule and\n// they are semantically valid if predicated, return the min associated alt.</li>\n// <li>Else, if a semantically invalid but syntactically valid path exist\n// or paths exist, return the minimum associated alt.\n// </li>\n// <li>Otherwise, return {@link ATN//INVALID_ALT_NUMBER}.</li>\n// </ul>\n//\n// <p>\n// In some scenarios, the algorithm described above could predict an\n// alternative which will result in a {@link FailedPredicateException} in\n// the parser. Specifically, this could occur if the <em>only</em> configuration\n// capable of successfully parsing to the end of the decision rule is\n// blocked by a semantic predicate. By choosing this alternative within\n// {@link //adaptivePredict} instead of throwing a\n// {@link NoViableAltException}, the resulting\n// {@link FailedPredicateException} in the parser will identify the specific\n// predicate which is preventing the parser from successfully parsing the\n// decision rule, which helps developers identify and correct logic errors\n// in semantic predicates.\n// </p>\n//\n// @param configs The ATN configurations which were valid immediately before\n// the {@link //ERROR} state was reached\n// @param outerContext The is the \\gamma_0 initial parser context from the paper\n// or the parser stack at the instant before prediction commences.\n//\n// @return The value to return from {@link //adaptivePredict}, or\n// {@link ATN//INVALID_ALT_NUMBER} if a suitable alternative was not\n// identified and {@link //adaptivePredict} should report an error instead.\n//\nParserATNSimulator.prototype.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule = function(configs, outerContext) {\n var cfgs = this.splitAccordingToSemanticValidity(configs, outerContext);\n var semValidConfigs = cfgs[0];\n var semInvalidConfigs = cfgs[1];\n var alt = this.getAltThatFinishedDecisionEntryRule(semValidConfigs);\n if (alt!==ATN.INVALID_ALT_NUMBER) { // semantically/syntactically viable path exists\n return alt;\n }\n // Is there a syntactically valid path with a failed pred?\n if (semInvalidConfigs.items.length>0) {\n alt = this.getAltThatFinishedDecisionEntryRule(semInvalidConfigs);\n if (alt!==ATN.INVALID_ALT_NUMBER) { // syntactically viable path exists\n return alt;\n }\n }\n return ATN.INVALID_ALT_NUMBER;\n};\n\nParserATNSimulator.prototype.getAltThatFinishedDecisionEntryRule = function(configs) {\n var alts = [];\n for(var i=0;i<configs.items.length; i++) {\n var c = configs.items[i];\n if (c.reachesIntoOuterContext>0 || ((c.state instanceof RuleStopState) && c.context.hasEmptyPath())) {\n if(alts.indexOf(c.alt)<0) {\n alts.push(c.alt);\n }\n }\n }\n if (alts.length===0) {\n return ATN.INVALID_ALT_NUMBER;\n } else {\n return Math.min.apply(null, alts);\n }\n};\n// Walk the list of configurations and split them according to\n// those that have preds evaluating to true/false. If no pred, assume\n// true pred and include in succeeded set. Returns Pair of sets.\n//\n// Create a new set so as not to alter the incoming parameter.\n//\n// Assumption: the input stream has been restored to the starting point\n// prediction, which is where predicates need to evaluate.\n//\nParserATNSimulator.prototype.splitAccordingToSemanticValidity = function( configs, outerContext) {\n var succeeded = new ATNConfigSet(configs.fullCtx);\n var failed = new ATNConfigSet(configs.fullCtx);\n for(var i=0;i<configs.items.length; i++) {\n var c = configs.items[i];\n if (c.semanticContext !== SemanticContext.NONE) {\n var predicateEvaluationResult = c.semanticContext.evaluate(this.parser, outerContext);\n if (predicateEvaluationResult) {\n succeeded.add(c);\n } else {\n failed.add(c);\n }\n } else {\n succeeded.add(c);\n }\n }\n return [succeeded, failed];\n};\n\n// Look through a list of predicate/alt pairs, returning alts for the\n// pairs that win. A {@code NONE} predicate indicates an alt containing an\n// unpredicated config which behaves as \"always true.\" If !complete\n// then we stop at the first predicate that evaluates to true. This\n// includes pairs with null predicates.\n//\nParserATNSimulator.prototype.evalSemanticContext = function(predPredictions, outerContext, complete) {\n var predictions = new BitSet();\n for(var i=0;i<predPredictions.length;i++) {\n \tvar pair = predPredictions[i];\n if (pair.pred === SemanticContext.NONE) {\n predictions.add(pair.alt);\n if (! complete) {\n break;\n }\n continue;\n }\n var predicateEvaluationResult = pair.pred.evaluate(this.parser, outerContext);\n if (this.debug || this.dfa_debug) {\n console.log(\"eval pred \" + pair + \"=\" + predicateEvaluationResult);\n }\n if (predicateEvaluationResult) {\n if (this.debug || this.dfa_debug) {\n console.log(\"PREDICT \" + pair.alt);\n }\n predictions.add(pair.alt);\n if (! complete) {\n break;\n }\n }\n }\n return predictions;\n};\n\n// TODO: If we are doing predicates, there is no point in pursuing\n// closure operations if we reach a DFA state that uniquely predicts\n// alternative. We will not be caching that DFA state and it is a\n// waste to pursue the closure. Might have to advance when we do\n// ambig detection thought :(\n//\n\nParserATNSimulator.prototype.closure = function(config, configs, closureBusy, collectPredicates, fullCtx, treatEofAsEpsilon) {\n var initialDepth = 0;\n this.closureCheckingStopState(config, configs, closureBusy, collectPredicates,\n fullCtx, initialDepth, treatEofAsEpsilon);\n};\n\n\nParserATNSimulator.prototype.closureCheckingStopState = function(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon) {\n if (this.debug || this.debug_closure) {\n console.log(\"closure(\" + config.toString(this.parser,true) + \")\");\n // console.log(\"configs(\" + configs.toString() + \")\");\n if(config.reachesIntoOuterContext>50) {\n throw \"problem\";\n }\n }\n if (config.state instanceof RuleStopState) {\n // We hit rule end. If we have context info, use it\n // run thru all possible stack tops in ctx\n if (! config.context.isEmpty()) {\n for ( var i =0; i<config.context.length; i++) {\n if (config.context.getReturnState(i) === PredictionContext.EMPTY_RETURN_STATE) {\n if (fullCtx) {\n configs.add(new ATNConfig({state:config.state, context:PredictionContext.EMPTY}, config), this.mergeCache);\n continue;\n } else {\n // we have no context info, just chase follow links (if greedy)\n if (this.debug) {\n console.log(\"FALLING off rule \" + this.getRuleName(config.state.ruleIndex));\n }\n this.closure_(config, configs, closureBusy, collectPredicates,\n fullCtx, depth, treatEofAsEpsilon);\n }\n continue;\n }\n var returnState = this.atn.states[config.context.getReturnState(i)];\n var newContext = config.context.getParent(i); // \"pop\" return state\n var parms = {state:returnState, alt:config.alt, context:newContext, semanticContext:config.semanticContext};\n var c = new ATNConfig(parms, null);\n // While we have context to pop back from, we may have\n // gotten that context AFTER having falling off a rule.\n // Make sure we track that we are now out of context.\n c.reachesIntoOuterContext = config.reachesIntoOuterContext;\n this.closureCheckingStopState(c, configs, closureBusy, collectPredicates, fullCtx, depth - 1, treatEofAsEpsilon);\n }\n return;\n } else if( fullCtx) {\n // reached end of start rule\n configs.add(config, this.mergeCache);\n return;\n } else {\n // else if we have no context info, just chase follow links (if greedy)\n if (this.debug) {\n console.log(\"FALLING off rule \" + this.getRuleName(config.state.ruleIndex));\n }\n }\n }\n this.closure_(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon);\n};\n\n\n// Do the actual work of walking epsilon edges//\nParserATNSimulator.prototype.closure_ = function(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon) {\n var p = config.state;\n // optimization\n if (! p.epsilonOnlyTransitions) {\n configs.add(config, this.mergeCache);\n // make sure to not return here, because EOF transitions can act as\n // both epsilon transitions and non-epsilon transitions.\n }\n for(var i = 0;i<p.transitions.length; i++) {\n if(i==0 && this.canDropLoopEntryEdgeInLeftRecursiveRule(config))\n continue;\n\n var t = p.transitions[i];\n var continueCollecting = collectPredicates && !(t instanceof ActionTransition);\n var c = this.getEpsilonTarget(config, t, continueCollecting, depth === 0, fullCtx, treatEofAsEpsilon);\n if (c!==null) {\n var newDepth = depth;\n if ( config.state instanceof RuleStopState) {\n // target fell off end of rule; mark resulting c as having dipped into outer context\n // We can't get here if incoming config was rule stop and we had context\n // track how far we dip into outer context. Might\n // come in handy and we avoid evaluating context dependent\n // preds if this is > 0.\n\t\t\t\tif (this._dfa !== null && this._dfa.precedenceDfa) {\n\t\t\t\t\tif (t.outermostPrecedenceReturn === this._dfa.atnStartState.ruleIndex) {\n\t\t\t\t\t\tc.precedenceFilterSuppressed = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n c.reachesIntoOuterContext += 1;\n if (closureBusy.add(c)!==c) {\n // avoid infinite recursion for right-recursive rules\n continue;\n }\n configs.dipsIntoOuterContext = true; // TODO: can remove? only care when we add to set per middle of this method\n newDepth -= 1;\n if (this.debug) {\n console.log(\"dips into outer ctx: \" + c);\n }\n } else {\n if (!t.isEpsilon && closureBusy.add(c)!==c){\n // avoid infinite recursion for EOF* and EOF+\n continue;\n }\n if (t instanceof RuleTransition) {\n // latch when newDepth goes negative - once we step out of the entry context we can't return\n if (newDepth >= 0) {\n newDepth += 1;\n }\n }\n }\n this.closureCheckingStopState(c, configs, closureBusy, continueCollecting, fullCtx, newDepth, treatEofAsEpsilon);\n }\n }\n};\n\n\nParserATNSimulator.prototype.canDropLoopEntryEdgeInLeftRecursiveRule = function(config) {\n // return False\n var p = config.state;\n // First check to see if we are in StarLoopEntryState generated during\n // left-recursion elimination. For efficiency, also check if\n // the context has an empty stack case. If so, it would mean\n // global FOLLOW so we can't perform optimization\n // Are we the special loop entry/exit state? or SLL wildcard\n if(p.stateType != ATNState.STAR_LOOP_ENTRY)\n return false;\n if(p.stateType != ATNState.STAR_LOOP_ENTRY || !p.isPrecedenceDecision ||\n config.context.isEmpty() || config.context.hasEmptyPath())\n return false;\n\n // Require all return states to return back to the same rule that p is in.\n var numCtxs = config.context.length;\n for(var i=0; i<numCtxs; i++) { // for each stack context\n var returnState = this.atn.states[config.context.getReturnState(i)];\n if (returnState.ruleIndex != p.ruleIndex)\n return false;\n }\n\n var decisionStartState = p.transitions[0].target;\n var blockEndStateNum = decisionStartState.endState.stateNumber;\n var blockEndState = this.atn.states[blockEndStateNum];\n\n // Verify that the top of each stack context leads to loop entry/exit\n // state through epsilon edges and w/o leaving rule.\n for(var i=0; i<numCtxs; i++) { // for each stack context\n var returnStateNumber = config.context.getReturnState(i);\n var returnState = this.atn.states[returnStateNumber];\n // all states must have single outgoing epsilon edge\n if (returnState.transitions.length != 1 || !returnState.transitions[0].isEpsilon)\n return false;\n\n // Look for prefix op case like 'not expr', (' type ')' expr\n var returnStateTarget = returnState.transitions[0].target;\n if ( returnState.stateType == ATNState.BLOCK_END && returnStateTarget == p )\n continue;\n\n // Look for 'expr op expr' or case where expr's return state is block end\n // of (...)* internal block; the block end points to loop back\n // which points to p but we don't need to check that\n if ( returnState == blockEndState )\n continue;\n\n // Look for ternary expr ? expr : expr. The return state points at block end,\n // which points at loop entry state\n if ( returnStateTarget == blockEndState )\n continue;\n\n // Look for complex prefix 'between expr and expr' case where 2nd expr's\n // return state points at block end state of (...)* internal block\n if (returnStateTarget.stateType == ATNState.BLOCK_END && returnStateTarget.transitions.length == 1\n && returnStateTarget.transitions[0].isEpsilon && returnStateTarget.transitions[0].target == p)\n continue;\n\n // anything else ain't conforming\n return false;\n }\n return true;\n};\n\n\nParserATNSimulator.prototype.getRuleName = function( index) {\n if (this.parser!==null && index>=0) {\n return this.parser.ruleNames[index];\n } else {\n return \"<rule \" + index + \">\";\n }\n};\n\nParserATNSimulator.prototype.getEpsilonTarget = function(config, t, collectPredicates, inContext, fullCtx, treatEofAsEpsilon) {\n switch(t.serializationType) {\n case Transition.RULE:\n return this.ruleTransition(config, t);\n case Transition.PRECEDENCE:\n return this.precedenceTransition(config, t, collectPredicates, inContext, fullCtx);\n case Transition.PREDICATE:\n return this.predTransition(config, t, collectPredicates, inContext, fullCtx);\n case Transition.ACTION:\n return this.actionTransition(config, t);\n case Transition.EPSILON:\n return new ATNConfig({state:t.target}, config);\n case Transition.ATOM:\n case Transition.RANGE:\n case Transition.SET:\n // EOF transitions act like epsilon transitions after the first EOF\n // transition is traversed\n if (treatEofAsEpsilon) {\n if (t.matches(Token.EOF, 0, 1)) {\n return new ATNConfig({state: t.target}, config);\n }\n }\n return null;\n default:\n \treturn null;\n }\n};\n\nParserATNSimulator.prototype.actionTransition = function(config, t) {\n if (this.debug) {\n var index = t.actionIndex==-1 ? 65535 : t.actionIndex;\n console.log(\"ACTION edge \" + t.ruleIndex + \":\" + index);\n }\n return new ATNConfig({state:t.target}, config);\n};\n\nParserATNSimulator.prototype.precedenceTransition = function(config, pt, collectPredicates, inContext, fullCtx) {\n if (this.debug) {\n console.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" +\n pt.precedence + \">=_p, ctx dependent=true\");\n if (this.parser!==null) {\n \tconsole.log(\"context surrounding pred is \" + Utils.arrayToString(this.parser.getRuleInvocationStack()));\n }\n }\n var c = null;\n if (collectPredicates && inContext) {\n if (fullCtx) {\n // In full context mode, we can evaluate predicates on-the-fly\n // during closure, which dramatically reduces the size of\n // the config sets. It also obviates the need to test predicates\n // later during conflict resolution.\n var currentPosition = this._input.index;\n this._input.seek(this._startIndex);\n var predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);\n this._input.seek(currentPosition);\n if (predSucceeds) {\n c = new ATNConfig({state:pt.target}, config); // no pred context\n }\n } else {\n var newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());\n c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);\n }\n } else {\n c = new ATNConfig({state:pt.target}, config);\n }\n if (this.debug) {\n console.log(\"config from pred transition=\" + c);\n }\n return c;\n};\n\nParserATNSimulator.prototype.predTransition = function(config, pt, collectPredicates, inContext, fullCtx) {\n if (this.debug) {\n console.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" + pt.ruleIndex +\n \":\" + pt.predIndex + \", ctx dependent=\" + pt.isCtxDependent);\n if (this.parser!==null) {\n console.log(\"context surrounding pred is \" + Utils.arrayToString(this.parser.getRuleInvocationStack()));\n }\n }\n var c = null;\n if (collectPredicates && ((pt.isCtxDependent && inContext) || ! pt.isCtxDependent)) {\n if (fullCtx) {\n // In full context mode, we can evaluate predicates on-the-fly\n // during closure, which dramatically reduces the size of\n // the config sets. It also obviates the need to test predicates\n // later during conflict resolution.\n var currentPosition = this._input.index;\n this._input.seek(this._startIndex);\n var predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);\n this._input.seek(currentPosition);\n if (predSucceeds) {\n c = new ATNConfig({state:pt.target}, config); // no pred context\n }\n } else {\n var newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());\n c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);\n }\n } else {\n c = new ATNConfig({state:pt.target}, config);\n }\n if (this.debug) {\n console.log(\"config from pred transition=\" + c);\n }\n return c;\n};\n\nParserATNSimulator.prototype.ruleTransition = function(config, t) {\n if (this.debug) {\n console.log(\"CALL rule \" + this.getRuleName(t.target.ruleIndex) + \", ctx=\" + config.context);\n }\n var returnState = t.followState;\n var newContext = SingletonPredictionContext.create(config.context, returnState.stateNumber);\n return new ATNConfig({state:t.target, context:newContext}, config );\n};\n\nParserATNSimulator.prototype.getConflictingAlts = function(configs) {\n var altsets = PredictionMode.getConflictingAltSubsets(configs);\n return PredictionMode.getAlts(altsets);\n};\n\n // Sam pointed out a problem with the previous definition, v3, of\n // ambiguous states. If we have another state associated with conflicting\n // alternatives, we should keep going. For example, the following grammar\n //\n // s : (ID | ID ID?) ';' ;\n //\n // When the ATN simulation reaches the state before ';', it has a DFA\n // state that looks like: [12|1|[], 6|2|[], 12|2|[]]. Naturally\n // 12|1|[] and 12|2|[] conflict, but we cannot stop processing this node\n // because alternative to has another way to continue, via [6|2|[]].\n // The key is that we have a single state that has config's only associated\n // with a single alternative, 2, and crucially the state transitions\n // among the configurations are all non-epsilon transitions. That means\n // we don't consider any conflicts that include alternative 2. So, we\n // ignore the conflict between alts 1 and 2. We ignore a set of\n // conflicting alts when there is an intersection with an alternative\n // associated with a single alt state in the state&rarr;config-list map.\n //\n // It's also the case that we might have two conflicting configurations but\n // also a 3rd nonconflicting configuration for a different alternative:\n // [1|1|[], 1|2|[], 8|3|[]]. This can come about from grammar:\n //\n // a : A | A | A B ;\n //\n // After matching input A, we reach the stop state for rule A, state 1.\n // State 8 is the state right before B. Clearly alternatives 1 and 2\n // conflict and no amount of further lookahead will separate the two.\n // However, alternative 3 will be able to continue and so we do not\n // stop working on this state. In the previous example, we're concerned\n // with states associated with the conflicting alternatives. Here alt\n // 3 is not associated with the conflicting configs, but since we can continue\n // looking for input reasonably, I don't declare the state done. We\n // ignore a set of conflicting alts when we have an alternative\n // that we still need to pursue.\n//\n\nParserATNSimulator.prototype.getConflictingAltsOrUniqueAlt = function(configs) {\n var conflictingAlts = null;\n if (configs.uniqueAlt!== ATN.INVALID_ALT_NUMBER) {\n conflictingAlts = new BitSet();\n conflictingAlts.add(configs.uniqueAlt);\n } else {\n conflictingAlts = configs.conflictingAlts;\n }\n return conflictingAlts;\n};\n\nParserATNSimulator.prototype.getTokenName = function( t) {\n if (t===Token.EOF) {\n return \"EOF\";\n }\n if( this.parser!==null && this.parser.literalNames!==null) {\n if (t >= this.parser.literalNames.length && t >= this.parser.symbolicNames.length) {\n console.log(\"\" + t + \" ttype out of range: \" + this.parser.literalNames);\n console.log(\"\" + this.parser.getInputStream().getTokens());\n } else {\n var name = this.parser.literalNames[t] || this.parser.symbolicNames[t];\n return name + \"<\" + t + \">\";\n }\n }\n return \"\" + t;\n};\n\nParserATNSimulator.prototype.getLookaheadName = function(input) {\n return this.getTokenName(input.LA(1));\n};\n\n// Used for debugging in adaptivePredict around execATN but I cut\n// it out for clarity now that alg. works well. We can leave this\n// \"dead\" code for a bit.\n//\nParserATNSimulator.prototype.dumpDeadEndConfigs = function(nvae) {\n console.log(\"dead end configs: \");\n var decs = nvae.getDeadEndConfigs();\n for(var i=0; i<decs.length; i++) {\n \tvar c = decs[i];\n var trans = \"no edges\";\n if (c.state.transitions.length>0) {\n var t = c.state.transitions[0];\n if (t instanceof AtomTransition) {\n trans = \"Atom \"+ this.getTokenName(t.label);\n } else if (t instanceof SetTransition) {\n var neg = (t instanceof NotSetTransition);\n trans = (neg ? \"~\" : \"\") + \"Set \" + t.set;\n }\n }\n console.error(c.toString(this.parser, true) + \":\" + trans);\n }\n};\n\nParserATNSimulator.prototype.noViableAlt = function(input, outerContext, configs, startIndex) {\n return new NoViableAltException(this.parser, input, input.get(startIndex), input.LT(1), configs, outerContext);\n};\n\nParserATNSimulator.prototype.getUniqueAlt = function(configs) {\n var alt = ATN.INVALID_ALT_NUMBER;\n for(var i=0;i<configs.items.length;i++) {\n \tvar c = configs.items[i];\n if (alt === ATN.INVALID_ALT_NUMBER) {\n alt = c.alt // found first alt\n } else if( c.alt!==alt) {\n return ATN.INVALID_ALT_NUMBER;\n }\n }\n return alt;\n};\n\n//\n// Add an edge to the DFA, if possible. This method calls\n// {@link //addDFAState} to ensure the {@code to} state is present in the\n// DFA. If {@code from} is {@code null}, or if {@code t} is outside the\n// range of edges that can be represented in the DFA tables, this method\n// returns without adding the edge to the DFA.\n//\n// <p>If {@code to} is {@code null}, this method returns {@code null}.\n// Otherwise, this method returns the {@link DFAState} returned by calling\n// {@link //addDFAState} for the {@code to} state.</p>\n//\n// @param dfa The DFA\n// @param from The source state for the edge\n// @param t The input symbol\n// @param to The target state for the edge\n//\n// @return If {@code to} is {@code null}, this method returns {@code null};\n// otherwise this method returns the result of calling {@link //addDFAState}\n// on {@code to}\n//\nParserATNSimulator.prototype.addDFAEdge = function(dfa, from_, t, to) {\n if( this.debug) {\n console.log(\"EDGE \" + from_ + \" -> \" + to + \" upon \" + this.getTokenName(t));\n }\n if (to===null) {\n return null;\n }\n to = this.addDFAState(dfa, to); // used existing if possible not incoming\n if (from_===null || t < -1 || t > this.atn.maxTokenType) {\n return to;\n }\n if (from_.edges===null) {\n from_.edges = [];\n }\n from_.edges[t+1] = to; // connect\n\n if (this.debug) {\n var literalNames = this.parser===null ? null : this.parser.literalNames;\n var symbolicNames = this.parser===null ? null : this.parser.symbolicNames;\n console.log(\"DFA=\\n\" + dfa.toString(literalNames, symbolicNames));\n }\n return to;\n};\n//\n// Add state {@code D} to the DFA if it is not already present, and return\n// the actual instance stored in the DFA. If a state equivalent to {@code D}\n// is already in the DFA, the existing state is returned. Otherwise this\n// method returns {@code D} after adding it to the DFA.\n//\n// <p>If {@code D} is {@link //ERROR}, this method returns {@link //ERROR} and\n// does not change the DFA.</p>\n//\n// @param dfa The dfa\n// @param D The DFA state to add\n// @return The state stored in the DFA. This will be either the existing\n// state if {@code D} is already in the DFA, or {@code D} itself if the\n// state was not already present.\n//\nParserATNSimulator.prototype.addDFAState = function(dfa, D) {\n if (D == ATNSimulator.ERROR) {\n return D;\n }\n var existing = dfa.states.get(D);\n if(existing!==null) {\n return existing;\n }\n D.stateNumber = dfa.states.length;\n if (! D.configs.readOnly) {\n D.configs.optimizeConfigs(this);\n D.configs.setReadonly(true);\n }\n dfa.states.add(D);\n if (this.debug) {\n console.log(\"adding new DFA state: \" + D);\n }\n return D;\n};\n\nParserATNSimulator.prototype.reportAttemptingFullContext = function(dfa, conflictingAlts, configs, startIndex, stopIndex) {\n if (this.debug || this.retry_debug) {\n var interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportAttemptingFullContext decision=\" + dfa.decision + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportAttemptingFullContext(this.parser, dfa, startIndex, stopIndex, conflictingAlts, configs);\n }\n};\n\nParserATNSimulator.prototype.reportContextSensitivity = function(dfa, prediction, configs, startIndex, stopIndex) {\n if (this.debug || this.retry_debug) {\n var interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportContextSensitivity decision=\" + dfa.decision + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportContextSensitivity(this.parser, dfa, startIndex, stopIndex, prediction, configs);\n }\n};\n\n// If context sensitive parsing, we know it's ambiguity not conflict//\nParserATNSimulator.prototype.reportAmbiguity = function(dfa, D, startIndex, stopIndex,\n exact, ambigAlts, configs ) {\n if (this.debug || this.retry_debug) {\n var interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportAmbiguity \" + ambigAlts + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportAmbiguity(this.parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs);\n }\n};\n\nexports.ParserATNSimulator = ParserATNSimulator;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n//\n// This enumeration defines the prediction modes available in ANTLR 4 along with\n// utility methods for analyzing configuration sets for conflicts and/or\n// ambiguities.\n\nvar Set = require('./../Utils').Set;\nvar Map = require('./../Utils').Map;\nvar BitSet = require('./../Utils').BitSet;\nvar AltDict = require('./../Utils').AltDict;\nvar ATN = require('./ATN').ATN;\nvar RuleStopState = require('./ATNState').RuleStopState;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar ATNConfig = require('./ATNConfig').ATNConfig;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar Hash = require(\"../Utils\").Hash;\nvar hashStuff = require('./../Utils').hashStuff;\nvar equalArrays = require('./../Utils').equalArrays;\n\nfunction PredictionMode() {\n\treturn this;\n}\n\n//\n// The SLL(*) prediction mode. This prediction mode ignores the current\n// parser context when making predictions. This is the fastest prediction\n// mode, and provides correct results for many grammars. This prediction\n// mode is more powerful than the prediction mode provided by ANTLR 3, but\n// may result in syntax errors for grammar and input combinations which are\n// not SLL.\n//\n// <p>\n// When using this prediction mode, the parser will either return a correct\n// parse tree (i.e. the same parse tree that would be returned with the\n// {@link //LL} prediction mode), or it will report a syntax error. If a\n// syntax error is encountered when using the {@link //SLL} prediction mode,\n// it may be due to either an actual syntax error in the input or indicate\n// that the particular combination of grammar and input requires the more\n// powerful {@link //LL} prediction abilities to complete successfully.</p>\n//\n// <p>\n// This prediction mode does not provide any guarantees for prediction\n// behavior for syntactically-incorrect inputs.</p>\n//\nPredictionMode.SLL = 0;\n//\n// The LL(*) prediction mode. This prediction mode allows the current parser\n// context to be used for resolving SLL conflicts that occur during\n// prediction. This is the fastest prediction mode that guarantees correct\n// parse results for all combinations of grammars with syntactically correct\n// inputs.\n//\n// <p>\n// When using this prediction mode, the parser will make correct decisions\n// for all syntactically-correct grammar and input combinations. However, in\n// cases where the grammar is truly ambiguous this prediction mode might not\n// report a precise answer for <em>exactly which</em> alternatives are\n// ambiguous.</p>\n//\n// <p>\n// This prediction mode does not provide any guarantees for prediction\n// behavior for syntactically-incorrect inputs.</p>\n//\nPredictionMode.LL = 1;\n//\n// The LL(*) prediction mode with exact ambiguity detection. In addition to\n// the correctness guarantees provided by the {@link //LL} prediction mode,\n// this prediction mode instructs the prediction algorithm to determine the\n// complete and exact set of ambiguous alternatives for every ambiguous\n// decision encountered while parsing.\n//\n// <p>\n// This prediction mode may be used for diagnosing ambiguities during\n// grammar development. Due to the performance overhead of calculating sets\n// of ambiguous alternatives, this prediction mode should be avoided when\n// the exact results are not necessary.</p>\n//\n// <p>\n// This prediction mode does not provide any guarantees for prediction\n// behavior for syntactically-incorrect inputs.</p>\n//\nPredictionMode.LL_EXACT_AMBIG_DETECTION = 2;\n\n\n//\n// Computes the SLL prediction termination condition.\n//\n// <p>\n// This method computes the SLL prediction termination condition for both of\n// the following cases.</p>\n//\n// <ul>\n// <li>The usual SLL+LL fallback upon SLL conflict</li>\n// <li>Pure SLL without LL fallback</li>\n// </ul>\n//\n// <p><strong>COMBINED SLL+LL PARSING</strong></p>\n//\n// <p>When LL-fallback is enabled upon SLL conflict, correct predictions are\n// ensured regardless of how the termination condition is computed by this\n// method. Due to the substantially higher cost of LL prediction, the\n// prediction should only fall back to LL when the additional lookahead\n// cannot lead to a unique SLL prediction.</p>\n//\n// <p>Assuming combined SLL+LL parsing, an SLL configuration set with only\n// conflicting subsets should fall back to full LL, even if the\n// configuration sets don't resolve to the same alternative (e.g.\n// {@code {1,2}} and {@code {3,4}}. If there is at least one non-conflicting\n// configuration, SLL could continue with the hopes that more lookahead will\n// resolve via one of those non-conflicting configurations.</p>\n//\n// <p>Here's the prediction termination rule them: SLL (for SLL+LL parsing)\n// stops when it sees only conflicting configuration subsets. In contrast,\n// full LL keeps going when there is uncertainty.</p>\n//\n// <p><strong>HEURISTIC</strong></p>\n//\n// <p>As a heuristic, we stop prediction when we see any conflicting subset\n// unless we see a state that only has one alternative associated with it.\n// The single-alt-state thing lets prediction continue upon rules like\n// (otherwise, it would admit defeat too soon):</p>\n//\n// <p>{@code [12|1|[], 6|2|[], 12|2|[]]. s : (ID | ID ID?) ';' ;}</p>\n//\n// <p>When the ATN simulation reaches the state before {@code ';'}, it has a\n// DFA state that looks like: {@code [12|1|[], 6|2|[], 12|2|[]]}. Naturally\n// {@code 12|1|[]} and {@code 12|2|[]} conflict, but we cannot stop\n// processing this node because alternative to has another way to continue,\n// via {@code [6|2|[]]}.</p>\n//\n// <p>It also let's us continue for this rule:</p>\n//\n// <p>{@code [1|1|[], 1|2|[], 8|3|[]] a : A | A | A B ;}</p>\n//\n// <p>After matching input A, we reach the stop state for rule A, state 1.\n// State 8 is the state right before B. Clearly alternatives 1 and 2\n// conflict and no amount of further lookahead will separate the two.\n// However, alternative 3 will be able to continue and so we do not stop\n// working on this state. In the previous example, we're concerned with\n// states associated with the conflicting alternatives. Here alt 3 is not\n// associated with the conflicting configs, but since we can continue\n// looking for input reasonably, don't declare the state done.</p>\n//\n// <p><strong>PURE SLL PARSING</strong></p>\n//\n// <p>To handle pure SLL parsing, all we have to do is make sure that we\n// combine stack contexts for configurations that differ only by semantic\n// predicate. From there, we can do the usual SLL termination heuristic.</p>\n//\n// <p><strong>PREDICATES IN SLL+LL PARSING</strong></p>\n//\n// <p>SLL decisions don't evaluate predicates until after they reach DFA stop\n// states because they need to create the DFA cache that works in all\n// semantic situations. In contrast, full LL evaluates predicates collected\n// during start state computation so it can ignore predicates thereafter.\n// This means that SLL termination detection can totally ignore semantic\n// predicates.</p>\n//\n// <p>Implementation-wise, {@link ATNConfigSet} combines stack contexts but not\n// semantic predicate contexts so we might see two configurations like the\n// following.</p>\n//\n// <p>{@code (s, 1, x, {}), (s, 1, x', {p})}</p>\n//\n// <p>Before testing these configurations against others, we have to merge\n// {@code x} and {@code x'} (without modifying the existing configurations).\n// For example, we test {@code (x+x')==x''} when looking for conflicts in\n// the following configurations.</p>\n//\n// <p>{@code (s, 1, x, {}), (s, 1, x', {p}), (s, 2, x'', {})}</p>\n//\n// <p>If the configuration set has predicates (as indicated by\n// {@link ATNConfigSet//hasSemanticContext}), this algorithm makes a copy of\n// the configurations to strip out all of the predicates so that a standard\n// {@link ATNConfigSet} will merge everything ignoring predicates.</p>\n//\nPredictionMode.hasSLLConflictTerminatingPrediction = function( mode, configs) {\n // Configs in rule stop states indicate reaching the end of the decision\n // rule (local context) or end of start rule (full context). If all\n // configs meet this condition, then none of the configurations is able\n // to match additional input so we terminate prediction.\n //\n if (PredictionMode.allConfigsInRuleStopStates(configs)) {\n return true;\n }\n // pure SLL mode parsing\n if (mode === PredictionMode.SLL) {\n // Don't bother with combining configs from different semantic\n // contexts if we can fail over to full LL; costs more time\n // since we'll often fail over anyway.\n if (configs.hasSemanticContext) {\n // dup configs, tossing out semantic predicates\n var dup = new ATNConfigSet();\n for(var i=0;i<configs.items.length;i++) {\n \tvar c = configs.items[i];\n c = new ATNConfig({semanticContext:SemanticContext.NONE}, c);\n dup.add(c);\n }\n configs = dup;\n }\n // now we have combined contexts for configs with dissimilar preds\n }\n // pure SLL or combined SLL+LL mode parsing\n var altsets = PredictionMode.getConflictingAltSubsets(configs);\n return PredictionMode.hasConflictingAltSet(altsets) && !PredictionMode.hasStateAssociatedWithOneAlt(configs);\n};\n\n// Checks if any configuration in {@code configs} is in a\n// {@link RuleStopState}. Configurations meeting this condition have reached\n// the end of the decision rule (local context) or end of start rule (full\n// context).\n//\n// @param configs the configuration set to test\n// @return {@code true} if any configuration in {@code configs} is in a\n// {@link RuleStopState}, otherwise {@code false}\nPredictionMode.hasConfigInRuleStopState = function(configs) {\n\tfor(var i=0;i<configs.items.length;i++) {\n\t\tvar c = configs.items[i];\n if (c.state instanceof RuleStopState) {\n return true;\n }\n\t}\n return false;\n};\n\n// Checks if all configurations in {@code configs} are in a\n// {@link RuleStopState}. Configurations meeting this condition have reached\n// the end of the decision rule (local context) or end of start rule (full\n// context).\n//\n// @param configs the configuration set to test\n// @return {@code true} if all configurations in {@code configs} are in a\n// {@link RuleStopState}, otherwise {@code false}\nPredictionMode.allConfigsInRuleStopStates = function(configs) {\n\tfor(var i=0;i<configs.items.length;i++) {\n\t\tvar c = configs.items[i];\n if (!(c.state instanceof RuleStopState)) {\n return false;\n }\n\t}\n return true;\n};\n\n//\n// Full LL prediction termination.\n//\n// <p>Can we stop looking ahead during ATN simulation or is there some\n// uncertainty as to which alternative we will ultimately pick, after\n// consuming more input? Even if there are partial conflicts, we might know\n// that everything is going to resolve to the same minimum alternative. That\n// means we can stop since no more lookahead will change that fact. On the\n// other hand, there might be multiple conflicts that resolve to different\n// minimums. That means we need more look ahead to decide which of those\n// alternatives we should predict.</p>\n//\n// <p>The basic idea is to split the set of configurations {@code C}, into\n// conflicting subsets {@code (s, _, ctx, _)} and singleton subsets with\n// non-conflicting configurations. Two configurations conflict if they have\n// identical {@link ATNConfig//state} and {@link ATNConfig//context} values\n// but different {@link ATNConfig//alt} value, e.g. {@code (s, i, ctx, _)}\n// and {@code (s, j, ctx, _)} for {@code i!=j}.</p>\n//\n// <p>Reduce these configuration subsets to the set of possible alternatives.\n// You can compute the alternative subsets in one pass as follows:</p>\n//\n// <p>{@code A_s,ctx = {i | (s, i, ctx, _)}} for each configuration in\n// {@code C} holding {@code s} and {@code ctx} fixed.</p>\n//\n// <p>Or in pseudo-code, for each configuration {@code c} in {@code C}:</p>\n//\n// <pre>\n// map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not\n// alt and not pred\n// </pre>\n//\n// <p>The values in {@code map} are the set of {@code A_s,ctx} sets.</p>\n//\n// <p>If {@code |A_s,ctx|=1} then there is no conflict associated with\n// {@code s} and {@code ctx}.</p>\n//\n// <p>Reduce the subsets to singletons by choosing a minimum of each subset. If\n// the union of these alternative subsets is a singleton, then no amount of\n// more lookahead will help us. We will always pick that alternative. If,\n// however, there is more than one alternative, then we are uncertain which\n// alternative to predict and must continue looking for resolution. We may\n// or may not discover an ambiguity in the future, even if there are no\n// conflicting subsets this round.</p>\n//\n// <p>The biggest sin is to terminate early because it means we've made a\n// decision but were uncertain as to the eventual outcome. We haven't used\n// enough lookahead. On the other hand, announcing a conflict too late is no\n// big deal; you will still have the conflict. It's just inefficient. It\n// might even look until the end of file.</p>\n//\n// <p>No special consideration for semantic predicates is required because\n// predicates are evaluated on-the-fly for full LL prediction, ensuring that\n// no configuration contains a semantic context during the termination\n// check.</p>\n//\n// <p><strong>CONFLICTING CONFIGS</strong></p>\n//\n// <p>Two configurations {@code (s, i, x)} and {@code (s, j, x')}, conflict\n// when {@code i!=j} but {@code x=x'}. Because we merge all\n// {@code (s, i, _)} configurations together, that means that there are at\n// most {@code n} configurations associated with state {@code s} for\n// {@code n} possible alternatives in the decision. The merged stacks\n// complicate the comparison of configuration contexts {@code x} and\n// {@code x'}. Sam checks to see if one is a subset of the other by calling\n// merge and checking to see if the merged result is either {@code x} or\n// {@code x'}. If the {@code x} associated with lowest alternative {@code i}\n// is the superset, then {@code i} is the only possible prediction since the\n// others resolve to {@code min(i)} as well. However, if {@code x} is\n// associated with {@code j>i} then at least one stack configuration for\n// {@code j} is not in conflict with alternative {@code i}. The algorithm\n// should keep going, looking for more lookahead due to the uncertainty.</p>\n//\n// <p>For simplicity, I'm doing a equality check between {@code x} and\n// {@code x'} that lets the algorithm continue to consume lookahead longer\n// than necessary. The reason I like the equality is of course the\n// simplicity but also because that is the test you need to detect the\n// alternatives that are actually in conflict.</p>\n//\n// <p><strong>CONTINUE/STOP RULE</strong></p>\n//\n// <p>Continue if union of resolved alternative sets from non-conflicting and\n// conflicting alternative subsets has more than one alternative. We are\n// uncertain about which alternative to predict.</p>\n//\n// <p>The complete set of alternatives, {@code [i for (_,i,_)]}, tells us which\n// alternatives are still in the running for the amount of input we've\n// consumed at this point. The conflicting sets let us to strip away\n// configurations that won't lead to more states because we resolve\n// conflicts to the configuration with a minimum alternate for the\n// conflicting set.</p>\n//\n// <p><strong>CASES</strong></p>\n//\n// <ul>\n//\n// <li>no conflicts and more than 1 alternative in set =&gt; continue</li>\n//\n// <li> {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s, 3, z)},\n// {@code (s', 1, y)}, {@code (s', 2, y)} yields non-conflicting set\n// {@code {3}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =\n// {@code {1,3}} =&gt; continue\n// </li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},\n// {@code (s', 2, y)}, {@code (s'', 1, z)} yields non-conflicting set\n// {@code {1}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =\n// {@code {1}} =&gt; stop and predict 1</li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},\n// {@code (s', 2, y)} yields conflicting, reduced sets {@code {1}} U\n// {@code {1}} = {@code {1}} =&gt; stop and predict 1, can announce\n// ambiguity {@code {1,2}}</li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 2, y)},\n// {@code (s', 3, y)} yields conflicting, reduced sets {@code {1}} U\n// {@code {2}} = {@code {1,2}} =&gt; continue</li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 3, y)},\n// {@code (s', 4, y)} yields conflicting, reduced sets {@code {1}} U\n// {@code {3}} = {@code {1,3}} =&gt; continue</li>\n//\n// </ul>\n//\n// <p><strong>EXACT AMBIGUITY DETECTION</strong></p>\n//\n// <p>If all states report the same conflicting set of alternatives, then we\n// know we have the exact ambiguity set.</p>\n//\n// <p><code>|A_<em>i</em>|&gt;1</code> and\n// <code>A_<em>i</em> = A_<em>j</em></code> for all <em>i</em>, <em>j</em>.</p>\n//\n// <p>In other words, we continue examining lookahead until all {@code A_i}\n// have more than one alternative and all {@code A_i} are the same. If\n// {@code A={{1,2}, {1,3}}}, then regular LL prediction would terminate\n// because the resolved set is {@code {1}}. To determine what the real\n// ambiguity is, we have to know whether the ambiguity is between one and\n// two or one and three so we keep going. We can only stop prediction when\n// we need exact ambiguity detection when the sets look like\n// {@code A={{1,2}}} or {@code {{1,2},{1,2}}}, etc...</p>\n//\nPredictionMode.resolvesToJustOneViableAlt = function(altsets) {\n return PredictionMode.getSingleViableAlt(altsets);\n};\n\n//\n// Determines if every alternative subset in {@code altsets} contains more\n// than one alternative.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if every {@link BitSet} in {@code altsets} has\n// {@link BitSet//cardinality cardinality} &gt; 1, otherwise {@code false}\n//\nPredictionMode.allSubsetsConflict = function(altsets) {\n return ! PredictionMode.hasNonConflictingAltSet(altsets);\n};\n//\n// Determines if any single alternative subset in {@code altsets} contains\n// exactly one alternative.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if {@code altsets} contains a {@link BitSet} with\n// {@link BitSet//cardinality cardinality} 1, otherwise {@code false}\n//\nPredictionMode.hasNonConflictingAltSet = function(altsets) {\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n if (alts.length===1) {\n return true;\n }\n\t}\n return false;\n};\n\n//\n// Determines if any single alternative subset in {@code altsets} contains\n// more than one alternative.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if {@code altsets} contains a {@link BitSet} with\n// {@link BitSet//cardinality cardinality} &gt; 1, otherwise {@code false}\n//\nPredictionMode.hasConflictingAltSet = function(altsets) {\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n if (alts.length>1) {\n return true;\n }\n\t}\n return false;\n};\n\n//\n// Determines if every alternative subset in {@code altsets} is equivalent.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if every member of {@code altsets} is equal to the\n// others, otherwise {@code false}\n//\nPredictionMode.allSubsetsEqual = function(altsets) {\n var first = null;\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n if (first === null) {\n first = alts;\n } else if (alts!==first) {\n return false;\n }\n\t}\n return true;\n};\n\n//\n// Returns the unique alternative predicted by all alternative subsets in\n// {@code altsets}. If no such alternative exists, this method returns\n// {@link ATN//INVALID_ALT_NUMBER}.\n//\n// @param altsets a collection of alternative subsets\n//\nPredictionMode.getUniqueAlt = function(altsets) {\n var all = PredictionMode.getAlts(altsets);\n if (all.length===1) {\n return all.minValue();\n } else {\n return ATN.INVALID_ALT_NUMBER;\n }\n};\n\n// Gets the complete set of represented alternatives for a collection of\n// alternative subsets. This method returns the union of each {@link BitSet}\n// in {@code altsets}.\n//\n// @param altsets a collection of alternative subsets\n// @return the set of represented alternatives in {@code altsets}\n//\nPredictionMode.getAlts = function(altsets) {\n var all = new BitSet();\n altsets.map( function(alts) { all.or(alts); });\n return all;\n};\n\n//\n// This function gets the conflicting alt subsets from a configuration set.\n// For each configuration {@code c} in {@code configs}:\n//\n// <pre>\n// map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not\n// alt and not pred\n// </pre>\n\nPredictionMode.getConflictingAltSubsets = function(configs) {\n var configToAlts = new Map();\n configToAlts.hashFunction = function(cfg) { hashStuff(cfg.state.stateNumber, cfg.context); };\n configToAlts.equalsFunction = function(c1, c2) { return c1.state.stateNumber==c2.state.stateNumber && c1.context.equals(c2.context);}\n configs.items.map(function(cfg) {\n var alts = configToAlts.get(cfg);\n if (alts === null) {\n alts = new BitSet();\n configToAlts.put(cfg, alts);\n }\n alts.add(cfg.alt);\n\t});\n return configToAlts.getValues();\n};\n\n//\n// Get a map from state to alt subset from a configuration set. For each\n// configuration {@code c} in {@code configs}:\n//\n// <pre>\n// map[c.{@link ATNConfig//state state}] U= c.{@link ATNConfig//alt alt}\n// </pre>\n//\nPredictionMode.getStateToAltMap = function(configs) {\n var m = new AltDict();\n configs.items.map(function(c) {\n var alts = m.get(c.state);\n if (alts === null) {\n alts = new BitSet();\n m.put(c.state, alts);\n }\n alts.add(c.alt);\n });\n return m;\n};\n\nPredictionMode.hasStateAssociatedWithOneAlt = function(configs) {\n var values = PredictionMode.getStateToAltMap(configs).values();\n for(var i=0;i<values.length;i++) {\n if (values[i].length===1) {\n return true;\n }\n }\n return false;\n};\n\nPredictionMode.getSingleViableAlt = function(altsets) {\n var result = null;\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n var minAlt = alts.minValue();\n if(result===null) {\n result = minAlt;\n } else if(result!==minAlt) { // more than 1 viable alt\n return ATN.INVALID_ALT_NUMBER;\n }\n\t}\n return result;\n};\n\nexports.PredictionMode = PredictionMode;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// A tree structure used to record the semantic context in which\n// an ATN configuration is valid. It's either a single predicate,\n// a conjunction {@code p1&&p2}, or a sum of products {@code p1||p2}.\n//\n// <p>I have scoped the {@link AND}, {@link OR}, and {@link Predicate} subclasses of\n// {@link SemanticContext} within the scope of this outer class.</p>\n//\n\nvar Set = require('./../Utils').Set;\nvar Hash = require('./../Utils').Hash;\n\nfunction SemanticContext() {\n\treturn this;\n}\n\nSemanticContext.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish();\n};\n\n// For context independent predicates, we evaluate them without a local\n// context (i.e., null context). That way, we can evaluate them without\n// having to create proper rule-specific context during prediction (as\n// opposed to the parser, which creates them naturally). In a practical\n// sense, this avoids a cast exception from RuleContext to myruleContext.\n//\n// <p>For context dependent predicates, we must pass in a local context so that\n// references such as $arg evaluate properly as _localctx.arg. We only\n// capture context dependent predicates in the context in which we begin\n// prediction, so we passed in the outer context here in case of context\n// dependent predicate evaluation.</p>\n//\nSemanticContext.prototype.evaluate = function(parser, outerContext) {\n};\n\n//\n// Evaluate the precedence predicates for the context and reduce the result.\n//\n// @param parser The parser instance.\n// @param outerContext The current parser context object.\n// @return The simplified semantic context after precedence predicates are\n// evaluated, which will be one of the following values.\n// <ul>\n// <li>{@link //NONE}: if the predicate simplifies to {@code true} after\n// precedence predicates are evaluated.</li>\n// <li>{@code null}: if the predicate simplifies to {@code false} after\n// precedence predicates are evaluated.</li>\n// <li>{@code this}: if the semantic context is not changed as a result of\n// precedence predicate evaluation.</li>\n// <li>A non-{@code null} {@link SemanticContext}: the new simplified\n// semantic context after precedence predicates are evaluated.</li>\n// </ul>\n//\nSemanticContext.prototype.evalPrecedence = function(parser, outerContext) {\n\treturn this;\n};\n\nSemanticContext.andContext = function(a, b) {\n\tif (a === null || a === SemanticContext.NONE) {\n\t\treturn b;\n\t}\n\tif (b === null || b === SemanticContext.NONE) {\n\t\treturn a;\n\t}\n\tvar result = new AND(a, b);\n\tif (result.opnds.length === 1) {\n\t\treturn result.opnds[0];\n\t} else {\n\t\treturn result;\n\t}\n};\n\nSemanticContext.orContext = function(a, b) {\n\tif (a === null) {\n\t\treturn b;\n\t}\n\tif (b === null) {\n\t\treturn a;\n\t}\n\tif (a === SemanticContext.NONE || b === SemanticContext.NONE) {\n\t\treturn SemanticContext.NONE;\n\t}\n\tvar result = new OR(a, b);\n\tif (result.opnds.length === 1) {\n\t\treturn result.opnds[0];\n\t} else {\n\t\treturn result;\n\t}\n};\n\nfunction Predicate(ruleIndex, predIndex, isCtxDependent) {\n\tSemanticContext.call(this);\n\tthis.ruleIndex = ruleIndex === undefined ? -1 : ruleIndex;\n\tthis.predIndex = predIndex === undefined ? -1 : predIndex;\n\tthis.isCtxDependent = isCtxDependent === undefined ? false : isCtxDependent; // e.g., $i ref in pred\n\treturn this;\n}\n\nPredicate.prototype = Object.create(SemanticContext.prototype);\nPredicate.prototype.constructor = Predicate;\n\n//The default {@link SemanticContext}, which is semantically equivalent to\n//a predicate of the form {@code {true}?}.\n//\nSemanticContext.NONE = new Predicate();\n\n\nPredicate.prototype.evaluate = function(parser, outerContext) {\n\tvar localctx = this.isCtxDependent ? outerContext : null;\n\treturn parser.sempred(localctx, this.ruleIndex, this.predIndex);\n};\n\nPredicate.prototype.updateHashCode = function(hash) {\n\thash.update(this.ruleIndex, this.predIndex, this.isCtxDependent);\n};\n\nPredicate.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof Predicate)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.ruleIndex === other.ruleIndex &&\n\t\t\t\tthis.predIndex === other.predIndex &&\n\t\t\t\tthis.isCtxDependent === other.isCtxDependent;\n\t}\n};\n\nPredicate.prototype.toString = function() {\n\treturn \"{\" + this.ruleIndex + \":\" + this.predIndex + \"}?\";\n};\n\nfunction PrecedencePredicate(precedence) {\n\tSemanticContext.call(this);\n\tthis.precedence = precedence === undefined ? 0 : precedence;\n}\n\nPrecedencePredicate.prototype = Object.create(SemanticContext.prototype);\nPrecedencePredicate.prototype.constructor = PrecedencePredicate;\n\nPrecedencePredicate.prototype.evaluate = function(parser, outerContext) {\n\treturn parser.precpred(outerContext, this.precedence);\n};\n\nPrecedencePredicate.prototype.evalPrecedence = function(parser, outerContext) {\n\tif (parser.precpred(outerContext, this.precedence)) {\n\t\treturn SemanticContext.NONE;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nPrecedencePredicate.prototype.compareTo = function(other) {\n\treturn this.precedence - other.precedence;\n};\n\nPrecedencePredicate.prototype.updateHashCode = function(hash) {\n hash.update(31);\n};\n\nPrecedencePredicate.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof PrecedencePredicate)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.precedence === other.precedence;\n\t}\n};\n\nPrecedencePredicate.prototype.toString = function() {\n\treturn \"{\"+this.precedence+\">=prec}?\";\n};\n\n\n\nPrecedencePredicate.filterPrecedencePredicates = function(set) {\n\tvar result = [];\n\tset.values().map( function(context) {\n\t\tif (context instanceof PrecedencePredicate) {\n\t\t\tresult.push(context);\n\t\t}\n\t});\n\treturn result;\n};\n\n\n// A semantic context which is true whenever none of the contained contexts\n// is false.\n//\nfunction AND(a, b) {\n\tSemanticContext.call(this);\n\tvar operands = new Set();\n\tif (a instanceof AND) {\n\t\ta.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(a);\n\t}\n\tif (b instanceof AND) {\n\t\tb.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(b);\n\t}\n\tvar precedencePredicates = PrecedencePredicate.filterPrecedencePredicates(operands);\n\tif (precedencePredicates.length > 0) {\n\t\t// interested in the transition with the lowest precedence\n\t\tvar reduced = null;\n\t\tprecedencePredicates.map( function(p) {\n\t\t\tif(reduced===null || p.precedence<reduced.precedence) {\n\t\t\t\treduced = p;\n\t\t\t}\n\t\t});\n\t\toperands.add(reduced);\n\t}\n\tthis.opnds = operands.values();\n\treturn this;\n}\n\nAND.prototype = Object.create(SemanticContext.prototype);\nAND.prototype.constructor = AND;\n\nAND.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof AND)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.opnds === other.opnds;\n\t}\n};\n\nAND.prototype.updateHashCode = function(hash) {\n hash.update(this.opnds, \"AND\");\n};\n//\n// {@inheritDoc}\n//\n// <p>\n// The evaluation of predicates by this context is short-circuiting, but\n// unordered.</p>\n//\nAND.prototype.evaluate = function(parser, outerContext) {\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tif (!this.opnds[i].evaluate(parser, outerContext)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n};\n\nAND.prototype.evalPrecedence = function(parser, outerContext) {\n\tvar differs = false;\n\tvar operands = [];\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tvar context = this.opnds[i];\n\t\tvar evaluated = context.evalPrecedence(parser, outerContext);\n\t\tdiffers |= (evaluated !== context);\n\t\tif (evaluated === null) {\n\t\t\t// The AND context is false if any element is false\n\t\t\treturn null;\n\t\t} else if (evaluated !== SemanticContext.NONE) {\n\t\t\t// Reduce the result by skipping true elements\n\t\t\toperands.push(evaluated);\n\t\t}\n\t}\n\tif (!differs) {\n\t\treturn this;\n\t}\n\tif (operands.length === 0) {\n\t\t// all elements were true, so the AND context is true\n\t\treturn SemanticContext.NONE;\n\t}\n\tvar result = null;\n\toperands.map(function(o) {\n\t\tresult = result === null ? o : SemanticContext.andContext(result, o);\n\t});\n\treturn result;\n};\n\nAND.prototype.toString = function() {\n\tvar s = \"\";\n\tthis.opnds.map(function(o) {\n\t\ts += \"&& \" + o.toString();\n\t});\n\treturn s.length > 3 ? s.slice(3) : s;\n};\n\n//\n// A semantic context which is true whenever at least one of the contained\n// contexts is true.\n//\nfunction OR(a, b) {\n\tSemanticContext.call(this);\n\tvar operands = new Set();\n\tif (a instanceof OR) {\n\t\ta.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(a);\n\t}\n\tif (b instanceof OR) {\n\t\tb.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(b);\n\t}\n\n\tvar precedencePredicates = PrecedencePredicate.filterPrecedencePredicates(operands);\n\tif (precedencePredicates.length > 0) {\n\t\t// interested in the transition with the highest precedence\n\t\tvar s = precedencePredicates.sort(function(a, b) {\n\t\t\treturn a.compareTo(b);\n\t\t});\n\t\tvar reduced = s[s.length-1];\n\t\toperands.add(reduced);\n\t}\n\tthis.opnds = operands.values();\n\treturn this;\n}\n\nOR.prototype = Object.create(SemanticContext.prototype);\nOR.prototype.constructor = OR;\n\nOR.prototype.constructor = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof OR)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.opnds === other.opnds;\n\t}\n};\n\nOR.prototype.updateHashCode = function(hash) {\n hash.update(this.opnds, \"OR\");\n};\n\n// <p>\n// The evaluation of predicates by this context is short-circuiting, but\n// unordered.</p>\n//\nOR.prototype.evaluate = function(parser, outerContext) {\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tif (this.opnds[i].evaluate(parser, outerContext)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nOR.prototype.evalPrecedence = function(parser, outerContext) {\n\tvar differs = false;\n\tvar operands = [];\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tvar context = this.opnds[i];\n\t\tvar evaluated = context.evalPrecedence(parser, outerContext);\n\t\tdiffers |= (evaluated !== context);\n\t\tif (evaluated === SemanticContext.NONE) {\n\t\t\t// The OR context is true if any element is true\n\t\t\treturn SemanticContext.NONE;\n\t\t} else if (evaluated !== null) {\n\t\t\t// Reduce the result by skipping false elements\n\t\t\toperands.push(evaluated);\n\t\t}\n\t}\n\tif (!differs) {\n\t\treturn this;\n\t}\n\tif (operands.length === 0) {\n\t\t// all elements were false, so the OR context is false\n\t\treturn null;\n\t}\n\tvar result = null;\n\toperands.map(function(o) {\n\t\treturn result === null ? o : SemanticContext.orContext(result, o);\n\t});\n\treturn result;\n};\n\nOR.prototype.toString = function() {\n\tvar s = \"\";\n\tthis.opnds.map(function(o) {\n\t\ts += \"|| \" + o.toString();\n\t});\n\treturn s.length > 3 ? s.slice(3) : s;\n};\n\nexports.SemanticContext = SemanticContext;\nexports.PrecedencePredicate = PrecedencePredicate;\nexports.Predicate = Predicate;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// An ATN transition between any two ATN states. Subclasses define\n// atom, set, epsilon, action, predicate, rule transitions.\n//\n// <p>This is a one way link. It emanates from a state (usually via a list of\n// transitions) and has a target state.</p>\n//\n// <p>Since we never have to change the ATN transitions once we construct it,\n// we can fix these transitions as specific classes. The DFA transitions\n// on the other hand need to update the labels as it adds transitions to\n// the states. We'll use the term Edge for the DFA to distinguish them from\n// ATN transitions.</p>\n\nvar Token = require('./../Token').Token;\nvar Interval = require('./../IntervalSet').Interval;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\nvar Predicate = require('./SemanticContext').Predicate;\nvar PrecedencePredicate = require('./SemanticContext').PrecedencePredicate;\n\nfunction Transition (target) {\n // The target of this transition.\n if (target===undefined || target===null) {\n throw \"target cannot be null.\";\n }\n this.target = target;\n // Are we epsilon, action, sempred?\n this.isEpsilon = false;\n this.label = null;\n return this;\n}\n // constants for serialization\nTransition.EPSILON = 1;\nTransition.RANGE = 2;\nTransition.RULE = 3;\nTransition.PREDICATE = 4; // e.g., {isType(input.LT(1))}?\nTransition.ATOM = 5;\nTransition.ACTION = 6;\nTransition.SET = 7; // ~(A|B) or ~atom, wildcard, which convert to next 2\nTransition.NOT_SET = 8;\nTransition.WILDCARD = 9;\nTransition.PRECEDENCE = 10;\n\nTransition.serializationNames = [\n \"INVALID\",\n \"EPSILON\",\n \"RANGE\",\n \"RULE\",\n \"PREDICATE\",\n \"ATOM\",\n \"ACTION\",\n \"SET\",\n \"NOT_SET\",\n \"WILDCARD\",\n \"PRECEDENCE\"\n ];\n\nTransition.serializationTypes = {\n EpsilonTransition: Transition.EPSILON,\n RangeTransition: Transition.RANGE,\n RuleTransition: Transition.RULE,\n PredicateTransition: Transition.PREDICATE,\n AtomTransition: Transition.ATOM,\n ActionTransition: Transition.ACTION,\n SetTransition: Transition.SET,\n NotSetTransition: Transition.NOT_SET,\n WildcardTransition: Transition.WILDCARD,\n PrecedencePredicateTransition: Transition.PRECEDENCE\n };\n\n\n// TODO: make all transitions sets? no, should remove set edges\nfunction AtomTransition(target, label) {\n\tTransition.call(this, target);\n\tthis.label_ = label; // The token type or character value; or, signifies special label.\n this.label = this.makeLabel();\n this.serializationType = Transition.ATOM;\n return this;\n}\n\nAtomTransition.prototype = Object.create(Transition.prototype);\nAtomTransition.prototype.constructor = AtomTransition;\n\nAtomTransition.prototype.makeLabel = function() {\n\tvar s = new IntervalSet();\n s.addOne(this.label_);\n return s;\n};\n\nAtomTransition.prototype.matches = function( symbol, minVocabSymbol, maxVocabSymbol) {\n return this.label_ === symbol;\n};\n\nAtomTransition.prototype.toString = function() {\n\treturn this.label_;\n};\n\nfunction RuleTransition(ruleStart, ruleIndex, precedence, followState) {\n\tTransition.call(this, ruleStart);\n this.ruleIndex = ruleIndex; // ptr to the rule definition object for this rule ref\n this.precedence = precedence;\n this.followState = followState; // what node to begin computations following ref to rule\n this.serializationType = Transition.RULE;\n this.isEpsilon = true;\n return this;\n}\n\nRuleTransition.prototype = Object.create(Transition.prototype);\nRuleTransition.prototype.constructor = RuleTransition;\n\nRuleTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\n\nfunction EpsilonTransition(target, outermostPrecedenceReturn) {\n\tTransition.call(this, target);\n this.serializationType = Transition.EPSILON;\n this.isEpsilon = true;\n this.outermostPrecedenceReturn = outermostPrecedenceReturn;\n return this;\n}\n\nEpsilonTransition.prototype = Object.create(Transition.prototype);\nEpsilonTransition.prototype.constructor = EpsilonTransition;\n\nEpsilonTransition.prototype.matches = function( symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nEpsilonTransition.prototype.toString = function() {\n\treturn \"epsilon\";\n};\n\nfunction RangeTransition(target, start, stop) {\n\tTransition.call(this, target);\n\tthis.serializationType = Transition.RANGE;\n this.start = start;\n this.stop = stop;\n this.label = this.makeLabel();\n return this;\n}\n\nRangeTransition.prototype = Object.create(Transition.prototype);\nRangeTransition.prototype.constructor = RangeTransition;\n\nRangeTransition.prototype.makeLabel = function() {\n var s = new IntervalSet();\n s.addRange(this.start, this.stop);\n return s;\n};\n\nRangeTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn symbol >= this.start && symbol <= this.stop;\n};\n\nRangeTransition.prototype.toString = function() {\n\treturn \"'\" + String.fromCharCode(this.start) + \"'..'\" + String.fromCharCode(this.stop) + \"'\";\n};\n\nfunction AbstractPredicateTransition(target) {\n\tTransition.call(this, target);\n\treturn this;\n}\n\nAbstractPredicateTransition.prototype = Object.create(Transition.prototype);\nAbstractPredicateTransition.prototype.constructor = AbstractPredicateTransition;\n\nfunction PredicateTransition(target, ruleIndex, predIndex, isCtxDependent) {\n\tAbstractPredicateTransition.call(this, target);\n this.serializationType = Transition.PREDICATE;\n this.ruleIndex = ruleIndex;\n this.predIndex = predIndex;\n this.isCtxDependent = isCtxDependent; // e.g., $i ref in pred\n this.isEpsilon = true;\n return this;\n}\n\nPredicateTransition.prototype = Object.create(AbstractPredicateTransition.prototype);\nPredicateTransition.prototype.constructor = PredicateTransition;\n\nPredicateTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nPredicateTransition.prototype.getPredicate = function() {\n\treturn new Predicate(this.ruleIndex, this.predIndex, this.isCtxDependent);\n};\n\nPredicateTransition.prototype.toString = function() {\n\treturn \"pred_\" + this.ruleIndex + \":\" + this.predIndex;\n};\n\nfunction ActionTransition(target, ruleIndex, actionIndex, isCtxDependent) {\n\tTransition.call(this, target);\n this.serializationType = Transition.ACTION;\n this.ruleIndex = ruleIndex;\n this.actionIndex = actionIndex===undefined ? -1 : actionIndex;\n this.isCtxDependent = isCtxDependent===undefined ? false : isCtxDependent; // e.g., $i ref in pred\n this.isEpsilon = true;\n return this;\n}\n\nActionTransition.prototype = Object.create(Transition.prototype);\nActionTransition.prototype.constructor = ActionTransition;\n\n\nActionTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nActionTransition.prototype.toString = function() {\n\treturn \"action_\" + this.ruleIndex + \":\" + this.actionIndex;\n};\n\n\n// A transition containing a set of values.\nfunction SetTransition(target, set) {\n\tTransition.call(this, target);\n\tthis.serializationType = Transition.SET;\n if (set !==undefined && set !==null) {\n this.label = set;\n } else {\n this.label = new IntervalSet();\n this.label.addOne(Token.INVALID_TYPE);\n }\n return this;\n}\n\nSetTransition.prototype = Object.create(Transition.prototype);\nSetTransition.prototype.constructor = SetTransition;\n\nSetTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn this.label.contains(symbol);\n};\n\n\nSetTransition.prototype.toString = function() {\n\treturn this.label.toString();\n};\n\nfunction NotSetTransition(target, set) {\n\tSetTransition.call(this, target, set);\n\tthis.serializationType = Transition.NOT_SET;\n\treturn this;\n}\n\nNotSetTransition.prototype = Object.create(SetTransition.prototype);\nNotSetTransition.prototype.constructor = NotSetTransition;\n\nNotSetTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn symbol >= minVocabSymbol && symbol <= maxVocabSymbol &&\n\t\t\t!SetTransition.prototype.matches.call(this, symbol, minVocabSymbol, maxVocabSymbol);\n};\n\nNotSetTransition.prototype.toString = function() {\n\treturn '~' + SetTransition.prototype.toString.call(this);\n};\n\nfunction WildcardTransition(target) {\n\tTransition.call(this, target);\n\tthis.serializationType = Transition.WILDCARD;\n\treturn this;\n}\n\nWildcardTransition.prototype = Object.create(Transition.prototype);\nWildcardTransition.prototype.constructor = WildcardTransition;\n\n\nWildcardTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn symbol >= minVocabSymbol && symbol <= maxVocabSymbol;\n};\n\nWildcardTransition.prototype.toString = function() {\n\treturn \".\";\n};\n\nfunction PrecedencePredicateTransition(target, precedence) {\n\tAbstractPredicateTransition.call(this, target);\n this.serializationType = Transition.PRECEDENCE;\n this.precedence = precedence;\n this.isEpsilon = true;\n return this;\n}\n\nPrecedencePredicateTransition.prototype = Object.create(AbstractPredicateTransition.prototype);\nPrecedencePredicateTransition.prototype.constructor = PrecedencePredicateTransition;\n\nPrecedencePredicateTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nPrecedencePredicateTransition.prototype.getPredicate = function() {\n\treturn new PrecedencePredicate(this.precedence);\n};\n\nPrecedencePredicateTransition.prototype.toString = function() {\n\treturn this.precedence + \" >= _p\";\n};\n\nexports.Transition = Transition;\nexports.AtomTransition = AtomTransition;\nexports.SetTransition = SetTransition;\nexports.NotSetTransition = NotSetTransition;\nexports.RuleTransition = RuleTransition;\nexports.ActionTransition = ActionTransition;\nexports.EpsilonTransition = EpsilonTransition;\nexports.RangeTransition = RangeTransition;\nexports.WildcardTransition = WildcardTransition;\nexports.PredicateTransition = PredicateTransition;\nexports.PrecedencePredicateTransition = PrecedencePredicateTransition;\nexports.AbstractPredicateTransition = AbstractPredicateTransition;","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexports.ATN = require('./ATN').ATN;\nexports.ATNDeserializer = require('./ATNDeserializer').ATNDeserializer;\nexports.LexerATNSimulator = require('./LexerATNSimulator').LexerATNSimulator;\nexports.ParserATNSimulator = require('./ParserATNSimulator').ParserATNSimulator;\nexports.PredictionMode = require('./PredictionMode').PredictionMode;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Set = require(\"../Utils\").Set;\nvar DFAState = require('./DFAState').DFAState;\nvar StarLoopEntryState = require('../atn/ATNState').StarLoopEntryState;\nvar ATNConfigSet = require('./../atn/ATNConfigSet').ATNConfigSet;\nvar DFASerializer = require('./DFASerializer').DFASerializer;\nvar LexerDFASerializer = require('./DFASerializer').LexerDFASerializer;\n\n\n\nfunction DFA(atnStartState, decision) {\n\tif (decision === undefined) {\n\t\tdecision = 0;\n\t}\n\t// From which ATN state did we create this DFA?\n\tthis.atnStartState = atnStartState;\n\tthis.decision = decision;\n\t// A set of all DFA states. Use {@link Map} so we can get old state back\n\t// ({@link Set} only allows you to see if it's there).\n\tthis._states = new Set();\n\tthis.s0 = null;\n\t// {@code true} if this DFA is for a precedence decision; otherwise,\n\t// {@code false}. This is the backing field for {@link //isPrecedenceDfa},\n\t// {@link //setPrecedenceDfa}.\n\tthis.precedenceDfa = false;\n if (atnStartState instanceof StarLoopEntryState)\n {\n if (atnStartState.isPrecedenceDecision) {\n this.precedenceDfa = true;\n var precedenceState = new DFAState(null, new ATNConfigSet());\n precedenceState.edges = [];\n precedenceState.isAcceptState = false;\n precedenceState.requiresFullContext = false;\n this.s0 = precedenceState;\n }\n }\n\treturn this;\n}\n\n// Get the start state for a specific precedence value.\n//\n// @param precedence The current precedence.\n// @return The start state corresponding to the specified precedence, or\n// {@code null} if no start state exists for the specified precedence.\n//\n// @throws IllegalStateException if this is not a precedence DFA.\n// @see //isPrecedenceDfa()\n\nDFA.prototype.getPrecedenceStartState = function(precedence) {\n\tif (!(this.precedenceDfa)) {\n\t\tthrow (\"Only precedence DFAs may contain a precedence start state.\");\n\t}\n\t// s0.edges is never null for a precedence DFA\n\tif (precedence < 0 || precedence >= this.s0.edges.length) {\n\t\treturn null;\n\t}\n\treturn this.s0.edges[precedence] || null;\n};\n\n// Set the start state for a specific precedence value.\n//\n// @param precedence The current precedence.\n// @param startState The start state corresponding to the specified\n// precedence.\n//\n// @throws IllegalStateException if this is not a precedence DFA.\n// @see //isPrecedenceDfa()\n//\nDFA.prototype.setPrecedenceStartState = function(precedence, startState) {\n\tif (!(this.precedenceDfa)) {\n\t\tthrow (\"Only precedence DFAs may contain a precedence start state.\");\n\t}\n\tif (precedence < 0) {\n\t\treturn;\n\t}\n\n\t// synchronization on s0 here is ok. when the DFA is turned into a\n\t// precedence DFA, s0 will be initialized once and not updated again\n\t// s0.edges is never null for a precedence DFA\n\tthis.s0.edges[precedence] = startState;\n};\n\n//\n// Sets whether this is a precedence DFA. If the specified value differs\n// from the current DFA configuration, the following actions are taken;\n// otherwise no changes are made to the current DFA.\n//\n// <ul>\n// <li>The {@link //states} map is cleared</li>\n// <li>If {@code precedenceDfa} is {@code false}, the initial state\n// {@link //s0} is set to {@code null}; otherwise, it is initialized to a new\n// {@link DFAState} with an empty outgoing {@link DFAState//edges} array to\n// store the start states for individual precedence values.</li>\n// <li>The {@link //precedenceDfa} field is updated</li>\n// </ul>\n//\n// @param precedenceDfa {@code true} if this is a precedence DFA; otherwise,\n// {@code false}\n\nDFA.prototype.setPrecedenceDfa = function(precedenceDfa) {\n\tif (this.precedenceDfa!==precedenceDfa) {\n\t\tthis._states = new DFAStatesSet();\n\t\tif (precedenceDfa) {\n\t\t\tvar precedenceState = new DFAState(null, new ATNConfigSet());\n\t\t\tprecedenceState.edges = [];\n\t\t\tprecedenceState.isAcceptState = false;\n\t\t\tprecedenceState.requiresFullContext = false;\n\t\t\tthis.s0 = precedenceState;\n\t\t} else {\n\t\t\tthis.s0 = null;\n\t\t}\n\t\tthis.precedenceDfa = precedenceDfa;\n\t}\n};\n\nObject.defineProperty(DFA.prototype, \"states\", {\n\tget : function() {\n\t\treturn this._states;\n\t}\n});\n\n// Return a list of all states in this DFA, ordered by state number.\nDFA.prototype.sortedStates = function() {\n\tvar list = this._states.values();\n\treturn list.sort(function(a, b) {\n\t\treturn a.stateNumber - b.stateNumber;\n\t});\n};\n\nDFA.prototype.toString = function(literalNames, symbolicNames) {\n\tliteralNames = literalNames || null;\n\tsymbolicNames = symbolicNames || null;\n\tif (this.s0 === null) {\n\t\treturn \"\";\n\t}\n\tvar serializer = new DFASerializer(this, literalNames, symbolicNames);\n\treturn serializer.toString();\n};\n\nDFA.prototype.toLexerString = function() {\n\tif (this.s0 === null) {\n\t\treturn \"\";\n\t}\n\tvar serializer = new LexerDFASerializer(this);\n\treturn serializer.toString();\n};\n\nexports.DFA = DFA;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// A DFA walker that knows how to dump them to serialized strings.#/\n\n\nfunction DFASerializer(dfa, literalNames, symbolicNames) {\n\tthis.dfa = dfa;\n\tthis.literalNames = literalNames || [];\n\tthis.symbolicNames = symbolicNames || [];\n\treturn this;\n}\n\nDFASerializer.prototype.toString = function() {\n if(this.dfa.s0 === null) {\n return null;\n }\n var buf = \"\";\n var states = this.dfa.sortedStates();\n for(var i=0;i<states.length;i++) {\n var s = states[i];\n if(s.edges!==null) {\n var n = s.edges.length;\n for(var j=0;j<n;j++) {\n var t = s.edges[j] || null;\n if(t!==null && t.stateNumber !== 0x7FFFFFFF) {\n buf = buf.concat(this.getStateString(s));\n buf = buf.concat(\"-\");\n buf = buf.concat(this.getEdgeLabel(j));\n buf = buf.concat(\"->\");\n buf = buf.concat(this.getStateString(t));\n buf = buf.concat('\\n');\n }\n }\n }\n }\n return buf.length===0 ? null : buf;\n};\n\nDFASerializer.prototype.getEdgeLabel = function(i) {\n if (i===0) {\n return \"EOF\";\n } else if(this.literalNames !==null || this.symbolicNames!==null) {\n return this.literalNames[i-1] || this.symbolicNames[i-1];\n } else {\n return String.fromCharCode(i-1);\n }\n};\n\nDFASerializer.prototype.getStateString = function(s) {\n var baseStateStr = ( s.isAcceptState ? \":\" : \"\") + \"s\" + s.stateNumber + ( s.requiresFullContext ? \"^\" : \"\");\n if(s.isAcceptState) {\n if (s.predicates !== null) {\n return baseStateStr + \"=>\" + s.predicates.toString();\n } else {\n return baseStateStr + \"=>\" + s.prediction.toString();\n }\n } else {\n return baseStateStr;\n }\n};\n\nfunction LexerDFASerializer(dfa) {\n\tDFASerializer.call(this, dfa, null);\n\treturn this;\n}\n\nLexerDFASerializer.prototype = Object.create(DFASerializer.prototype);\nLexerDFASerializer.prototype.constructor = LexerDFASerializer;\n\nLexerDFASerializer.prototype.getEdgeLabel = function(i) {\n\treturn \"'\" + String.fromCharCode(i) + \"'\";\n};\n\nexports.DFASerializer = DFASerializer;\nexports.LexerDFASerializer = LexerDFASerializer;\n\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar ATNConfigSet = require('./../atn/ATNConfigSet').ATNConfigSet;\nvar Utils = require('./../Utils');\nvar Hash = Utils.Hash;\nvar Set = Utils.Set;\n\n// Map a predicate to a predicted alternative.///\n\nfunction PredPrediction(pred, alt) {\n\tthis.alt = alt;\n\tthis.pred = pred;\n\treturn this;\n}\n\nPredPrediction.prototype.toString = function() {\n\treturn \"(\" + this.pred + \", \" + this.alt + \")\";\n};\n\n// A DFA state represents a set of possible ATN configurations.\n// As Aho, Sethi, Ullman p. 117 says \"The DFA uses its state\n// to keep track of all possible states the ATN can be in after\n// reading each input symbol. That is to say, after reading\n// input a1a2..an, the DFA is in a state that represents the\n// subset T of the states of the ATN that are reachable from the\n// ATN's start state along some path labeled a1a2..an.\"\n// In conventional NFA&rarr;DFA conversion, therefore, the subset T\n// would be a bitset representing the set of states the\n// ATN could be in. We need to track the alt predicted by each\n// state as well, however. More importantly, we need to maintain\n// a stack of states, tracking the closure operations as they\n// jump from rule to rule, emulating rule invocations (method calls).\n// I have to add a stack to simulate the proper lookahead sequences for\n// the underlying LL grammar from which the ATN was derived.\n//\n// <p>I use a set of ATNConfig objects not simple states. An ATNConfig\n// is both a state (ala normal conversion) and a RuleContext describing\n// the chain of rules (if any) followed to arrive at that state.</p>\n//\n// <p>A DFA state may have multiple references to a particular state,\n// but with different ATN contexts (with same or different alts)\n// meaning that state was reached via a different set of rule invocations.</p>\n// /\n\nfunction DFAState(stateNumber, configs) {\n\tif (stateNumber === null) {\n\t\tstateNumber = -1;\n\t}\n\tif (configs === null) {\n\t\tconfigs = new ATNConfigSet();\n\t}\n\tthis.stateNumber = stateNumber;\n\tthis.configs = configs;\n\t// {@code edges[symbol]} points to target of symbol. Shift up by 1 so (-1)\n\t// {@link Token//EOF} maps to {@code edges[0]}.\n\tthis.edges = null;\n\tthis.isAcceptState = false;\n\t// if accept state, what ttype do we match or alt do we predict?\n\t// This is set to {@link ATN//INVALID_ALT_NUMBER} when {@link\n\t// //predicates}{@code !=null} or\n\t// {@link //requiresFullContext}.\n\tthis.prediction = 0;\n\tthis.lexerActionExecutor = null;\n\t// Indicates that this state was created during SLL prediction that\n\t// discovered a conflict between the configurations in the state. Future\n\t// {@link ParserATNSimulator//execATN} invocations immediately jumped doing\n\t// full context prediction if this field is true.\n\tthis.requiresFullContext = false;\n\t// During SLL parsing, this is a list of predicates associated with the\n\t// ATN configurations of the DFA state. When we have predicates,\n\t// {@link //requiresFullContext} is {@code false} since full context\n\t// prediction evaluates predicates\n\t// on-the-fly. If this is not null, then {@link //prediction} is\n\t// {@link ATN//INVALID_ALT_NUMBER}.\n\t//\n\t// <p>We only use these for non-{@link //requiresFullContext} but\n\t// conflicting states. That\n\t// means we know from the context (it's $ or we don't dip into outer\n\t// context) that it's an ambiguity not a conflict.</p>\n\t//\n\t// <p>This list is computed by {@link\n\t// ParserATNSimulator//predicateDFAState}.</p>\n\tthis.predicates = null;\n\treturn this;\n}\n\n// Get the set of all alts mentioned by all ATN configurations in this\n// DFA state.\nDFAState.prototype.getAltSet = function() {\n\tvar alts = new Set();\n\tif (this.configs !== null) {\n\t\tfor (var i = 0; i < this.configs.length; i++) {\n\t\t\tvar c = this.configs[i];\n\t\t\talts.add(c.alt);\n\t\t}\n\t}\n\tif (alts.length === 0) {\n\t\treturn null;\n\t} else {\n\t\treturn alts;\n\t}\n};\n\n// Two {@link DFAState} instances are equal if their ATN configuration sets\n// are the same. This method is used to see if a state already exists.\n//\n// <p>Because the number of alternatives and number of ATN configurations are\n// finite, there is a finite number of DFA states that can be processed.\n// This is necessary to show that the algorithm terminates.</p>\n//\n// <p>Cannot test the DFA state numbers here because in\n// {@link ParserATNSimulator//addDFAState} we need to know if any other state\n// exists that has this exact set of ATN configurations. The\n// {@link //stateNumber} is irrelevant.</p>\nDFAState.prototype.equals = function(other) {\n\t// compare set of ATN configurations in this set with other\n\treturn this === other ||\n\t\t\t(other instanceof DFAState &&\n\t\t\t\tthis.configs.equals(other.configs));\n};\n\nDFAState.prototype.toString = function() {\n\tvar s = \"\" + this.stateNumber + \":\" + this.configs;\n\tif(this.isAcceptState) {\n s = s + \"=>\";\n if (this.predicates !== null)\n s = s + this.predicates;\n else\n s = s + this.prediction;\n }\n\treturn s;\n};\n\nDFAState.prototype.hashCode = function() {\n\tvar hash = new Hash();\n\thash.update(this.configs);\n\tif(this.isAcceptState) {\n if (this.predicates !== null)\n hash.update(this.predicates);\n else\n hash.update(this.prediction);\n }\n return hash.finish();\n};\n\nexports.DFAState = DFAState;\nexports.PredPrediction = PredPrediction;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexports.DFA = require('./DFA').DFA;\nexports.DFASerializer = require('./DFASerializer').DFASerializer;\nexports.LexerDFASerializer = require('./DFASerializer').LexerDFASerializer;\nexports.PredPrediction = require('./DFAState').PredPrediction;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// This implementation of {@link ANTLRErrorListener} can be used to identify\n// certain potential correctness and performance problems in grammars. \"Reports\"\n// are made by calling {@link Parser//notifyErrorListeners} with the appropriate\n// message.\n//\n// <ul>\n// <li><b>Ambiguities</b>: These are cases where more than one path through the\n// grammar can match the input.</li>\n// <li><b>Weak context sensitivity</b>: These are cases where full-context\n// prediction resolved an SLL conflict to a unique alternative which equaled the\n// minimum alternative of the SLL conflict.</li>\n// <li><b>Strong (forced) context sensitivity</b>: These are cases where the\n// full-context prediction resolved an SLL conflict to a unique alternative,\n// <em>and</em> the minimum alternative of the SLL conflict was found to not be\n// a truly viable alternative. Two-stage parsing cannot be used for inputs where\n// this situation occurs.</li>\n// </ul>\n\nvar BitSet = require('./../Utils').BitSet;\nvar ErrorListener = require('./ErrorListener').ErrorListener;\nvar Interval = require('./../IntervalSet').Interval;\n\nfunction DiagnosticErrorListener(exactOnly) {\n\tErrorListener.call(this);\n\texactOnly = exactOnly || true;\n\t// whether all ambiguities or only exact ambiguities are reported.\n\tthis.exactOnly = exactOnly;\n\treturn this;\n}\n\nDiagnosticErrorListener.prototype = Object.create(ErrorListener.prototype);\nDiagnosticErrorListener.prototype.constructor = DiagnosticErrorListener;\n\nDiagnosticErrorListener.prototype.reportAmbiguity = function(recognizer, dfa,\n\t\tstartIndex, stopIndex, exact, ambigAlts, configs) {\n\tif (this.exactOnly && !exact) {\n\t\treturn;\n\t}\n\tvar msg = \"reportAmbiguity d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\": ambigAlts=\" +\n\t\t\tthis.getConflictingAlts(ambigAlts, configs) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\";\n\trecognizer.notifyErrorListeners(msg);\n};\n\nDiagnosticErrorListener.prototype.reportAttemptingFullContext = function(\n\t\trecognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n\tvar msg = \"reportAttemptingFullContext d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\";\n\trecognizer.notifyErrorListeners(msg);\n};\n\nDiagnosticErrorListener.prototype.reportContextSensitivity = function(\n\t\trecognizer, dfa, startIndex, stopIndex, prediction, configs) {\n\tvar msg = \"reportContextSensitivity d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\";\n\trecognizer.notifyErrorListeners(msg);\n};\n\nDiagnosticErrorListener.prototype.getDecisionDescription = function(recognizer, dfa) {\n\tvar decision = dfa.decision;\n\tvar ruleIndex = dfa.atnStartState.ruleIndex;\n\n\tvar ruleNames = recognizer.ruleNames;\n\tif (ruleIndex < 0 || ruleIndex >= ruleNames.length) {\n\t\treturn \"\" + decision;\n\t}\n\tvar ruleName = ruleNames[ruleIndex] || null;\n\tif (ruleName === null || ruleName.length === 0) {\n\t\treturn \"\" + decision;\n\t}\n\treturn \"\" + decision + \" (\" + ruleName + \")\";\n};\n\n//\n// Computes the set of conflicting or ambiguous alternatives from a\n// configuration set, if that information was not already provided by the\n// parser.\n//\n// @param reportedAlts The set of conflicting or ambiguous alternatives, as\n// reported by the parser.\n// @param configs The conflicting or ambiguous configuration set.\n// @return Returns {@code reportedAlts} if it is not {@code null}, otherwise\n// returns the set of alternatives represented in {@code configs}.\n//\nDiagnosticErrorListener.prototype.getConflictingAlts = function(reportedAlts, configs) {\n\tif (reportedAlts !== null) {\n\t\treturn reportedAlts;\n\t}\n\tvar result = new BitSet();\n\tfor (var i = 0; i < configs.items.length; i++) {\n\t\tresult.add(configs.items[i].alt);\n\t}\n\treturn \"{\" + result.values().join(\", \") + \"}\";\n};\n\nexports.DiagnosticErrorListener = DiagnosticErrorListener;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// Provides an empty default implementation of {@link ANTLRErrorListener}. The\n// default implementation of each method does nothing, but can be overridden as\n// necessary.\n\nfunction ErrorListener() {\n\treturn this;\n}\n\nErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {\n};\n\nErrorListener.prototype.reportAmbiguity = function(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n};\n\nErrorListener.prototype.reportAttemptingFullContext = function(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n};\n\nErrorListener.prototype.reportContextSensitivity = function(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n};\n\nfunction ConsoleErrorListener() {\n\tErrorListener.call(this);\n\treturn this;\n}\n\nConsoleErrorListener.prototype = Object.create(ErrorListener.prototype);\nConsoleErrorListener.prototype.constructor = ConsoleErrorListener;\n\n//\n// Provides a default instance of {@link ConsoleErrorListener}.\n//\nConsoleErrorListener.INSTANCE = new ConsoleErrorListener();\n\n//\n// {@inheritDoc}\n//\n// <p>\n// This implementation prints messages to {@link System//err} containing the\n// values of {@code line}, {@code charPositionInLine}, and {@code msg} using\n// the following format.</p>\n//\n// <pre>\n// line <em>line</em>:<em>charPositionInLine</em> <em>msg</em>\n// </pre>\n//\nConsoleErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {\n console.error(\"line \" + line + \":\" + column + \" \" + msg);\n};\n\nfunction ProxyErrorListener(delegates) {\n\tErrorListener.call(this);\n if (delegates===null) {\n throw \"delegates\";\n }\n this.delegates = delegates;\n\treturn this;\n}\n\nProxyErrorListener.prototype = Object.create(ErrorListener.prototype);\nProxyErrorListener.prototype.constructor = ProxyErrorListener;\n\nProxyErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {\n this.delegates.map(function(d) { d.syntaxError(recognizer, offendingSymbol, line, column, msg, e); });\n};\n\nProxyErrorListener.prototype.reportAmbiguity = function(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n this.delegates.map(function(d) { d.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs); });\n};\n\nProxyErrorListener.prototype.reportAttemptingFullContext = function(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n\tthis.delegates.map(function(d) { d.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs); });\n};\n\nProxyErrorListener.prototype.reportContextSensitivity = function(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n\tthis.delegates.map(function(d) { d.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs); });\n};\n\nexports.ErrorListener = ErrorListener;\nexports.ConsoleErrorListener = ConsoleErrorListener;\nexports.ProxyErrorListener = ProxyErrorListener;\n\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar Token = require('./../Token').Token;\nvar Errors = require('./Errors');\nvar NoViableAltException = Errors.NoViableAltException;\nvar InputMismatchException = Errors.InputMismatchException;\nvar FailedPredicateException = Errors.FailedPredicateException;\nvar ParseCancellationException = Errors.ParseCancellationException;\nvar ATNState = require('./../atn/ATNState').ATNState;\nvar Interval = require('./../IntervalSet').Interval;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\n\nfunction ErrorStrategy() {\n\n}\n\nErrorStrategy.prototype.reset = function(recognizer){\n};\n\nErrorStrategy.prototype.recoverInline = function(recognizer){\n};\n\nErrorStrategy.prototype.recover = function(recognizer, e){\n};\n\nErrorStrategy.prototype.sync = function(recognizer){\n};\n\nErrorStrategy.prototype.inErrorRecoveryMode = function(recognizer){\n};\n\nErrorStrategy.prototype.reportError = function(recognizer){\n};\n\n\n\n// This is the default implementation of {@link ANTLRErrorStrategy} used for\n// error reporting and recovery in ANTLR parsers.\n//\nfunction DefaultErrorStrategy() {\n\tErrorStrategy.call(this);\n // Indicates whether the error strategy is currently \"recovering from an\n // error\". This is used to suppress reporting multiple error messages while\n // attempting to recover from a detected syntax error.\n //\n // @see //inErrorRecoveryMode\n //\n this.errorRecoveryMode = false;\n\n // The index into the input stream where the last error occurred.\n // This is used to prevent infinite loops where an error is found\n // but no token is consumed during recovery...another error is found,\n // ad nauseum. This is a failsafe mechanism to guarantee that at least\n // one token/tree node is consumed for two errors.\n //\n this.lastErrorIndex = -1;\n this.lastErrorStates = null;\n return this;\n}\n\nDefaultErrorStrategy.prototype = Object.create(ErrorStrategy.prototype);\nDefaultErrorStrategy.prototype.constructor = DefaultErrorStrategy;\n\n// <p>The default implementation simply calls {@link //endErrorCondition} to\n// ensure that the handler is not in error recovery mode.</p>\nDefaultErrorStrategy.prototype.reset = function(recognizer) {\n this.endErrorCondition(recognizer);\n};\n\n//\n// This method is called to enter error recovery mode when a recognition\n// exception is reported.\n//\n// @param recognizer the parser instance\n//\nDefaultErrorStrategy.prototype.beginErrorCondition = function(recognizer) {\n this.errorRecoveryMode = true;\n};\n\nDefaultErrorStrategy.prototype.inErrorRecoveryMode = function(recognizer) {\n return this.errorRecoveryMode;\n};\n\n//\n// This method is called to leave error recovery mode after recovering from\n// a recognition exception.\n//\n// @param recognizer\n//\nDefaultErrorStrategy.prototype.endErrorCondition = function(recognizer) {\n this.errorRecoveryMode = false;\n this.lastErrorStates = null;\n this.lastErrorIndex = -1;\n};\n\n//\n// {@inheritDoc}\n//\n// <p>The default implementation simply calls {@link //endErrorCondition}.</p>\n//\nDefaultErrorStrategy.prototype.reportMatch = function(recognizer) {\n this.endErrorCondition(recognizer);\n};\n\n//\n// {@inheritDoc}\n//\n// <p>The default implementation returns immediately if the handler is already\n// in error recovery mode. Otherwise, it calls {@link //beginErrorCondition}\n// and dispatches the reporting task based on the runtime type of {@code e}\n// according to the following table.</p>\n//\n// <ul>\n// <li>{@link NoViableAltException}: Dispatches the call to\n// {@link //reportNoViableAlternative}</li>\n// <li>{@link InputMismatchException}: Dispatches the call to\n// {@link //reportInputMismatch}</li>\n// <li>{@link FailedPredicateException}: Dispatches the call to\n// {@link //reportFailedPredicate}</li>\n// <li>All other types: calls {@link Parser//notifyErrorListeners} to report\n// the exception</li>\n// </ul>\n//\nDefaultErrorStrategy.prototype.reportError = function(recognizer, e) {\n // if we've already reported an error and have not matched a token\n // yet successfully, don't report any errors.\n if(this.inErrorRecoveryMode(recognizer)) {\n return; // don't report spurious errors\n }\n this.beginErrorCondition(recognizer);\n if ( e instanceof NoViableAltException ) {\n this.reportNoViableAlternative(recognizer, e);\n } else if ( e instanceof InputMismatchException ) {\n this.reportInputMismatch(recognizer, e);\n } else if ( e instanceof FailedPredicateException ) {\n this.reportFailedPredicate(recognizer, e);\n } else {\n console.log(\"unknown recognition error type: \" + e.constructor.name);\n console.log(e.stack);\n recognizer.notifyErrorListeners(e.getOffendingToken(), e.getMessage(), e);\n }\n};\n//\n// {@inheritDoc}\n//\n// <p>The default implementation resynchronizes the parser by consuming tokens\n// until we find one in the resynchronization set--loosely the set of tokens\n// that can follow the current rule.</p>\n//\nDefaultErrorStrategy.prototype.recover = function(recognizer, e) {\n if (this.lastErrorIndex===recognizer.getInputStream().index &&\n this.lastErrorStates !== null && this.lastErrorStates.indexOf(recognizer.state)>=0) {\n\t\t// uh oh, another error at same token index and previously-visited\n\t\t// state in ATN; must be a case where LT(1) is in the recovery\n\t\t// token set so nothing got consumed. Consume a single token\n\t\t// at least to prevent an infinite loop; this is a failsafe.\n\t\trecognizer.consume();\n }\n this.lastErrorIndex = recognizer._input.index;\n if (this.lastErrorStates === null) {\n this.lastErrorStates = [];\n }\n this.lastErrorStates.push(recognizer.state);\n var followSet = this.getErrorRecoverySet(recognizer);\n this.consumeUntil(recognizer, followSet);\n};\n\n// The default implementation of {@link ANTLRErrorStrategy//sync} makes sure\n// that the current lookahead symbol is consistent with what were expecting\n// at this point in the ATN. You can call this anytime but ANTLR only\n// generates code to check before subrules/loops and each iteration.\n//\n// <p>Implements Jim Idle's magic sync mechanism in closures and optional\n// subrules. E.g.,</p>\n//\n// <pre>\n// a : sync ( stuff sync )* ;\n// sync : {consume to what can follow sync} ;\n// </pre>\n//\n// At the start of a sub rule upon error, {@link //sync} performs single\n// token deletion, if possible. If it can't do that, it bails on the current\n// rule and uses the default error recovery, which consumes until the\n// resynchronization set of the current rule.\n//\n// <p>If the sub rule is optional ({@code (...)?}, {@code (...)*}, or block\n// with an empty alternative), then the expected set includes what follows\n// the subrule.</p>\n//\n// <p>During loop iteration, it consumes until it sees a token that can start a\n// sub rule or what follows loop. Yes, that is pretty aggressive. We opt to\n// stay in the loop as long as possible.</p>\n//\n// <p><strong>ORIGINS</strong></p>\n//\n// <p>Previous versions of ANTLR did a poor job of their recovery within loops.\n// A single mismatch token or missing token would force the parser to bail\n// out of the entire rules surrounding the loop. So, for rule</p>\n//\n// <pre>\n// classDef : 'class' ID '{' member* '}'\n// </pre>\n//\n// input with an extra token between members would force the parser to\n// consume until it found the next class definition rather than the next\n// member definition of the current class.\n//\n// <p>This functionality cost a little bit of effort because the parser has to\n// compare token set at the start of the loop and at each iteration. If for\n// some reason speed is suffering for you, you can turn off this\n// functionality by simply overriding this method as a blank { }.</p>\n//\nDefaultErrorStrategy.prototype.sync = function(recognizer) {\n // If already recovering, don't try to sync\n if (this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n var s = recognizer._interp.atn.states[recognizer.state];\n var la = recognizer.getTokenStream().LA(1);\n // try cheaper subset first; might get lucky. seems to shave a wee bit off\n var nextTokens = recognizer.atn.nextTokens(s);\n if (nextTokens.contains(Token.EPSILON) || nextTokens.contains(la)) {\n return;\n }\n switch (s.stateType) {\n case ATNState.BLOCK_START:\n case ATNState.STAR_BLOCK_START:\n case ATNState.PLUS_BLOCK_START:\n case ATNState.STAR_LOOP_ENTRY:\n // report error and recover if possible\n if( this.singleTokenDeletion(recognizer) !== null) {\n return;\n } else {\n throw new InputMismatchException(recognizer);\n }\n break;\n case ATNState.PLUS_LOOP_BACK:\n case ATNState.STAR_LOOP_BACK:\n this.reportUnwantedToken(recognizer);\n var expecting = new IntervalSet();\n expecting.addSet(recognizer.getExpectedTokens());\n var whatFollowsLoopIterationOrRule = expecting.addSet(this.getErrorRecoverySet(recognizer));\n this.consumeUntil(recognizer, whatFollowsLoopIterationOrRule);\n break;\n default:\n // do nothing if we can't identify the exact kind of ATN state\n }\n};\n\n// This is called by {@link //reportError} when the exception is a\n// {@link NoViableAltException}.\n//\n// @see //reportError\n//\n// @param recognizer the parser instance\n// @param e the recognition exception\n//\nDefaultErrorStrategy.prototype.reportNoViableAlternative = function(recognizer, e) {\n var tokens = recognizer.getTokenStream();\n var input;\n if(tokens !== null) {\n if (e.startToken.type===Token.EOF) {\n input = \"<EOF>\";\n } else {\n input = tokens.getText(new Interval(e.startToken.tokenIndex, e.offendingToken.tokenIndex));\n }\n } else {\n input = \"<unknown input>\";\n }\n var msg = \"no viable alternative at input \" + this.escapeWSAndQuote(input);\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n};\n\n//\n// This is called by {@link //reportError} when the exception is an\n// {@link InputMismatchException}.\n//\n// @see //reportError\n//\n// @param recognizer the parser instance\n// @param e the recognition exception\n//\nDefaultErrorStrategy.prototype.reportInputMismatch = function(recognizer, e) {\n var msg = \"mismatched input \" + this.getTokenErrorDisplay(e.offendingToken) +\n \" expecting \" + e.getExpectedTokens().toString(recognizer.literalNames, recognizer.symbolicNames);\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n};\n\n//\n// This is called by {@link //reportError} when the exception is a\n// {@link FailedPredicateException}.\n//\n// @see //reportError\n//\n// @param recognizer the parser instance\n// @param e the recognition exception\n//\nDefaultErrorStrategy.prototype.reportFailedPredicate = function(recognizer, e) {\n var ruleName = recognizer.ruleNames[recognizer._ctx.ruleIndex];\n var msg = \"rule \" + ruleName + \" \" + e.message;\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n};\n\n// This method is called to report a syntax error which requires the removal\n// of a token from the input stream. At the time this method is called, the\n// erroneous symbol is current {@code LT(1)} symbol and has not yet been\n// removed from the input stream. When this method returns,\n// {@code recognizer} is in error recovery mode.\n//\n// <p>This method is called when {@link //singleTokenDeletion} identifies\n// single-token deletion as a viable recovery strategy for a mismatched\n// input error.</p>\n//\n// <p>The default implementation simply returns if the handler is already in\n// error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to\n// enter error recovery mode, followed by calling\n// {@link Parser//notifyErrorListeners}.</p>\n//\n// @param recognizer the parser instance\n//\nDefaultErrorStrategy.prototype.reportUnwantedToken = function(recognizer) {\n if (this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n this.beginErrorCondition(recognizer);\n var t = recognizer.getCurrentToken();\n var tokenName = this.getTokenErrorDisplay(t);\n var expecting = this.getExpectedTokens(recognizer);\n var msg = \"extraneous input \" + tokenName + \" expecting \" +\n expecting.toString(recognizer.literalNames, recognizer.symbolicNames);\n recognizer.notifyErrorListeners(msg, t, null);\n};\n// This method is called to report a syntax error which requires the\n// insertion of a missing token into the input stream. At the time this\n// method is called, the missing token has not yet been inserted. When this\n// method returns, {@code recognizer} is in error recovery mode.\n//\n// <p>This method is called when {@link //singleTokenInsertion} identifies\n// single-token insertion as a viable recovery strategy for a mismatched\n// input error.</p>\n//\n// <p>The default implementation simply returns if the handler is already in\n// error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to\n// enter error recovery mode, followed by calling\n// {@link Parser//notifyErrorListeners}.</p>\n//\n// @param recognizer the parser instance\n//\nDefaultErrorStrategy.prototype.reportMissingToken = function(recognizer) {\n if ( this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n this.beginErrorCondition(recognizer);\n var t = recognizer.getCurrentToken();\n var expecting = this.getExpectedTokens(recognizer);\n var msg = \"missing \" + expecting.toString(recognizer.literalNames, recognizer.symbolicNames) +\n \" at \" + this.getTokenErrorDisplay(t);\n recognizer.notifyErrorListeners(msg, t, null);\n};\n\n// <p>The default implementation attempts to recover from the mismatched input\n// by using single token insertion and deletion as described below. If the\n// recovery attempt fails, this method throws an\n// {@link InputMismatchException}.</p>\n//\n// <p><strong>EXTRA TOKEN</strong> (single token deletion)</p>\n//\n// <p>{@code LA(1)} is not what we are looking for. If {@code LA(2)} has the\n// right token, however, then assume {@code LA(1)} is some extra spurious\n// token and delete it. Then consume and return the next token (which was\n// the {@code LA(2)} token) as the successful result of the match operation.</p>\n//\n// <p>This recovery strategy is implemented by {@link\n// //singleTokenDeletion}.</p>\n//\n// <p><strong>MISSING TOKEN</strong> (single token insertion)</p>\n//\n// <p>If current token (at {@code LA(1)}) is consistent with what could come\n// after the expected {@code LA(1)} token, then assume the token is missing\n// and use the parser's {@link TokenFactory} to create it on the fly. The\n// \"insertion\" is performed by returning the created token as the successful\n// result of the match operation.</p>\n//\n// <p>This recovery strategy is implemented by {@link\n// //singleTokenInsertion}.</p>\n//\n// <p><strong>EXAMPLE</strong></p>\n//\n// <p>For example, Input {@code i=(3;} is clearly missing the {@code ')'}. When\n// the parser returns from the nested call to {@code expr}, it will have\n// call chain:</p>\n//\n// <pre>\n// stat &rarr; expr &rarr; atom\n// </pre>\n//\n// and it will be trying to match the {@code ')'} at this point in the\n// derivation:\n//\n// <pre>\n// =&gt; ID '=' '(' INT ')' ('+' atom)* ';'\n// ^\n// </pre>\n//\n// The attempt to match {@code ')'} will fail when it sees {@code ';'} and\n// call {@link //recoverInline}. To recover, it sees that {@code LA(1)==';'}\n// is in the set of tokens that can follow the {@code ')'} token reference\n// in rule {@code atom}. It can assume that you forgot the {@code ')'}.\n//\nDefaultErrorStrategy.prototype.recoverInline = function(recognizer) {\n // SINGLE TOKEN DELETION\n var matchedSymbol = this.singleTokenDeletion(recognizer);\n if (matchedSymbol !== null) {\n // we have deleted the extra token.\n // now, move past ttype token as if all were ok\n recognizer.consume();\n return matchedSymbol;\n }\n // SINGLE TOKEN INSERTION\n if (this.singleTokenInsertion(recognizer)) {\n return this.getMissingSymbol(recognizer);\n }\n // even that didn't work; must throw the exception\n throw new InputMismatchException(recognizer);\n};\n\n//\n// This method implements the single-token insertion inline error recovery\n// strategy. It is called by {@link //recoverInline} if the single-token\n// deletion strategy fails to recover from the mismatched input. If this\n// method returns {@code true}, {@code recognizer} will be in error recovery\n// mode.\n//\n// <p>This method determines whether or not single-token insertion is viable by\n// checking if the {@code LA(1)} input symbol could be successfully matched\n// if it were instead the {@code LA(2)} symbol. If this method returns\n// {@code true}, the caller is responsible for creating and inserting a\n// token with the correct type to produce this behavior.</p>\n//\n// @param recognizer the parser instance\n// @return {@code true} if single-token insertion is a viable recovery\n// strategy for the current mismatched input, otherwise {@code false}\n//\nDefaultErrorStrategy.prototype.singleTokenInsertion = function(recognizer) {\n var currentSymbolType = recognizer.getTokenStream().LA(1);\n // if current token is consistent with what could come after current\n // ATN state, then we know we're missing a token; error recovery\n // is free to conjure up and insert the missing token\n var atn = recognizer._interp.atn;\n var currentState = atn.states[recognizer.state];\n var next = currentState.transitions[0].target;\n var expectingAtLL2 = atn.nextTokens(next, recognizer._ctx);\n if (expectingAtLL2.contains(currentSymbolType) ){\n this.reportMissingToken(recognizer);\n return true;\n } else {\n return false;\n }\n};\n\n// This method implements the single-token deletion inline error recovery\n// strategy. It is called by {@link //recoverInline} to attempt to recover\n// from mismatched input. If this method returns null, the parser and error\n// handler state will not have changed. If this method returns non-null,\n// {@code recognizer} will <em>not</em> be in error recovery mode since the\n// returned token was a successful match.\n//\n// <p>If the single-token deletion is successful, this method calls\n// {@link //reportUnwantedToken} to report the error, followed by\n// {@link Parser//consume} to actually \"delete\" the extraneous token. Then,\n// before returning {@link //reportMatch} is called to signal a successful\n// match.</p>\n//\n// @param recognizer the parser instance\n// @return the successfully matched {@link Token} instance if single-token\n// deletion successfully recovers from the mismatched input, otherwise\n// {@code null}\n//\nDefaultErrorStrategy.prototype.singleTokenDeletion = function(recognizer) {\n var nextTokenType = recognizer.getTokenStream().LA(2);\n var expecting = this.getExpectedTokens(recognizer);\n if (expecting.contains(nextTokenType)) {\n this.reportUnwantedToken(recognizer);\n // print(\"recoverFromMismatchedToken deleting \" \\\n // + str(recognizer.getTokenStream().LT(1)) \\\n // + \" since \" + str(recognizer.getTokenStream().LT(2)) \\\n // + \" is what we want\", file=sys.stderr)\n recognizer.consume(); // simply delete extra token\n // we want to return the token we're actually matching\n var matchedSymbol = recognizer.getCurrentToken();\n this.reportMatch(recognizer); // we know current token is correct\n return matchedSymbol;\n } else {\n return null;\n }\n};\n\n// Conjure up a missing token during error recovery.\n//\n// The recognizer attempts to recover from single missing\n// symbols. But, actions might refer to that missing symbol.\n// For example, x=ID {f($x);}. The action clearly assumes\n// that there has been an identifier matched previously and that\n// $x points at that token. If that token is missing, but\n// the next token in the stream is what we want we assume that\n// this token is missing and we keep going. Because we\n// have to return some token to replace the missing token,\n// we have to conjure one up. This method gives the user control\n// over the tokens returned for missing tokens. Mostly,\n// you will want to create something special for identifier\n// tokens. For literals such as '{' and ',', the default\n// action in the parser or tree parser works. It simply creates\n// a CommonToken of the appropriate type. The text will be the token.\n// If you change what tokens must be created by the lexer,\n// override this method to create the appropriate tokens.\n//\nDefaultErrorStrategy.prototype.getMissingSymbol = function(recognizer) {\n var currentSymbol = recognizer.getCurrentToken();\n var expecting = this.getExpectedTokens(recognizer);\n var expectedTokenType = expecting.first(); // get any element\n var tokenText;\n if (expectedTokenType===Token.EOF) {\n tokenText = \"<missing EOF>\";\n } else {\n tokenText = \"<missing \" + recognizer.literalNames[expectedTokenType] + \">\";\n }\n var current = currentSymbol;\n var lookback = recognizer.getTokenStream().LT(-1);\n if (current.type===Token.EOF && lookback !== null) {\n current = lookback;\n }\n return recognizer.getTokenFactory().create(current.source,\n expectedTokenType, tokenText, Token.DEFAULT_CHANNEL,\n -1, -1, current.line, current.column);\n};\n\nDefaultErrorStrategy.prototype.getExpectedTokens = function(recognizer) {\n return recognizer.getExpectedTokens();\n};\n\n// How should a token be displayed in an error message? The default\n// is to display just the text, but during development you might\n// want to have a lot of information spit out. Override in that case\n// to use t.toString() (which, for CommonToken, dumps everything about\n// the token). This is better than forcing you to override a method in\n// your token objects because you don't have to go modify your lexer\n// so that it creates a new Java type.\n//\nDefaultErrorStrategy.prototype.getTokenErrorDisplay = function(t) {\n if (t === null) {\n return \"<no token>\";\n }\n var s = t.text;\n if (s === null) {\n if (t.type===Token.EOF) {\n s = \"<EOF>\";\n } else {\n s = \"<\" + t.type + \">\";\n }\n }\n return this.escapeWSAndQuote(s);\n};\n\nDefaultErrorStrategy.prototype.escapeWSAndQuote = function(s) {\n s = s.replace(/\\n/g,\"\\\\n\");\n s = s.replace(/\\r/g,\"\\\\r\");\n s = s.replace(/\\t/g,\"\\\\t\");\n return \"'\" + s + \"'\";\n};\n\n// Compute the error recovery set for the current rule. During\n// rule invocation, the parser pushes the set of tokens that can\n// follow that rule reference on the stack; this amounts to\n// computing FIRST of what follows the rule reference in the\n// enclosing rule. See LinearApproximator.FIRST().\n// This local follow set only includes tokens\n// from within the rule; i.e., the FIRST computation done by\n// ANTLR stops at the end of a rule.\n//\n// EXAMPLE\n//\n// When you find a \"no viable alt exception\", the input is not\n// consistent with any of the alternatives for rule r. The best\n// thing to do is to consume tokens until you see something that\n// can legally follow a call to r//or* any rule that called r.\n// You don't want the exact set of viable next tokens because the\n// input might just be missing a token--you might consume the\n// rest of the input looking for one of the missing tokens.\n//\n// Consider grammar:\n//\n// a : '[' b ']'\n// | '(' b ')'\n// ;\n// b : c '^' INT ;\n// c : ID\n// | INT\n// ;\n//\n// At each rule invocation, the set of tokens that could follow\n// that rule is pushed on a stack. Here are the various\n// context-sensitive follow sets:\n//\n// FOLLOW(b1_in_a) = FIRST(']') = ']'\n// FOLLOW(b2_in_a) = FIRST(')') = ')'\n// FOLLOW(c_in_b) = FIRST('^') = '^'\n//\n// Upon erroneous input \"[]\", the call chain is\n//\n// a -> b -> c\n//\n// and, hence, the follow context stack is:\n//\n// depth follow set start of rule execution\n// 0 <EOF> a (from main())\n// 1 ']' b\n// 2 '^' c\n//\n// Notice that ')' is not included, because b would have to have\n// been called from a different context in rule a for ')' to be\n// included.\n//\n// For error recovery, we cannot consider FOLLOW(c)\n// (context-sensitive or otherwise). We need the combined set of\n// all context-sensitive FOLLOW sets--the set of all tokens that\n// could follow any reference in the call chain. We need to\n// resync to one of those tokens. Note that FOLLOW(c)='^' and if\n// we resync'd to that token, we'd consume until EOF. We need to\n// sync to context-sensitive FOLLOWs for a, b, and c: {']','^'}.\n// In this case, for input \"[]\", LA(1) is ']' and in the set, so we would\n// not consume anything. After printing an error, rule c would\n// return normally. Rule b would not find the required '^' though.\n// At this point, it gets a mismatched token error and throws an\n// exception (since LA(1) is not in the viable following token\n// set). The rule exception handler tries to recover, but finds\n// the same recovery set and doesn't consume anything. Rule b\n// exits normally returning to rule a. Now it finds the ']' (and\n// with the successful match exits errorRecovery mode).\n//\n// So, you can see that the parser walks up the call chain looking\n// for the token that was a member of the recovery set.\n//\n// Errors are not generated in errorRecovery mode.\n//\n// ANTLR's error recovery mechanism is based upon original ideas:\n//\n// \"Algorithms + Data Structures = Programs\" by Niklaus Wirth\n//\n// and\n//\n// \"A note on error recovery in recursive descent parsers\":\n// http://portal.acm.org/citation.cfm?id=947902.947905\n//\n// Later, Josef Grosch had some good ideas:\n//\n// \"Efficient and Comfortable Error Recovery in Recursive Descent\n// Parsers\":\n// ftp://www.cocolab.com/products/cocktail/doca4.ps/ell.ps.zip\n//\n// Like Grosch I implement context-sensitive FOLLOW sets that are combined\n// at run-time upon error to avoid overhead during parsing.\n//\nDefaultErrorStrategy.prototype.getErrorRecoverySet = function(recognizer) {\n var atn = recognizer._interp.atn;\n var ctx = recognizer._ctx;\n var recoverSet = new IntervalSet();\n while (ctx !== null && ctx.invokingState>=0) {\n // compute what follows who invoked us\n var invokingState = atn.states[ctx.invokingState];\n var rt = invokingState.transitions[0];\n var follow = atn.nextTokens(rt.followState);\n recoverSet.addSet(follow);\n ctx = ctx.parentCtx;\n }\n recoverSet.removeOne(Token.EPSILON);\n return recoverSet;\n};\n\n// Consume tokens until one matches the given token set.//\nDefaultErrorStrategy.prototype.consumeUntil = function(recognizer, set) {\n var ttype = recognizer.getTokenStream().LA(1);\n while( ttype !== Token.EOF && !set.contains(ttype)) {\n recognizer.consume();\n ttype = recognizer.getTokenStream().LA(1);\n }\n};\n\n//\n// This implementation of {@link ANTLRErrorStrategy} responds to syntax errors\n// by immediately canceling the parse operation with a\n// {@link ParseCancellationException}. The implementation ensures that the\n// {@link ParserRuleContext//exception} field is set for all parse tree nodes\n// that were not completed prior to encountering the error.\n//\n// <p>\n// This error strategy is useful in the following scenarios.</p>\n//\n// <ul>\n// <li><strong>Two-stage parsing:</strong> This error strategy allows the first\n// stage of two-stage parsing to immediately terminate if an error is\n// encountered, and immediately fall back to the second stage. In addition to\n// avoiding wasted work by attempting to recover from errors here, the empty\n// implementation of {@link BailErrorStrategy//sync} improves the performance of\n// the first stage.</li>\n// <li><strong>Silent validation:</strong> When syntax errors are not being\n// reported or logged, and the parse result is simply ignored if errors occur,\n// the {@link BailErrorStrategy} avoids wasting work on recovering from errors\n// when the result will be ignored either way.</li>\n// </ul>\n//\n// <p>\n// {@code myparser.setErrorHandler(new BailErrorStrategy());}</p>\n//\n// @see Parser//setErrorHandler(ANTLRErrorStrategy)\n//\nfunction BailErrorStrategy() {\n\tDefaultErrorStrategy.call(this);\n\treturn this;\n}\n\nBailErrorStrategy.prototype = Object.create(DefaultErrorStrategy.prototype);\nBailErrorStrategy.prototype.constructor = BailErrorStrategy;\n\n// Instead of recovering from exception {@code e}, re-throw it wrapped\n// in a {@link ParseCancellationException} so it is not caught by the\n// rule function catches. Use {@link Exception//getCause()} to get the\n// original {@link RecognitionException}.\n//\nBailErrorStrategy.prototype.recover = function(recognizer, e) {\n var context = recognizer._ctx;\n while (context !== null) {\n context.exception = e;\n context = context.parentCtx;\n }\n throw new ParseCancellationException(e);\n};\n\n// Make sure we don't attempt to recover inline; if the parser\n// successfully recovers, it won't throw an exception.\n//\nBailErrorStrategy.prototype.recoverInline = function(recognizer) {\n this.recover(recognizer, new InputMismatchException(recognizer));\n};\n\n// Make sure we don't attempt to recover from problems in subrules.//\nBailErrorStrategy.prototype.sync = function(recognizer) {\n // pass\n};\n\nexports.BailErrorStrategy = BailErrorStrategy;\nexports.DefaultErrorStrategy = DefaultErrorStrategy;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// The root of the ANTLR exception hierarchy. In general, ANTLR tracks just\n// 3 kinds of errors: prediction errors, failed predicate errors, and\n// mismatched input errors. In each case, the parser knows where it is\n// in the input, where it is in the ATN, the rule invocation stack,\n// and what kind of problem occurred.\n\nvar PredicateTransition = require('./../atn/Transition').PredicateTransition;\n\nfunction RecognitionException(params) {\n\tError.call(this);\n\tif (!!Error.captureStackTrace) {\n Error.captureStackTrace(this, RecognitionException);\n\t} else {\n\t\tvar stack = new Error().stack;\n\t}\n\tthis.message = params.message;\n this.recognizer = params.recognizer;\n this.input = params.input;\n this.ctx = params.ctx;\n // The current {@link Token} when an error occurred. Since not all streams\n // support accessing symbols by index, we have to track the {@link Token}\n // instance itself.\n this.offendingToken = null;\n // Get the ATN state number the parser was in at the time the error\n // occurred. For {@link NoViableAltException} and\n // {@link LexerNoViableAltException} exceptions, this is the\n // {@link DecisionState} number. For others, it is the state whose outgoing\n // edge we couldn't match.\n this.offendingState = -1;\n if (this.recognizer!==null) {\n this.offendingState = this.recognizer.state;\n }\n return this;\n}\n\nRecognitionException.prototype = Object.create(Error.prototype);\nRecognitionException.prototype.constructor = RecognitionException;\n\n// <p>If the state number is not known, this method returns -1.</p>\n\n//\n// Gets the set of input symbols which could potentially follow the\n// previously matched symbol at the time this exception was thrown.\n//\n// <p>If the set of expected tokens is not known and could not be computed,\n// this method returns {@code null}.</p>\n//\n// @return The set of token types that could potentially follow the current\n// state in the ATN, or {@code null} if the information is not available.\n// /\nRecognitionException.prototype.getExpectedTokens = function() {\n if (this.recognizer!==null) {\n return this.recognizer.atn.getExpectedTokens(this.offendingState, this.ctx);\n } else {\n return null;\n }\n};\n\nRecognitionException.prototype.toString = function() {\n return this.message;\n};\n\nfunction LexerNoViableAltException(lexer, input, startIndex, deadEndConfigs) {\n\tRecognitionException.call(this, {message:\"\", recognizer:lexer, input:input, ctx:null});\n this.startIndex = startIndex;\n this.deadEndConfigs = deadEndConfigs;\n return this;\n}\n\nLexerNoViableAltException.prototype = Object.create(RecognitionException.prototype);\nLexerNoViableAltException.prototype.constructor = LexerNoViableAltException;\n\nLexerNoViableAltException.prototype.toString = function() {\n var symbol = \"\";\n if (this.startIndex >= 0 && this.startIndex < this.input.size) {\n symbol = this.input.getText((this.startIndex,this.startIndex));\n }\n return \"LexerNoViableAltException\" + symbol;\n};\n\n// Indicates that the parser could not decide which of two or more paths\n// to take based upon the remaining input. It tracks the starting token\n// of the offending input and also knows where the parser was\n// in the various paths when the error. Reported by reportNoViableAlternative()\n//\nfunction NoViableAltException(recognizer, input, startToken, offendingToken, deadEndConfigs, ctx) {\n\tctx = ctx || recognizer._ctx;\n\toffendingToken = offendingToken || recognizer.getCurrentToken();\n\tstartToken = startToken || recognizer.getCurrentToken();\n\tinput = input || recognizer.getInputStream();\n\tRecognitionException.call(this, {message:\"\", recognizer:recognizer, input:input, ctx:ctx});\n // Which configurations did we try at input.index() that couldn't match\n\t// input.LT(1)?//\n this.deadEndConfigs = deadEndConfigs;\n // The token object at the start index; the input stream might\n // not be buffering tokens so get a reference to it. (At the\n // time the error occurred, of course the stream needs to keep a\n // buffer all of the tokens but later we might not have access to those.)\n this.startToken = startToken;\n this.offendingToken = offendingToken;\n}\n\nNoViableAltException.prototype = Object.create(RecognitionException.prototype);\nNoViableAltException.prototype.constructor = NoViableAltException;\n\n// This signifies any kind of mismatched input exceptions such as\n// when the current input does not match the expected token.\n//\nfunction InputMismatchException(recognizer) {\n\tRecognitionException.call(this, {message:\"\", recognizer:recognizer, input:recognizer.getInputStream(), ctx:recognizer._ctx});\n this.offendingToken = recognizer.getCurrentToken();\n}\n\nInputMismatchException.prototype = Object.create(RecognitionException.prototype);\nInputMismatchException.prototype.constructor = InputMismatchException;\n\n// A semantic predicate failed during validation. Validation of predicates\n// occurs when normally parsing the alternative just like matching a token.\n// Disambiguating predicate evaluation occurs when we test a predicate during\n// prediction.\n\nfunction FailedPredicateException(recognizer, predicate, message) {\n\tRecognitionException.call(this, {message:this.formatMessage(predicate,message || null), recognizer:recognizer,\n input:recognizer.getInputStream(), ctx:recognizer._ctx});\n var s = recognizer._interp.atn.states[recognizer.state];\n var trans = s.transitions[0];\n if (trans instanceof PredicateTransition) {\n this.ruleIndex = trans.ruleIndex;\n this.predicateIndex = trans.predIndex;\n } else {\n this.ruleIndex = 0;\n this.predicateIndex = 0;\n }\n this.predicate = predicate;\n this.offendingToken = recognizer.getCurrentToken();\n return this;\n}\n\nFailedPredicateException.prototype = Object.create(RecognitionException.prototype);\nFailedPredicateException.prototype.constructor = FailedPredicateException;\n\nFailedPredicateException.prototype.formatMessage = function(predicate, message) {\n if (message !==null) {\n return message;\n } else {\n return \"failed predicate: {\" + predicate + \"}?\";\n }\n};\n\nfunction ParseCancellationException() {\n\tError.call(this);\n\tError.captureStackTrace(this, ParseCancellationException);\n\treturn this;\n}\n\nParseCancellationException.prototype = Object.create(Error.prototype);\nParseCancellationException.prototype.constructor = ParseCancellationException;\n\nexports.RecognitionException = RecognitionException;\nexports.NoViableAltException = NoViableAltException;\nexports.LexerNoViableAltException = LexerNoViableAltException;\nexports.InputMismatchException = InputMismatchException;\nexports.FailedPredicateException = FailedPredicateException;\nexports.ParseCancellationException = ParseCancellationException;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexports.RecognitionException = require('./Errors').RecognitionException;\nexports.NoViableAltException = require('./Errors').NoViableAltException;\nexports.LexerNoViableAltException = require('./Errors').LexerNoViableAltException;\nexports.InputMismatchException = require('./Errors').InputMismatchException;\nexports.FailedPredicateException = require('./Errors').FailedPredicateException;\nexports.DiagnosticErrorListener = require('./DiagnosticErrorListener').DiagnosticErrorListener;\nexports.BailErrorStrategy = require('./ErrorStrategy').BailErrorStrategy;\nexports.ErrorListener = require('./ErrorListener').ErrorListener;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexports.atn = require('./atn/index');\nexports.codepointat = require('./polyfills/codepointat');\nexports.dfa = require('./dfa/index');\nexports.fromcodepoint = require('./polyfills/fromcodepoint');\nexports.tree = require('./tree/index');\nexports.error = require('./error/index');\nexports.Token = require('./Token').Token;\nexports.CharStreams = require('./CharStreams').CharStreams;\nexports.CommonToken = require('./Token').CommonToken;\nexports.InputStream = require('./InputStream').InputStream;\nexports.FileStream = require('./FileStream').FileStream;\nexports.CommonTokenStream = require('./CommonTokenStream').CommonTokenStream;\nexports.Lexer = require('./Lexer').Lexer;\nexports.Parser = require('./Parser').Parser;\nvar pc = require('./PredictionContext');\nexports.PredictionContextCache = pc.PredictionContextCache;\nexports.ParserRuleContext = require('./ParserRuleContext').ParserRuleContext;\nexports.Interval = require('./IntervalSet').Interval;\nexports.Utils = require('./Utils');\n","/*! https://mths.be/codepointat v0.2.0 by @mathias */\nif (!String.prototype.codePointAt) {\n\t(function() {\n\t\t'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar codePointAt = function(position) {\n\t\t\tif (this == null) {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tvar string = String(this);\n\t\t\tvar size = string.length;\n\t\t\t// `ToInteger`\n\t\t\tvar index = position ? Number(position) : 0;\n\t\t\tif (index != index) { // better `isNaN`\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t// Account for out-of-bounds indices:\n\t\t\tif (index < 0 || index >= size) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\t// Get the first code unit\n\t\t\tvar first = string.charCodeAt(index);\n\t\t\tvar second;\n\t\t\tif ( // check if it’s the start of a surrogate pair\n\t\t\t\tfirst >= 0xD800 && first <= 0xDBFF && // high surrogate\n\t\t\t\tsize > index + 1 // there is a next code unit\n\t\t\t) {\n\t\t\t\tsecond = string.charCodeAt(index + 1);\n\t\t\t\tif (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\treturn (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn first;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String.prototype, 'codePointAt', {\n\t\t\t\t'value': codePointAt,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.prototype.codePointAt = codePointAt;\n\t\t}\n\t}());\n}\n","/*! https://mths.be/fromcodepoint v0.2.1 by @mathias */\nif (!String.fromCodePoint) {\n\t(function() {\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar stringFromCharCode = String.fromCharCode;\n\t\tvar floor = Math.floor;\n\t\tvar fromCodePoint = function(_) {\n\t\t\tvar MAX_SIZE = 0x4000;\n\t\t\tvar codeUnits = [];\n\t\t\tvar highSurrogate;\n\t\t\tvar lowSurrogate;\n\t\t\tvar index = -1;\n\t\t\tvar length = arguments.length;\n\t\t\tif (!length) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tvar result = '';\n\t\t\twhile (++index < length) {\n\t\t\t\tvar codePoint = Number(arguments[index]);\n\t\t\t\tif (\n\t\t\t\t\t!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n\t\t\t\t\tcodePoint < 0 || // not a valid Unicode code point\n\t\t\t\t\tcodePoint > 0x10FFFF || // not a valid Unicode code point\n\t\t\t\t\tfloor(codePoint) != codePoint // not an integer\n\t\t\t\t) {\n\t\t\t\t\tthrow RangeError('Invalid code point: ' + codePoint);\n\t\t\t\t}\n\t\t\t\tif (codePoint <= 0xFFFF) { // BMP code point\n\t\t\t\t\tcodeUnits.push(codePoint);\n\t\t\t\t} else { // Astral code point; split in surrogate halves\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\tcodePoint -= 0x10000;\n\t\t\t\t\thighSurrogate = (codePoint >> 10) + 0xD800;\n\t\t\t\t\tlowSurrogate = (codePoint % 0x400) + 0xDC00;\n\t\t\t\t\tcodeUnits.push(highSurrogate, lowSurrogate);\n\t\t\t\t}\n\t\t\t\tif (index + 1 == length || codeUnits.length > MAX_SIZE) {\n\t\t\t\t\tresult += stringFromCharCode.apply(null, codeUnits);\n\t\t\t\t\tcodeUnits.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String, 'fromCodePoint', {\n\t\t\t\t'value': fromCodePoint,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.fromCodePoint = fromCodePoint;\n\t\t}\n\t}());\n}\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// The basic notion of a tree has a parent, a payload, and a list of children.\n// It is the most abstract interface for all the trees used by ANTLR.\n///\n\nvar Token = require('./../Token').Token;\nvar Interval = require('./../IntervalSet').Interval;\nvar INVALID_INTERVAL = new Interval(-1, -2);\nvar Utils = require('../Utils.js');\n\n\nfunction Tree() {\n\treturn this;\n}\n\nfunction SyntaxTree() {\n\tTree.call(this);\n\treturn this;\n}\n\nSyntaxTree.prototype = Object.create(Tree.prototype);\nSyntaxTree.prototype.constructor = SyntaxTree;\n\nfunction ParseTree() {\n\tSyntaxTree.call(this);\n\treturn this;\n}\n\nParseTree.prototype = Object.create(SyntaxTree.prototype);\nParseTree.prototype.constructor = ParseTree;\n\nfunction RuleNode() {\n\tParseTree.call(this);\n\treturn this;\n}\n\nRuleNode.prototype = Object.create(ParseTree.prototype);\nRuleNode.prototype.constructor = RuleNode;\n\nfunction TerminalNode() {\n\tParseTree.call(this);\n\treturn this;\n}\n\nTerminalNode.prototype = Object.create(ParseTree.prototype);\nTerminalNode.prototype.constructor = TerminalNode;\n\nfunction ErrorNode() {\n\tTerminalNode.call(this);\n\treturn this;\n}\n\nErrorNode.prototype = Object.create(TerminalNode.prototype);\nErrorNode.prototype.constructor = ErrorNode;\n\nfunction ParseTreeVisitor() {\n\treturn this;\n}\n\nParseTreeVisitor.prototype.visit = function(ctx) {\n \tif (Array.isArray(ctx)) {\n\t\treturn ctx.map(function(child) {\n return child.accept(this);\n }, this);\n\t} else {\n\t\treturn ctx.accept(this);\n\t}\n};\n\nParseTreeVisitor.prototype.visitChildren = function(ctx) {\n\tif (ctx.children) {\n\t\treturn this.visit(ctx.children);\n\t} else {\n\t\treturn null;\n\t}\n}\n\nParseTreeVisitor.prototype.visitTerminal = function(node) {\n};\n\nParseTreeVisitor.prototype.visitErrorNode = function(node) {\n};\n\n\nfunction ParseTreeListener() {\n\treturn this;\n}\n\nParseTreeListener.prototype.visitTerminal = function(node) {\n};\n\nParseTreeListener.prototype.visitErrorNode = function(node) {\n};\n\nParseTreeListener.prototype.enterEveryRule = function(node) {\n};\n\nParseTreeListener.prototype.exitEveryRule = function(node) {\n};\n\nfunction TerminalNodeImpl(symbol) {\n\tTerminalNode.call(this);\n\tthis.parentCtx = null;\n\tthis.symbol = symbol;\n\treturn this;\n}\n\nTerminalNodeImpl.prototype = Object.create(TerminalNode.prototype);\nTerminalNodeImpl.prototype.constructor = TerminalNodeImpl;\n\nTerminalNodeImpl.prototype.getChild = function(i) {\n\treturn null;\n};\n\nTerminalNodeImpl.prototype.getSymbol = function() {\n\treturn this.symbol;\n};\n\nTerminalNodeImpl.prototype.getParent = function() {\n\treturn this.parentCtx;\n};\n\nTerminalNodeImpl.prototype.getPayload = function() {\n\treturn this.symbol;\n};\n\nTerminalNodeImpl.prototype.getSourceInterval = function() {\n\tif (this.symbol === null) {\n\t\treturn INVALID_INTERVAL;\n\t}\n\tvar tokenIndex = this.symbol.tokenIndex;\n\treturn new Interval(tokenIndex, tokenIndex);\n};\n\nTerminalNodeImpl.prototype.getChildCount = function() {\n\treturn 0;\n};\n\nTerminalNodeImpl.prototype.accept = function(visitor) {\n\treturn visitor.visitTerminal(this);\n};\n\nTerminalNodeImpl.prototype.getText = function() {\n\treturn this.symbol.text;\n};\n\nTerminalNodeImpl.prototype.toString = function() {\n\tif (this.symbol.type === Token.EOF) {\n\t\treturn \"<EOF>\";\n\t} else {\n\t\treturn this.symbol.text;\n\t}\n};\n\n// Represents a token that was consumed during resynchronization\n// rather than during a valid match operation. For example,\n// we will create this kind of a node during single token insertion\n// and deletion as well as during \"consume until error recovery set\"\n// upon no viable alternative exceptions.\n\nfunction ErrorNodeImpl(token) {\n\tTerminalNodeImpl.call(this, token);\n\treturn this;\n}\n\nErrorNodeImpl.prototype = Object.create(TerminalNodeImpl.prototype);\nErrorNodeImpl.prototype.constructor = ErrorNodeImpl;\n\nErrorNodeImpl.prototype.isErrorNode = function() {\n\treturn true;\n};\n\nErrorNodeImpl.prototype.accept = function(visitor) {\n\treturn visitor.visitErrorNode(this);\n};\n\nfunction ParseTreeWalker() {\n\treturn this;\n}\n\nParseTreeWalker.prototype.walk = function(listener, t) {\n\tvar errorNode = t instanceof ErrorNode ||\n\t\t\t(t.isErrorNode !== undefined && t.isErrorNode());\n\tif (errorNode) {\n\t\tlistener.visitErrorNode(t);\n\t} else if (t instanceof TerminalNode) {\n\t\tlistener.visitTerminal(t);\n\t} else {\n\t\tthis.enterRule(listener, t);\n\t\tfor (var i = 0; i < t.getChildCount(); i++) {\n\t\t\tvar child = t.getChild(i);\n\t\t\tthis.walk(listener, child);\n\t\t}\n\t\tthis.exitRule(listener, t);\n\t}\n};\n//\n// The discovery of a rule node, involves sending two events: the generic\n// {@link ParseTreeListener//enterEveryRule} and a\n// {@link RuleContext}-specific event. First we trigger the generic and then\n// the rule specific. We to them in reverse order upon finishing the node.\n//\nParseTreeWalker.prototype.enterRule = function(listener, r) {\n\tvar ctx = r.getRuleContext();\n\tlistener.enterEveryRule(ctx);\n\tctx.enterRule(listener);\n};\n\nParseTreeWalker.prototype.exitRule = function(listener, r) {\n\tvar ctx = r.getRuleContext();\n\tctx.exitRule(listener);\n\tlistener.exitEveryRule(ctx);\n};\n\nParseTreeWalker.DEFAULT = new ParseTreeWalker();\n\nexports.RuleNode = RuleNode;\nexports.ErrorNode = ErrorNode;\nexports.TerminalNode = TerminalNode;\nexports.ErrorNodeImpl = ErrorNodeImpl;\nexports.TerminalNodeImpl = TerminalNodeImpl;\nexports.ParseTreeListener = ParseTreeListener;\nexports.ParseTreeVisitor = ParseTreeVisitor;\nexports.ParseTreeWalker = ParseTreeWalker;\nexports.INVALID_INTERVAL = INVALID_INTERVAL;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Utils = require('./../Utils');\nvar Token = require('./../Token').Token;\nvar RuleNode = require('./Tree').RuleNode;\nvar ErrorNode = require('./Tree').ErrorNode;\nvar TerminalNode = require('./Tree').TerminalNode;\nvar ParserRuleContext = require('./../ParserRuleContext').ParserRuleContext;\nvar RuleContext = require('./../RuleContext').RuleContext;\nvar INVALID_ALT_NUMBER = require('./../atn/ATN').INVALID_ALT_NUMBER;\n\n\n/** A set of utility routines useful for all kinds of ANTLR trees. */\nfunction Trees() {\n}\n\n// Print out a whole tree in LISP form. {@link //getNodeText} is used on the\n// node payloads to get the text for the nodes. Detect\n// parse trees and extract data appropriately.\nTrees.toStringTree = function(tree, ruleNames, recog) {\n\truleNames = ruleNames || null;\n\trecog = recog || null;\n if(recog!==null) {\n ruleNames = recog.ruleNames;\n }\n var s = Trees.getNodeText(tree, ruleNames);\n s = Utils.escapeWhitespace(s, false);\n var c = tree.getChildCount();\n if(c===0) {\n return s;\n }\n var res = \"(\" + s + ' ';\n if(c>0) {\n s = Trees.toStringTree(tree.getChild(0), ruleNames);\n res = res.concat(s);\n }\n for(var i=1;i<c;i++) {\n s = Trees.toStringTree(tree.getChild(i), ruleNames);\n res = res.concat(' ' + s);\n }\n res = res.concat(\")\");\n return res;\n};\n\nTrees.getNodeText = function(t, ruleNames, recog) {\n\truleNames = ruleNames || null;\n\trecog = recog || null;\n if(recog!==null) {\n ruleNames = recog.ruleNames;\n }\n if(ruleNames!==null) {\n if (t instanceof RuleContext) {\n var altNumber = t.getAltNumber();\n if ( altNumber!=INVALID_ALT_NUMBER ) {\n return ruleNames[t.ruleIndex]+\":\"+altNumber;\n }\n return ruleNames[t.ruleIndex];\n } else if ( t instanceof ErrorNode) {\n return t.toString();\n } else if(t instanceof TerminalNode) {\n if(t.symbol!==null) {\n return t.symbol.text;\n }\n }\n }\n // no recog for rule names\n var payload = t.getPayload();\n if (payload instanceof Token ) {\n return payload.text;\n }\n return t.getPayload().toString();\n};\n\n\n// Return ordered list of all children of this node\nTrees.getChildren = function(t) {\n\tvar list = [];\n\tfor(var i=0;i<t.getChildCount();i++) {\n\t\tlist.push(t.getChild(i));\n\t}\n\treturn list;\n};\n\n// Return a list of all ancestors of this node. The first node of\n// list is the root and the last is the parent of this node.\n//\nTrees.getAncestors = function(t) {\n var ancestors = [];\n t = t.getParent();\n while(t!==null) {\n ancestors = [t].concat(ancestors);\n t = t.getParent();\n }\n return ancestors;\n};\n\nTrees.findAllTokenNodes = function(t, ttype) {\n return Trees.findAllNodes(t, ttype, true);\n};\n\nTrees.findAllRuleNodes = function(t, ruleIndex) {\n\treturn Trees.findAllNodes(t, ruleIndex, false);\n};\n\nTrees.findAllNodes = function(t, index, findTokens) {\n\tvar nodes = [];\n\tTrees._findAllNodes(t, index, findTokens, nodes);\n\treturn nodes;\n};\n\nTrees._findAllNodes = function(t, index, findTokens, nodes) {\n\t// check this node (the root) first\n\tif(findTokens && (t instanceof TerminalNode)) {\n\t\tif(t.symbol.type===index) {\n\t\t\tnodes.push(t);\n\t\t}\n\t} else if(!findTokens && (t instanceof ParserRuleContext)) {\n\t\tif(t.ruleIndex===index) {\n\t\t\tnodes.push(t);\n\t\t}\n\t}\n\t// check children\n\tfor(var i=0;i<t.getChildCount();i++) {\n\t\tTrees._findAllNodes(t.getChild(i), index, findTokens, nodes);\n\t}\n};\n\nTrees.descendants = function(t) {\n\tvar nodes = [t];\n for(var i=0;i<t.getChildCount();i++) {\n nodes = nodes.concat(Trees.descendants(t.getChild(i)));\n }\n return nodes;\n};\n\n\nexports.Trees = Trees;","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Tree = require('./Tree');\nexports.Trees = require('./Trees').Trees;\nexports.RuleNode = Tree.RuleNode;\nexports.ParseTreeListener = Tree.ParseTreeListener;\nexports.ParseTreeVisitor = Tree.ParseTreeVisitor;\nexports.ParseTreeWalker = Tree.ParseTreeWalker;\n",";(function (globalScope) {\r\n 'use strict';\r\n\r\n\r\n /*\r\n * decimal.js v10.1.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2019 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Licence\r\n */\r\n\r\n\r\n // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\n var EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n Decimal, inexact, noConflict, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { name: '[object Decimal]' };\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * ceil\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\n P.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\n P.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or ±Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\n P.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\n P.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * Math.pow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = Math.pow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\n P.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\n P.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\n P.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\n P.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = Math.pow(4, -k).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\n P.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(Math.pow(5, -k));\r\n\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\n P.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\n P.inverseCosine = P.acos = function () {\r\n var halfPi,\r\n x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.asin();\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return halfPi.minus(x);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\n P.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\n P.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\n P.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\n P.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\n P.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\n P.isFinite = function () {\r\n return !!this.d;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\n P.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\n P.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\n P.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\n P.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n P.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'lt');\r\n };\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n P.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'gt');\r\n };\r\n */\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is ±Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with different signs.\r\n // Return NaN if both are ±Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\n P.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is ±Infinity or x is ±0.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with the same sign.\r\n // Return NaN if both are ±Infinity with different signs.\r\n // Return y if x is finite and y is ±Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\n P.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\n P.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\n P.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '1e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\n P.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, ±Infinity or ±0...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity.\r\n ? NaN\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n // Return ±0 if either is ±0.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\n P.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\n P.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, ±0) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, ±Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either ±Infinity, NaN or ±0?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\n P.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\n P.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\n P.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n // Add aliases to match BigDecimal method names.\r\n // P.add = P.plus;\r\n P.subtract = P.minus;\r\n P.multiply = P.times;\r\n P.divide = P.div;\r\n P.remainder = P.mod;\r\n P.compareTo = P.cmp;\r\n P.negate = P.neg;\r\n */\r\n\r\n\r\n // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n /*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\n function digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n }\r\n\r\n\r\n function checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\n function checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n\r\n // Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n // Eg. convertBase('255', 10, 16) returns [15, 15].\r\n // Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\n function convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n\r\n /*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\n function cosine(Ctor, x) {\r\n var k, y,\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = Math.pow(4, -k).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Perform division in the specified base.\r\n */\r\n var divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // Calculate the base 10 exponent from the base 1e7 exponent.\r\n function getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n }\r\n\r\n\r\n function getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n }\r\n\r\n\r\n function getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n }\r\n\r\n\r\n function getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n }\r\n\r\n\r\n function getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\n function intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n }\r\n\r\n\r\n function isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n }\r\n\r\n\r\n /*\r\n * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'.\r\n */\r\n function maxOrMin(Ctor, args, ltgt) {\r\n var y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n } else if (x[ltgt](y)) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(±0) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\n function naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\n function naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n }\r\n\r\n\r\n // ±Infinity, NaN.\r\n function nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\n function parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? Math.pow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\n function sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) return taylorSeries(Ctor, 2, x, x);\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n // Max k before Math.pow precision loss is 22\r\n x = x.times(Math.pow(5, -k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n // Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\n function taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n }\r\n\r\n\r\n // Return the absolute value of `x` reduced to less than or equal to half pi.\r\n function toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n }\r\n\r\n\r\n /*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\n function toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Does not strip trailing zeros.\r\n function truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n }\r\n\r\n\r\n // Decimal methods\r\n\r\n\r\n /*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function abs(x) {\r\n return new this(x).abs();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function acos(x) {\r\n return new this(x).acos();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function acosh(x) {\r\n return new this(x).acosh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function add(x, y) {\r\n return new this(x).plus(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function asin(x) {\r\n return new this(x).asin();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function asinh(x) {\r\n return new this(x).asinh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function atan(x) {\r\n return new this(x).atan();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function atanh(x) {\r\n return new this(x).atanh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|Decimal} The y-coordinate.\r\n * x {number|string|Decimal} The x-coordinate.\r\n *\r\n * atan2(±0, -0) = ±pi\r\n * atan2(±0, +0) = ±0\r\n * atan2(±0, -x) = ±pi for x > 0\r\n * atan2(±0, x) = ±0 for x > 0\r\n * atan2(-y, ±0) = -pi/2 for y > 0\r\n * atan2(y, ±0) = pi/2 for y > 0\r\n * atan2(±y, -Infinity) = ±pi for finite y > 0\r\n * atan2(±y, +Infinity) = ±0 for finite y > 0\r\n * atan2(±Infinity, x) = ±pi/2 for finite x\r\n * atan2(±Infinity, -Infinity) = ±3*pi/4\r\n * atan2(±Infinity, +Infinity) = ±pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\n function atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both ±Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is ±Infinity or y is ±0\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is ±Infinity or x is ±0\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function cbrt(x) {\r\n return new this(x).cbrt();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n }\r\n\r\n\r\n /*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\n function config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function cos(x) {\r\n return new this(x).cos();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function cosh(x) {\r\n return new this(x).cosh();\r\n }\r\n\r\n\r\n /*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\n function clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (v instanceof Decimal) {\r\n x.s = v.s;\r\n\r\n if (external) {\r\n if (!v.d || v.e > Decimal.maxE) {\r\n\r\n // Infinity.\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (v.e < Decimal.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d.slice();\r\n }\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d ? v.d.slice() : v.d;\r\n }\r\n\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n if (external) {\r\n if (e > Decimal.maxE) {\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (e < Decimal.minE) {\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n\r\n return;\r\n\r\n // Infinity, NaN.\r\n } else if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n\r\n } else if (t !== 'string') {\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n // Minus sign?\r\n if (v.charCodeAt(0) === 45) {\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function div(x, y) {\r\n return new this(x).div(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\n function exp(x) {\r\n return new this(x).exp();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n */\r\n function hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n }\r\n\r\n\r\n /*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\n function isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.name === '[object Decimal]' || false;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function ln(x) {\r\n return new this(x).ln();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|Decimal} The argument of the logarithm.\r\n * y {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n function log(x, y) {\r\n return new this(x).log(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function log2(x) {\r\n return new this(x).log(2);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function log10(x) {\r\n return new this(x).log(10);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\n function max() {\r\n return maxOrMin(this, arguments, 'lt');\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\n function min() {\r\n return maxOrMin(this, arguments, 'gt');\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function mod(x, y) {\r\n return new this(x).mod(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function mul(x, y) {\r\n return new this(x).mul(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The base.\r\n * y {number|string|Decimal} The exponent.\r\n *\r\n */\r\n function pow(x, y) {\r\n return new this(x).pow(y);\r\n }\r\n\r\n\r\n /*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\n function random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n }\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n */\r\n function sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function sin(x) {\r\n return new this(x).sin();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function sinh(x) {\r\n return new this(x).sinh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function sqrt(x) {\r\n return new this(x).sqrt();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function sub(x, y) {\r\n return new this(x).sub(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function tan(x) {\r\n return new this(x).tan();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function tanh(x) {\r\n return new this(x).tanh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(DEFAULTS);\r\n\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Create the internal constants from their string values.\r\n LN10 = new Decimal(LN10);\r\n PI = new Decimal(PI);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n if (typeof Symbol == 'function' && typeof Symbol.iterator == 'symbol') {\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\r\n P[Symbol.toStringTag] = 'Decimal';\r\n }\r\n\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self ? self : window;\r\n }\r\n\r\n noConflict = globalScope.Decimal;\r\n Decimal.noConflict = function () {\r\n globalScope.Decimal = noConflict;\r\n return Decimal;\r\n };\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n","/*!\n * jQuery JavaScript Library v3.3.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2018-01-20T17:24Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, doc, node ) {\n\t\tdoc = doc || document;\n\n\t\tvar i,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\t\t\t\tif ( node[ i ] ) {\n\t\t\t\t\tscript[ i ] = node[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.3.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n if ( nodeName( elem, \"iframe\" ) ) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if ( nodeName( elem, \"template\" ) ) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc, node );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = div.offsetWidth === 36 || \"absolute\";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a property mapped along what jQuery.cssProps suggests or to\n// a vendor prefixed property.\nfunction finalPropName( name ) {\n\tvar ret = jQuery.cssProps[ name ];\n\tif ( !ret ) {\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\n\t}\n\treturn ret;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\t\t) );\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\t\tval = curCSS( elem, dimension, styles ),\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox;\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\t// Check for style in case a browser which returns unreliable values\n\t// for getComputedStyle silently falls back to the reliable elem.style\n\tvalueIsBorderBox = valueIsBorderBox &&\n\t\t( support.boxSizingReliable() || val === elem.style[ dimension ] );\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\tif ( val === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) {\n\n\t\tval = elem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];\n\n\t\t// offsetWidth/offsetHeight provide border-box values\n\t\tvalueIsBorderBox = true;\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\t\t\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra && boxModelAdjustment(\n\t\t\t\t\telem,\n\t\t\t\t\tdimension,\n\t\t\t\t\textra,\n\t\t\t\t\tisBorderBox,\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && support.scrollboxSize() === styles.position ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t\"load error\",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","var LanguageService = /** @class */ (function () {\n function LanguageService(lsKey, defaultLang) {\n if (defaultLang === void 0) { defaultLang = 'pt'; }\n this.lsKey = lsKey;\n this.defaultLang = defaultLang;\n this.listeners = [];\n this.document = document;\n this.setupListener();\n }\n LanguageService.prototype.setupListener = function () {\n var _this = this;\n if (this.document !== null) {\n this.document.addEventListener(\"storage\", (function (event) {\n var e = event;\n if (e.key === _this.lsKey) {\n _this.listeners.forEach(function (l) { return l(); });\n }\n }));\n }\n };\n LanguageService.prototype.getLang = function () {\n var lang = localStorage.getItem(this.lsKey);\n if (lang === null || lang === undefined) {\n console.warn(\"Internal Error: User language information has not been set. Returning default...\");\n return this.getDefaultLang();\n }\n return lang;\n };\n LanguageService.prototype.getDefaultLang = function () {\n return this.defaultLang;\n };\n LanguageService.prototype.registerLanguageChangeListener = function (listener) {\n this.listeners.push(listener);\n };\n return LanguageService;\n}());\nexport { LanguageService };\n","var LanguageServiceNoLS = /** @class */ (function () {\n function LanguageServiceNoLS(lang) {\n this.lang = lang;\n this.listeners = [];\n }\n LanguageServiceNoLS.prototype.setupListener = function () { };\n LanguageServiceNoLS.prototype.notifyChange = function () {\n this.listeners.forEach(function (l) { return l(); });\n };\n LanguageServiceNoLS.prototype.setLang = function (lang) {\n this.lang = lang;\n this.notifyChange();\n };\n LanguageServiceNoLS.prototype.getLang = function () {\n return this.lang;\n };\n LanguageServiceNoLS.prototype.getDefaultLang = function () {\n return this.lang;\n };\n LanguageServiceNoLS.prototype.registerLanguageChangeListener = function (listener) {\n this.listeners.push(listener);\n };\n return LanguageServiceNoLS;\n}());\nexport { LanguageServiceNoLS };\n","import { StringTypes } from './StringTypes';\nvar LocalizedStrings = /** @class */ (function () {\n function LocalizedStrings(service, i18nData, listenToChange) {\n if (listenToChange === void 0) { listenToChange = false; }\n var _this = this;\n this.service = service;\n this.i18nData = i18nData;\n this.listenToChange = listenToChange;\n this.document = document;\n if (this.listenToChange) {\n service.registerLanguageChangeListener(function () {\n _this.updateTagText();\n });\n }\n }\n LocalizedStrings.prototype.getString = function (id, type) {\n var i18nObj = this.i18nData[this.service.getLang()];\n if (!!!i18nObj) {\n console.warn(\"Internal Error. The language set at ivprog.lang is not valid: \" + this.service.getLang());\n i18nObj = this.i18nData[this.service.getDefaultLang()];\n }\n if (!!!i18nObj[type]) {\n return \"{MISSING_I18N_TYPE_IDENTIFIER}\";\n }\n else if (!!!i18nObj[type][id]) {\n return \"{MISSING_I18N_IDENTIFIER}\";\n }\n else {\n return i18nObj[type][id];\n }\n };\n LocalizedStrings.prototype.getOR = function () {\n return this.getUI('join_or');\n };\n LocalizedStrings.prototype.getError = function (id, context) {\n if (context === void 0) { context = []; }\n var text = this.getString(id, StringTypes.ERROR);\n return this.processString(text, context);\n };\n LocalizedStrings.prototype.getMessage = function (id, context) {\n if (context === void 0) { context = []; }\n var text = this.getString(id, StringTypes.MESSAGE);\n return this.processString(text, context);\n };\n LocalizedStrings.prototype.getUI = function (id, context) {\n if (context === void 0) { context = []; }\n var text = this.getString(id, StringTypes.UI);\n return this.processString(text, context);\n };\n LocalizedStrings.prototype.processString = function (text, context) {\n for (var i = 0; i < context.length; i++) {\n var v = context[i];\n text = text.replace('\\$' + i, v);\n }\n return text;\n };\n LocalizedStrings.prototype.updateTagText = function (func) {\n var _this = this;\n if (func === void 0) { func = null; }\n if (this.document !== null) {\n var list = this.document.querySelectorAll(\"data.i18n\");\n list.forEach(function (node) {\n if (func === null) {\n node.innerHTML = _this.processTagTex(node.getAttribute(\"value\"));\n }\n else {\n node.innerHTML = func(node.getAttribute(\"value\"));\n }\n });\n }\n };\n LocalizedStrings.prototype.processTagTex = function (text) {\n if (text === null) {\n return \"<Invalid i18n identifier>\";\n }\n var opts = text.split(':');\n var type = opts[0].toLowerCase();\n var id = opts[1];\n if (StringTypes.ERROR === type) {\n return this.getError(id);\n }\n else if (StringTypes.MESSAGE === type) {\n return this.getMessage(id);\n }\n else if (StringTypes.UI === type) {\n return this.getUI(id);\n }\n else {\n console.warn(\" A string has been passed to the i18n helper function that was not in the form type:id -> \" + text);\n return this.getString(id, type);\n }\n };\n return LocalizedStrings;\n}());\nexport { LocalizedStrings };\n","export var StringTypes;\n(function (StringTypes) {\n StringTypes[\"ERROR\"] = \"error\";\n StringTypes[\"MESSAGE\"] = \"message\";\n StringTypes[\"UI\"] = \"ui\";\n})(StringTypes || (StringTypes = {}));\n","import { LanguageService } from \"./LanguageService\";\nimport { LocalizedStrings } from \"./LocalizedStrings\";\nimport { StringTypes } from \"./StringTypes\";\nimport { LanguageServiceNoLS } from \"./LanguageServiceNoLS\";\nexport default {\n LanguageService: LanguageService,\n LanguageServiceNoLS: LanguageServiceNoLS,\n LocalizedStrings: LocalizedStrings,\n StringTypes: StringTypes\n};\n","/**\n * DEVELOPED BY\n * GIL LOPES BUENO\n * gilbueno.mail@gmail.com\n *\n * WORKS WITH:\n * IE8*, IE 9+, FF 4+, SF 5+, WebKit, CH 7+, OP 12+, BESEN, Rhino 1.7+\n * For IE8 (and other legacy browsers) WatchJS will use dirty checking \n *\n * FORK:\n * https://github.com/melanke/Watch.JS\n *\n * LICENSE: MIT\n */\n\n\"use strict\";\n(function (factory) {\n if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like enviroments that support module.exports,\n // like Node.\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else {\n // Browser globals\n window.WatchJS = factory();\n window.watch = window.WatchJS.watch;\n window.unwatch = window.WatchJS.unwatch;\n window.callWatchers = window.WatchJS.callWatchers;\n }\n}(function () {\n\n var WatchJS = {\n noMore: false, // use WatchJS.suspend(obj) instead\n useDirtyCheck: false, // use only dirty checking to track changes.\n preserveExistingSetters: false\n },\n lengthsubjects = [];\n \n var dirtyChecklist = [];\n var pendingChanges = []; // used coalesce changes from defineProperty and __defineSetter__\n \n var supportDefineProperty = false;\n try {\n supportDefineProperty = Object.defineProperty && Object.defineProperty({},'x', {});\n } catch(ex) { /* not supported */ }\n\n var isFunction = function (functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) == '[object Function]';\n };\n\n var isInt = function (x) {\n return x % 1 === 0;\n };\n\n var isArray = function(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n\n var isObject = function(obj) {\n return {}.toString.apply(obj) === '[object Object]';\n };\n \n var getObjDiff = function(a, b){\n var aplus = [],\n bplus = [];\n\n if(!(typeof a == \"string\") && !(typeof b == \"string\")){\n\n if (isArray(a) && b) {\n for (var i=0; i<a.length; i++) {\n if (b[i] === undefined) aplus.push(i);\n }\n } else {\n for(var i in a){\n if (a.hasOwnProperty(i)) {\n if(b && !b.hasOwnProperty(i)) {\n aplus.push(i);\n }\n }\n }\n }\n\n if (isArray(b) && a) {\n for (var j=0; j<b.length; j++) {\n if (a[j] === undefined) bplus.push(j);\n }\n } else {\n for(var j in b){\n if (b.hasOwnProperty(j)) {\n if(a && !a.hasOwnProperty(j)) {\n bplus.push(j);\n }\n }\n }\n }\n }\n\n return {\n added: aplus,\n removed: bplus\n }\n };\n\n var clone = function(obj){\n\n if (null == obj || \"object\" != typeof obj) {\n return obj;\n }\n\n var copy = obj.constructor();\n\n for (var attr in obj) {\n copy[attr] = obj[attr];\n }\n\n return copy; \n\n }\n\n var getExistingSetter = function (obj, propName) {\n if (WatchJS.preserveExistingSetters) {\n var existing = Object.getOwnPropertyDescriptor(obj, propName);\n return existing.set;\n }\n\n return undefined;\n }\n\n var defineGetAndSet = function (obj, propName, getter, setter) {\n try {\n var existingSetter = getExistingSetter(obj, propName);\n Object.defineProperty(obj, propName, {\n get: getter,\n set: function(value) {\n setter.call(this, value, true); // coalesce changes\n if (existingSetter) {\n existingSetter(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n }\n catch(e1) {\n try{\n Object.prototype.__defineGetter__.call(obj, propName, getter);\n Object.prototype.__defineSetter__.call(obj, propName, function(value) {\n setter.call(this,value,true); // coalesce changes\n });\n }\n catch(e2) {\n observeDirtyChanges(obj,propName,setter);\n //throw new Error(\"watchJS error: browser not supported :/\")\n }\n }\n\n };\n\n var defineProp = function (obj, propName, value) {\n try {\n Object.defineProperty(obj, propName, {\n enumerable: false,\n configurable: true,\n writable: false,\n value: value\n });\n } catch(error) {\n obj[propName] = value;\n }\n };\n\n var observeDirtyChanges = function(obj,propName,setter) {\n dirtyChecklist[dirtyChecklist.length] = {\n prop: propName,\n object: obj,\n orig: clone(obj[propName]),\n callback: setter\n } \n }\n \n var watch = function () {\n\n if (isFunction(arguments[1])) {\n watchAll.apply(this, arguments);\n } else if (isArray(arguments[1])) {\n watchMany.apply(this, arguments);\n } else {\n watchOne.apply(this, arguments);\n }\n\n };\n\n\n var watchAll = function (obj, watcher, level, addNRemove) {\n\n if ((typeof obj == \"string\") || (!(obj instanceof Object) && !isArray(obj))) { //accepts only objects and array (not string)\n return;\n }\n\n if(isArray(obj)) {\n defineWatcher(obj, \"__watchall__\", watcher, level); // watch all changes on the array\n if (level===undefined||level > 0) {\n for (var prop = 0; prop < obj.length; prop++) { // watch objects in array\n watchAll(obj[prop],watcher,level, addNRemove);\n }\n }\n } \n else {\n var prop,props = [];\n for (prop in obj) { //for each attribute if obj is an object\n if (prop == \"$val\" || (!supportDefineProperty && prop === 'watchers')) {\n continue;\n }\n\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n props.push(prop); //put in the props\n }\n }\n watchMany(obj, props, watcher, level, addNRemove); //watch all items of the props\n }\n\n\n if (addNRemove) {\n pushToLengthSubjects(obj, \"$$watchlengthsubjectroot\", watcher, level);\n }\n };\n\n\n var watchMany = function (obj, props, watcher, level, addNRemove) {\n\n if ((typeof obj == \"string\") || (!(obj instanceof Object) && !isArray(obj))) { //accepts only objects and array (not string)\n return;\n }\n\n for (var i=0; i<props.length; i++) { //watch each property\n var prop = props[i];\n watchOne(obj, prop, watcher, level, addNRemove);\n }\n\n };\n\n var watchOne = function (obj, prop, watcher, level, addNRemove) {\n if ((typeof obj == \"string\") || (!(obj instanceof Object) && !isArray(obj))) { //accepts only objects and array (not string)\n return;\n }\n\n if(isFunction(obj[prop])) { //dont watch if it is a function\n return;\n }\n if(obj[prop] != null && (level === undefined || level > 0)){\n watchAll(obj[prop], watcher, level!==undefined? level-1 : level); //recursively watch all attributes of this\n }\n\n defineWatcher(obj, prop, watcher, level);\n\n if(addNRemove && (level === undefined || level > 0)){\n pushToLengthSubjects(obj, prop, watcher, level);\n }\n\n };\n\n var unwatch = function () {\n\n if (isFunction(arguments[1])) {\n unwatchAll.apply(this, arguments);\n } else if (isArray(arguments[1])) {\n unwatchMany.apply(this, arguments);\n } else {\n unwatchOne.apply(this, arguments);\n }\n\n };\n\n var unwatchAll = function (obj, watcher) {\n\n if (obj instanceof String || (!(obj instanceof Object) && !isArray(obj))) { //accepts only objects and array (not string)\n return;\n }\n\n if (isArray(obj)) {\n var props = ['__watchall__'];\n for (var prop = 0; prop < obj.length; prop++) { //for each item if obj is an array\n props.push(prop); //put in the props\n }\n unwatchMany(obj, props, watcher); //watch all itens of the props\n } else {\n var unwatchPropsInObject = function (obj2) {\n var props = [];\n for (var prop2 in obj2) { //for each attribute if obj is an object\n if (obj2.hasOwnProperty(prop2)) {\n if (obj2[prop2] instanceof Object) {\n unwatchPropsInObject(obj2[prop2]); //recurs into object props\n } else {\n props.push(prop2); //put in the props\n }\n }\n }\n unwatchMany(obj2, props, watcher); //unwatch all of the props\n };\n unwatchPropsInObject(obj);\n }\n };\n\n\n var unwatchMany = function (obj, props, watcher) {\n\n for (var prop2 in props) { //watch each attribute of \"props\" if is an object\n if (props.hasOwnProperty(prop2)) {\n unwatchOne(obj, props[prop2], watcher);\n }\n }\n };\n\n var timeouts = [],\n timerID = null;\n function clearTimerID() {\n timerID = null;\n for(var i=0; i< timeouts.length; i++) {\n timeouts[i]();\n }\n timeouts.length = 0;\n }\n var getTimerID= function () {\n if (!timerID) {\n timerID = setTimeout(clearTimerID);\n }\n return timerID;\n }\n var registerTimeout = function(fn) { // register function to be called on timeout\n if (timerID==null) getTimerID();\n timeouts[timeouts.length] = fn;\n }\n \n // Track changes made to an array, object or an object's property \n // and invoke callback with a single change object containing type, value, oldvalue and array splices\n // Syntax: \n // trackChange(obj, callback, recursive, addNRemove)\n // trackChange(obj, prop, callback, recursive, addNRemove)\n var trackChange = function() {\n var fn = (isFunction(arguments[2])) ? trackProperty : trackObject ;\n fn.apply(this,arguments);\n }\n\n // track changes made to an object and invoke callback with a single change object containing type, value and array splices\n var trackObject= function(obj, callback, recursive, addNRemove) {\n var change = null,lastTimerID = -1;\n var isArr = isArray(obj);\n var level,fn = function(prop, action, newValue, oldValue) {\n var timerID = getTimerID();\n if (lastTimerID!==timerID) { // check if timer has changed since last update\n lastTimerID = timerID;\n change = {\n type: 'update'\n }\n change['value'] = obj;\n change['splices'] = null;\n registerTimeout(function() {\n callback.call(this,change);\n change = null;\n });\n }\n // create splices for array changes\n if (isArr && obj === this && change !== null) { \n if (action==='pop'||action==='shift') {\n newValue = [];\n oldValue = [oldValue];\n }\n else if (action==='push'||action==='unshift') {\n newValue = [newValue];\n oldValue = [];\n }\n else if (action!=='splice') { \n return; // return here - for reverse and sort operations we don't need to return splices. a simple update will do\n }\n if (!change.splices) change.splices = [];\n change.splices[change.splices.length] = {\n index: prop,\n deleteCount: oldValue ? oldValue.length : 0,\n addedCount: newValue ? newValue.length : 0,\n added: newValue,\n deleted: oldValue\n };\n }\n\n } \n level = (recursive==true) ? undefined : 0; \n watchAll(obj,fn, level, addNRemove);\n }\n \n // track changes made to the property of an object and invoke callback with a single change object containing type, value, oldvalue and splices\n var trackProperty = function(obj,prop,callback,recursive, addNRemove) { \n if (obj && prop) {\n watchOne(obj,prop,function(prop, action, newvalue, oldvalue) {\n var change = {\n type: 'update'\n }\n change['value'] = newvalue;\n change['oldvalue'] = oldvalue;\n if (recursive && isObject(newvalue)||isArray(newvalue)) {\n trackObject(newvalue,callback,recursive, addNRemove);\n } \n callback.call(this,change);\n },0)\n \n if (recursive && isObject(obj[prop])||isArray(obj[prop])) {\n trackObject(obj[prop],callback,recursive, addNRemove);\n } \n }\n }\n \n \n var defineWatcher = function (obj, prop, watcher, level) {\n var newWatcher = false;\n var isArr = isArray(obj);\n \n if (!obj.watchers) {\n defineProp(obj, \"watchers\", {});\n if (isArr) {\n // watch array functions\n watchFunctions(obj, function(index,action,newValue, oldValue) {\n addPendingChange(obj, index, action,newValue, oldValue);\n if (level !== 0 && newValue && (isObject(newValue) || isArray(newValue))) {\n var i,n, ln, wAll, watchList = obj.watchers[prop];\n if ((wAll = obj.watchers['__watchall__'])) {\n watchList = watchList ? watchList.concat(wAll) : wAll;\n }\n ln = watchList ? watchList.length : 0;\n for (i = 0; i<ln; i++) {\n if (action!=='splice') {\n watchAll(newValue, watchList[i], (level===undefined)?level:level-1);\n }\n else {\n // watch spliced values\n for(n=0; n < newValue.length; n++) {\n watchAll(newValue[n], watchList[i], (level===undefined)?level:level-1);\n }\n }\n }\n }\n });\n }\n }\n\n if (!obj.watchers[prop]) {\n obj.watchers[prop] = [];\n if (!isArr) newWatcher = true;\n }\n\n for (var i=0; i<obj.watchers[prop].length; i++) {\n if(obj.watchers[prop][i] === watcher){\n return;\n }\n }\n\n obj.watchers[prop].push(watcher); //add the new watcher to the watchers array\n\n if (newWatcher) {\n var val = obj[prop]; \n var getter = function () {\n return val; \n };\n\n var setter = function (newval, delayWatcher) {\n var oldval = val;\n val = newval; \n if (level !== 0 \n && obj[prop] && (isObject(obj[prop]) || isArray(obj[prop]))\n && !obj[prop].watchers) {\n // watch sub properties\n var i,ln = obj.watchers[prop].length; \n for(i=0; i<ln; i++) {\n watchAll(obj[prop], obj.watchers[prop][i], (level===undefined)?level:level-1);\n }\n }\n\n //watchFunctions(obj, prop);\n \n if (isSuspended(obj, prop)) {\n resume(obj, prop);\n return;\n }\n\n if (!WatchJS.noMore){ // this does not work with Object.observe\n //if (JSON.stringify(oldval) !== JSON.stringify(newval)) {\n if (oldval !== newval) {\n if (!delayWatcher) {\n callWatchers(obj, prop, \"set\", newval, oldval);\n }\n else {\n addPendingChange(obj, prop, \"set\", newval, oldval);\n }\n WatchJS.noMore = false;\n }\n }\n };\n\n if (WatchJS.useDirtyCheck) {\n observeDirtyChanges(obj,prop,setter);\n }\n else {\n defineGetAndSet(obj, prop, getter, setter);\n }\n }\n\n };\n\n var callWatchers = function (obj, prop, action, newval, oldval) {\n if (prop !== undefined) {\n var ln, wl, watchList = obj.watchers[prop];\n if ((wl = obj.watchers['__watchall__'])) {\n watchList = watchList ? watchList.concat(wl) : wl;\n }\n ln = watchList ? watchList.length : 0;\n for (var wr=0; wr< ln; wr++) {\n watchList[wr].call(obj, prop, action, newval, oldval);\n }\n } else {\n for (var prop in obj) {//call all\n if (obj.hasOwnProperty(prop)) {\n callWatchers(obj, prop, action, newval, oldval);\n }\n }\n }\n };\n\n var methodNames = ['pop', 'push', 'reverse', 'shift', 'sort', 'slice', 'unshift', 'splice'];\n var defineArrayMethodWatcher = function (obj, original, methodName, callback) {\n defineProp(obj, methodName, function () {\n var index = 0;\n var i,newValue, oldValue, response; \n // get values before splicing array \n if (methodName === 'splice') {\n var start = arguments[0];\n var end = start + arguments[1];\n oldValue = obj.slice(start,end);\n newValue = [];\n for(i=2;i<arguments.length;i++) {\n newValue[i-2] = arguments[i];\n }\n index = start;\n } \n else {\n newValue = arguments.length > 0 ? arguments[0] : undefined;\n } \n\n response = original.apply(obj, arguments);\n if (methodName !== 'slice') {\n if (methodName === 'pop') {\n oldValue = response;\n index = obj.length;\n }\n else if (methodName === 'push') {\n index = obj.length-1;\n }\n else if (methodName === 'shift') {\n oldValue = response;\n }\n else if (methodName !== 'unshift' && newValue===undefined) {\n newValue = response;\n }\n callback.call(obj, index, methodName,newValue, oldValue)\n }\n return response;\n });\n };\n\n var watchFunctions = function(obj, callback) {\n\n if (!isFunction(callback) || !obj || (obj instanceof String) || (!isArray(obj))) {\n return;\n }\n\n for (var i = methodNames.length, methodName; i--;) {\n methodName = methodNames[i];\n defineArrayMethodWatcher(obj, obj[methodName], methodName, callback);\n }\n\n };\n\n var unwatchOne = function (obj, prop, watcher) {\n if (prop) {\n if (obj.watchers && obj.watchers[prop]) {\n if (watcher === undefined) {\n delete obj.watchers[prop]; // remove all property watchers\n }\n else {\n for (var i = 0; i < obj.watchers[prop].length; i++) {\n var w = obj.watchers[prop][i];\n if (w == watcher) {\n obj.watchers[prop].splice(i, 1);\n }\n }\n }\n }\n } else {\n delete obj.watchers;\n }\n\n removeFromLengthSubjects(obj, prop, watcher);\n removeFromDirtyChecklist(obj, prop);\n };\n \n // suspend watchers until next update cycle\n var suspend = function(obj, prop) {\n if (obj.watchers) {\n var name = '__wjs_suspend__'+(prop!==undefined ? prop : '');\n obj.watchers[name] = true;\n }\n }\n \n var isSuspended = function(obj, prop) {\n return obj.watchers \n && (obj.watchers['__wjs_suspend__'] || \n obj.watchers['__wjs_suspend__'+prop]);\n }\n \n // resumes preivously suspended watchers\n var resume = function(obj, prop) {\n registerTimeout(function() {\n delete obj.watchers['__wjs_suspend__'];\n delete obj.watchers['__wjs_suspend__'+prop];\n })\n }\n\n var pendingTimerID = null;\n var addPendingChange = function(obj,prop, mode, newval, oldval) {\n pendingChanges[pendingChanges.length] = {\n obj:obj,\n prop: prop,\n mode: mode,\n newval: newval,\n oldval: oldval\n };\n if (pendingTimerID===null) {\n pendingTimerID = setTimeout(applyPendingChanges);\n }\n };\n \n \n var applyPendingChanges = function() {\n // apply pending changes\n var change = null;\n pendingTimerID = null;\n for(var i=0;i < pendingChanges.length;i++) {\n change = pendingChanges[i];\n callWatchers(change.obj, change.prop, change.mode, change.newval, change.oldval);\n }\n if (change) {\n pendingChanges = [];\n change = null;\n } \n }\n\n var loop = function(){\n\n // check for new or deleted props\n for(var i=0; i<lengthsubjects.length; i++) {\n\n var subj = lengthsubjects[i];\n\n if (subj.prop === \"$$watchlengthsubjectroot\") {\n\n var difference = getObjDiff(subj.obj, subj.actual);\n\n if(difference.added.length || difference.removed.length){\n if(difference.added.length){\n watchMany(subj.obj, difference.added, subj.watcher, subj.level - 1, true);\n }\n\n subj.watcher.call(subj.obj, \"root\", \"differentattr\", difference, subj.actual);\n }\n subj.actual = clone(subj.obj);\n\n\n } else {\n\n var difference = getObjDiff(subj.obj[subj.prop], subj.actual);\n\n if(difference.added.length || difference.removed.length){\n if(difference.added.length){\n for (var j=0; j<subj.obj.watchers[subj.prop].length; j++) {\n watchMany(subj.obj[subj.prop], difference.added, subj.obj.watchers[subj.prop][j], subj.level - 1, true);\n }\n }\n\n callWatchers(subj.obj, subj.prop, \"differentattr\", difference, subj.actual);\n }\n\n subj.actual = clone(subj.obj[subj.prop]);\n\n }\n\n }\n \n // start dirty check\n var n, value;\n if (dirtyChecklist.length > 0) {\n for (var i = 0; i < dirtyChecklist.length; i++) {\n n = dirtyChecklist[i];\n value = n.object[n.prop];\n if (!compareValues(n.orig, value)) {\n n.orig = clone(value);\n n.callback(value);\n }\n }\n }\n\n };\n\n var compareValues = function(a,b) {\n var i, state = true;\n if (a!==b) {\n if (isObject(a)) {\n for(i in a) {\n if (!supportDefineProperty && i==='watchers') continue;\n if (a[i]!==b[i]) {\n state = false;\n break;\n };\n }\n }\n else {\n state = false;\n }\n }\n return state;\n }\n \n var pushToLengthSubjects = function(obj, prop, watcher, level){\n\n var actual;\n\n if (prop === \"$$watchlengthsubjectroot\") {\n actual = clone(obj);\n } else {\n actual = clone(obj[prop]);\n }\n\n lengthsubjects.push({\n obj: obj,\n prop: prop,\n actual: actual,\n watcher: watcher,\n level: level\n });\n };\n\n var removeFromLengthSubjects = function(obj, prop, watcher){\n for (var i=0; i<lengthsubjects.length; i++) {\n var subj = lengthsubjects[i];\n\n if (subj.obj == obj) {\n if (!prop || subj.prop == prop) {\n if (!watcher || subj.watcher == watcher) {\n // if we splice off one item at position i\n // we need to decrement i as the array is one item shorter\n // so when we increment i in the loop statement we\n // will land at the correct index.\n // if it's not decremented, you won't delete all length subjects\n lengthsubjects.splice(i--, 1);\n }\n }\n }\n }\n\n };\n \n var removeFromDirtyChecklist = function(obj, prop){\n var notInUse;\n for (var i=0; i<dirtyChecklist.length; i++) {\n var n = dirtyChecklist[i];\n var watchers = n.object.watchers;\n notInUse = (\n n.object == obj \n && (!prop || n.prop == prop)\n && watchers\n && (!prop || !watchers[prop] || watchers[prop].length == 0 )\n );\n if (notInUse) {\n // we use the same syntax as in removeFromLengthSubjects\n dirtyChecklist.splice(i--, 1);\n }\n }\n\n }; \n\n setInterval(loop, 50);\n\n WatchJS.watch = watch;\n WatchJS.unwatch = unwatch;\n WatchJS.callWatchers = callWatchers;\n WatchJS.suspend = suspend; // suspend watchers \n WatchJS.onChange = trackChange; // track changes made to object or it's property and return a single change object\n\n return WatchJS;\n\n}));\n"],"sourceRoot":""}