main.178e3d646fb79d7bafa6.js.map 1.6 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/index.js","webpack://ivprogCore/./grammar/pt/ivprog.g4","webpack://ivprogCore/./grammar/pt/langFunctions.js","webpack://ivprogCore/./grammar/pt/langLibs.js","webpack://ivprogCore/./i18n/error.csv","webpack://ivprogCore/./i18n/index.ts","webpack://ivprogCore/./i18n/message.csv","webpack://ivprogCore/./i18n/ui.csv","webpack://ivprogCore/./js/assessment/ivprogAssessment.js","webpack://ivprogCore/./js/assessment/output_matching/assessment_result.js","webpack://ivprogCore/./js/assessment/output_matching/output_matching.js","webpack://ivprogCore/./js/assessment/output_matching/output_result.js","webpack://ivprogCore/./js/ast/ast_helpers.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/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/repeatUntil.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/charLiteral.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.ts","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/memory/address.ts","webpack://ivprogCore/./js/memory/location.ts","webpack://ivprogCore/./js/processor/compatibilityTable.ts","webpack://ivprogCore/./js/processor/context.ts","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.ts","webpack://ivprogCore/./js/processor/semantic/semanticAnalyser.js","webpack://ivprogCore/./js/processor/store/store.ts","webpack://ivprogCore/./js/processor/store/storeObject.ts","webpack://ivprogCore/./js/processor/store/storeObjectArray.ts","webpack://ivprogCore/./js/processor/store/storeObjectRef.ts","webpack://ivprogCore/./js/processor/store/store_object_array_ref.ts","webpack://ivprogCore/./js/processor/store/value/array_store_value.ts","webpack://ivprogCore/./js/processor/store/value/array_store_value_ref.ts","webpack://ivprogCore/./js/processor/store/value/store_value.ts","webpack://ivprogCore/./js/processor/store/value/store_value_address.ts","webpack://ivprogCore/./js/processor/store/value/store_value_ref.ts","webpack://ivprogCore/./js/runner.js","webpack://ivprogCore/./js/services/i18nHelper.js","webpack://ivprogCore/./js/services/languageService.js","webpack://ivprogCore/./js/services/localizedStringsService.js","webpack://ivprogCore/./js/services/userLog.js","webpack://ivprogCore/./js/typeSystem/array_type.ts","webpack://ivprogCore/./js/typeSystem/multiType.ts","webpack://ivprogCore/./js/typeSystem/parsers.js","webpack://ivprogCore/./js/typeSystem/type.ts","webpack://ivprogCore/./js/typeSystem/types.ts","webpack://ivprogCore/./js/util/auto_gen_output.js","webpack://ivprogCore/./js/util/config.ts","webpack://ivprogCore/./js/util/editorMode2.js","webpack://ivprogCore/./js/util/iassignHelpers.js","webpack://ivprogCore/./js/util/inputTest.js","webpack://ivprogCore/./js/util/input_assessment.js","webpack://ivprogCore/./js/util/maybe.ts","webpack://ivprogCore/./js/util/outputTest.js","webpack://ivprogCore/./js/util/string_diff.js","webpack://ivprogCore/./js/util/testConsole.js","webpack://ivprogCore/./js/util/utils.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/text_editor.js","webpack://ivprogCore/./js/visualUI/types.js","webpack://ivprogCore/./js/visualUI/utils.js","webpack://ivprogCore/./js/visualUI/variables.js"],"names":["main_function","$read","$write","$numElements","$matrixLines","$matrixColumns","$substring","$length","$uppercase","$lowercase","$charAt","$isReal","$isInt","$isBool","$castReal","$castInt","$castBool","$castString","$castChar","$sin","$cos","$tan","$sqrt","$pow","$log","$abs","$negate","$invert","$max","$min","$rand","$mathLib","$ioLib","$strLib","$arrayLib","$langLib","pt","lexer","PT","langFuncs","PTFuncs","langLibs","PTLibs","en","EN","ENFuncs","ENLibs","LocalizedStrings","LocalizedStringsService","StringTypes","line_i18n","AssessmentConfig","max_instruction_count","suspend_threshold","IVProgAssessment","ast_code","testCases","domConsole","old_config","JSON","parse","stringify","Config","setConfig","partialTests","map","t","name","OutputMatching","IVProgProcessor","input","output","testResult","om","eval","Promise","all","then","results","grade","i","length","result","writeToConsole","DOMConsole","INFO","MESSAGE","generateOutput","status","ERR","ERROR","error_msg","channel","toFixed","error","showErrorMessage","err","message","resolve","errorID","args","getError","msgID","info","getMessage","msgType","msg","getString","processString","writeRawHTML","OutputAssessmentResult","inputs","store","time","template","DETAIL_TEMPLATE","replace","getUI","input_spans","prepareInputList","output_rows","type","formatString","formatNumber","formatBool","prepareOutputTable","failed_text","FAILED_TEMPLATE","input_list","list","INPUT_INFO_TEMPLATE","value","read","join","OUPUT_TABLE_TEMPLATE","assessment_result","prepareResults","page","PAGE_TEMPLATE","result_class","formatOutput","expected_class","generated_class","OUTPUT_TEMPLATE","expected_tmpl","expected","generated_tmpl","generated","EMPTY_OUTPUT_TEMPLATE","final_result","g_string","e_string","g_string_tmpl","e_string_tmpl","diff","StringDiff","diff_vec","part","getDiffStringStyle","diff_string","reduce","prev","actual","text","action","INSERT","DELETE","EQUAL","val","str","RegExp","program","expected_output","test_name","refThis","InputAssessment","gen_output","OutputTest","registerInput","registerOutput","start_time","Date","now","interpretAST","sto","final_time","isInputAvailable","getErrorMessage","g_out","OutputResult","getPotentialOutputType","outputMatch","console","log","e_out","push","NUM_REGEX","test","BOOLEAN_REGEX","g_output","e_output","checkStrings","g_num","Decimal","e_num","checkNumbers","g_bool","TypeParser","e_bool","checkBoolean","decimalPlaces","Math","min","dp","ROUND_FLOOR","eq","toNumber","g_bool_text","e_bool_text","e_ouput","assessmentList","e_output_clean","trim","g_output_clean","NUM_IN_STRING_REGEX","expected_numbers","match","generated_numbers","g_val","e_val","numberGrade","r","BOOLEAN_IN_STRING_REGEX","expected_bools","generated_bools","boolGrade","dist","levenshteinDistance","gradeDiff","max","Number","isNaN","assessment_size","gradeAcc","finalGrade","createNumberResult","OutputMatchResult","createBoolResult","createStringResult","recover","_","start","_tokenStartCharIndex","stop","_input","index","getText","getErrorDisplay","line","_tokenStartLine","column","_tokenStartColumn","SyntaxErrorFactory","invalid_character","ArrayIndexAssign","id","lineExpression","columnExpression","expression","Assign","ArrayDeclaration","lines","columns","initial","isConst","Declaration","Command","Break","Case","commands","_sourceInfo","sourceInfo","CommandBlock","variables","For","for_id","for_from","for_to","for_pass","commandBlock","FormalParameter","byRef","variadic","Function","returnType","formalParameters","some","p","isCompatible","Types","VOID","IfThenElse","condition","ifTrue","ifFalse","RepeatUntil","While","Return","Switch","cases","SysCall","langFunc","SyntaxError","Error","captureStackTrace","createError","message_id","context","Object","freeze","extra_lines","token_missing_one","token","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","_column","annonymous_array_literal","invalid_matrix_literal_line","exp","cannot_infer_matrix_line","cannot_infer_matrix_column","cannot_infer_vector_size","matrix_to_vector_literal_attr","vector_to_matrix_literal_attr","array_init_not_literal","array_exceeds_2d","invalid_matrix_id_dimension","invalid_vector_init","invalid_matrix_init","ArrayAccess","strLine","toString","strColumn","parenthesis","Expression","ArrayLiteral","valid","strList","arrayLiteral","element","validateSize","validateType","Literal","BoolLiteral","BOOLEAN","convertBoolToString","CharLiteral","CHAR","_parenthesis","flag","FunctionCall","actualParameters","isMainCall","LanguageDefinedFunction","getMainFunctionName","getLocalName","params","strParams","v","InfixApp","op","left","right","l","IntLiteral","INTEGER","convertToString","RealLiteral","REAL","StringLiteral","STRING","UnaryApp","VariableLiteral","UNDEFINED","IVProgParser","lexerClass","LanguageService","getCurrentLexer","inputStream","InputStream","AstHelpers","bind","tokenStream","CommonTokenStream","fill","pos","variableTypes","RK_INTEGER","RK_REAL","RK_BOOLEAN","RK_STRING","RK_CHARACTER","functionTypes","concat","RK_VOID","parsingArrayDimension","scope","getCurrentLangFuncs","definedFuncsNameList","definedVariablesStack","parseProgram","LT","BASE","pop","getToken","fetchedEOF","consumeNewLines","globalVars","functions","RK_PROGRAM","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","indexOf","variableID","getCurrentVariableStack","decl","parseMaybeConst","checkEOS","constToken","typeString","parseType","parseDeclaration","getTypeArray","dim1","dim2","dimensions","SourceInfo","createSourceInfo","idString","parseID","checkVariableDuplicate","checkOpenBrace","parseArrayDimension","checkCloseBrace","parseArrayDeclaration","equalsToken","parseExpressionOR","declaration","Commands","commaToken","COMMA","n_lines","n_columns","dim_is_id","Expressions","parseArrayLiteral","isVector","expString","Parsers","ArrayType","find","dimToken","getIntLiteral","ID","parseVariable","openCurly","invalid_token","beginArray","data","maybeCurlyOpen","parseVectorList","parseExpressionList","endArray","createSourceInfoFromList","dataDim","lastSize","pushScope","FUNCTION","formalParams","funType","checkFunctionDuplicate","checkOpenParenthesis","checkCloseParenthesis","parseFormalParameters","commandsBlock","parseCommandBlock","func","isMain","popScope","reference","maybeIDToken","RK_REFERENCE","parameter","insideScope","LIB_ID","optionalCurly","variablesDecl","hasOpen","parsedCommand","cmd","parseCommand","Array","lastToken","varType","parseIDCommand","RK_RETURN","parseReturn","RK_WHILE","RK_WHILE_ALT","parseWhile","RK_FOR","RK_FOR_ALT","parseFor","RK_BREAK","BREAKABLE","parseBreak","RK_SWITCH","parseSwitchCase","RK_DO","parseRepeatUntil","RK_IF","parseIfThenElse","casesList","parseCases","whileToken","RK_DO_UNTIL","COMMAND","logicalExpression","cmdBlocks","maybeElse","RK_ELSE","maybeIf","elseBlock","for_token","id_token","parseForParameters","RK_FOR_FROM","RK_FOR_TO","maybePass","RK_FOR_PASS","refToken","isID","parseMaybeLibID","parseExpression","equalToken","equalOrParenthesis","funcCall","parseFunctionCallCommand","keyword_code","from_token","keyword","int_or_id","is_unary_op","SUM_OP","convertFromString","RK_CASE","nextToken","RK_DEFAULT","colonToken","COLON","block","defaultCase","setCommands","aCase","caseToken","exp1","parseExpressionAND","OR_OPERATOR","opToken","or","exp2","finalExp","parseExpressionNot","AND_OPERATOR","and","maybeNotToken","NOT_OPERATOR","not","parseExpressionRel","RELATIONAL_OPERATOR","relToken","rel","factor","parseFactor","sumOpToken","factor2","term","parseTerm","MULTI_OP","multOpToken","term2","getRealLiteral","getStringLiteral","CHARACTER","getCharLiteral","RK_TRUE","RK_FALSE","getBoolLiteral","parseIDTerm","parseParenthesisExp","tokenA","tokenB","firstIndex","secondIndex","parseFunctionCallExpression","getInternalName","parseActualParameters","funcName","getFunctionName","maybeToken","types","x","size","tokenIndex","elementID","disableMarginTop","cursorInterval","idleInterval","inputDiv","inputCMD","inputSpan","cursorRef","needInput","clearBtn","hideBtn","showBtn","termDiv","anyKey","actualID","substring","parent","document","getElementById","setup","inputListeners","hideInput","pending_writes","last_clear","_setupDom","_setupEvents","addEventListener","clearBtnClick","hideBtnClick","showBtnClick","event","keyCode","which","clearInterval","notifyListeners","_appendUserInput","innerHTML","currentLine","bashNode","createElement","classList","add","BASH_TEMPLATE","querySelector","INPUT_CARET_TEMPLATE","setAttribute","append","_setupCursor","window","$","popup","content","blinkCaretAndFocus","updateSpanText","stopBlinkCaret","focus","setInterval","style","visibility","scheduleNotify","forEach","splice","_appendTextLn","newLine","_appendText","USER","write_time","Utils","divClass","getClassForType","textDiv","insertBefore","getOutputText","scrollTerm","filter","removeChild","INPUT","getUserInputText","scrollTop","scrollHeight","display","top","marginTop","showInput","scrollIntoView","removeEventListener","cNode","cloneNode","parentNode","replaceChild","click","promise","outputList","split","write","clearPendingWrites","parentElement","childNodes","firstChild","clear","hide","notifyIdle","idle_input_interval","Input","Output","CodeEditor","initTextEditor","CodeEditorAll","setCode","getCode","updateEditor","disable","i18n","i18nHelper","valueToKey","object","key","prototype","hasOwnProperty","call","concatObjects","obj","libsObject","createSinFun","createCosFun","createTanFun","createSqrtFun","createPowFun","createLogFun","createAbsFun","createNegateFun","createInvertFun","createMaxFun","createMinFun","createRandFun","createInputFun","createOutputFun","createSubstringFun","createLengthFun","createUppercaseFun","createLowercaseFun","createrCharAtFun","createNumElementsFun","createMatrixLinesFun","createMatrixColumnsFun","createIsRealFun","createIsIntFun","createIsBoolFun","createCastRealFun","createCastIntFun","createCastBoolFun","createCastStringFun","createCastCharFun","funcsObject","localName","names","lib","getCurrentLangLibs","internalName","getFunction","libName","funName","createRuntimeError","i18n_id","RuntimeError","createSemanticError","SemanticError","ProcessorErrorFactory","symbol_not_found_full","symbol_not_found","function_missing_full","function_missing","main_missing","array_dimension_not_int_full","array_dimension_not_int","unknown_command_full","unknown_command","incompatible_types_full","left_type","left_dim","right_type","right_dim","source_info","translateType","incompatible_types","incompatible_types_array_full","dim","incompatible_types_array","loop_condition_type_full","loop_condition_type","endless_loop_full","endless_loop","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","invalid_parameters_size","invalid_parameter_type_full","fun_name","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","invalid_read_type","invalid_read_type_array","typePos","dimPos","typeArray","dimArray","invalid_const_ref_full","invalid_const_ref","invalid_const_assignment_full","var_id","invalid_const_assignment","invalid_vector_assignment_full","left_id","left_size","right_id","right_size","invalid_vector_assignment","invalid_matrix_assignment_full","left_line","left_column","right_line","right_column","invalid_matrix_assignment","matrix_to_vector_attr","vector_to_matrix_attr","invalid_matrix_index_assign_full","mat_id","mat_line","mat_size","exp_size","invalid_matrix_index_assign","invalid_number_elements_vector","expected_num","actual_num","invalid_number_lines_matrix","divsion_by_zero_full","divsion_by_zero","undefined_tanget_value","negative_log_value","invalid_string_index","local_fun_name","negative_sqrt_value","exceeded_recursive_calls","invalid_for_variable","invalid_for_from","invalid_for_to","invalid_for_pass","exceed_max_instructions","ast","globalStore","Store","stores","Context","forceKill","mode","Modes","RUN","function_call_stack","instruction_count","function_call_count","RETURN","BREAK","prepareState","Location","initGlobal","mainFunc","findMainFunction","runFunction","checkContext","executeCommands","MAIN_INTERNAL_ID","fun","funcStore","extendStore","associateParameters","variablesDeclarations","stoWithVars","finalSto","formal_params","effective_params","caller_store","callee_store","hasVariadic","j","formalParameter","associateVariadicParameter","actualParam","associateParameter","count","variadicCount","StoreValue","undefined","insertStore","actualParameter","callerStore","calleeStore","evaluateExpression","actualValue","shouldTypeCast","enable_type_casting","canImplicitTypeCast","inStore","realObj","getStoreObject","ref","ArrayStoreValue","values","get","array_type","addresses","getLocAddressOf","ArrayStoreValueRef","StoreValueAddress","StoreValueRef","setReferenceDimension","locAddress","varID","realValue","doImplicitCasting","cmds","executeCommand","PAUSE","ABORT","executeDeclaration","executeArrayIndexAssign","executeAssign","executeBreak","executeReturn","executeIfThenElse","executeRepeatUntil","executeWhile","executeFor","executeSwitch","executeFunctionCall","executeSysCall","findFunction","destroy","switchCases","lastStore","lastCaseCheckResult","ignoreSwitchCases","switchCase","isDefault","equalityInfixApp","Operators","EQ","initCmd","passValue","toInt","GE","checkEndGTBegin","GT","isForward","increment","ADD","whileBlock","forAsWhile","newCmdList","checkCondition","isTrue","funcType","real_value","stringInfo","applyStore","exp_type_string_info","exp_type_info","updateStore","mustBeArray","used_dims","lineSV","columnSV","canAccept","innerType","current_value","getAt","updateStoreArray","executeArrayDeclaration","temp","linesSV","columnsSV","evaluateArrayLiteral","valueList","evaluateUnaryApp","evaluateInfixApp","evaluateArrayAccess","evaluateVariableLiteral","evaluateLiteral","evaluateFunctionCall","max_call_stack","evaluateMatrix","storeValueMatrix","next","evaluateVector","exps","n_elements","actualValues","exp_str","newValue","vectors","vector","vec_type","isArray","col","readOnly","unaryApp","resultType","resultTypeAfterUnaryOp","ord","SUB","NOT","negated","infixApp","shouldImplicitCast","resultTypeAfterInfixOp","stringInfoLeft","infoLeft","stringInfoRight","infoRight","MULT","DIV","MOD","LE","NEQ","AND","OR","rightStr","leftStr","strLeft","strRight","plus","minus","times","divToInt","div","leftValue","rightValue","trunc","modulo","charCodeAt","gt","gte","lt","lte","numElementsFun","ALL","matrixLinesFun","matrix","matrixColumnsFun","writeFunction","totalSV","total","sendOutput","readFunction","requestInput","typeToConvert","realObject","getReferenceDimension","arrayInfo","getRefObj","stoValue","isRealFun","parser","createParser","isIntFun","isBoolFun","castRealFun","typeStringInfoArray","typeInfo","MultiType","castIntFun","floor","castBoolFun","castStringFun","castCharFun","valSV","String","fromCharCode","convertToRadians","degrees","acos","sinFun","angle","mod","sin","cosFun","cos","tanFun","tan","sqrtFun","isNeg","reject","sqrt","powFun","y","pow","logFun","isNegative","log10","absFun","abs","negateFun","invertFun","dividedBy","maxFun","numbers","sto_addrs","paramType","minFun","seed","a","m","c","randFun","createSetSeedFun","setSeedFun","substringFun","end","lengthFun","uppercaseFun","toUpperCase","lowercaseFun","toLowerCase","charAtFun","idx","charAt","SemanticAnalyser","stringCode","semantic","parseTree","analyseTree","symbolMap","currentFunction","n","symbol_map","findSymbol","pushMap","assertDeclarations","f","assertFunction","assertDeclaration","assertArrayDeclaration","insertSymbol","evaluateExpressionType","result_string_info","result_info","lineType","columnType","finalResult","resultTypeLeft","resultTypeRight","evaluateLiteralType","assertParameters","arrayTypeInfo","arrType","literal","last","e","strInfo","strExp","arrayDeclaration","evaluateVectorLiteralType","line_literal","formalParam","optional","assertReturn","popMap","checkCommand","checkCommands","var_type","from_type","to_type","pass_type","sType","hasDefault","caseType","lineExp","columnExp","exp_type","access_type","compatible","access_type_string_info","access_type_info","getMainFunction","actualParametersList","parameterList","assertVariadicParameter","param","assertParameter","expType","variable","shared","runner","ivprogLexer","editor","JsonEditor","analiser","semAna","proc","load","alert","identifier","opts","UI","warn","LanguageServiceExtended","iLMparameters","default_lang","lang","langInfo","Lexers","getLang","getDefaultLang","LanguageServiceNoLS","IVProgLocalizedStrings","langService","langsJsons","shouldListenToChange","type_string","category","Langs","_instance","getInstance","clicks","inRebuildMode","ActionTypes","INSERT_FUNCTION","REMOVE_FUNCTION","INSERT_GLOBAL_VAR","REMOVE_GLOBAL_VAR","RENAME_FUNCTION","RENAME_GLOBAL_VAR","SET_GLOBAL_CONST","CHANGE_FUNCTION_RETURN","CHANGE_GLOBAL_TYPE","CHANGE_GLOBAL_VALUE","INSERT_FUNCTION_PARAM","REMOVE_FUNCTION_PARAM","CHANGE_PARAM_TYPE","RENAME_FUNCTION_PARAM","INSERT_FUNCTION_VAR","REMOVE_FUNCTION_VAR","RENAME_FUNCTION_VAR","CHANGE_VAR_TYPE","CHANGE_VAR_VALUE","INSERT_COMMAND","REMOVE_COMMAND","CHANGE_COMMAND_EXP","CHANGE_ATTRIB_EXP","CHANGE_ATTRIB_VAR","MOVE_COMMAND","ENTER_CHANGE_VAR_NAME","ENTER_CHANGE_VAR_VALUE","ENTER_CHANGE_GLOBAL_NAME","ENTER_CHANGE_GLOBAL_VALUE","ENTER_CHANGE_PARAM_NAME","registerClick","details","registerUserEvent","command","registerEvent","registerSystemEvent","tag","getLogs","setRebuildMode","getLogsAsString","parseLogs","logData","toChar","debug","toReal","toBool","instance","bool","autoGenerateTestCaseOutput","program_text","copyTestCases","assign","analyseFromSource","resultList","InputTest","exec","result_final","inputList","showAlert","outputGenerated","CodeEditorMode","CodeMirror","indented","align","pushContext","state","indent","popContext","typeBefore","stream","prevToken","string","slice","typeAtEndOfLine","indentation","isTopScope","contains","words","word","propertyIsEnumerable","tokenComment","maybeEnd","ch","tokenize","defineMode","config","parserConfig","indentUnit","statementIndentUnit","dontAlignCalls","keywords","switchKeyword","caseKeyword","defaultKeyword","caseRegex","builtin","blockKeywords","defKeywords","atoms","hooks","multiLineStrings","indentStatements","namespaceSeparator","isPunctuationChar","numberStart","number","isOperatorChar","isIdentifierChar","isReservedIdentifier","curPunc","isDefKeyword","tokenString","tokenBase","backUp","eat","skipToEnd","eatWhile","cur","current","quote","escaped","maybeEOL","typeFirstDefinitions","eol","startState","basecolumn","startOfLine","ctx","sol","eatSpace","styleDefs","textAfter","Pass","firstChar","closing","dontIndentStatements","hook","switchBlock","allmanIndentation","caseTestRegex","electricInput","blockCommentStart","blockCommentEnd","blockCommentContinue","lineComment","fold","codeConfig","getCodeEditorModeConfig","ivprogKeywords","basicTypes","ivprogTypes","ivprogBlockKeywords","blocks","ivprogDefKeywords","def","mimes","prop","helperType","registerHelper","defineMIME","switchString","case_default","modeProps","parseActivityData","algorithm_in_ilm","logs","Maybe","none","prepareActivityToStudentHelper","ilm_cont","maybe_content","testcases","setTestCases","prog_type","settings_programming_type","settingsProgrammingType","settingsDataTypes","settings_data_types","settingsCommands","settings_commands","settingsFunctions","settings_functions","algorithmInIlm","settingsFilter","settings_filter","compareArray","b","elementA","elementB","compareTestcases","original","student","elementO","elementS","autoEval","originalData","callback","code","generate","getOrElse","getTestCases","con","TestConsole","autoAssessment","runTest","DIFF_DELETE","DIFF_INSERT","DIFF_EQUAL","diff_main","text1","text2","cursor_pos","_fix_unicode","editdiff","find_cursor_edit_diff","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","diff_compute_","unshift","diff_cleanupMerge","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_bisect_","text1_length","text2_length","max_d","ceil","v_offset","v_length","v1","v2","delta","front","k1start","k1end","k2start","k2end","d","k1","k1_offset","x1","y1","k2_offset","x2","diff_bisectSplit_","k2","y2","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","is_surrogate_pair_start","pointerend","is_surrogate_pair_end","diff_halfMatchI_","best_common","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","prefixLength","suffixLength","hm1","hm2","fix_unicode","pointer","count_delete","count_insert","text_delete","text_insert","previous_equality","ends_with_pair_start","stray","k","starts_with_pair_end","changes","charCode","remove_empty_tuples","tuples","ret","make_edit_splice","before","oldMiddle","newMiddle","after","oldText","newText","oldRange","newRange","oldLength","newLength","oldCursor","oldBefore","oldAfter","maybeNewCursor","editBefore","newCursor","newBefore","newAfter","oldPrefix","newPrefix","editAfter","cursor","oldSuffix","newSuffix","replaceRange","_type","scrollIt","destination","duration","easing","easings","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","pageYOffset","startTime","performance","getTime","documentHeight","body","offsetHeight","documentElement","clientHeight","windowHeight","innerHeight","getElementsByTagName","destinationOffset","offsetTop","destinationOffsetToScroll","round","scroll","timeFunction","requestAnimationFrame","isElementInViewport","el","rect","getBoundingClientRect","bottom","innerWidth","clientWidth","cacheMainList","cacheOp","fillCache","mainList","nullLexer","logicOpList","lOp","isKeyword","isValidIdentifier","identifier_str","validRegex","blockList","keywordsList","typeList","atomList","win","openAssessmentDetail","preventDefault","page_code","currentTarget","dataset","close","open","range","startAt","keys","sleep","ms","res","setTimeout","block_render","renderAlgorithm","draging","children","off","empty","program_obj","FunctionsManagement","globals","GlobalsManagement","blockAllEditingOptions","remove","globalsCode","has_error","n_code","functionsCode","function_obj","return_type","TEXT","return_dimensions","is_main","parameters_list","parametersCode","variables_list","variablesCode","commandsCode","command_obj","Models","breaksCode","comment","commentsCode","reader","readersCode","writer","writersCode","functioncall","functioncallsCode","attribution","attributionsCode","whiletrue","whiletruesCode","dowhiletrue","doWhilesCode","iftrue","iftruesCode","repeatNtimes","repeatNtimesCode","switchsCode","returnsCode","variable_value_menu","elementExpressionCode","_command_obj","variableValueMenuCode","switchcasesCode","switchcase","commands_block","var_attribution","expression1","expression2","expression3","itens","dom_object","commands_else","logicExpressionCode","first_operand","exp_logic","exp_arithmetic","arithmeticExpressionCode","operator","equals_to","not_equals_to","second_operand","greater_than","less_than","greater_than_or_equals_to","less_than_or_equals_to","expression_obj","type_op","item","multiplication","division","module","write_sep","function_called","variable_obj","is_return","translateInternalFunction","row","isBackslash","newline","comment_text","parameter_obj","is_constant","rows","removeCommand","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","draggable","appendTo","mouseup","evt","manageCommand","hasClass","originalEvent","srcElement","closest","on","addGhostDiv","elementFromPoint","clientX","clientY","ghostDiv","css","target","pageX","divx","pageY","trigger","active_container","addGhostToEmptyBlock","container","addGhostToNotEmptyBlock","is","containerIf","containerElse","topIfDistance","bottomIfDistance","height","topElseDistance","bottomElseDistance","addGhostToFunctionArea","allfilhos","topDistances","bottomDistances","topD","botD","menorTop","apply","indiceTop","menorBot","indiceBot","insertAfter","undermouse","borderMouseDragCommand","each","removeClass","objLeft","offset","objTop","objRight","width","objBottom","addClass","renderCommand","element_reference","before_after_inside","createdElement","genericCreateCommand","VariableValueMenuManagement","only_value","only_variable","only_function","sc","variable_and_function","dragTrash","trash","fadeIn","fadeOut","findSingleElement","searching","query","findPathRecursive","starter_index","hierarquia_bottom_up","index_command","full_path","hier","parentsUntil","esta_correto","esta_na_div_correta","new_cmd","findNearbyCommandToAddInFunctionScope","hier_find","is_correct_context","sub_elemento","findBeforeOrAfterCommandToAdd","insertCommandInBlockHierar","all_str_path","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","selectedItem","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","dropdown","onChange","$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","selected","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","html","selectOnKeydown","renderMenu","dom_where_render","dom_command","menu_div","collapsed","toggle","addCaseToSwitch","SwitchManagement","ContextualizedMenu","GenericExpressionManagement","dowhiletrue_dom","functioncall_dom","timer","div_to_render","expression_array","WatchJS","unwatch","watch","s","types_included","exp_conditional","renderElements","open_or_close","lixeira","posX","posY","Sortable","create","animation","ghostClass","group","put","sort","onStart","onMove","onEnd","onAdd","removeElement","indice","first","opening","div_temp","renderFinalAddElements","renderParenthesis","renderStartAddOperator","renderOperatorMenu","renderAddParenthesis","parentheses_activate","addParentheses","delay","show","actual_target","renderGhostParentheses","floating","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","position","ghost_parenthesis","menu_final","getArithmeticOperators","getLogicOperators","getRelationalOperators","div_higher","sera","is_last","button","getSeparator","_value","_text","arithmetic_operators","logic_operators","relational_operators","iftrue_dom","reader_dom","togglePasso","var_incrementation","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","input_field","inputWidth","textWidth","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","replaceAll","openInputToValue","sub_menu","math","arrangement","conversion","is_there","include_constant","openInputToFunction","openInputToVariable","RepeatNTimesManagement","tmpStr","function_selected","field","rendered","focusout","fn","font","fakeEl","attr","whiletrue_dom","addHandlersManager","_function_obj","_writer_dom","item_div","content_element","writer_dom","handle","random","newIndex","oldIndex","replaceWith","newlineBtn","setPopup","_addHandlerIconAdd","insert_after","after_which","icon_add_item","_event","div_parent_with_handler","new_div_item","new_related_menu","addHandlerIconAdd","addContent","_ref_object","_menu_var_or_value","_ref_object_content","counter_new_functions","counter_new_parameters","ivprog_version","VersionInfo","version","globalChangeListeners","functionsChangeListeners","_testCases","isRunning","studentGrade","mainFunction","function_comment","addFunction","generator","CodeManagement","runCodeAssessment","AlgorithmManagement","insertContext","watchW","addFunctionHandler","new_function","renderFunction","addParameter","new_parameter","renderParameter","updateReturnType","new_type","new_dimensions","removeFunction","minimizeFunction","is_hidden","enableNameFunctionUpdate","VariablesManagement","slideToggle","renderFunctionReturn","function_element","tm","cont","appender","function_index","updateSequenceLocals","addSortableHandler","updateSequenceParameters","teste","sticky","scrollContext","observeChanges","onStick","onBottom","onUnstick","onReposition","onScroll","isVisible","onTop","elementTop","elementHeight","containerTop","containerHeight","evento_drag","updateProgramObjDrag","nodes","start_index","path_target","index_each","path_relative","indice_na_raiz","is_in_case_switch","command_start_point","block_to_insert","command_in_drag","prepareDragHandler","id_function","n_group","itemEl","to","from","initVisualUI","showStopButton","runCode","showRunButton","stopExecution","toggleVisualCoding","toggleTextualCoding","is_iassign","toggleConsole","full_screen","time_show","listWithHandle","updateSequenceFunction","listGlobalsHandle","updateSequenceGlobals","strCode","settingsProgrammingTypes","TextEditor","getEvaluationCallback","scheduleCall","is_running","removeParameter","parameter_container","updateParameterType","function_name","__","enableNameParameterUpdate","updateParameterName","parameter_var","new_name","parameter_obj_dom","variableNameAlreadyExists","name_var","updateFunctionName","function_var","function_obj_dom","functionNameAlreadyExists","opened_name_parameter","opened_input_parameter","parent_node","select","opened_name_function","opened_input","previousPadding","addFunctionChangeListener","addGlobalChangeListener","removeGlobalListener","removeFunctionListener","scheduled_call","cancelPendingInputRequests","counter_new_globals","addGlobal","is_from_click","new_global","newe","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","parseFloat","parseInt","opened_name_value_global_var","opened_input_value_global_ar","changed","opened_name_global","opened_input_global","input_name","opened_name_value_vector_global_","opened_input_value_vector_global_","COMMAND_TYPES","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","codeEditor","theme","lineNumbers","matchBrackets","autoCloseBrackets","fixedGutter","styleActiveLine","setOption","refresh","setValue","getValue","renderErrorMessage","dom_obj_target","message_text","transition","closable","movePopup","boundary","preserve","className","onHidden","$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;QCVA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA;QACA;QACA;;;;;;;;;;;;;;;;;;;;;;;ACvJA;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,oCAAoC,GAAG;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA,6BAA6B,OAAO;AACpC;AACA,aAAa,qBAAqB;AAClC;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,kBAAkB,+BAA+B;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,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0BAA0B;AACzD,aAAa,0BAA0B;AACvC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE,qCAAqC;AACrC;;AAEA;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;;AAEA;;;;AAIA;;;;AAIA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,iBAAiB,mBAAO,CAAC,oDAAc;;AAEvC,OAAO;AACP,Y;;;;;;;;;;;;ACziBA;AAAA;;AAEe;AACbA,eAAa,EAAE,MADF;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,QARI;AASbC,YAAU,EAAE,WATC;AAUbC,YAAU,EAAE,WAVC;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,WAAS,EAAE,SAnBE;AAoBbC,MAAI,EAAE,KApBO;AAqBbC,MAAI,EAAE,KArBO;AAsBbC,MAAI,EAAE,KAtBO;AAuBbC,OAAK,EAAE,MAvBM;AAwBbC,MAAI,EAAE,KAxBO;AAyBbC,MAAI,EAAE,KAzBO;AA0BbC,MAAI,EAAE,KA1BO;AA2BbC,SAAO,EAAE,QA3BI;AA4BbC,SAAO,EAAE,QA5BI;AA6BbC,MAAI,EAAE,SA7BO;AA8BbC,MAAI,EAAE,SA9BO;AA+BbC,OAAK,EAAE;AA/BM,CAAf,E;;;;;;;;;;;;ACFA;AAAA;;;AAGe;AACbC,UAAQ,EAAE,YADG;AAEbC,QAAM,EAAE,IAFK;AAGbC,SAAO,EAAE,MAHI;AAIbC,WAAS,EAAE,OAJE;AAKbC,UAAQ,EAAE;AALG,CAAf,E;;;;;;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIe;AACbC,IAAE,EAAE;AAAEC,SAAK,EAAEC,oDAAT;AAAoBC,aAAS,EAAEC,yDAA/B;AAAwCC,YAAQ,EAAEC,oDAAMA;AAAxD,GADS;AAEbC,IAAE,EAAE;AAAEN,SAAK,EAAEO,oDAAT;AAAoBL,aAAS,EAAEM,yDAA/B;AAAwCJ,YAAQ,EAAEK,oDAAMA;AAAxD,GAFS,CAGb;;AAHa,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,oCAAoC,GAAG;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,uDAAuD,OAAO;AAC9D;AACA,0CAA0C,qBAAqB;AAC/D;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,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+BAA+B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0BAA0B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,0BAA0B;AACtE,yBAAyB,0BAA0B;AACnD;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,OAAO;AACjE;;AAEA;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;;AAEA;;;;AAIA;;;;AAIA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,iBAAiB,mBAAO,CAAC,oDAAc;;AAEvC,OAAO;AACP,Y;;;;;;;;;;;;ACzjBA;AAAA;;AAEe;AACb9C,eAAa,EAAE,QADF;AAEbC,OAAK,EAAE,MAFM;AAGbC,QAAM,EAAE,SAHK;AAIbC,cAAY,EAAE,oBAJD;AAKbC,cAAY,EAAE,iBALD;AAMbC,gBAAc,EAAE,kBANH;AAObC,YAAU,EAAE,WAPC;AAQbC,SAAO,EAAE,aARI;AASbC,YAAU,EAAE,YATC;AAUbC,YAAU,EAAE,aAVC;AA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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAQA;AACA;AACA;AAQA;AAIA;AACA;AACA;AACA;AAEA,IAAM4b,UAAU,GAAG;AACjBC,gBAAc,EAAEC,oEADC;AAEjBC,SAAO,EAAED,6DAFQ;AAGjBE,SAAO,EAAEF,6DAHQ;AAIjBG,cAAY,EAAEH,kEAJG;AAKjBI,SAAO,EAAEJ,6DAAqBI;AALb,CAAnB;AAQA,IAAMC,IAAI,GAAGC,+DAAU,CAACD,IAAxB;AACA,IAAM7sB,gBAAgB,GAAGC,6EAAA,EAAzB;;;;;;;;;;;;;ACrCa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACda;AACb,8CAA8C,cAAc;AAC5D;AACA,kBAAkB,mBAAO,CAAC,yCAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB;AACA;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,OAAO;AACtB,iBAAiB,OAAO;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,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;AC5GY;AACb,8CAA8C,cAAc;AAC5D;AACA,gBAAgB,mBAAO,CAAC,qDAAqB;AAC7C,oBAAoB,mBAAO,CAAC,+CAAkB;AAC9C,oBAAoB,mBAAO,CAAC,6DAAyB;AACrD,iBAAiB,mBAAO,CAAC,2CAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qCAAqC;AAChE;AACA,+BAA+B,sCAAsC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qCAAqC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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A;AACA,4CAA4C,GAAG;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,cAAc,+BAA+B,cAAc;AAC1F;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,GAAG;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,qBAAqB;AAC5D;AACA;AACA;AACA;AACA;AACA,uCAAuC,oBAAoB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,GAAG;AAC7F;AACA;AACA;AACA;AACA;AACA,0FAA0F,GAAG;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,cAAc,+BAA+B,cAAc;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,GAAG;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2BAA2B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,GAAG;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9Qa;AACb,8CAA8C,cAAc;AAC5D;AACA,mBAAmB,mBAAO,CAAC,sDAAuB;AAClD;AACA;AACA;AACA,eAAe,KAAK;AACpB,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7Da;AACb,8CAA8C,cAAc;AAC5D;AACA,sBAAsB,mBAAO,CAAC,0DAAe;AAC7C,4BAA4B,mBAAO,CAAC,kFAA2B;AAC/D,mBAAmB,mBAAO,CAAC,sDAAuB;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,uDAAuD;AACvD;AACA;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2BAA2B;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,6BAA6B,oBAAoB;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,6BAA6B,oBAAoB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACrIa;AACb,8CAA8C,cAAc;AAC5D;AACA,sBAAsB,mBAAO,CAAC,0DAAe;AAC7C;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC3Ba;AACb,8CAA8C,cAAc;AAC5D;AACA,2BAA2B,mBAAO,CAAC,oEAAoB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACnBa;AACb,8CAA8C,cAAc;AAC5D;AACA,qBAAqB,mBAAO,CAAC,qEAAgC;AAC7D,8BAA8B,mBAAO,CAAC,gFAAuB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,oBAAoB;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,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACrFa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACvBa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACjBa;AACb,8CAA8C,cAAc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","file":"main.178e3d646fb79d7bafa6.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// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"main\": 0\n \t};\n\n \tvar deferredModules = [];\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 \tvar jsonpArray = window[\"webpackJsonpivprogCore\"] = window[\"webpackJsonpivprogCore\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"./js/main.js\",\"vendors~main\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\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-2474mOd5E2PQ6MQt/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 \"\\u00026\\u0207\\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\\u0004:\\t:\\u0004;\\t;\\u0004<\\t<\\u0004=\\t=\\u0004>\\t>\\u0004\",\n \"?\\t?\\u0004@\\t@\\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\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\",\n \"\\u0006\\u0003\\u0006\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\\u0007\\u0003\",\n \"\\b\\u0003\\b\\u0003\\b\\u0003\\b\\u0003\\b\\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\\r\\u0003\\r\\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\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0012\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\",\n \"\\u0013\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\",\n \"\\u0014\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\",\n \"\\u0015\\u0003\\u0015\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\\u0016\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\",\n \"\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\",\n \"\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0019\\u0003\\u0019\\u0003\\u0019\\u0003\",\n \"\\u001a\\u0003\\u001a\\u0003\\u001a\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\",\n \"\\u001b\\u0003\\u001b\\u0003\\u001b\\u0003\\u001b\\u0003\\u001b\\u0003\\u001c\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001c\\u0003\\u001c\\u0003\\u001d\\u0003\\u001d\\u0003\",\n \"\\u001d\\u0003\\u001d\\u0003\\u001e\\u0003\\u001e\\u0003\\u001e\\u0003\\u001e\\u0003\",\n \"\\u001f\\u0003\\u001f\\u0003\\u001f\\u0003 \\u0003 \\u0003!\\u0003!\\u0003\\\"\\u0003\",\n \"\\\"\\u0003#\\u0003#\\u0003$\\u0003$\\u0003%\\u0003%\\u0003&\\u0003&\\u0003\\'\\u0003\",\n \"\\'\\u0003(\\u0003(\\u0003(\\u0005(\\u0148\\n(\\u0003)\\u0003)\\u0003*\\u0003*\",\n \"\\u0003+\\u0003+\\u0003,\\u0003,\\u0003-\\u0003-\\u0003-\\u0003-\\u0003-\\u0003\",\n \"-\\u0003-\\u0003-\\u0003-\\u0005-\\u015b\\n-\\u0003.\\u0003.\\u0003/\\u0003/\\u0003\",\n \"0\\u00030\\u00070\\u0163\\n0\\f0\\u000e0\\u0166\\u000b0\\u00031\\u00031\\u0003\",\n \"1\\u00031\\u00032\\u00062\\u016d\\n2\\r2\\u000e2\\u016e\\u00032\\u00032\\u0003\",\n \"2\\u00032\\u00052\\u0175\\n2\\u00032\\u00062\\u0178\\n2\\r2\\u000e2\\u0179\\u0003\",\n \"2\\u00032\\u00032\\u00032\\u00052\\u0180\\n2\\u00032\\u00062\\u0183\\n2\\r2\\u000e\",\n \"2\\u0184\\u00052\\u0187\\n2\\u00033\\u00063\\u018a\\n3\\r3\\u000e3\\u018b\\u0003\",\n \"3\\u00033\\u00063\\u0190\\n3\\r3\\u000e3\\u0191\\u00033\\u00063\\u0195\\n3\\r3\\u000e\",\n \"3\\u0196\\u00033\\u00033\\u00073\\u019b\\n3\\f3\\u000e3\\u019e\\u000b3\\u00033\",\n \"\\u00053\\u01a1\\n3\\u00034\\u00034\\u00054\\u01a5\\n4\\u00034\\u00064\\u01a8\\n\",\n \"4\\r4\\u000e4\\u01a9\\u00035\\u00035\\u00075\\u01ae\\n5\\f5\\u000e5\\u01b1\\u000b\",\n \"5\\u00035\\u00035\\u00036\\u00036\\u00056\\u01b7\\n6\\u00037\\u00037\\u00037\\u0005\",\n \"7\\u01bc\\n7\\u00037\\u00037\\u00038\\u00038\\u00038\\u00038\\u00039\\u00039\\u0003\",\n \":\\u0006:\\u01c7\\n:\\r:\\u000e:\\u01c8\\u0003:\\u0005:\\u01cc\\n:\\u0003;\\u0003\",\n \";\\u0003<\\u0003<\\u0003=\\u0003=\\u0003=\\u0003=\\u0005=\\u01d6\\n=\\u0003>\\u0003\",\n \">\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0005\",\n \">\\u01e3\\n>\\u0003?\\u0003?\\u0003?\\u0003?\\u0003?\\u0003?\\u0003?\\u0003@\\u0003\",\n \"@\\u0003@\\u0003@\\u0007@\\u01f0\\n@\\f@\\u000e@\\u01f3\\u000b@\\u0003@\\u0005\",\n \"@\\u01f6\\n@\\u0003@\\u0003@\\u0003@\\u0003@\\u0003@\\u0007@\\u01fd\\n@\\f@\\u000e\",\n \"@\\u0200\\u000b@\\u0003@\\u0003@\\u0005@\\u0204\\n@\\u0003@\\u0003@\\u0003\\u01fe\",\n \"\\u0002A\\u0003\\u0003\\u0005\\u0004\\u0007\\u0005\\t\\u0006\\u000b\\u0007\\r\\b\",\n \"\\u000f\\t\\u0011\\n\\u0013\\u000b\\u0015\\f\\u0017\\r\\u0019\\u000e\\u001b\\u000f\",\n \"\\u001d\\u0010\\u001f\\u0011!\\u0012#\\u0013%\\u0014\\'\\u0015)\\u0016+\\u0017\",\n \"-\\u0018/\\u00191\\u001a3\\u001b5\\u001c7\\u001d9\\u0002;\\u0002=\\u0002?\\u001e\",\n \"A\\u001fC E!G\\\"I#K$M%O&Q\\'S(U)W*Y+[,]-_.a/c0e1g\\u0002i2k\\u0002m3o4q\\u0002\",\n \"s5u\\u0002w\\u0002y\\u0002{\\u0002}\\u0002\\u007f6\\u0003\\u0002\\u0012\\u0004\",\n \"\\u0002--//\\u0005\\u0002\\'\\',,11\\u0004\\u0002>>@@\\u0005\\u0002C\\\\aac|\\u0006\",\n \"\\u00022;C\\\\aac|\\u0003\\u00022;\\u0003\\u000223\\u0004\\u0002GGgg\\u0006\\u0002\",\n \"\\f\\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\\u021c\\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 \"\\u0002-\\u0003\\u0002\\u0002\\u0002\\u0002/\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"1\\u0003\\u0002\\u0002\\u0002\\u00023\\u0003\\u0002\\u0002\\u0002\\u00025\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00027\\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\\u0002Y\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002[\\u0003\\u0002\\u0002\\u0002\\u0002]\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002_\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"c\\u0003\\u0002\\u0002\\u0002\\u0002e\\u0003\\u0002\\u0002\\u0002\\u0002i\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002m\\u0003\\u0002\\u0002\\u0002\\u0002o\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002s\\u0003\\u0002\\u0002\\u0002\\u0002\\u007f\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0003\\u0081\\u0003\\u0002\\u0002\\u0002\\u0005\\u0089\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0007\\u008e\\u0003\\u0002\\u0002\\u0002\\t\\u0093\\u0003\\u0002\",\n \"\\u0002\\u0002\\u000b\\u0098\\u0003\\u0002\\u0002\\u0002\\r\\u009f\\u0003\\u0002\",\n \"\\u0002\\u0002\\u000f\\u00a3\\u0003\\u0002\\u0002\\u0002\\u0011\\u00a8\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0013\\u00af\\u0003\\u0002\\u0002\\u0002\\u0015\\u00b4\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0017\\u00be\\u0003\\u0002\\u0002\\u0002\\u0019\\u00c4\\u0003\\u0002\",\n \"\\u0002\\u0002\\u001b\\u00cd\\u0003\\u0002\\u0002\\u0002\\u001d\\u00d4\\u0003\\u0002\",\n \"\\u0002\\u0002\\u001f\\u00d8\\u0003\\u0002\\u0002\\u0002!\\u00e3\\u0003\\u0002\",\n \"\\u0002\\u0002#\\u00e8\\u0003\\u0002\\u0002\\u0002%\\u00eb\\u0003\\u0002\\u0002\",\n \"\\u0002\\'\\u00f0\\u0003\\u0002\\u0002\\u0002)\\u00f6\\u0003\\u0002\\u0002\\u0002\",\n \"+\\u00fd\\u0003\\u0002\\u0002\\u0002-\\u0103\\u0003\\u0002\\u0002\\u0002/\\u0109\",\n \"\\u0003\\u0002\\u0002\\u00021\\u0116\\u0003\\u0002\\u0002\\u00023\\u0119\\u0003\",\n \"\\u0002\\u0002\\u00025\\u011e\\u0003\\u0002\\u0002\\u00027\\u0124\\u0003\\u0002\",\n \"\\u0002\\u00029\\u0129\\u0003\\u0002\\u0002\\u0002;\\u012d\\u0003\\u0002\\u0002\",\n \"\\u0002=\\u0131\\u0003\\u0002\\u0002\\u0002?\\u0134\\u0003\\u0002\\u0002\\u0002\",\n \"A\\u0136\\u0003\\u0002\\u0002\\u0002C\\u0138\\u0003\\u0002\\u0002\\u0002E\\u013a\",\n \"\\u0003\\u0002\\u0002\\u0002G\\u013c\\u0003\\u0002\\u0002\\u0002I\\u013e\\u0003\",\n \"\\u0002\\u0002\\u0002K\\u0140\\u0003\\u0002\\u0002\\u0002M\\u0142\\u0003\\u0002\",\n \"\\u0002\\u0002O\\u0147\\u0003\\u0002\\u0002\\u0002Q\\u0149\\u0003\\u0002\\u0002\",\n \"\\u0002S\\u014b\\u0003\\u0002\\u0002\\u0002U\\u014d\\u0003\\u0002\\u0002\\u0002\",\n \"W\\u014f\\u0003\\u0002\\u0002\\u0002Y\\u015a\\u0003\\u0002\\u0002\\u0002[\\u015c\",\n \"\\u0003\\u0002\\u0002\\u0002]\\u015e\\u0003\\u0002\\u0002\\u0002_\\u0160\\u0003\",\n \"\\u0002\\u0002\\u0002a\\u0167\\u0003\\u0002\\u0002\\u0002c\\u0186\\u0003\\u0002\",\n \"\\u0002\\u0002e\\u01a0\\u0003\\u0002\\u0002\\u0002g\\u01a2\\u0003\\u0002\\u0002\",\n \"\\u0002i\\u01ab\\u0003\\u0002\\u0002\\u0002k\\u01b6\\u0003\\u0002\\u0002\\u0002\",\n \"m\\u01b8\\u0003\\u0002\\u0002\\u0002o\\u01bf\\u0003\\u0002\\u0002\\u0002q\\u01c3\",\n \"\\u0003\\u0002\\u0002\\u0002s\\u01cb\\u0003\\u0002\\u0002\\u0002u\\u01cd\\u0003\",\n \"\\u0002\\u0002\\u0002w\\u01cf\\u0003\\u0002\\u0002\\u0002y\\u01d5\\u0003\\u0002\",\n \"\\u0002\\u0002{\\u01e2\\u0003\\u0002\\u0002\\u0002}\\u01e4\\u0003\\u0002\\u0002\",\n \"\\u0002\\u007f\\u0203\\u0003\\u0002\\u0002\\u0002\\u0081\\u0082\\u0007r\\u0002\",\n \"\\u0002\\u0082\\u0083\\u0007t\\u0002\\u0002\\u0083\\u0084\\u0007q\\u0002\\u0002\",\n \"\\u0084\\u0085\\u0007i\\u0002\\u0002\\u0085\\u0086\\u0007t\\u0002\\u0002\\u0086\",\n \"\\u0087\\u0007c\\u0002\\u0002\\u0087\\u0088\\u0007o\\u0002\\u0002\\u0088\\u0004\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0089\\u008a\\u0007t\\u0002\\u0002\\u008a\\u008b\",\n \"\\u0007g\\u0002\\u0002\\u008b\\u008c\\u0007c\\u0002\\u0002\\u008c\\u008d\\u0007\",\n \"n\\u0002\\u0002\\u008d\\u0006\\u0003\\u0002\\u0002\\u0002\\u008e\\u008f\\u0007\",\n \"x\\u0002\\u0002\\u008f\\u0090\\u0007q\\u0002\\u0002\\u0090\\u0091\\u0007k\\u0002\",\n \"\\u0002\\u0091\\u0092\\u0007f\\u0002\\u0002\\u0092\\b\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0093\\u0094\\u0007d\\u0002\\u0002\\u0094\\u0095\\u0007q\\u0002\\u0002\\u0095\",\n \"\\u0096\\u0007q\\u0002\\u0002\\u0096\\u0097\\u0007n\\u0002\\u0002\\u0097\\n\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0098\\u0099\\u0007u\\u0002\\u0002\\u0099\\u009a\\u0007\",\n \"v\\u0002\\u0002\\u009a\\u009b\\u0007t\\u0002\\u0002\\u009b\\u009c\\u0007k\\u0002\",\n \"\\u0002\\u009c\\u009d\\u0007p\\u0002\\u0002\\u009d\\u009e\\u0007i\\u0002\\u0002\",\n \"\\u009e\\f\\u0003\\u0002\\u0002\\u0002\\u009f\\u00a0\\u0007k\\u0002\\u0002\\u00a0\",\n \"\\u00a1\\u0007p\\u0002\\u0002\\u00a1\\u00a2\\u0007v\\u0002\\u0002\\u00a2\\u000e\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00a3\\u00a4\\u0007e\\u0002\\u0002\\u00a4\\u00a5\",\n \"\\u0007j\\u0002\\u0002\\u00a5\\u00a6\\u0007c\\u0002\\u0002\\u00a6\\u00a7\\u0007\",\n \"t\\u0002\\u0002\\u00a7\\u0010\\u0003\\u0002\\u0002\\u0002\\u00a8\\u00a9\\u0007\",\n \"u\\u0002\\u0002\\u00a9\\u00aa\\u0007y\\u0002\\u0002\\u00aa\\u00ab\\u0007k\\u0002\",\n \"\\u0002\\u00ab\\u00ac\\u0007v\\u0002\\u0002\\u00ac\\u00ad\\u0007e\\u0002\\u0002\",\n \"\\u00ad\\u00ae\\u0007j\\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\\u0007g\\u0002\\u0002\\u00b3\\u0014\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00b4\\u00b5\\u0007q\\u0002\\u0002\\u00b5\\u00b6\",\n \"\\u0007v\\u0002\\u0002\\u00b6\\u00b7\\u0007j\\u0002\\u0002\\u00b7\\u00b8\\u0007\",\n \"g\\u0002\\u0002\\u00b8\\u00b9\\u0007t\\u0002\\u0002\\u00b9\\u00ba\\u0007y\\u0002\",\n \"\\u0002\\u00ba\\u00bb\\u0007k\\u0002\\u0002\\u00bb\\u00bc\\u0007u\\u0002\\u0002\",\n \"\\u00bc\\u00bd\\u0007g\\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\\u0007v\\u0002\",\n \"\\u0002\\u00c9\\u00ca\\u0007k\\u0002\\u0002\\u00ca\\u00cb\\u0007q\\u0002\\u0002\",\n \"\\u00cb\\u00cc\\u0007p\\u0002\\u0002\\u00cc\\u001a\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00cd\\u00ce\\u0007t\\u0002\\u0002\\u00ce\\u00cf\\u0007g\\u0002\\u0002\\u00cf\",\n \"\\u00d0\\u0007v\\u0002\\u0002\\u00d0\\u00d1\\u0007w\\u0002\\u0002\\u00d1\\u00d2\",\n \"\\u0007t\\u0002\\u0002\\u00d2\\u00d3\\u0007p\\u0002\\u0002\\u00d3\\u001c\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00d4\\u00d5\\u0007h\\u0002\\u0002\\u00d5\\u00d6\\u0007\",\n \"q\\u0002\\u0002\\u00d6\\u00d7\\u0007t\\u0002\\u0002\\u00d7\\u001e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00d8\\u00d9\\u0007t\\u0002\\u0002\\u00d9\\u00da\\u0007g\\u0002\",\n \"\\u0002\\u00da\\u00db\\u0007r\\u0002\\u0002\\u00db\\u00dc\\u0007g\\u0002\\u0002\",\n \"\\u00dc\\u00dd\\u0007c\\u0002\\u0002\\u00dd\\u00de\\u0007v\\u0002\\u0002\\u00de\",\n \"\\u00df\\u0007a\\u0002\\u0002\\u00df\\u00e0\\u0007h\\u0002\\u0002\\u00e0\\u00e1\",\n \"\\u0007q\\u0002\\u0002\\u00e1\\u00e2\\u0007t\\u0002\\u0002\\u00e2 \\u0003\\u0002\",\n \"\\u0002\\u0002\\u00e3\\u00e4\\u0007h\\u0002\\u0002\\u00e4\\u00e5\\u0007t\\u0002\",\n \"\\u0002\\u00e5\\u00e6\\u0007q\\u0002\\u0002\\u00e6\\u00e7\\u0007o\\u0002\\u0002\",\n \"\\u00e7\\\"\\u0003\\u0002\\u0002\\u0002\\u00e8\\u00e9\\u0007v\\u0002\\u0002\\u00e9\",\n \"\\u00ea\\u0007q\\u0002\\u0002\\u00ea$\\u0003\\u0002\\u0002\\u0002\\u00eb\\u00ec\",\n \"\\u0007r\\u0002\\u0002\\u00ec\\u00ed\\u0007c\\u0002\\u0002\\u00ed\\u00ee\\u0007\",\n \"u\\u0002\\u0002\\u00ee\\u00ef\\u0007u\\u0002\\u0002\\u00ef&\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00f0\\u00f1\\u0007d\\u0002\\u0002\\u00f1\\u00f2\\u0007t\\u0002\\u0002\",\n \"\\u00f2\\u00f3\\u0007g\\u0002\\u0002\\u00f3\\u00f4\\u0007c\\u0002\\u0002\\u00f4\",\n \"\\u00f5\\u0007m\\u0002\\u0002\\u00f5(\\u0003\\u0002\\u0002\\u0002\\u00f6\\u00f7\",\n \"\\u0007t\\u0002\\u0002\\u00f7\\u00f8\\u0007g\\u0002\\u0002\\u00f8\\u00f9\\u0007\",\n \"r\\u0002\\u0002\\u00f9\\u00fa\\u0007g\\u0002\\u0002\\u00fa\\u00fb\\u0007c\\u0002\",\n \"\\u0002\\u00fb\\u00fc\\u0007v\\u0002\\u0002\\u00fc*\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00fd\\u00fe\\u0007w\\u0002\\u0002\\u00fe\\u00ff\\u0007p\\u0002\\u0002\\u00ff\",\n \"\\u0100\\u0007v\\u0002\\u0002\\u0100\\u0101\\u0007k\\u0002\\u0002\\u0101\\u0102\",\n \"\\u0007n\\u0002\\u0002\\u0102,\\u0003\\u0002\\u0002\\u0002\\u0103\\u0104\\u0007\",\n \"y\\u0002\\u0002\\u0104\\u0105\\u0007j\\u0002\\u0002\\u0105\\u0106\\u0007k\\u0002\",\n \"\\u0002\\u0106\\u0107\\u0007n\\u0002\\u0002\\u0107\\u0108\\u0007g\\u0002\\u0002\",\n \"\\u0108.\\u0003\\u0002\\u0002\\u0002\\u0109\\u010a\\u0007t\\u0002\\u0002\\u010a\",\n \"\\u010b\\u0007g\\u0002\\u0002\\u010b\\u010c\\u0007r\\u0002\\u0002\\u010c\\u010d\",\n \"\\u0007g\\u0002\\u0002\\u010d\\u010e\\u0007c\\u0002\\u0002\\u010e\\u010f\\u0007\",\n \"v\\u0002\\u0002\\u010f\\u0110\\u0007a\\u0002\\u0002\\u0110\\u0111\\u0007y\\u0002\",\n \"\\u0002\\u0111\\u0112\\u0007j\\u0002\\u0002\\u0112\\u0113\\u0007k\\u0002\\u0002\",\n \"\\u0113\\u0114\\u0007n\\u0002\\u0002\\u0114\\u0115\\u0007g\\u0002\\u0002\\u0115\",\n \"0\\u0003\\u0002\\u0002\\u0002\\u0116\\u0117\\u0007k\\u0002\\u0002\\u0117\\u0118\",\n \"\\u0007h\\u0002\\u0002\\u01182\\u0003\\u0002\\u0002\\u0002\\u0119\\u011a\\u0007\",\n \"g\\u0002\\u0002\\u011a\\u011b\\u0007n\\u0002\\u0002\\u011b\\u011c\\u0007u\\u0002\",\n \"\\u0002\\u011c\\u011d\\u0007g\\u0002\\u0002\\u011d4\\u0003\\u0002\\u0002\\u0002\",\n \"\\u011e\\u011f\\u0007h\\u0002\\u0002\\u011f\\u0120\\u0007c\\u0002\\u0002\\u0120\",\n \"\\u0121\\u0007n\\u0002\\u0002\\u0121\\u0122\\u0007u\\u0002\\u0002\\u0122\\u0123\",\n \"\\u0007g\\u0002\\u0002\\u01236\\u0003\\u0002\\u0002\\u0002\\u0124\\u0125\\u0007\",\n \"v\\u0002\\u0002\\u0125\\u0126\\u0007t\\u0002\\u0002\\u0126\\u0127\\u0007w\\u0002\",\n \"\\u0002\\u0127\\u0128\\u0007g\\u0002\\u0002\\u01288\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0129\\u012a\\u0007p\\u0002\\u0002\\u012a\\u012b\\u0007q\\u0002\\u0002\\u012b\",\n \"\\u012c\\u0007v\\u0002\\u0002\\u012c:\\u0003\\u0002\\u0002\\u0002\\u012d\\u012e\",\n \"\\u0007C\\u0002\\u0002\\u012e\\u012f\\u0007P\\u0002\\u0002\\u012f\\u0130\\u0007\",\n \"F\\u0002\\u0002\\u0130<\\u0003\\u0002\\u0002\\u0002\\u0131\\u0132\\u0007Q\\u0002\",\n \"\\u0002\\u0132\\u0133\\u0007T\\u0002\\u0002\\u0133>\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0134\\u0135\\u0007(\\u0002\\u0002\\u0135@\\u0003\\u0002\\u0002\\u0002\\u0136\",\n \"\\u0137\\u0007*\\u0002\\u0002\\u0137B\\u0003\\u0002\\u0002\\u0002\\u0138\\u0139\",\n \"\\u0007+\\u0002\\u0002\\u0139D\\u0003\\u0002\\u0002\\u0002\\u013a\\u013b\\u0007\",\n \"]\\u0002\\u0002\\u013bF\\u0003\\u0002\\u0002\\u0002\\u013c\\u013d\\u0007_\\u0002\",\n \"\\u0002\\u013dH\\u0003\\u0002\\u0002\\u0002\\u013e\\u013f\\u0007}\\u0002\\u0002\",\n \"\\u013fJ\\u0003\\u0002\\u0002\\u0002\\u0140\\u0141\\u0007\\u007f\\u0002\\u0002\",\n \"\\u0141L\\u0003\\u0002\\u0002\\u0002\\u0142\\u0143\\u0007.\\u0002\\u0002\\u0143\",\n \"N\\u0003\\u0002\\u0002\\u0002\\u0144\\u0145\\u0007>\\u0002\\u0002\\u0145\\u0148\",\n \"\\u0007/\\u0002\\u0002\\u0146\\u0148\\u0007\\u2192\\u0002\\u0002\\u0147\\u0144\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0147\\u0146\\u0003\\u0002\\u0002\\u0002\\u0148P\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0149\\u014a\\t\\u0002\\u0002\\u0002\\u014aR\\u0003\",\n \"\\u0002\\u0002\\u0002\\u014b\\u014c\\t\\u0003\\u0002\\u0002\\u014cT\\u0003\\u0002\",\n \"\\u0002\\u0002\\u014d\\u014e\\u0005;\\u001e\\u0002\\u014eV\\u0003\\u0002\\u0002\",\n \"\\u0002\\u014f\\u0150\\u0005=\\u001f\\u0002\\u0150X\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0151\\u0152\\u0007@\\u0002\\u0002\\u0152\\u015b\\u0007?\\u0002\\u0002\\u0153\",\n \"\\u0154\\u0007?\\u0002\\u0002\\u0154\\u015b\\u0007?\\u0002\\u0002\\u0155\\u0156\",\n \"\\u0007>\\u0002\\u0002\\u0156\\u015b\\u0007?\\u0002\\u0002\\u0157\\u015b\\t\\u0004\",\n \"\\u0002\\u0002\\u0158\\u0159\\u0007#\\u0002\\u0002\\u0159\\u015b\\u0007?\\u0002\",\n \"\\u0002\\u015a\\u0151\\u0003\\u0002\\u0002\\u0002\\u015a\\u0153\\u0003\\u0002\\u0002\",\n \"\\u0002\\u015a\\u0155\\u0003\\u0002\\u0002\\u0002\\u015a\\u0157\\u0003\\u0002\\u0002\",\n \"\\u0002\\u015a\\u0158\\u0003\\u0002\\u0002\\u0002\\u015bZ\\u0003\\u0002\\u0002\",\n \"\\u0002\\u015c\\u015d\\u0007<\\u0002\\u0002\\u015d\\\\\\u0003\\u0002\\u0002\\u0002\",\n \"\\u015e\\u015f\\u00059\\u001d\\u0002\\u015f^\\u0003\\u0002\\u0002\\u0002\\u0160\",\n \"\\u0164\\t\\u0005\\u0002\\u0002\\u0161\\u0163\\t\\u0006\\u0002\\u0002\\u0162\\u0161\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0163\\u0166\\u0003\\u0002\\u0002\\u0002\\u0164\\u0162\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0164\\u0165\\u0003\\u0002\\u0002\\u0002\\u0165`\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0166\\u0164\\u0003\\u0002\\u0002\\u0002\\u0167\\u0168\",\n \"\\u0005_0\\u0002\\u0168\\u0169\\u00070\\u0002\\u0002\\u0169\\u016a\\u0005_0\\u0002\",\n \"\\u016ab\\u0003\\u0002\\u0002\\u0002\\u016b\\u016d\\t\\u0007\\u0002\\u0002\\u016c\",\n \"\\u016b\\u0003\\u0002\\u0002\\u0002\\u016d\\u016e\\u0003\\u0002\\u0002\\u0002\\u016e\",\n \"\\u016c\\u0003\\u0002\\u0002\\u0002\\u016e\\u016f\\u0003\\u0002\\u0002\\u0002\\u016f\",\n \"\\u0187\\u0003\\u0002\\u0002\\u0002\\u0170\\u0171\\u00072\\u0002\\u0002\\u0171\",\n \"\\u0175\\u0007z\\u0002\\u0002\\u0172\\u0173\\u00072\\u0002\\u0002\\u0173\\u0175\",\n \"\\u0007Z\\u0002\\u0002\\u0174\\u0170\\u0003\\u0002\\u0002\\u0002\\u0174\\u0172\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0175\\u0177\\u0003\\u0002\\u0002\\u0002\\u0176\\u0178\",\n \"\\u0005u;\\u0002\\u0177\\u0176\\u0003\\u0002\\u0002\\u0002\\u0178\\u0179\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0179\\u0177\\u0003\\u0002\\u0002\\u0002\\u0179\\u017a\\u0003\",\n \"\\u0002\\u0002\\u0002\\u017a\\u0187\\u0003\\u0002\\u0002\\u0002\\u017b\\u017c\\u0007\",\n \"2\\u0002\\u0002\\u017c\\u0180\\u0007d\\u0002\\u0002\\u017d\\u017e\\u00072\\u0002\",\n \"\\u0002\\u017e\\u0180\\u0007D\\u0002\\u0002\\u017f\\u017b\\u0003\\u0002\\u0002\",\n \"\\u0002\\u017f\\u017d\\u0003\\u0002\\u0002\\u0002\\u0180\\u0182\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0181\\u0183\\t\\b\\u0002\\u0002\\u0182\\u0181\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0183\\u0184\\u0003\\u0002\\u0002\\u0002\\u0184\\u0182\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0184\\u0185\\u0003\\u0002\\u0002\\u0002\\u0185\\u0187\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0186\\u016c\\u0003\\u0002\\u0002\\u0002\\u0186\\u0174\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0186\\u017f\\u0003\\u0002\\u0002\\u0002\\u0187d\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0188\\u018a\\t\\u0007\\u0002\\u0002\\u0189\\u0188\\u0003\\u0002\\u0002\\u0002\",\n \"\\u018a\\u018b\\u0003\\u0002\\u0002\\u0002\\u018b\\u0189\\u0003\\u0002\\u0002\\u0002\",\n \"\\u018b\\u018c\\u0003\\u0002\\u0002\\u0002\\u018c\\u018d\\u0003\\u0002\\u0002\\u0002\",\n \"\\u018d\\u018f\\u00070\\u0002\\u0002\\u018e\\u0190\\t\\u0007\\u0002\\u0002\\u018f\",\n \"\\u018e\\u0003\\u0002\\u0002\\u0002\\u0190\\u0191\\u0003\\u0002\\u0002\\u0002\\u0191\",\n \"\\u018f\\u0003\\u0002\\u0002\\u0002\\u0191\\u0192\\u0003\\u0002\\u0002\\u0002\\u0192\",\n \"\\u01a1\\u0003\\u0002\\u0002\\u0002\\u0193\\u0195\\t\\u0007\\u0002\\u0002\\u0194\",\n \"\\u0193\\u0003\\u0002\\u0002\\u0002\\u0195\\u0196\\u0003\\u0002\\u0002\\u0002\\u0196\",\n \"\\u0194\\u0003\\u0002\\u0002\\u0002\\u0196\\u0197\\u0003\\u0002\\u0002\\u0002\\u0197\",\n \"\\u0198\\u0003\\u0002\\u0002\\u0002\\u0198\\u019c\\u00070\\u0002\\u0002\\u0199\",\n \"\\u019b\\t\\u0007\\u0002\\u0002\\u019a\\u0199\\u0003\\u0002\\u0002\\u0002\\u019b\",\n \"\\u019e\\u0003\\u0002\\u0002\\u0002\\u019c\\u019a\\u0003\\u0002\\u0002\\u0002\\u019c\",\n \"\\u019d\\u0003\\u0002\\u0002\\u0002\\u019d\\u019f\\u0003\\u0002\\u0002\\u0002\\u019e\",\n \"\\u019c\\u0003\\u0002\\u0002\\u0002\\u019f\\u01a1\\u0005g4\\u0002\\u01a0\\u0189\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a0\\u0194\\u0003\\u0002\\u0002\\u0002\\u01a1f\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a2\\u01a4\\t\\t\\u0002\\u0002\\u01a3\\u01a5\\t\\u0002\",\n \"\\u0002\\u0002\\u01a4\\u01a3\\u0003\\u0002\\u0002\\u0002\\u01a4\\u01a5\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01a5\\u01a7\\u0003\\u0002\\u0002\\u0002\\u01a6\\u01a8\\t\\u0007\",\n \"\\u0002\\u0002\\u01a7\\u01a6\\u0003\\u0002\\u0002\\u0002\\u01a8\\u01a9\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01a9\\u01a7\\u0003\\u0002\\u0002\\u0002\\u01a9\\u01aa\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01aah\\u0003\\u0002\\u0002\\u0002\\u01ab\\u01af\\u0007$\\u0002\",\n \"\\u0002\\u01ac\\u01ae\\u0005k6\\u0002\\u01ad\\u01ac\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01ae\\u01b1\\u0003\\u0002\\u0002\\u0002\\u01af\\u01ad\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01af\\u01b0\\u0003\\u0002\\u0002\\u0002\\u01b0\\u01b2\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01b1\\u01af\\u0003\\u0002\\u0002\\u0002\\u01b2\\u01b3\\u0007$\\u0002\\u0002\",\n \"\\u01b3j\\u0003\\u0002\\u0002\\u0002\\u01b4\\u01b7\\n\\n\\u0002\\u0002\\u01b5\\u01b7\",\n \"\\u0005y=\\u0002\\u01b6\\u01b4\\u0003\\u0002\\u0002\\u0002\\u01b6\\u01b5\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01b7l\\u0003\\u0002\\u0002\\u0002\\u01b8\\u01bb\\u0007\",\n \")\\u0002\\u0002\\u01b9\\u01bc\\u0005y=\\u0002\\u01ba\\u01bc\\n\\u000b\\u0002\\u0002\",\n \"\\u01bb\\u01b9\\u0003\\u0002\\u0002\\u0002\\u01bb\\u01ba\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01bc\\u01bd\\u0003\\u0002\\u0002\\u0002\\u01bd\\u01be\\u0007)\\u0002\\u0002\",\n \"\\u01ben\\u0003\\u0002\\u0002\\u0002\\u01bf\\u01c0\\t\\f\\u0002\\u0002\\u01c0\\u01c1\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c1\\u01c2\\b8\\u0002\\u0002\\u01c2p\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01c3\\u01c4\\u0007=\\u0002\\u0002\\u01c4r\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01c5\\u01c7\\t\\r\\u0002\\u0002\\u01c6\\u01c5\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c7\\u01c8\\u0003\\u0002\\u0002\\u0002\\u01c8\\u01c6\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c8\\u01c9\\u0003\\u0002\\u0002\\u0002\\u01c9\\u01cc\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01ca\\u01cc\\u0005q9\\u0002\\u01cb\\u01c6\\u0003\\u0002\\u0002\\u0002\\u01cb\",\n \"\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01cct\\u0003\\u0002\\u0002\\u0002\\u01cd\",\n \"\\u01ce\\t\\u000e\\u0002\\u0002\\u01cev\\u0003\\u0002\\u0002\\u0002\\u01cf\\u01d0\",\n \"\\t\\u000f\\u0002\\u0002\\u01d0x\\u0003\\u0002\\u0002\\u0002\\u01d1\\u01d2\\u0007\",\n \"^\\u0002\\u0002\\u01d2\\u01d6\\t\\u0010\\u0002\\u0002\\u01d3\\u01d6\\u0005}?\\u0002\",\n \"\\u01d4\\u01d6\\u0005{>\\u0002\\u01d5\\u01d1\\u0003\\u0002\\u0002\\u0002\\u01d5\",\n \"\\u01d3\\u0003\\u0002\\u0002\\u0002\\u01d5\\u01d4\\u0003\\u0002\\u0002\\u0002\\u01d6\",\n \"z\\u0003\\u0002\\u0002\\u0002\\u01d7\\u01d8\\u0007^\\u0002\\u0002\\u01d8\\u01d9\",\n \"\\t\\u0011\\u0002\\u0002\\u01d9\\u01da\\u0005w<\\u0002\\u01da\\u01db\\u0005w<\\u0002\",\n \"\\u01db\\u01e3\\u0003\\u0002\\u0002\\u0002\\u01dc\\u01dd\\u0007^\\u0002\\u0002\",\n \"\\u01dd\\u01de\\u0005w<\\u0002\\u01de\\u01df\\u0005w<\\u0002\\u01df\\u01e3\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01e0\\u01e1\\u0007^\\u0002\\u0002\\u01e1\\u01e3\\u0005\",\n \"w<\\u0002\\u01e2\\u01d7\\u0003\\u0002\\u0002\\u0002\\u01e2\\u01dc\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01e2\\u01e0\\u0003\\u0002\\u0002\\u0002\\u01e3|\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01e4\\u01e5\\u0007^\\u0002\\u0002\\u01e5\\u01e6\\u0007w\\u0002\",\n \"\\u0002\\u01e6\\u01e7\\u0005u;\\u0002\\u01e7\\u01e8\\u0005u;\\u0002\\u01e8\\u01e9\",\n \"\\u0005u;\\u0002\\u01e9\\u01ea\\u0005u;\\u0002\\u01ea~\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01eb\\u01ec\\u00071\\u0002\\u0002\\u01ec\\u01ed\\u00071\\u0002\\u0002\\u01ed\",\n \"\\u01f1\\u0003\\u0002\\u0002\\u0002\\u01ee\\u01f0\\n\\r\\u0002\\u0002\\u01ef\\u01ee\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01f0\\u01f3\\u0003\\u0002\\u0002\\u0002\\u01f1\\u01ef\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01f1\\u01f2\\u0003\\u0002\\u0002\\u0002\\u01f2\\u01f5\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01f3\\u01f1\\u0003\\u0002\\u0002\\u0002\\u01f4\\u01f6\",\n \"\\u0007\\u000f\\u0002\\u0002\\u01f5\\u01f4\\u0003\\u0002\\u0002\\u0002\\u01f5\\u01f6\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01f6\\u01f7\\u0003\\u0002\\u0002\\u0002\\u01f7\\u0204\",\n \"\\u0007\\f\\u0002\\u0002\\u01f8\\u01f9\\u00071\\u0002\\u0002\\u01f9\\u01fa\\u0007\",\n \",\\u0002\\u0002\\u01fa\\u01fe\\u0003\\u0002\\u0002\\u0002\\u01fb\\u01fd\\u000b\",\n \"\\u0002\\u0002\\u0002\\u01fc\\u01fb\\u0003\\u0002\\u0002\\u0002\\u01fd\\u0200\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01fe\\u01ff\\u0003\\u0002\\u0002\\u0002\\u01fe\\u01fc\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01ff\\u0201\\u0003\\u0002\\u0002\\u0002\\u0200\\u01fe\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0201\\u0202\\u0007,\\u0002\\u0002\\u0202\\u0204\\u0007\",\n \"1\\u0002\\u0002\\u0203\\u01eb\\u0003\\u0002\\u0002\\u0002\\u0203\\u01f8\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0204\\u0205\\u0003\\u0002\\u0002\\u0002\\u0205\\u0206\\b\",\n \"@\\u0003\\u0002\\u0206\\u0080\\u0003\\u0002\\u0002\\u0002\\u001e\\u0002\\u0147\",\n \"\\u015a\\u0164\\u016e\\u0174\\u0179\\u017f\\u0184\\u0186\\u018b\\u0191\\u0196\\u019c\",\n \"\\u01a0\\u01a4\\u01a9\\u01af\\u01b6\\u01bb\\u01c8\\u01cb\\u01d5\\u01e2\\u01f1\\u01f5\",\n \"\\u01fe\\u0203\\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_FOR_ALT = 15;\nivprog.RK_FOR_FROM = 16;\nivprog.RK_FOR_TO = 17;\nivprog.RK_FOR_PASS = 18;\nivprog.RK_BREAK = 19;\nivprog.RK_DO = 20;\nivprog.RK_DO_UNTIL = 21;\nivprog.RK_WHILE = 22;\nivprog.RK_WHILE_ALT = 23;\nivprog.RK_IF = 24;\nivprog.RK_ELSE = 25;\nivprog.RK_FALSE = 26;\nivprog.RK_TRUE = 27;\nivprog.RK_REFERENCE = 28;\nivprog.OPEN_PARENTHESIS = 29;\nivprog.CLOSE_PARENTHESIS = 30;\nivprog.OPEN_BRACE = 31;\nivprog.CLOSE_BRACE = 32;\nivprog.OPEN_CURLY = 33;\nivprog.CLOSE_CURLY = 34;\nivprog.COMMA = 35;\nivprog.EQUAL = 36;\nivprog.SUM_OP = 37;\nivprog.MULTI_OP = 38;\nivprog.AND_OPERATOR = 39;\nivprog.OR_OPERATOR = 40;\nivprog.RELATIONAL_OPERATOR = 41;\nivprog.COLON = 42;\nivprog.NOT_OPERATOR = 43;\nivprog.ID = 44;\nivprog.LIB_ID = 45;\nivprog.INTEGER = 46;\nivprog.REAL = 47;\nivprog.STRING = 48;\nivprog.CHARACTER = 49;\nivprog.WHITESPACE = 50;\nivprog.EOS = 51;\nivprog.COMMENTS = 52;\n\nivprog.prototype.channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\" ];\n\nivprog.prototype.modeNames = [ \"DEFAULT_MODE\" ];\n\nivprog.prototype.literalNames = [ null, \"'program'\", \"'real'\", \"'void'\", \n \"'bool'\", \"'string'\", \"'int'\", \"'char'\", \n \"'switch'\", \"'case'\", \"'otherwise'\", \"'const'\", \n \"'function'\", \"'return'\", \"'for'\", \"'repeat_for'\", \n \"'from'\", \"'to'\", \"'pass'\", \"'break'\", \n \"'repeat'\", \"'until'\", \"'while'\", \"'repeat_while'\", \n \"'if'\", \"'else'\", \"'false'\", \"'true'\", \n \"'&'\", \"'('\", \"')'\", \"'['\", \"']'\", \"'{'\", \n \"'}'\", \"','\", null, null, null, null, \n 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_FOR_ALT\", \n \"RK_FOR_FROM\", \"RK_FOR_TO\", \"RK_FOR_PASS\", \n \"RK_BREAK\", \"RK_DO\", \"RK_DO_UNTIL\", \"RK_WHILE\", \n \"RK_WHILE_ALT\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"RK_REFERENCE\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \n \"EQUAL\", \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \n \"OR_OPERATOR\", \"RELATIONAL_OPERATOR\", \n \"COLON\", \"NOT_OPERATOR\", \"ID\", \"LIB_ID\", \n \"INTEGER\", \"REAL\", \"STRING\", \"CHARACTER\", \n \"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_FOR_ALT\", \n \"RK_FOR_FROM\", \"RK_FOR_TO\", \"RK_FOR_PASS\", \n \"RK_BREAK\", \"RK_DO\", \"RK_DO_UNTIL\", \"RK_WHILE\", \n \"RK_WHILE_ALT\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"RK_LOGICAL_NOT\", \"RK_LOGICAL_AND\", \n \"RK_LOGICAL_OR\", \"RK_REFERENCE\", \"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: \"main\",\n $read: \"read\",\n $write: \"write\",\n $numElements: \"total_of_elements\",\n $matrixLines: \"total_of_lines\",\n $matrixColumns: \"total_of_columns\",\n $substring: \"substring\",\n $length: \"length\",\n $uppercase: \"uppercase\",\n $lowercase: \"lowercase\",\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 $castChar: \"to_char\",\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 $rand: \"random\"\n\n}","/**\n * This is the dictionary of the language defined libraries\n */\nexport default {\n $mathLib: \"Mathematic\",\n $ioLib: \"IO\",\n $strLib: \"Text\",\n $arrayLib: \"Array\",\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\";\n/*import * 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-2474J5WqSkHlkoXa/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 \"\\u00026\\u0222\\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\\u0004:\\t:\\u0004;\\t;\\u0004<\\t<\\u0004=\\t=\\u0004>\\t>\\u0004\",\n \"?\\t?\\u0004@\\t@\\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\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0003\\u0010\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0012\\u0003\",\n \"\\u0012\\u0003\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\",\n \"\\u0013\\u0003\\u0013\\u0003\\u0013\\u0003\\u0014\\u0003\\u0014\\u0003\\u0014\\u0003\",\n \"\\u0014\\u0003\\u0014\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\",\n \"\\u0015\\u0003\\u0015\\u0003\\u0015\\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\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0003\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\",\n \"\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\",\n \"\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0003\",\n \"\\u0019\\u0003\\u0019\\u0003\\u0019\\u0003\\u001a\\u0003\\u001a\\u0003\\u001a\\u0003\",\n \"\\u001a\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\\u001b\\u0003\\u001b\\u0003\",\n \"\\u001b\\u0003\\u001b\\u0003\\u001b\\u0003\\u001c\\u0003\\u001c\\u0003\\u001c\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001c\\u0003\\u001c\\u0003\\u001c\\u0003\\u001c\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001d\\u0003\\u001d\\u0003\\u001d\\u0003\\u001d\\u0003\",\n \"\\u001e\\u0003\\u001e\\u0003\\u001f\\u0003\\u001f\\u0003\\u001f\\u0003 \\u0003\",\n \" \\u0003!\\u0003!\\u0003\\\"\\u0003\\\"\\u0003#\\u0003#\\u0003$\\u0003$\\u0003%\\u0003\",\n \"%\\u0003&\\u0003&\\u0003\\'\\u0003\\'\\u0003(\\u0003(\\u0003(\\u0005(\\u0163\\n\",\n \"(\\u0003)\\u0003)\\u0003*\\u0003*\\u0003+\\u0003+\\u0003,\\u0003,\\u0003-\\u0003\",\n \"-\\u0003-\\u0003-\\u0003-\\u0003-\\u0003-\\u0003-\\u0003-\\u0005-\\u0176\\n-\\u0003\",\n \".\\u0003.\\u0003/\\u0003/\\u00030\\u00030\\u00070\\u017e\\n0\\f0\\u000e0\\u0181\",\n \"\\u000b0\\u00031\\u00031\\u00031\\u00031\\u00032\\u00062\\u0188\\n2\\r2\\u000e\",\n \"2\\u0189\\u00032\\u00032\\u00032\\u00032\\u00052\\u0190\\n2\\u00032\\u00062\\u0193\",\n \"\\n2\\r2\\u000e2\\u0194\\u00032\\u00032\\u00032\\u00032\\u00052\\u019b\\n2\\u0003\",\n \"2\\u00062\\u019e\\n2\\r2\\u000e2\\u019f\\u00052\\u01a2\\n2\\u00033\\u00063\\u01a5\",\n \"\\n3\\r3\\u000e3\\u01a6\\u00033\\u00033\\u00063\\u01ab\\n3\\r3\\u000e3\\u01ac\\u0003\",\n \"3\\u00063\\u01b0\\n3\\r3\\u000e3\\u01b1\\u00033\\u00033\\u00073\\u01b6\\n3\\f3\\u000e\",\n \"3\\u01b9\\u000b3\\u00033\\u00053\\u01bc\\n3\\u00034\\u00034\\u00054\\u01c0\\n4\",\n \"\\u00034\\u00064\\u01c3\\n4\\r4\\u000e4\\u01c4\\u00035\\u00035\\u00075\\u01c9\\n\",\n \"5\\f5\\u000e5\\u01cc\\u000b5\\u00035\\u00035\\u00036\\u00036\\u00056\\u01d2\\n\",\n \"6\\u00037\\u00037\\u00037\\u00057\\u01d7\\n7\\u00037\\u00037\\u00038\\u00038\\u0003\",\n \"8\\u00038\\u00039\\u00039\\u0003:\\u0006:\\u01e2\\n:\\r:\\u000e:\\u01e3\\u0003\",\n \":\\u0005:\\u01e7\\n:\\u0003;\\u0003;\\u0003<\\u0003<\\u0003=\\u0003=\\u0003=\\u0003\",\n \"=\\u0005=\\u01f1\\n=\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0003>\\u0003\",\n \">\\u0003>\\u0003>\\u0003>\\u0005>\\u01fe\\n>\\u0003?\\u0003?\\u0003?\\u0003?\\u0003\",\n \"?\\u0003?\\u0003?\\u0003@\\u0003@\\u0003@\\u0003@\\u0007@\\u020b\\n@\\f@\\u000e\",\n \"@\\u020e\\u000b@\\u0003@\\u0005@\\u0211\\n@\\u0003@\\u0003@\\u0003@\\u0003@\\u0003\",\n \"@\\u0007@\\u0218\\n@\\f@\\u000e@\\u021b\\u000b@\\u0003@\\u0003@\\u0005@\\u021f\",\n \"\\n@\\u0003@\\u0003@\\u0003\\u0219\\u0002A\\u0003\\u0003\\u0005\\u0004\\u0007\\u0005\",\n \"\\t\\u0006\\u000b\\u0007\\r\\b\\u000f\\t\\u0011\\n\\u0013\\u000b\\u0015\\f\\u0017\\r\",\n \"\\u0019\\u000e\\u001b\\u000f\\u001d\\u0010\\u001f\\u0011!\\u0012#\\u0013%\\u0014\",\n \"\\'\\u0015)\\u0016+\\u0017-\\u0018/\\u00191\\u001a3\\u001b5\\u001c7\\u001d9\\u0002\",\n \";\\u0002=\\u0002?\\u001eA\\u001fC E!G\\\"I#K$M%O&Q\\'S(U)W*Y+[,]-_.a/c0e1g\",\n \"\\u0002i2k\\u0002m3o4q\\u0002s5u\\u0002w\\u0002y\\u0002{\\u0002}\\u0002\\u007f\",\n \"6\\u0003\\u0002\\u0012\\u0004\\u0002--//\\u0005\\u0002\\'\\',,11\\u0004\\u0002\",\n \">>@@\\u0005\\u0002C\\\\aac|\\u0006\\u00022;C\\\\aac|\\u0003\\u00022;\\u0003\\u0002\",\n \"23\\u0004\\u0002GGgg\\u0006\\u0002\\f\\f\\u000f\\u000f$$^^\\u0006\\u0002\\f\\f\\u000f\",\n \"\\u000f))^^\\u0004\\u0002\\u000b\\u000b\\\"\\\"\\u0004\\u0002\\f\\f\\u000f\\u000f\\u0005\",\n \"\\u00022;CHch\\u0003\\u000229\\n\\u0002$$))^^ddhhppttvv\\u0003\\u000225\\u0002\",\n \"\\u0237\\u0002\\u0003\\u0003\\u0002\\u0002\\u0002\\u0002\\u0005\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u0007\\u0003\\u0002\\u0002\\u0002\\u0002\\t\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u000b\\u0003\\u0002\\u0002\\u0002\\u0002\\r\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u000f\\u0003\\u0002\\u0002\\u0002\\u0002\\u0011\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u0013\\u0003\\u0002\\u0002\\u0002\\u0002\\u0015\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u0017\\u0003\\u0002\\u0002\\u0002\\u0002\\u0019\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u001b\\u0003\\u0002\\u0002\\u0002\\u0002\\u001d\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002\\u001f\\u0003\\u0002\\u0002\\u0002\\u0002!\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002#\\u0003\\u0002\\u0002\\u0002\\u0002%\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002\\'\\u0003\\u0002\\u0002\\u0002\\u0002)\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"+\\u0003\\u0002\\u0002\\u0002\\u0002-\\u0003\\u0002\\u0002\\u0002\\u0002/\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00021\\u0003\\u0002\\u0002\\u0002\\u00023\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00025\\u0003\\u0002\\u0002\\u0002\\u00027\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002?\\u0003\\u0002\\u0002\\u0002\\u0002A\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002C\\u0003\\u0002\\u0002\\u0002\\u0002E\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"G\\u0003\\u0002\\u0002\\u0002\\u0002I\\u0003\\u0002\\u0002\\u0002\\u0002K\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002M\\u0003\\u0002\\u0002\\u0002\\u0002O\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002Q\\u0003\\u0002\\u0002\\u0002\\u0002S\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002U\\u0003\\u0002\\u0002\\u0002\\u0002W\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002Y\\u0003\\u0002\\u0002\\u0002\\u0002[\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"]\\u0003\\u0002\\u0002\\u0002\\u0002_\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002c\\u0003\\u0002\\u0002\\u0002\\u0002e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002i\\u0003\\u0002\\u0002\\u0002\\u0002m\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002o\\u0003\\u0002\\u0002\\u0002\\u0002s\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002\\u007f\\u0003\\u0002\\u0002\\u0002\\u0003\\u0081\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0005\\u008a\\u0003\\u0002\\u0002\\u0002\\u0007\\u008f\\u0003\\u0002\\u0002\\u0002\",\n \"\\t\\u0095\\u0003\\u0002\\u0002\\u0002\\u000b\\u009c\\u0003\\u0002\\u0002\\u0002\",\n \"\\r\\u00a3\\u0003\\u0002\\u0002\\u0002\\u000f\\u00ab\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0011\\u00b5\\u0003\\u0002\\u0002\\u0002\\u0013\\u00bd\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0015\\u00c2\\u0003\\u0002\\u0002\\u0002\\u0017\\u00cc\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0019\\u00d2\\u0003\\u0002\\u0002\\u0002\\u001b\\u00d9\\u0003\\u0002\\u0002\\u0002\",\n \"\\u001d\\u00e1\\u0003\\u0002\\u0002\\u0002\\u001f\\u00e6\\u0003\\u0002\\u0002\\u0002\",\n \"!\\u00f2\\u0003\\u0002\\u0002\\u0002#\\u00f5\\u0003\\u0002\\u0002\\u0002%\\u00f9\",\n \"\\u0003\\u0002\\u0002\\u0002\\'\\u00ff\\u0003\\u0002\\u0002\\u0002)\\u0104\\u0003\",\n \"\\u0002\\u0002\\u0002+\\u010b\\u0003\\u0002\\u0002\\u0002-\\u0113\\u0003\\u0002\",\n \"\\u0002\\u0002/\\u011c\\u0003\\u0002\\u0002\\u00021\\u012c\\u0003\\u0002\\u0002\",\n \"\\u00023\\u012f\\u0003\\u0002\\u0002\\u00025\\u0135\\u0003\\u0002\\u0002\\u0002\",\n \"7\\u013b\\u0003\\u0002\\u0002\\u00029\\u0146\\u0003\\u0002\\u0002\\u0002;\\u014a\",\n \"\\u0003\\u0002\\u0002\\u0002=\\u014c\\u0003\\u0002\\u0002\\u0002?\\u014f\\u0003\",\n \"\\u0002\\u0002\\u0002A\\u0151\\u0003\\u0002\\u0002\\u0002C\\u0153\\u0003\\u0002\",\n \"\\u0002\\u0002E\\u0155\\u0003\\u0002\\u0002\\u0002G\\u0157\\u0003\\u0002\\u0002\",\n \"\\u0002I\\u0159\\u0003\\u0002\\u0002\\u0002K\\u015b\\u0003\\u0002\\u0002\\u0002\",\n \"M\\u015d\\u0003\\u0002\\u0002\\u0002O\\u0162\\u0003\\u0002\\u0002\\u0002Q\\u0164\",\n \"\\u0003\\u0002\\u0002\\u0002S\\u0166\\u0003\\u0002\\u0002\\u0002U\\u0168\\u0003\",\n \"\\u0002\\u0002\\u0002W\\u016a\\u0003\\u0002\\u0002\\u0002Y\\u0175\\u0003\\u0002\",\n \"\\u0002\\u0002[\\u0177\\u0003\\u0002\\u0002\\u0002]\\u0179\\u0003\\u0002\\u0002\",\n \"\\u0002_\\u017b\\u0003\\u0002\\u0002\\u0002a\\u0182\\u0003\\u0002\\u0002\\u0002\",\n \"c\\u01a1\\u0003\\u0002\\u0002\\u0002e\\u01bb\\u0003\\u0002\\u0002\\u0002g\\u01bd\",\n \"\\u0003\\u0002\\u0002\\u0002i\\u01c6\\u0003\\u0002\\u0002\\u0002k\\u01d1\\u0003\",\n \"\\u0002\\u0002\\u0002m\\u01d3\\u0003\\u0002\\u0002\\u0002o\\u01da\\u0003\\u0002\",\n \"\\u0002\\u0002q\\u01de\\u0003\\u0002\\u0002\\u0002s\\u01e6\\u0003\\u0002\\u0002\",\n \"\\u0002u\\u01e8\\u0003\\u0002\\u0002\\u0002w\\u01ea\\u0003\\u0002\\u0002\\u0002\",\n \"y\\u01f0\\u0003\\u0002\\u0002\\u0002{\\u01fd\\u0003\\u0002\\u0002\\u0002}\\u01ff\",\n \"\\u0003\\u0002\\u0002\\u0002\\u007f\\u021e\\u0003\\u0002\\u0002\\u0002\\u0081\\u0082\",\n \"\\u0007r\\u0002\\u0002\\u0082\\u0083\\u0007t\\u0002\\u0002\\u0083\\u0084\\u0007\",\n \"q\\u0002\\u0002\\u0084\\u0085\\u0007i\\u0002\\u0002\\u0085\\u0086\\u0007t\\u0002\",\n \"\\u0002\\u0086\\u0087\\u0007c\\u0002\\u0002\\u0087\\u0088\\u0007o\\u0002\\u0002\",\n \"\\u0088\\u0089\\u0007c\\u0002\\u0002\\u0089\\u0004\\u0003\\u0002\\u0002\\u0002\",\n \"\\u008a\\u008b\\u0007t\\u0002\\u0002\\u008b\\u008c\\u0007g\\u0002\\u0002\\u008c\",\n \"\\u008d\\u0007c\\u0002\\u0002\\u008d\\u008e\\u0007n\\u0002\\u0002\\u008e\\u0006\",\n \"\\u0003\\u0002\\u0002\\u0002\\u008f\\u0090\\u0007x\\u0002\\u0002\\u0090\\u0091\",\n \"\\u0007c\\u0002\\u0002\\u0091\\u0092\\u0007|\\u0002\\u0002\\u0092\\u0093\\u0007\",\n \"k\\u0002\\u0002\\u0093\\u0094\\u0007q\\u0002\\u0002\\u0094\\b\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0095\\u0096\\u0007n\\u0002\\u0002\\u0096\\u0097\\u0007q\\u0002\\u0002\",\n \"\\u0097\\u0098\\u0007i\\u0002\\u0002\\u0098\\u0099\\u0007k\\u0002\\u0002\\u0099\",\n \"\\u009a\\u0007e\\u0002\\u0002\\u009a\\u009b\\u0007q\\u0002\\u0002\\u009b\\n\\u0003\",\n \"\\u0002\\u0002\\u0002\\u009c\\u009d\\u0007e\\u0002\\u0002\\u009d\\u009e\\u0007\",\n \"c\\u0002\\u0002\\u009e\\u009f\\u0007f\\u0002\\u0002\\u009f\\u00a0\\u0007g\\u0002\",\n \"\\u0002\\u00a0\\u00a1\\u0007k\\u0002\\u0002\\u00a1\\u00a2\\u0007c\\u0002\\u0002\",\n \"\\u00a2\\f\\u0003\\u0002\\u0002\\u0002\\u00a3\\u00a4\\u0007k\\u0002\\u0002\\u00a4\",\n \"\\u00a5\\u0007p\\u0002\\u0002\\u00a5\\u00a6\\u0007v\\u0002\\u0002\\u00a6\\u00a7\",\n \"\\u0007g\\u0002\\u0002\\u00a7\\u00a8\\u0007k\\u0002\\u0002\\u00a8\\u00a9\\u0007\",\n \"t\\u0002\\u0002\\u00a9\\u00aa\\u0007q\\u0002\\u0002\\u00aa\\u000e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00ab\\u00ac\\u0007e\\u0002\\u0002\\u00ac\\u00ad\\u0007c\\u0002\",\n \"\\u0002\\u00ad\\u00ae\\u0007t\\u0002\\u0002\\u00ae\\u00af\\u0007c\\u0002\\u0002\",\n \"\\u00af\\u00b0\\u0007e\\u0002\\u0002\\u00b0\\u00b1\\u0007v\\u0002\\u0002\\u00b1\",\n \"\\u00b2\\u0007g\\u0002\\u0002\\u00b2\\u00b3\\u0007t\\u0002\\u0002\\u00b3\\u00b4\",\n \"\\u0007g\\u0002\\u0002\\u00b4\\u0010\\u0003\\u0002\\u0002\\u0002\\u00b5\\u00b6\",\n \"\\u0007g\\u0002\\u0002\\u00b6\\u00b7\\u0007u\\u0002\\u0002\\u00b7\\u00b8\\u0007\",\n \"e\\u0002\\u0002\\u00b8\\u00b9\\u0007q\\u0002\\u0002\\u00b9\\u00ba\\u0007n\\u0002\",\n \"\\u0002\\u00ba\\u00bb\\u0007j\\u0002\\u0002\\u00bb\\u00bc\\u0007c\\u0002\\u0002\",\n \"\\u00bc\\u0012\\u0003\\u0002\\u0002\\u0002\\u00bd\\u00be\\u0007e\\u0002\\u0002\",\n \"\\u00be\\u00bf\\u0007c\\u0002\\u0002\\u00bf\\u00c0\\u0007u\\u0002\\u0002\\u00c0\",\n \"\\u00c1\\u0007q\\u0002\\u0002\\u00c1\\u0014\\u0003\\u0002\\u0002\\u0002\\u00c2\",\n \"\\u00c3\\u0007e\\u0002\\u0002\\u00c3\\u00c4\\u0007q\\u0002\\u0002\\u00c4\\u00c5\",\n \"\\u0007p\\u0002\\u0002\\u00c5\\u00c6\\u0007v\\u0002\\u0002\\u00c6\\u00c7\\u0007\",\n \"t\\u0002\\u0002\\u00c7\\u00c8\\u0007c\\u0002\\u0002\\u00c8\\u00c9\\u0007t\\u0002\",\n \"\\u0002\\u00c9\\u00ca\\u0007k\\u0002\\u0002\\u00ca\\u00cb\\u0007q\\u0002\\u0002\",\n \"\\u00cb\\u0016\\u0003\\u0002\\u0002\\u0002\\u00cc\\u00cd\\u0007e\\u0002\\u0002\",\n \"\\u00cd\\u00ce\\u0007q\\u0002\\u0002\\u00ce\\u00cf\\u0007p\\u0002\\u0002\\u00cf\",\n \"\\u00d0\\u0007u\\u0002\\u0002\\u00d0\\u00d1\\u0007v\\u0002\\u0002\\u00d1\\u0018\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00d2\\u00d3\\u0007h\\u0002\\u0002\\u00d3\\u00d4\",\n \"\\u0007w\\u0002\\u0002\\u00d4\\u00d5\\u0007p\\u0002\\u0002\\u00d5\\u00d6\\u0007\",\n \"e\\u0002\\u0002\\u00d6\\u00d7\\u0007c\\u0002\\u0002\\u00d7\\u00d8\\u0007q\\u0002\",\n \"\\u0002\\u00d8\\u001a\\u0003\\u0002\\u0002\\u0002\\u00d9\\u00da\\u0007f\\u0002\",\n \"\\u0002\\u00da\\u00db\\u0007g\\u0002\\u0002\\u00db\\u00dc\\u0007x\\u0002\\u0002\",\n \"\\u00dc\\u00dd\\u0007q\\u0002\\u0002\\u00dd\\u00de\\u0007n\\u0002\\u0002\\u00de\",\n \"\\u00df\\u0007x\\u0002\\u0002\\u00df\\u00e0\\u0007c\\u0002\\u0002\\u00e0\\u001c\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00e1\\u00e2\\u0007r\\u0002\\u0002\\u00e2\\u00e3\",\n \"\\u0007c\\u0002\\u0002\\u00e3\\u00e4\\u0007t\\u0002\\u0002\\u00e4\\u00e5\\u0007\",\n \"c\\u0002\\u0002\\u00e5\\u001e\\u0003\\u0002\\u0002\\u0002\\u00e6\\u00e7\\u0007\",\n \"t\\u0002\\u0002\\u00e7\\u00e8\\u0007g\\u0002\\u0002\\u00e8\\u00e9\\u0007r\\u0002\",\n \"\\u0002\\u00e9\\u00ea\\u0007k\\u0002\\u0002\\u00ea\\u00eb\\u0007v\\u0002\\u0002\",\n \"\\u00eb\\u00ec\\u0007c\\u0002\\u0002\\u00ec\\u00ed\\u0007a\\u0002\\u0002\\u00ed\",\n \"\\u00ee\\u0007r\\u0002\\u0002\\u00ee\\u00ef\\u0007c\\u0002\\u0002\\u00ef\\u00f0\",\n \"\\u0007t\\u0002\\u0002\\u00f0\\u00f1\\u0007c\\u0002\\u0002\\u00f1 \\u0003\\u0002\",\n \"\\u0002\\u0002\\u00f2\\u00f3\\u0007f\\u0002\\u0002\\u00f3\\u00f4\\u0007g\\u0002\",\n \"\\u0002\\u00f4\\\"\\u0003\\u0002\\u0002\\u0002\\u00f5\\u00f6\\u0007c\\u0002\\u0002\",\n \"\\u00f6\\u00f7\\u0007v\\u0002\\u0002\\u00f7\\u00f8\\u0007g\\u0002\\u0002\\u00f8\",\n \"$\\u0003\\u0002\\u0002\\u0002\\u00f9\\u00fa\\u0007r\\u0002\\u0002\\u00fa\\u00fb\",\n \"\\u0007c\\u0002\\u0002\\u00fb\\u00fc\\u0007u\\u0002\\u0002\\u00fc\\u00fd\\u0007\",\n \"u\\u0002\\u0002\\u00fd\\u00fe\\u0007q\\u0002\\u0002\\u00fe&\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00ff\\u0100\\u0007r\\u0002\\u0002\\u0100\\u0101\\u0007c\\u0002\\u0002\",\n \"\\u0101\\u0102\\u0007t\\u0002\\u0002\\u0102\\u0103\\u0007g\\u0002\\u0002\\u0103\",\n \"(\\u0003\\u0002\\u0002\\u0002\\u0104\\u0105\\u0007t\\u0002\\u0002\\u0105\\u0106\",\n \"\\u0007g\\u0002\\u0002\\u0106\\u0107\\u0007r\\u0002\\u0002\\u0107\\u0108\\u0007\",\n \"k\\u0002\\u0002\\u0108\\u0109\\u0007v\\u0002\\u0002\\u0109\\u010a\\u0007c\\u0002\",\n \"\\u0002\\u010a*\\u0003\\u0002\\u0002\\u0002\\u010b\\u010c\\u0007c\\u0002\\u0002\",\n \"\\u010c\\u010d\\u0007v\\u0002\\u0002\\u010d\\u010e\\u0007g\\u0002\\u0002\\u010e\",\n \"\\u010f\\u0007a\\u0002\\u0002\\u010f\\u0110\\u0007s\\u0002\\u0002\\u0110\\u0111\",\n \"\\u0007w\\u0002\\u0002\\u0111\\u0112\\u0007g\\u0002\\u0002\\u0112,\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0113\\u0114\\u0007g\\u0002\\u0002\\u0114\\u0115\\u0007p\\u0002\",\n \"\\u0002\\u0115\\u0116\\u0007s\\u0002\\u0002\\u0116\\u0117\\u0007w\\u0002\\u0002\",\n \"\\u0117\\u0118\\u0007c\\u0002\\u0002\\u0118\\u0119\\u0007p\\u0002\\u0002\\u0119\",\n \"\\u011a\\u0007v\\u0002\\u0002\\u011a\\u011b\\u0007q\\u0002\\u0002\\u011b.\\u0003\",\n \"\\u0002\\u0002\\u0002\\u011c\\u011d\\u0007t\\u0002\\u0002\\u011d\\u011e\\u0007\",\n \"g\\u0002\\u0002\\u011e\\u011f\\u0007r\\u0002\\u0002\\u011f\\u0120\\u0007k\\u0002\",\n \"\\u0002\\u0120\\u0121\\u0007v\\u0002\\u0002\\u0121\\u0122\\u0007c\\u0002\\u0002\",\n \"\\u0122\\u0123\\u0007a\\u0002\\u0002\\u0123\\u0124\\u0007g\\u0002\\u0002\\u0124\",\n \"\\u0125\\u0007p\\u0002\\u0002\\u0125\\u0126\\u0007s\\u0002\\u0002\\u0126\\u0127\",\n \"\\u0007w\\u0002\\u0002\\u0127\\u0128\\u0007c\\u0002\\u0002\\u0128\\u0129\\u0007\",\n \"p\\u0002\\u0002\\u0129\\u012a\\u0007v\\u0002\\u0002\\u012a\\u012b\\u0007q\\u0002\",\n \"\\u0002\\u012b0\\u0003\\u0002\\u0002\\u0002\\u012c\\u012d\\u0007u\\u0002\\u0002\",\n \"\\u012d\\u012e\\u0007g\\u0002\\u0002\\u012e2\\u0003\\u0002\\u0002\\u0002\\u012f\",\n \"\\u0130\\u0007u\\u0002\\u0002\\u0130\\u0131\\u0007g\\u0002\\u0002\\u0131\\u0132\",\n \"\\u0007p\\u0002\\u0002\\u0132\\u0133\\u0007c\\u0002\\u0002\\u0133\\u0134\\u0007\",\n \"q\\u0002\\u0002\\u01344\\u0003\\u0002\\u0002\\u0002\\u0135\\u0136\\u0007h\\u0002\",\n \"\\u0002\\u0136\\u0137\\u0007c\\u0002\\u0002\\u0137\\u0138\\u0007n\\u0002\\u0002\",\n \"\\u0138\\u0139\\u0007u\\u0002\\u0002\\u0139\\u013a\\u0007q\\u0002\\u0002\\u013a\",\n \"6\\u0003\\u0002\\u0002\\u0002\\u013b\\u013c\\u0007x\\u0002\\u0002\\u013c\\u013d\",\n \"\\u0007g\\u0002\\u0002\\u013d\\u013e\\u0007t\\u0002\\u0002\\u013e\\u013f\\u0007\",\n \"f\\u0002\\u0002\\u013f\\u0140\\u0007c\\u0002\\u0002\\u0140\\u0141\\u0007f\\u0002\",\n \"\\u0002\\u0141\\u0142\\u0007g\\u0002\\u0002\\u0142\\u0143\\u0007k\\u0002\\u0002\",\n \"\\u0143\\u0144\\u0007t\\u0002\\u0002\\u0144\\u0145\\u0007q\\u0002\\u0002\\u0145\",\n \"8\\u0003\\u0002\\u0002\\u0002\\u0146\\u0147\\u0007p\\u0002\\u0002\\u0147\\u0148\",\n \"\\u0007c\\u0002\\u0002\\u0148\\u0149\\u0007q\\u0002\\u0002\\u0149:\\u0003\\u0002\",\n \"\\u0002\\u0002\\u014a\\u014b\\u0007G\\u0002\\u0002\\u014b<\\u0003\\u0002\\u0002\",\n \"\\u0002\\u014c\\u014d\\u0007Q\\u0002\\u0002\\u014d\\u014e\\u0007W\\u0002\\u0002\",\n \"\\u014e>\\u0003\\u0002\\u0002\\u0002\\u014f\\u0150\\u0007(\\u0002\\u0002\\u0150\",\n \"@\\u0003\\u0002\\u0002\\u0002\\u0151\\u0152\\u0007*\\u0002\\u0002\\u0152B\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0153\\u0154\\u0007+\\u0002\\u0002\\u0154D\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0155\\u0156\\u0007]\\u0002\\u0002\\u0156F\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0157\\u0158\\u0007_\\u0002\\u0002\\u0158H\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0159\\u015a\\u0007}\\u0002\\u0002\\u015aJ\\u0003\\u0002\\u0002\\u0002\\u015b\",\n \"\\u015c\\u0007\\u007f\\u0002\\u0002\\u015cL\\u0003\\u0002\\u0002\\u0002\\u015d\",\n \"\\u015e\\u0007.\\u0002\\u0002\\u015eN\\u0003\\u0002\\u0002\\u0002\\u015f\\u0160\",\n \"\\u0007>\\u0002\\u0002\\u0160\\u0163\\u0007/\\u0002\\u0002\\u0161\\u0163\\u0007\",\n \"\\u2192\\u0002\\u0002\\u0162\\u015f\\u0003\\u0002\\u0002\\u0002\\u0162\\u0161\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0163P\\u0003\\u0002\\u0002\\u0002\\u0164\\u0165\\t\\u0002\",\n \"\\u0002\\u0002\\u0165R\\u0003\\u0002\\u0002\\u0002\\u0166\\u0167\\t\\u0003\\u0002\",\n \"\\u0002\\u0167T\\u0003\\u0002\\u0002\\u0002\\u0168\\u0169\\u0005;\\u001e\\u0002\",\n \"\\u0169V\\u0003\\u0002\\u0002\\u0002\\u016a\\u016b\\u0005=\\u001f\\u0002\\u016b\",\n \"X\\u0003\\u0002\\u0002\\u0002\\u016c\\u016d\\u0007@\\u0002\\u0002\\u016d\\u0176\",\n \"\\u0007?\\u0002\\u0002\\u016e\\u016f\\u0007?\\u0002\\u0002\\u016f\\u0176\\u0007\",\n \"?\\u0002\\u0002\\u0170\\u0171\\u0007>\\u0002\\u0002\\u0171\\u0176\\u0007?\\u0002\",\n \"\\u0002\\u0172\\u0176\\t\\u0004\\u0002\\u0002\\u0173\\u0174\\u0007#\\u0002\\u0002\",\n \"\\u0174\\u0176\\u0007?\\u0002\\u0002\\u0175\\u016c\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0175\\u016e\\u0003\\u0002\\u0002\\u0002\\u0175\\u0170\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0175\\u0172\\u0003\\u0002\\u0002\\u0002\\u0175\\u0173\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0176Z\\u0003\\u0002\\u0002\\u0002\\u0177\\u0178\\u0007<\\u0002\\u0002\\u0178\",\n \"\\\\\\u0003\\u0002\\u0002\\u0002\\u0179\\u017a\\u00059\\u001d\\u0002\\u017a^\\u0003\",\n \"\\u0002\\u0002\\u0002\\u017b\\u017f\\t\\u0005\\u0002\\u0002\\u017c\\u017e\\t\\u0006\",\n \"\\u0002\\u0002\\u017d\\u017c\\u0003\\u0002\\u0002\\u0002\\u017e\\u0181\\u0003\\u0002\",\n \"\\u0002\\u0002\\u017f\\u017d\\u0003\\u0002\\u0002\\u0002\\u017f\\u0180\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0180`\\u0003\\u0002\\u0002\\u0002\\u0181\\u017f\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0182\\u0183\\u0005_0\\u0002\\u0183\\u0184\\u00070\\u0002\\u0002\",\n \"\\u0184\\u0185\\u0005_0\\u0002\\u0185b\\u0003\\u0002\\u0002\\u0002\\u0186\\u0188\",\n \"\\t\\u0007\\u0002\\u0002\\u0187\\u0186\\u0003\\u0002\\u0002\\u0002\\u0188\\u0189\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0189\\u0187\\u0003\\u0002\\u0002\\u0002\\u0189\\u018a\",\n \"\\u0003\\u0002\\u0002\\u0002\\u018a\\u01a2\\u0003\\u0002\\u0002\\u0002\\u018b\\u018c\",\n \"\\u00072\\u0002\\u0002\\u018c\\u0190\\u0007z\\u0002\\u0002\\u018d\\u018e\\u0007\",\n \"2\\u0002\\u0002\\u018e\\u0190\\u0007Z\\u0002\\u0002\\u018f\\u018b\\u0003\\u0002\",\n \"\\u0002\\u0002\\u018f\\u018d\\u0003\\u0002\\u0002\\u0002\\u0190\\u0192\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0191\\u0193\\u0005u;\\u0002\\u0192\\u0191\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0193\\u0194\\u0003\\u0002\\u0002\\u0002\\u0194\\u0192\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0194\\u0195\\u0003\\u0002\\u0002\\u0002\\u0195\\u01a2\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0196\\u0197\\u00072\\u0002\\u0002\\u0197\\u019b\\u0007d\\u0002\\u0002\",\n \"\\u0198\\u0199\\u00072\\u0002\\u0002\\u0199\\u019b\\u0007D\\u0002\\u0002\\u019a\",\n \"\\u0196\\u0003\\u0002\\u0002\\u0002\\u019a\\u0198\\u0003\\u0002\\u0002\\u0002\\u019b\",\n \"\\u019d\\u0003\\u0002\\u0002\\u0002\\u019c\\u019e\\t\\b\\u0002\\u0002\\u019d\\u019c\",\n \"\\u0003\\u0002\\u0002\\u0002\\u019e\\u019f\\u0003\\u0002\\u0002\\u0002\\u019f\\u019d\",\n \"\\u0003\\u0002\\u0002\\u0002\\u019f\\u01a0\\u0003\\u0002\\u0002\\u0002\\u01a0\\u01a2\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a1\\u0187\\u0003\\u0002\\u0002\\u0002\\u01a1\\u018f\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a1\\u019a\\u0003\\u0002\\u0002\\u0002\\u01a2d\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a3\\u01a5\\t\\u0007\\u0002\\u0002\\u01a4\\u01a3\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a5\\u01a6\\u0003\\u0002\\u0002\\u0002\\u01a6\\u01a4\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a6\\u01a7\\u0003\\u0002\\u0002\\u0002\\u01a7\\u01a8\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01a8\\u01aa\\u00070\\u0002\\u0002\\u01a9\\u01ab\",\n \"\\t\\u0007\\u0002\\u0002\\u01aa\\u01a9\\u0003\\u0002\\u0002\\u0002\\u01ab\\u01ac\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01ac\\u01aa\\u0003\\u0002\\u0002\\u0002\\u01ac\\u01ad\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01ad\\u01bc\\u0003\\u0002\\u0002\\u0002\\u01ae\\u01b0\",\n \"\\t\\u0007\\u0002\\u0002\\u01af\\u01ae\\u0003\\u0002\\u0002\\u0002\\u01b0\\u01b1\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01b1\\u01af\\u0003\\u0002\\u0002\\u0002\\u01b1\\u01b2\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01b2\\u01b3\\u0003\\u0002\\u0002\\u0002\\u01b3\\u01b7\",\n \"\\u00070\\u0002\\u0002\\u01b4\\u01b6\\t\\u0007\\u0002\\u0002\\u01b5\\u01b4\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01b6\\u01b9\\u0003\\u0002\\u0002\\u0002\\u01b7\\u01b5\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01b7\\u01b8\\u0003\\u0002\\u0002\\u0002\\u01b8\\u01ba\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01b9\\u01b7\\u0003\\u0002\\u0002\\u0002\\u01ba\\u01bc\\u0005\",\n \"g4\\u0002\\u01bb\\u01a4\\u0003\\u0002\\u0002\\u0002\\u01bb\\u01af\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01bcf\\u0003\\u0002\\u0002\\u0002\\u01bd\\u01bf\\t\\t\\u0002\\u0002\",\n \"\\u01be\\u01c0\\t\\u0002\\u0002\\u0002\\u01bf\\u01be\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01bf\\u01c0\\u0003\\u0002\\u0002\\u0002\\u01c0\\u01c2\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c1\\u01c3\\t\\u0007\\u0002\\u0002\\u01c2\\u01c1\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c3\\u01c4\\u0003\\u0002\\u0002\\u0002\\u01c4\\u01c2\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c4\\u01c5\\u0003\\u0002\\u0002\\u0002\\u01c5h\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c6\\u01ca\\u0007$\\u0002\\u0002\\u01c7\\u01c9\\u0005k6\\u0002\\u01c8\\u01c7\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01c9\\u01cc\\u0003\\u0002\\u0002\\u0002\\u01ca\\u01c8\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01ca\\u01cb\\u0003\\u0002\\u0002\\u0002\\u01cb\\u01cd\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01cc\\u01ca\\u0003\\u0002\\u0002\\u0002\\u01cd\\u01ce\",\n \"\\u0007$\\u0002\\u0002\\u01cej\\u0003\\u0002\\u0002\\u0002\\u01cf\\u01d2\\n\\n\\u0002\",\n \"\\u0002\\u01d0\\u01d2\\u0005y=\\u0002\\u01d1\\u01cf\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01d1\\u01d0\\u0003\\u0002\\u0002\\u0002\\u01d2l\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01d3\\u01d6\\u0007)\\u0002\\u0002\\u01d4\\u01d7\\u0005y=\\u0002\\u01d5\\u01d7\",\n \"\\n\\u000b\\u0002\\u0002\\u01d6\\u01d4\\u0003\\u0002\\u0002\\u0002\\u01d6\\u01d5\",\n \"\\u0003\\u0002\\u0002\\u0002\\u01d7\\u01d8\\u0003\\u0002\\u0002\\u0002\\u01d8\\u01d9\",\n \"\\u0007)\\u0002\\u0002\\u01d9n\\u0003\\u0002\\u0002\\u0002\\u01da\\u01db\\t\\f\\u0002\",\n \"\\u0002\\u01db\\u01dc\\u0003\\u0002\\u0002\\u0002\\u01dc\\u01dd\\b8\\u0002\\u0002\",\n \"\\u01ddp\\u0003\\u0002\\u0002\\u0002\\u01de\\u01df\\u0007=\\u0002\\u0002\\u01df\",\n \"r\\u0003\\u0002\\u0002\\u0002\\u01e0\\u01e2\\t\\r\\u0002\\u0002\\u01e1\\u01e0\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01e2\\u01e3\\u0003\\u0002\\u0002\\u0002\\u01e3\\u01e1\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01e3\\u01e4\\u0003\\u0002\\u0002\\u0002\\u01e4\\u01e7\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01e5\\u01e7\\u0005q9\\u0002\\u01e6\\u01e1\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01e6\\u01e5\\u0003\\u0002\\u0002\\u0002\\u01e7t\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01e8\\u01e9\\t\\u000e\\u0002\\u0002\\u01e9v\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01ea\\u01eb\\t\\u000f\\u0002\\u0002\\u01ebx\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01ec\\u01ed\\u0007^\\u0002\\u0002\\u01ed\\u01f1\\t\\u0010\\u0002\\u0002\\u01ee\",\n \"\\u01f1\\u0005}?\\u0002\\u01ef\\u01f1\\u0005{>\\u0002\\u01f0\\u01ec\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01f0\\u01ee\\u0003\\u0002\\u0002\\u0002\\u01f0\\u01ef\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01f1z\\u0003\\u0002\\u0002\\u0002\\u01f2\\u01f3\\u0007^\\u0002\",\n \"\\u0002\\u01f3\\u01f4\\t\\u0011\\u0002\\u0002\\u01f4\\u01f5\\u0005w<\\u0002\\u01f5\",\n \"\\u01f6\\u0005w<\\u0002\\u01f6\\u01fe\\u0003\\u0002\\u0002\\u0002\\u01f7\\u01f8\",\n \"\\u0007^\\u0002\\u0002\\u01f8\\u01f9\\u0005w<\\u0002\\u01f9\\u01fa\\u0005w<\\u0002\",\n \"\\u01fa\\u01fe\\u0003\\u0002\\u0002\\u0002\\u01fb\\u01fc\\u0007^\\u0002\\u0002\",\n \"\\u01fc\\u01fe\\u0005w<\\u0002\\u01fd\\u01f2\\u0003\\u0002\\u0002\\u0002\\u01fd\",\n \"\\u01f7\\u0003\\u0002\\u0002\\u0002\\u01fd\\u01fb\\u0003\\u0002\\u0002\\u0002\\u01fe\",\n \"|\\u0003\\u0002\\u0002\\u0002\\u01ff\\u0200\\u0007^\\u0002\\u0002\\u0200\\u0201\",\n \"\\u0007w\\u0002\\u0002\\u0201\\u0202\\u0005u;\\u0002\\u0202\\u0203\\u0005u;\\u0002\",\n \"\\u0203\\u0204\\u0005u;\\u0002\\u0204\\u0205\\u0005u;\\u0002\\u0205~\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0206\\u0207\\u00071\\u0002\\u0002\\u0207\\u0208\\u00071\\u0002\",\n \"\\u0002\\u0208\\u020c\\u0003\\u0002\\u0002\\u0002\\u0209\\u020b\\n\\r\\u0002\\u0002\",\n \"\\u020a\\u0209\\u0003\\u0002\\u0002\\u0002\\u020b\\u020e\\u0003\\u0002\\u0002\\u0002\",\n \"\\u020c\\u020a\\u0003\\u0002\\u0002\\u0002\\u020c\\u020d\\u0003\\u0002\\u0002\\u0002\",\n \"\\u020d\\u0210\\u0003\\u0002\\u0002\\u0002\\u020e\\u020c\\u0003\\u0002\\u0002\\u0002\",\n \"\\u020f\\u0211\\u0007\\u000f\\u0002\\u0002\\u0210\\u020f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0210\\u0211\\u0003\\u0002\\u0002\\u0002\\u0211\\u0212\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0212\\u021f\\u0007\\f\\u0002\\u0002\\u0213\\u0214\\u00071\\u0002\\u0002\\u0214\",\n \"\\u0215\\u0007,\\u0002\\u0002\\u0215\\u0219\\u0003\\u0002\\u0002\\u0002\\u0216\",\n \"\\u0218\\u000b\\u0002\\u0002\\u0002\\u0217\\u0216\\u0003\\u0002\\u0002\\u0002\\u0218\",\n \"\\u021b\\u0003\\u0002\\u0002\\u0002\\u0219\\u021a\\u0003\\u0002\\u0002\\u0002\\u0219\",\n \"\\u0217\\u0003\\u0002\\u0002\\u0002\\u021a\\u021c\\u0003\\u0002\\u0002\\u0002\\u021b\",\n \"\\u0219\\u0003\\u0002\\u0002\\u0002\\u021c\\u021d\\u0007,\\u0002\\u0002\\u021d\",\n \"\\u021f\\u00071\\u0002\\u0002\\u021e\\u0206\\u0003\\u0002\\u0002\\u0002\\u021e\",\n \"\\u0213\\u0003\\u0002\\u0002\\u0002\\u021f\\u0220\\u0003\\u0002\\u0002\\u0002\\u0220\",\n \"\\u0221\\b@\\u0003\\u0002\\u0221\\u0080\\u0003\\u0002\\u0002\\u0002\\u001e\\u0002\",\n \"\\u0162\\u0175\\u017f\\u0189\\u018f\\u0194\\u019a\\u019f\\u01a1\\u01a6\\u01ac\\u01b1\",\n \"\\u01b7\\u01bb\\u01bf\\u01c4\\u01ca\\u01d1\\u01d6\\u01e3\\u01e6\\u01f0\\u01fd\\u020c\",\n \"\\u0210\\u0219\\u021e\\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_FOR_ALT = 15;\nivprog.RK_FOR_FROM = 16;\nivprog.RK_FOR_TO = 17;\nivprog.RK_FOR_PASS = 18;\nivprog.RK_BREAK = 19;\nivprog.RK_DO = 20;\nivprog.RK_DO_UNTIL = 21;\nivprog.RK_WHILE = 22;\nivprog.RK_WHILE_ALT = 23;\nivprog.RK_IF = 24;\nivprog.RK_ELSE = 25;\nivprog.RK_FALSE = 26;\nivprog.RK_TRUE = 27;\nivprog.RK_REFERENCE = 28;\nivprog.OPEN_PARENTHESIS = 29;\nivprog.CLOSE_PARENTHESIS = 30;\nivprog.OPEN_BRACE = 31;\nivprog.CLOSE_BRACE = 32;\nivprog.OPEN_CURLY = 33;\nivprog.CLOSE_CURLY = 34;\nivprog.COMMA = 35;\nivprog.EQUAL = 36;\nivprog.SUM_OP = 37;\nivprog.MULTI_OP = 38;\nivprog.AND_OPERATOR = 39;\nivprog.OR_OPERATOR = 40;\nivprog.RELATIONAL_OPERATOR = 41;\nivprog.COLON = 42;\nivprog.NOT_OPERATOR = 43;\nivprog.ID = 44;\nivprog.LIB_ID = 45;\nivprog.INTEGER = 46;\nivprog.REAL = 47;\nivprog.STRING = 48;\nivprog.CHARACTER = 49;\nivprog.WHITESPACE = 50;\nivprog.EOS = 51;\nivprog.COMMENTS = 52;\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'\", \"'devolva'\", \"'para'\", \n \"'repita_para'\", \"'de'\", \"'ate'\", \"'passo'\", \n \"'pare'\", \"'repita'\", \"'ate_que'\", \"'enquanto'\", \n \"'repita_enquanto'\", \"'se'\", \"'senao'\", \n \"'falso'\", \"'verdadeiro'\", \"'&'\", \"'('\", \n \"')'\", \"'['\", \"']'\", \"'{'\", \"'}'\", \"','\", \n null, 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_FOR_ALT\", \n \"RK_FOR_FROM\", \"RK_FOR_TO\", \"RK_FOR_PASS\", \n \"RK_BREAK\", \"RK_DO\", \"RK_DO_UNTIL\", \"RK_WHILE\", \n \"RK_WHILE_ALT\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"RK_REFERENCE\", \"OPEN_PARENTHESIS\", \n \"CLOSE_PARENTHESIS\", \"OPEN_BRACE\", \"CLOSE_BRACE\", \n \"OPEN_CURLY\", \"CLOSE_CURLY\", \"COMMA\", \n \"EQUAL\", \"SUM_OP\", \"MULTI_OP\", \"AND_OPERATOR\", \n \"OR_OPERATOR\", \"RELATIONAL_OPERATOR\", \n \"COLON\", \"NOT_OPERATOR\", \"ID\", \"LIB_ID\", \n \"INTEGER\", \"REAL\", \"STRING\", \"CHARACTER\", \n \"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_FOR_ALT\", \n \"RK_FOR_FROM\", \"RK_FOR_TO\", \"RK_FOR_PASS\", \n \"RK_BREAK\", \"RK_DO\", \"RK_DO_UNTIL\", \"RK_WHILE\", \n \"RK_WHILE_ALT\", \"RK_IF\", \"RK_ELSE\", \"RK_FALSE\", \n \"RK_TRUE\", \"RK_LOGICAL_NOT\", \"RK_LOGICAL_AND\", \n \"RK_LOGICAL_OR\", \"RK_REFERENCE\", \"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: \"caractere_na_posicao\",\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 $castChar: \"como_caractere\",\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 $rand: \"numero_aleatorio\"\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}","module.exports = {\"pt\":{\"token_missing_one\":\"Erro de sintaxe: Espera-se $0, mas encontrou-se $1 na linha:$2, coluna:$3\",\"token_missing_two\":\"Erro de sintaxe: Esperava-se $0 ou $1 mas encontrou-se $2 na liha:$3, coluna: $4\",\"eos_missing\":\"Falta uma nova linha ou ; na linha: $0, coluna: $1\",\"invalid_type\":\"$0 na linha: $1, coluna: $2 é um tipo inválido. Os tipos válidos são: $3\",\"invalid_array_dimension\":\"A dimensão inválida na linha: $0, coluna: $1. Insira um $2 ou identificador válido do mesmo tipo.\",\"invalid_array_size\":\"O tamnho do vetor/matriz excede o máximo de 2 na linha $0\",\"extra_lines\":\"Nenhum texto é permitido após '}' em 'programa {...}'\",\"invalid_main_return\":\"A função $0 declarada na linha $2 deve retornar $1.\",\"invalid_var_declaration\":\"Erro na linha $0: variáveis só podem ser declaradas no corpo principal da função e nas primeiras linhas, antes de qualquer comando.\",\"invalid_break_command\":\"Erro na linha $0. O comando $1 não pode ser usado fora de uma estrutura de repetição ou 'escolha...caso'\",\"invalid_terminal\":\"Não é possível utilizar $0 na expressão da linha: $1, coluna: $2. Tente um valor númerico, variável ou chamada de função.\",\"const_not_init\":\"Erro na linha: $0, coluna: $1. Uma variável declarada como const deve ser inicializada\",\"id_missing\":\"Esperava-se um identificador, mas encontrou-se $0 na linha: $1, coluna: $2\",\"invalid_id_format\":\"$0 na linha: $1, coluna: $2 não é um identificador válido. O símbolo '.' não é permitido neste contexto.\",\"main_missing\":\"A função principal não foi encontrada\",\"invalid_global_var\":\"Erro crítico: Chamada inválida da função initGlobal fora do contexto BASE\",\"not_implemented\":\"Erro interno crítico: A função definida pelo sistema $0 não foi implementada.\",\"function_missing\":\"A função $0 não foi encontrada\",\"function_missing_full\":\"A função $0 na linha: $1, coluna: $2 não foi encontrada\",\"invalid_parameters_size_full\":\"Erro na linha $0: a quantidade de parâmetros fornecidos à função $1 está incorreta. Esperava-se $2, encontrou-se $3.\",\"invalid_parameters_size\":\"A quantidade de parâmetros fornecidos à função $0 está incorreta. Esperava-se $1, encontrou-se $2\",\"invalid_ref_full\":\"A expressão $0 fornecida como parâmetro para a função $1 na linha $2 não é válida para esta função. Use uma variável ou posição de vetor.\",\"invalid_ref\":\"A expressão $0 fornecida como parâmetro para a função $1 não é válida para esta função. Use uma variável ou posição de vetor.\",\"invalid_parameter_type_full\":\"A expressão $0 fornecida como parâmetro para a função $1 na linha $2 não é compatível com o tipo esperado.\",\"invalid_parameter_type\":\"A expressão $0 fornecida como parâmetro para a função $1 não é compatível com o tipo esperado.\",\"unknown_command_full\":\"Erro interno crítico: comando desconhecido encontrado na linha $0\",\"unknown_command\":\"Erro interno crítico: comando desconhecido encontrado!\",\"loop_condition_type_full\":\"Erro na linha: $0, coluna $1: a condição $2 do laço de repetição deve ser do tipo lógico\",\"loop_condition_type\":\"A condição $0 do laço de repetição deve ser do tipo lógico\",\"endless_loop_full\":\"Possível laço infinito detectado no seu código. Verifique a linha $0\",\"endless_loop\":\"Possível laço infinito detectado no seu código.\",\"for_condition_type_full\":\"Erro na linha: $0, coluna $1: a condição de parada $2 do comando para(...) deve ser do tipo lógico\",\"for_condition_type\":\"A condição de parada $0 do comando para(...) deve ser do tipo lógico\",\"if_condition_type_full\":\"Erro na linha: $0, coluna $1: a condição $2 do comando se...senao deve ser do tipo lógico\",\"if_condition_type\":\"A condição $0 do comando se...senao deve ser do tipo lógico\",\"invalid_return_type_full\":\"Erro na linha $0: a expressão não produz um tipo compatível com a função $1. Tipo esperado: $2.\",\"invalid_return_type\":\"A expressão não produz um tipo compatível com a função $0. Tipo esperado: $1.\",\"invalid_void_return_full\":\"Erro na linha $0: a função $1 não pode retornar uma expressão vazia, use uma espressão do tipo $2\",\"invalid_void_return\":\"A função $0 não pode retornar uma expressão vazia, use uma espressão do tipo $1\",\"unexpected_break_command_full\":\"Erro interno crítico: comando pare encontrado fora do contexto de um laço/escolha..caso na linha $0\",\"unexpected_break_command\":\"Erro interno crítico: comando pare encontrado fora do contexto de um laço/escolha..caso\",\"invalid_dimension\":\"As dimensões de um vetor/matriz devem ser do tipo inteiro\",\"void_in_expression_full\":\"Erro na linha: $0, coluna: $1: a função $2 não pode ser utilizada em uma expressão pois seu tipo de retorno é vazio\",\"void_in_expression\":\"A função $0 não pode ser utilizada em uma expressão pois seu tipo de retorno é vazio\",\"invalid_array_access_full\":\"Identificador $0 na linha: $1, coluna: $2 não se refere a um vetor/matriz válido\",\"invalid_array_access\":\"Identificador $0 não se refere a um vetor/matriz válido\",\"invalid_matrix_access_full\":\"Identificador $0 na linha: $1, coluna: $2 não se refere a uma matriz válida\",\"invalid_matrix_access\":\"Identificador $0 não se refere a uma matriz válida\",\"matrix_column_outbounds_full\":\"Erro na linha $0: número de colunas $1 é inválido para a matriz $2 que possui $3 colunas\",\"matrix_column_outbounds\":\"Número de colunas $0 é inválido para a matriz $1 que possui $2 colunas\",\"matrix_line_outbounds_full\":\"Erro na linha $0: número de linhas $1 é inválido para a matriz $2 que possui $3 linhas\",\"matrix_line_outbounds\":\"Número de linhas $0 é inválido para a matriz $1 que possui $2 linhas\",\"vector_line_outbounds_full\":\"Erro na linha $0: O número de elementos $1 é inválido para a vetor $2 que possui $3 elementos.\",\"vector_line_outbounds\":\"O número de elementos $1 é inválido para a vetor $2 que possui $3 elementos.\",\"vector_not_matrix_full\":\"Erro na linha $0: $1 não é uma matriz\",\"vector_not_matrix\":\"$0 não é uma matriz\",\"invalid_infix_op_full\":\"Erro na linha $0: a expressão $1 é inválida, pois o operador $2 não pode ser aplicado aos tipos $3 e $4\",\"invalid_infix_op\":\"A expressão $0 é inválida, pois o operador $1 não pode ser aplicado aos tipos $2 e $3\",\"invalid_unary_op_full\":\"Erro na linha $0: a expressão $1 é inválida, pois o operador $2 não pode ser aplicado ao tipo $3\",\"invalid_unary_op\":\"A expressão $0 é inválida, pois o operador $1 não pode ser aplicado ao tipo $2\",\"unknown_op\":\"Erro interno crítico: Operação $0 desconhecida\",\"duplicate_function\":\"A função $0 na linha: $1, coluna: $2 já foi definida anteriormente.\",\"duplicate_variable\":\"A variável $0 na linha: $1, coluna: $2 já foi declarada anteriormente.\",\"main_parameters\":\"A função inicio não pode ter parâmetros.\",\"symbol_not_found_full\":\"A variável $0 na linha: $1, coluna: $2 não foi declarada\",\"symbol_not_found\":\"A variável $0 não foi declarada\",\"array_dimension_not_int_full\":\"As dimensões do arranjo (vetor ou matriz) na linha $0 devem ser do tipo inteiro.\",\"array_dimension_not_int\":\"As dimensões de um arranjo (vetor ou matriz) devem ser do tipo inteiro.\",\"array_dimension_not_positive_full\":\"As dimensões do arranjo (vetor ou matriz) na linha $0 devem ser valores positivos.\",\"array_dimension_not_positive\":\"As dimensões de um arranjo (vetor ou matriz) devem ser valores positivos.\",\"incompatible_types_full\":\"Era esperado um $0 mas a expressão $1 na linha $2 resulta em $3.\",\"incompatible_types\":\"Era esperado um $0 mas a expressão $1 resulta em $2.\",\"incompatible_types_array_full\":\"A expressão $0 na linha $2 é incompatível com o tipo $1.\",\"incompatible_types_array\":\"A expressão $0 é incompatível com o tipo $1.\",\"invalid_case_type_full\":\"O caso $0 na linha $1 é incompatível com o tipo $2.\",\"invalid_case_type\":\"O caso $0 é incompatível com o tipo $1.\",\"function_no_return\":\"A função $0 não possui um comando de devolução acessível. Toda função deve ter ao menos um comando 'devolva' no seu corpo principal.\",\"invalid_array_literal_type_full\":\"Erro na linha $0: a expressão $1 não resulta em um tipo compatível.\",\"invalid_array_literal_type\":\"A expressão $0 não resulta em um tipo compatível.\",\"invalid_array_literal_line_full\":\"Erro na linha $0: esperava-se $1 linhas mas encontrou $2.\",\"invalid_array_literal_line\":\"Esperava-se $0 linhas mas encontrou $1.\",\"invalid_array_literal_column_full\":\"Erro na linha $0: esperava-se $1 colunas mas encontrou $2.\",\"invalid_array_literal_column\":\"Esperava-se $0 colunas mas encontrou $1.\",\"exceeded_input_request\":\"A quantidade de leituras requisitadas execedeu a quantidade de entradas disponíveis.\",\"test_case_few_reads\":\"Caso de teste $0 falhou: ainda restam entradas!\",\"test_case_failed\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"> <span>Caso de teste $0 não executou com sucesso.</span></div>\",\"test_case_failed_exception\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$2\\\"> <span>Caso de teste $0 falhou</span>: $1\",\"test_case_exception\":\"Ocorreu uma exceção no caso de teste $0: $1\",\"invalid_type_conversion\":\"O valor $0 não pode ser convertido para o tipo $1\",\"invalid_read_type\":\"Erro na linha $0: A entrada \\\"$1\\\" não é do tipo $2, que é o tipo da variável <span class='ivprog-error-varname'>$3</span>.\",\"invalid_read_type_array\":\"Erro na linha $0: A entrada \\\"$1\\\" não é do tipo $2, que é o tipo aceito pela variável <span class='ivprog-error-varname'>$3</span> que é um $4.\",\"inform_valid_identifier\":\"Informe um nome válido! O nome não pode ser uma palavra reservadas e deve começar com letras ou _ e conter apenas letras, números e _.\",\"inform_valid_global_duplicated\":\"Já existe uma variável global com o nome <span class='ivprog-error-varname'>$0</span>, você precisa de nomes distintos.\",\"inform_valid_variable_duplicated\":\"Já existe uma variável com o nome <span class='ivprog-error-varname'>$0</span> na função <span class='ivprog-error-varname'>$1</span>, você precisa de nomes distintos.\",\"inform_valid_function_duplicated\":\"Já existe uma função com o nome <span class='ivprog-error-varname'>$0</span>, você precisa de nomes distintos.\",\"inform_valid_param_duplicated\":\"Já existe um parâmetro com o nome <span class='ivprog-error-varname'>$0</span> na função <span class='ivprog-error-varname'>$1</span>, você precisa de nomes distintos.\",\"invalid_character\":\"O caractere $0 na linha $1 não pode ser utilizado neste contexto.\",\"annonymous_array_literal\":\"Erro na linha $0: a notação de vetor/matriz só permitida durante a inicialização de uma variável desse tipo. Ex: inteiro vec[3] ← {1,2,3}.\",\"invalid_matrix_literal_line\":\"A expressão $0 na linha $1 não possui um número de elementos igual a linha anterior. Todas as linhas de uma matriz devem ter a mesma quantidade de elementos.\",\"cannot_infer_matrix_line\":\"Não é possível inferir o número de linhas da matriz $0 na linha $1. É necessário que ela seja inicializada ou que o valor seja informado de forma explícita.\",\"cannot_infer_matrix_column\":\"Não é possível inferir o número de colunas da matriz $0 na linha $1. É necessário que ela seja inicializada ou que o valor seja informado de forma explícita.\",\"cannot_infer_vector_size\":\"Não é possível inferir o número de elementos do vetor $0 na linha $1. É necessário que ele seja inicializado ou que o valor seja informado de forma explícita\",\"matrix_to_vector_literal_attr\":\"Erro na linha $0: A expressão $1 representa uma matriz e não pode ser atribuída ao vetor $2.\",\"vector_to_matrix_literal_attr\":\"Erro na linha $0: A expressão $1 representa um vetor e não pode ser atribuído a matriz $2.\",\"invalid_const_ref_full\":\"A variável $0 fornecida como parâmetro para a função $1 na linha $2 é uma constante e não pode ser usada neste contexto. Use uma variável ou posição de vetor.\",\"invalid_const_ref\":\"A variável $0 fornecida como parâmetro para a função $1 é uma constante e não pode ser usada neste contexto. Use uma variável ou posição de vetor.\",\"invalid_const_assignment_full\":\"Erro na linha $0: $1 é uma constante e portanto não pode ter seu valor alterado\",\"invalid_const_assignment\":\"$0 é uma constante e portanto não pode ter seu valor alterado\",\"array_init_not_literal\":\"Erro na linha $0: Vetor/Matriz só pode ser inicializado por literal. Ex: real vetor[] <- {1,2,3}\",\"array_exceeds_2d\":\"Erro na linha $0: O número máximo de dimensões que um arranjo pode ter é 2. Elemento de 3 ou mais dimensões encontrado!\",\"invalid_matrix_id_dimension\":\"Erro na linha $0: Você deve definir todas as dimensões da matriz quando uma delas é definida por uma variável! Ex: real mat1[var][5], mat2[5][var]\",\"invalid_vector_init\":\"Erro na linha $0: Não se pode inicializar um vetor que teve seu tamanho declarado utilizando uma variável! Utilize uma atribuição de vetores ou use um laço de repetição.\",\"invalid_matrix_init\":\"Erro na linha $0: Não se pode inicializar uma matrix que teve ao menos uma das suas dimensões declaradas utilizando uma variável! Utilize uma atribuição de matrizes ou use um laço de repetição.\",\"invalid_vector_assignment_full\":\"Erro na linha $0: Só se pode atribuir um vetor a outro desde que eles comportem o mesmo número de elementos. $1 comporta $2 e $3 comporta $4!\",\"invalid_vector_assignment\":\"Só se pode atribuir um vetor a outro desde que eles comportem o mesmo número de elementos. $0 comporta $1 e $2 comporta $3!\",\"invalid_matrix_assignment_full\":\"Erro na linha $0: Só se pode atribuir uma matriz a outra desde que ambas possuam dimensões de mesmo tamanho. $1 tem $2 linhas e $3 colunas, enquanto $4 possui $5 linhas e $6 colunas!\",\"invalid_matrix_assignment\":\"Só se pode atribuir uma matriz a outra desde que ambas possuam dimensões de mesmo tamanho. $0 tem $1 linhas e $2 colunas, enquanto $3 possui $4 linhas e $5 colunas!\",\"matrix_to_vector_attr\":\"Erro na linha $0: $1 representa uma matriz e não pode ser atribuída ao vetor $2.\",\"vector_to_matrix_attr\":\"Erro na linha $0: $1 representa um vetor e não pode ser atribuído a matriz $2.\",\"invalid_matrix_index_assign_full\":\"Erro na linha $0: A posição $1 da matriz $2 aceita apenas vetores de tamanho $3, mas $4 tem tamanho $5\",\"invalid_matrix_index_assign\":\"A linha $0 da matriz $1 aceita apenas vetores de tamanho $2, mas $3 tem tamanho $4\",\"invalid_number_elements_vector\":\"Esperava-se por $0 elementos na linha $1 mas a expressão $2 possui $3 elementos.\",\"invalid_number_lines_matrix\":\"Esperava-se por uma matriz com $0 linhas na linha $1 mas a expressão $2 possui $3 linhas\",\"divsion_by_zero_full\":\"Erro na linha $0: A expressão $1 resulta em uma divisão por 0.\",\"divsion_by_zero\":\"A expressão $0 resulta em uma divisão por 0.\",\"undefined_tanget_value\":\"Erro na linha $0: A tangente de $1° não é indefinida.\",\"negative_log_value\":\"Erro na linha $0: Não se pode calcular o log de um valor negativo.\",\"invalid_string_index\":\"Erro na linha $0 durante a execução da função $1: $2 é um índice inválido para a cadeia de texto $3. Os valores válidos vão de 0 à $4\",\"negative_sqrt_value\":\"Erro na linha $0: Não é permitido calcular a raiz quadrada de um número negativo.\",\"exceeded_recursive_calls\":\"Erro na execução da linha $0: Número de chamadas recursivas execedeu o limite máximo definido!\",\"invalid_for_variable\":\"Erro na linha $0: A variavel $1 utilizada no comando repita_para deve ser do tipo inteiro.\",\"invalid_for_from\":\"Erro na linha $0: O valor $1 passado para o parâmetro 'de' do comando repita_para deve ser do tipo inteiro.\",\"invalid_for_to\":\"Erro na linha $0: O valor $1 passado para o parâmetro 'para' do comando repita_para deve ser do tipo inteiro.\",\"invalid_for_pass\":\"Erro na linha $0: O valor $1 passado para o parâmetro 'passo' do comando repita_para deve ser do tipo inteiro.\",\"exceed_max_instructions\":\"Número de instruções excedeu o limite definido. Certifique-se que seu código não possui laços infinitos ou muitas chamadas de funções recursivas.\"},\"en\":{\"token_missing_one\":\"Syntax error: Expected $0 but found $1 at line:$2, column:$3\",\"token_missing_two\":\"Syntax error: Expected $0 or $1 but found $2 at line:$3, column: $4\",\"eos_missing\":\"A new line or a ‘;’ is missing at line: $0, column: $1\",\"invalid_type\":\"$0 at line: $1, column: $2 is a invalid type. The valid types are: $3\",\"invalid_array_dimension\":\"Invalid dimension at line: $0, column: $1. Insert a $2 or a valid identifier of the same type.\",\"invalid_array_size\":\"The array at line $0 exceeds the maximum size of 2.\",\"extra_lines\":\"No text is allowed after '}' in 'program { … }'\",\"invalid_main_return\":\"The function $0 declared at line $2 must return $1.\",\"invalid_var_declaration\":\"Error at line $0: Variables can only be declared in the main body of a function and at the first lines, before any command.\",\"invalid_break_command\":\"Error at line $0. The command $1 cannot be used outside a loop command or ‘switch ...case’ structure.\",\"invalid_terminal\":\"It is not possible to use $0 in the expression at line: $1, column: $2. Try a numeric value, variable or function call.\",\"const_not_init\":\"Error at line: $0, column: $1. A variable declared as const must be initialized.\",\"id_missing\":\"Expected an identifier but found $0 at line: $1, column: $2.\",\"invalid_id_format\":\"$0 at line: $1, column: $2 is not a valid identifier. The symbol '.' is not permitted in this context.\",\"main_missing\":\"The main function was not found. You need to declare a function of return type void named main.\",\"invalid_global_var\":\"Critical Error: Invalid call of the function IVProgProcessor.initGlobal outside the BASE context.\",\"not_implemented\":\"Critial internal error: The system defined function $0 was not found.\",\"function_missing\":\"The function $0 was not found.\",\"function_missing_full\":\"The function $0 at line: $1, column: $2 was not found.\",\"invalid_parameters_size_full\":\"Error at line $0: The number of parameters provided to the function $1 is incorrect. It expected $2 but found $3.\",\"invalid_parameters_size\":\"The number of parameters provided to the function $0 is incorrect. It expected $1 but found $2.\",\"invalid_ref_full\":\"The expression $0 provided as a parameter to the function $1 at line $2 is not valid in this context. Use a variable or a position of a vector.\",\"invalid_ref\":\"The expression $0 provided as a parameter to the function $1 is not valid in this context. Use a variable or a position of a vector.\",\"invalid_parameter_type_full\":\"The expression $0 provided as a parameter to the function $1 at line $2 is not of the expected type.\",\"invalid_parameter_type\":\"The expression $0 provided as a parameter to the function $1 is not of the expected type.\",\"unknown_command_full\":\"Internal error: an unknown command found at line $0.\",\"unknown_command\":\"Internal error: an unknown command found.\",\"loop_condition_type_full\":\"Error at line: $0, column $1: the condition $2 of the loop must be of type bool (true or false).\",\"loop_condition_type\":\"The condition $0 of the loop must be of type bool (true or false).\",\"endless_loop_full\":\"Possible infinite loop detected in your code. Check line $0.\",\"endless_loop\":\"Possible infinite loop detected in your code.\",\"for_condition_type_full\":\"Erro na linha: $0, coluna $1: a condição de parada $2 do comando para(...) deve ser do tipo lógico\",\"for_condition_type\":\"A condição de parada $0 do comando para(...) deve ser do tipo lógico\",\"if_condition_type_full\":\"Error at line: $0, column $1: the condition $2 in the if … else command must result in a bool (true or false).\",\"if_condition_type\":\"The condition $0 in the if … else command must result in a bool (true or false).\",\"invalid_return_type_full\":\"Error at line $0: The expression doest not result in a type compatible with the function $1. Expected type: $2.\",\"invalid_return_type\":\"The expression doest not result in a type compatible with the function $0. Expected type: $1.\",\"invalid_void_return_full\":\"Error at line $0: The function $1 cannot return an empty expression, use an expression that results in a $2\",\"invalid_void_return\":\"The function $0 cannot return an empty expression, use an expression that results in a $1\",\"unexpected_break_command_full\":\"Critical error at line $0: a break command was found outside a valid context: loop or switch … case structure.\",\"unexpected_break_command\":\"Critical error: a break command was found outside a valid context: loop or switch … case structure.\",\"invalid_dimension\":\"Array (vector or matrix) dimensions must be of type int.\",\"void_in_expression_full\":\"Error at line: $0, column: $1: The function $2 cannot be used inside an expression since its return type is void.\",\"void_in_expression\":\"The function $0 cannot be used inside an expression since its return type is void.\",\"invalid_array_access_full\":\"Identifier $0 at line: $1, column: $2 does not identify a valid vector or matrix.\",\"invalid_array_access\":\"Identifier $0 does not identify a valid vector or matrix.\",\"invalid_matrix_access_full\":\"Identifier $0 at line: $1, column: $2 does not identify a valid matrix.\",\"invalid_matrix_access\":\"Identifier $0 does not identify a valid matrix.\",\"matrix_column_outbounds_full\":\"Error at line $0: The number of columns $1 is invalid for the matrix $2 which has $3 columns.\",\"matrix_column_outbounds\":\"The number of columns $0 is invalid for the matrix $1 which has $2 columns.\",\"matrix_line_outbounds_full\":\"Error at line $0: The number of lines $1 is invalid for matrix $2 which has $3 lines.\",\"matrix_line_outbounds\":\"The number of lines $0 is invalid for matrix $1 which has $2 lines.\",\"vector_line_outbounds_full\":\"Error at line $0: The number of elements $1 is invalid for vector $2 which has $3 elements.\",\"vector_line_outbounds\":\"Error at line $0: The number of elements $1 is invalid for vector $2 which has $3 elements.\",\"vector_not_matrix_full\":\"Error at line $0: $1 is not a matrix.\",\"vector_not_matrix\":\"$0 is not a matrix.\",\"invalid_infix_op_full\":\"Error at line $0: The expression $1 is not valid because the operator $2 cannot be applied to the types $3 and $4.\",\"invalid_infix_op\":\"The expression $0 is not valid because the operator $1 cannot be applied to the types $2 and $3.\",\"invalid_unary_op_full\":\"Error at line $0: The expression $1 is not valid because the operator $2 cannot be applied to the type $3.\",\"invalid_unary_op\":\"The expression $0 is not valid because the operator $1 cannot be applied to the type $2.\",\"unknown_op\":\"Critical error: Unknown operator $0.\",\"duplicate_function\":\"The function $0 at line: $1, column: $2 has already been declared.\",\"duplicate_variable\":\"The variable $0 at line: $1, column: $2 has already been declared.\",\"main_parameters\":\"The main function cannot have parameters.\",\"symbol_not_found_full\":\"The variable $0 at line: $1, column: $2 has not been declared.\",\"symbol_not_found\":\"The variable $0 has not been declared.\",\"array_dimension_not_int_full\":\"The array (vector or matrix) dimensions at line $0 must be of type int.\",\"array_dimension_not_int\":\"An array (vector or matrix) dimensions must be of type int.\",\"array_dimension_not_positive_full\":\"The array (vector or matrix) dimensions at line $0 must be positive.\",\"array_dimension_not_positive\":\"An array (vector or matrix) dimensions must be positive.\",\"incompatible_types_full\":\"It expected $0 but the expression $1 at line $2 results in $3.\",\"incompatible_types\":\"It expected $0 but the expression $1 results in $2.\",\"incompatible_types_array_full\":\"The expression $0 at line $2 is not compatible with type $1.\",\"incompatible_types_array\":\"The expression $0 is not compatible with type $1.\",\"invalid_case_type_full\":\"The case expression $0 at line $1 is not compatible with type $2.\",\"invalid_case_type\":\"The case expression $0 is not compatible with type $1.\",\"function_no_return\":\"The function $0 does not have a reacheable return command. Every function must have at least one return command in its main body.\",\"invalid_array_literal_type_full\":\"Error at line $0: the expression $1 does not result in a compatible type.\",\"invalid_array_literal_type\":\"The expression $0 does not result in a compatible type.\",\"invalid_array_literal_line_full\":\"Error at line $0: it expected $1 lines but found $2.\",\"invalid_array_literal_line\":\"It expected $0 lines but found $1.\",\"invalid_array_literal_column_full\":\"Error at line $0: it expected $1 column but found $2.\",\"invalid_array_literal_column\":\"It expected $0 column but found $1.\",\"exceeded_input_request\":\"The amount of reads requested exceeded the amount of inputs available.\",\"test_case_few_reads\":\"Teste case $0 failed: there are available inputs remaining.\",\"test_case_failed\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"> <span>Test case $0 did not executed successfully.</span></div>\",\"test_case_failed_exception\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$2\\\"> <span>Test case $0 failed</span>: $1\",\"test_case_exception\":\"An exception has ocurred during the execution of test case $0: $1\",\"invalid_type_conversion\":\"The value $0 cannot be converted to type $1.\",\"invalid_read_type\":\"Error at line $0: The input \\\"$1\\\" is not of type $2 which is the type of the variable <span class='ivprog-error-varname'>$3</span>.\",\"invalid_read_type_array\":\"Error at line $0: The input \\\"$1\\\" is not of type $2 which is the type accepted by the variable <span class='ivprog-error-varname'>$3</span> of type $4.\",\"inform_valid_identifier\":\"Enter a valid identifier! The identifier cannot be a reserved word and it must begin with a letter or _, followed by numbers, letters and _ only.\",\"inform_valid_global_duplicated\":\"A global variable named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each gloval variable.\",\"inform_valid_variable_duplicated\":\"A variable named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each variable.\",\"inform_valid_function_duplicated\":\"A function named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each function.\",\"inform_valid_param_duplicated\":\"A parameter named <span class='ivprog-error-varname'>$0</span> already exists in function <span class='ivprog-error-varname'>$1</span>, you need distinc names for each parameter.\",\"invalid_character\":\"The character $0 at line $1 cannot be used in this context.\",\"annonymous_array_literal\":\"Error at line $0: the array notation is only permitted during initialization of an array variable. i. e.: int vec[3] ← {1, 2, 3}.\",\"invalid_matrix_literal_line\":\"The expression $0 at line $1 does not have the same number of elements as the last line. All lines of a matrix must have the same number of elements.\",\"cannot_infer_matrix_line\":\"It is not possible to infer the number of lines of matrix $0 at line $1. It must be initialized or have its lines explicitly declared.\",\"cannot_infer_matrix_column\":\"It is not possible to infer the number of columns of matrix $0 at line $1. It must be initialized or have its columns explicitly declared.\",\"cannot_infer_vector_size\":\"It is not possible to infer the number of elements of vector $0 at line $1. It must be initialized or have its size explicitly declard.\",\"matrix_to_vector_literal_attr\":\"Error at line $0: The expression $1 represents a matrix and cannot be assigned to the vector $2.\",\"vector_to_matrix_literal_attr\":\"Error at line $0: The expression $1 represents a vector and cannot be assigned to the matrix $2.\",\"invalid_const_ref_full\":\"The variable $0 provided as a parameter to the function $1 at line $2 is a constant and cannot be used in this context. Use a non-constant variable or vector position.\",\"invalid_const_ref\":\"The variable $0 provided as a parameter to the function $1 is a constant and cannot be used in this context. Use a non-constant variable or vector position.\",\"invalid_const_assignment_full\":\"Error at line $0: $1 is a constant e therefore cannot have its value changed.\",\"invalid_const_assignment\":\"$0 is a constant e therefore cannot have its value changed.\",\"array_init_not_literal\":\"Error at line $0: An array (vector or matrix) can only be initialized by an array literal. i.e : real vector[] <- {1,2,3}\",\"array_exceeds_2d\":\"Error at line $0: The maximum number of dimensions an array can have is 2. An element of 3 or dimensions was found.\",\"invalid_matrix_id_dimension\":\"Error at line $0: You must define all dimensions of the matrix when one of them is defined by a variable! i.e: real mat1[var][5], mat2[5][var]\",\"invalid_vector_init\":\"Error at line $0: You cannot initialize a vector when its size is defined by a variable. Use a vector assignment or loop command.\",\"invalid_matrix_init\":\"Error at line $0: You cannot initialize a matrix when one of its dimensions is defined by a variable. Use a matrix assignment or loop command.\",\"invalid_vector_assignment_full\":\"Error at line $0: You can only assign a vector to another when both have the same number of elements. $1 has $2 and $3 has $4 elements!\",\"invalid_vector_assignment\":\"You can only assign a vector to another when both have the same number of elements. $0 has $1 and $2 has $3 elements!\",\"invalid_matrix_assignment_full\":\"Error at line $0: You can only assign a matrix to another when both have dimensions of the same size. $1 has $2 lines e $3 columns while $4 has $5 lines and $6 columns!\",\"invalid_matrix_assignment\":\"You can only assign a matrix to another when both have dimensions of the same size. $0 has $1 lines e $2 columns while $3 has $4 lines and $5 columns!\",\"matrix_to_vector_attr\":\"Error at line $0: $1 represents a matrix and cannot be assigned to the vector $2.\",\"vector_to_matrix_attr\":\"Error at line $0: $1 represents a vector and cannot be assigned to the matrix $2.\",\"invalid_matrix_index_assign_full\":\"Error at line $0: The position $1 of the matrix $2 only accepts vectors of size $3 but $4 has size $5.\",\"invalid_matrix_index_assign\":\"The position $0 of the matrix $1 only accepts vectors of size $2 but $3 has size $4.\",\"invalid_number_elements_vector\":\"It expected $0 elements at line $1 but the expression $2 has $3 elements.\",\"invalid_number_lines_matrix\":\"It expected a matrix with $0 lines at line $1 but the expression $2 has $3 lines.\",\"divsion_by_zero_full\":\"Error at line $0: The expression $1 resuts in a division by zero.\",\"divsion_by_zero\":\"The expression $0 resuts in a division by zero.\",\"undefined_tanget_value\":\"Error at line $0: The tangent of $1° is undefined.\",\"negative_log_value\":\"Error at line $0: You cannot calculate the logarithm of a negative value.\",\"invalid_string_index\":\"Error at line $0 during the execution of the function $1: $2 is an invalid index for the text string $3. The valid indexes go from 0 to $4.\",\"negative_sqrt_value\":\"Error at line $0: It is not allowd to calculate the square root of a negative number.\",\"exceeded_recursive_calls\":\"Error during the execution of line $0: The number of recursive calls exceeded the allowed number of calls.\",\"invalid_for_variable\":\"Error at line $0: The variable $1 used in the repeat_for command must be of type int.\",\"invalid_for_from\":\"Error at line $0: The value $1 passed to the parameter 'from' of the repeat_for command must be of type int.\",\"invalid_for_to\":\"Error at line $0: The value $1 passed to the parameter 'to' of the repeat_for command must be of type int.\",\"invalid_for_pass\":\"Error at line $0: The value $1 passed to the parameter 'pass' of the repeat_for command must be of type int.\",\"exceed_max_instructions\":\"The number of instructions executed by your program exceed the defined limit. Check your code for infinite loops or excessive recursive functions calls.\"},\"es\":{\"token_missing_one\":\"Syntax error: Expected $0 but found $1 at line:$2, column:$3\",\"token_missing_two\":\"Syntax error: Expected $0 or $1 but found $2 at line:$3, column: $4\",\"eos_missing\":\"A new line or a ‘;’ is missing at line: $0, column: $1\",\"invalid_type\":\"$0 at line: $1, column: $2 is a invalid type. The valid types are: $3\",\"invalid_array_dimension\":\"Invalid dimension at line: $0, column: $1. Insert a $2 or a valid identifier of the same type.\",\"invalid_array_size\":\"The array at line $0 exceeds the maximum size of 2.\",\"extra_lines\":\"No text is allowed after '}' in 'program { … }'\",\"invalid_main_return\":\"The function $0 declared at line $2 must return $1.\",\"invalid_var_declaration\":\"Error at line $0: Variables can only be declared in the main body of a function and at the first lines, before any command.\",\"invalid_break_command\":\"Error at line $0. The command $1 cannot be used outside a loop command or ‘switch ...case’ structure.\",\"invalid_terminal\":\"It is not possible to use $0 in the expression at line: $1, column: $2. Try a numeric value, variable or function call.\",\"const_not_init\":\"Error at line: $0, column: $1. A variable declared as const must be initialized.\",\"id_missing\":\"Expected an identifier but found $0 at line: $1, column: $2.\",\"invalid_id_format\":\"$0 at line: $1, column: $2 is not a valid identifier. The symbol '.' is not permitted in this context.\",\"main_missing\":\"The main function was not found. You need to declare a function of return type void named main.\",\"invalid_global_var\":\"Critical Error: Invalid call of the function IVProgProcessor.initGlobal outside the BASE context.\",\"not_implemented\":\"Critial internal error: The system defined function $0 was not found.\",\"function_missing\":\"The function $0 was not found.\",\"function_missing_full\":\"The function $0 at line: $1, column: $2 was not found.\",\"invalid_parameters_size_full\":\"Error at line $0: The number of parameters provided to the function $1 is incorrect. It expected $2 but found $3.\",\"invalid_parameters_size\":\"The number of parameters provided to the function $0 is incorrect. It expected $1 but found $2.\",\"invalid_ref_full\":\"The expression $0 provided as a parameter to the function $1 at line $2 is not valid in this context. Use a variable or a position of a vector.\",\"invalid_ref\":\"The expression $0 provided as a parameter to the function $1 is not valid in this context. Use a variable or a position of a vector.\",\"invalid_parameter_type_full\":\"The expression $0 provided as a parameter to the function $1 at line $2 is not of the expected type.\",\"invalid_parameter_type\":\"The expression $0 provided as a parameter to the function $1 is not of the expected type.\",\"unknown_command_full\":\"Internal error: an unknown command found at line $0.\",\"unknown_command\":\"Internal error: an unknown command found.\",\"loop_condition_type_full\":\"Error at line: $0, column $1: the condition $2 of the loop must be of type bool (true or false).\",\"loop_condition_type\":\"The condition $0 of the loop must be of type bool (true or false).\",\"endless_loop_full\":\"Possible infinite loop detected in your code. Check line $0.\",\"endless_loop\":\"Possible infinite loop detected in your code.\",\"for_condition_type_full\":\"Erro na linha: $0, coluna $1: a condição de parada $2 do comando para(...) deve ser do tipo lógico\",\"for_condition_type\":\"A condição de parada $0 do comando para(...) deve ser do tipo lógico\",\"if_condition_type_full\":\"Error at line: $0, column $1: the condition $2 in the if … else command must result in a bool (true or false).\",\"if_condition_type\":\"The condition $0 in the if … else command must result in a bool (true or false).\",\"invalid_return_type_full\":\"Error at line $0: The expression doest not result in a type compatible with the function $1. Expected type: $2.\",\"invalid_return_type\":\"The expression doest not result in a type compatible with the function $0. Expected type: $1.\",\"invalid_void_return_full\":\"Error at line $0: The function $1 cannot return an empty expression, use an expression that results in a $2\",\"invalid_void_return\":\"The function $0 cannot return an empty expression, use an expression that results in a $1\",\"unexpected_break_command_full\":\"Critical error at line $0: a break command was found outside a valid context: loop or switch … case structure.\",\"unexpected_break_command\":\"Critical error: a break command was found outside a valid context: loop or switch … case structure.\",\"invalid_dimension\":\"Array (vector or matrix) dimensions must be of type int.\",\"void_in_expression_full\":\"Error at line: $0, column: $1: The function $2 cannot be used inside an expression since its return type is void.\",\"void_in_expression\":\"The function $0 cannot be used inside an expression since its return type is void.\",\"invalid_array_access_full\":\"Identifier $0 at line: $1, column: $2 does not identify a valid vector or matrix.\",\"invalid_array_access\":\"Identifier $0 does not identify a valid vector or matrix.\",\"invalid_matrix_access_full\":\"Identifier $0 at line: $1, column: $2 does not identify a valid matrix.\",\"invalid_matrix_access\":\"Identifier $0 does not identify a valid matrix.\",\"matrix_column_outbounds_full\":\"Error at line $0: The number of columns $1 is invalid for the matrix $2 which has $3 columns.\",\"matrix_column_outbounds\":\"The number of columns $0 is invalid for the matrix $1 which has $2 columns.\",\"matrix_line_outbounds_full\":\"Error at line $0: The number of lines $1 is invalid for matrix $2 which has $3 lines.\",\"matrix_line_outbounds\":\"The number of lines $0 is invalid for matrix $1 which has $2 lines.\",\"vector_line_outbounds_full\":\"Error at line $0: The number of elements $1 is invalid for vector $2 which has $3 elements.\",\"vector_line_outbounds\":\"Error at line $0: The number of elements $1 is invalid for vector $2 which has $3 elements.\",\"vector_not_matrix_full\":\"Error at line $0: $1 is not a matrix.\",\"vector_not_matrix\":\"$0 is not a matrix.\",\"invalid_infix_op_full\":\"Error at line $0: The expression $1 is not valid because the operator $2 cannot be applied to the types $3 and $4.\",\"invalid_infix_op\":\"The expression $0 is not valid because the operator $1 cannot be applied to the types $2 and $3.\",\"invalid_unary_op_full\":\"Error at line $0: The expression $1 is not valid because the operator $2 cannot be applied to the type $3.\",\"invalid_unary_op\":\"The expression $0 is not valid because the operator $1 cannot be applied to the type $2.\",\"unknown_op\":\"Critical error: Unknown operator $0.\",\"duplicate_function\":\"The function $0 at line: $1, column: $2 has already been declared.\",\"duplicate_variable\":\"The variable $0 at line: $1, column: $2 has already been declared.\",\"main_parameters\":\"The main function cannot have parameters.\",\"symbol_not_found_full\":\"The variable $0 at line: $1, column: $2 has not been declared.\",\"symbol_not_found\":\"The variable $0 has not been declared.\",\"array_dimension_not_int_full\":\"The array (vector or matrix) dimensions at line $0 must be of type int.\",\"array_dimension_not_int\":\"An array (vector or matrix) dimensions must be of type int.\",\"array_dimension_not_positive_full\":\"The array (vector or matrix) dimensions at line $0 must be positive.\",\"array_dimension_not_positive\":\"An array (vector or matrix) dimensions must be positive.\",\"incompatible_types_full\":\"It expected $0 but the expression $1 at line $2 results in $3.\",\"incompatible_types\":\"It expected $0 but the expression $1 results in $2.\",\"incompatible_types_array_full\":\"The expression $0 at line $2 is not compatible with type $1.\",\"incompatible_types_array\":\"The expression $0 is not compatible with type $1.\",\"invalid_case_type_full\":\"The case expression $0 at line $1 is not compatible with type $2.\",\"invalid_case_type\":\"The case expression $0 is not compatible with type $1.\",\"function_no_return\":\"The function $0 does not have a reacheable return command. Every function must have at least one return command in its main body.\",\"invalid_array_literal_type_full\":\"Error at line $0: the expression $1 does not result in a compatible type.\",\"invalid_array_literal_type\":\"The expression $0 does not result in a compatible type.\",\"invalid_array_literal_line_full\":\"Error at line $0: it expected $1 lines but found $2.\",\"invalid_array_literal_line\":\"It expected $0 lines but found $1.\",\"invalid_array_literal_column_full\":\"Error at line $0: it expected $1 column but found $2.\",\"invalid_array_literal_column\":\"It expected $0 column but found $1.\",\"exceeded_input_request\":\"The amount of reads requested exceeded the amount of inputs available.\",\"test_case_few_reads\":\"Teste case $0 failed: there are available inputs remaining.\",\"test_case_failed\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"> <span>Test case $0 did not executed successfully.</span></div>\",\"test_case_failed_exception\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$2\\\"> <span>Test case $0 failed</span>: $1\",\"test_case_exception\":\"An exception has ocurred during the execution of test case $0: $1\",\"invalid_type_conversion\":\"The value $0 cannot be converted to type $1.\",\"invalid_read_type\":\"Error at line $0: The input \\\"$1\\\" is not of type $2 which is the type of the variable <span class='ivprog-error-varname'>$3</span>.\",\"invalid_read_type_array\":\"Error at line $0: The input \\\"$1\\\" is not of type $2 which is the type accepted by the variable <span class='ivprog-error-varname'>$3</span> of type $4.\",\"inform_valid_identifier\":\"Enter a valid identifier! The identifier cannot be a reserved word and it must begin with a letter or _, followed by numbers, letters and _ only.\",\"inform_valid_global_duplicated\":\"A global variable named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each gloval variable.\",\"inform_valid_variable_duplicated\":\"A variable named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each variable.\",\"inform_valid_function_duplicated\":\"A function named <span class='ivprog-error-varname'>$0</span> already exists, you need distinct names for each function.\",\"inform_valid_param_duplicated\":\"A parameter named <span class='ivprog-error-varname'>$0</span> already exists in function <span class='ivprog-error-varname'>$1</span>, you need distinc names for each parameter.\",\"invalid_character\":\"The character $0 at line $1 cannot be used in this context.\",\"annonymous_array_literal\":\"Error at line $0: the array notation is only permitted during initialization of an array variable. i. e.: int vec[3] ← {1, 2, 3}.\",\"invalid_matrix_literal_line\":\"The expression $0 at line $1 does not have the same number of elements as the last line. All lines of a matrix must have the same number of elements.\",\"cannot_infer_matrix_line\":\"It is not possible to infer the number of lines of matrix $0 at line $1. It must be initialized or have its lines explicitly declared.\",\"cannot_infer_matrix_column\":\"It is not possible to infer the number of columns of matrix $0 at line $1. It must be initialized or have its columns explicitly declared.\",\"cannot_infer_vector_size\":\"It is not possible to infer the number of elements of vector $0 at line $1. It must be initialized or have its size explicitly declard.\",\"matrix_to_vector_literal_attr\":\"Error at line $0: The expression $1 represents a matrix and cannot be assigned to the vector $2.\",\"vector_to_matrix_literal_attr\":\"Error at line $0: The expression $1 represents a vector and cannot be assigned to the matrix $2.\",\"invalid_const_ref_full\":\"The variable $0 provided as a parameter to the function $1 at line $2 is a constant and cannot be used in this context. Use a non-constant variable or vector position.\",\"invalid_const_ref\":\"The variable $0 provided as a parameter to the function $1 is a constant and cannot be used in this context. Use a non-constant variable or vector position.\",\"invalid_const_assignment_full\":\"Error at line $0: $1 is a constant e therefore cannot have its value changed.\",\"invalid_const_assignment\":\"$0 is a constant e therefore cannot have its value changed.\",\"array_init_not_literal\":\"Error at line $0: An array (vector or matrix) can only be initialized by an array literal. i.e : real vector[] <- {1,2,3}\",\"array_exceeds_2d\":\"Error at line $0: The maximum number of dimensions an array can have is 2. An element of 3 or dimensions was found.\",\"invalid_matrix_id_dimension\":\"Error at line $0: You must define all dimensions of the matrix when one of them is defined by a variable! i.e: real mat1[var][5], mat2[5][var]\",\"invalid_vector_init\":\"Error at line $0: You cannot initialize a vector when its size is defined by a variable. Use a vector assignment or loop command.\",\"invalid_matrix_init\":\"Error at line $0: You cannot initialize a matrix when one of its dimensions is defined by a variable. Use a matrix assignment or loop command.\",\"invalid_vector_assignment_full\":\"Error at line $0: You can only assign a vector to another when both have the same number of elements. $1 has $2 and $3 has $4 elements!\",\"invalid_vector_assignment\":\"You can only assign a vector to another when both have the same number of elements. $0 has $1 and $2 has $3 elements!\",\"invalid_matrix_assignment_full\":\"Error at line $0: You can only assign a matrix to another when both have dimensions of the same size. $1 has $2 lines e $3 columns while $4 has $5 lines and $6 columns!\",\"invalid_matrix_assignment\":\"You can only assign a matrix to another when both have dimensions of the same size. $0 has $1 lines e $2 columns while $3 has $4 lines and $5 columns!\",\"matrix_to_vector_attr\":\"Error at line $0: $1 represents a matrix and cannot be assigned to the vector $2.\",\"vector_to_matrix_attr\":\"Error at line $0: $1 represents a vector and cannot be assigned to the matrix $2.\",\"invalid_matrix_index_assign_full\":\"Error at line $0: The position $1 of the matrix $2 only accepts vectors of size $3 but $4 has size $5.\",\"invalid_matrix_index_assign\":\"The position $0 of the matrix $1 only accepts vectors of size $2 but $3 has size $4.\",\"invalid_number_elements_vector\":\"It expected $0 elements at line $1 but the expression $2 has $3 elements.\",\"invalid_number_lines_matrix\":\"It expected a matrix with $0 lines at line $1 but the expression $2 has $3 lines.\",\"divsion_by_zero_full\":\"Error at line $0: The expression $1 resuts in a division by zero.\",\"divsion_by_zero\":\"The expression $0 resuts in a division by zero.\",\"undefined_tanget_value\":\"Error at line $0: The tangent of $1° is undefined.\",\"negative_log_value\":\"Error at line $0: You cannot calculate the logarithm of a negative value.\",\"invalid_string_index\":\"Error at line $0 during the execution of the function $1: $2 is an invalid index for the text string $3. The valid indexes go from 0 to $4.\",\"negative_sqrt_value\":\"Error at line $0: It is not allowd to calculate the square root of a negative number.\",\"exceeded_recursive_calls\":\"Error during the execution of line $0: The number of recursive calls exceeded the allowed number of calls.\",\"invalid_for_variable\":\"Error at line $0: The variable $1 used in the repeat_for command must be of type int.\",\"invalid_for_from\":\"Error at line $0: The value $1 passed to the parameter 'from' of the repeat_for command must be of type int.\",\"invalid_for_to\":\"Error at line $0: The value $1 passed to the parameter 'to' of the repeat_for command must be of type int.\",\"invalid_for_pass\":\"Error at line $0: The value $1 passed to the parameter 'pass' of the repeat_for command must be of type int.\",\"exceed_max_instructions\":\"The number of instructions executed by your program exceed the defined limit. Check your code for infinite loops or excessive recursive functions calls.\"}}","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Messages = require(\"./message.csv\");\nconst UI = require(\"./ui.csv\");\nconst Errors = require(\"./error.csv\");\nconst MessagesObj = Messages;\nconst UIObj = UI;\nconst ErrorsObj = Errors;\nconst i18n_data = {};\nfor (const key in UIObj) {\n const data = {};\n data['error'] = ErrorsObj[key];\n data['message'] = MessagesObj[key];\n data['ui'] = UIObj[key];\n i18n_data[key] = data;\n}\nexports.default = i18n_data;\n","module.exports = {\"pt\":{\"test_case_success\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"><span>Caso de teste $0</span>: OK</div>\",\"test_case_duration\":\"Levou $0ms\",\"test_suite_grade\":\"A sua solução alcançou $0% da nota.\",\"awaiting_input_message\":\"O seu programa está em execução e aguardando uma entrada! Digite algo e pressione ENTER...\",\"assessment-empty-expected-tooltip\":\"A saída gerada foi além do esperado\",\"assessment-empty-generated-tooltip\":\"O programa não gerou saídas suficientes\",\"testcase_autogen_unused_input\":\"A solução submetida não lê todas entradas disponíveis no caso de teste 1\",\"testcase_autogen_empty\":\"Sua solução não gerou qualquer saída para o caso de teste $0.\",\"success_execution\":\"Execução do programa finalizada!\",\"aborted_execution\":\"A execução do programa foi interrompida!\",\"unexpected_execution_error\":\"Erro inesperado durante a execução do programa.\"},\"en\":{\"test_case_success\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"><span>Test case $0</span>: OK</div>\",\"test_case_duration\":\"Took $0ms\",\"test_suite_grade\":\"Your solution scored $0% of the grade.\",\"awaiting_input_message\":\"Your program is running and awaiting for an input. Type something and press ENTER…\",\"assessment-empty-expected-tooltip\":\"The generated output was beyond the amount expected\",\"assessment-empty-generated-tooltip\":\"The program did not generate enough outputs\",\"testcase_autogen_unused_input\":\"The submitted solution does not read all inputs available in the test case $0\",\"testcase_autogen_empty\":\"Your solution did not generate any output for test case $0.\",\"success_execution\":\"Program execution finished!\",\"aborted_execution\":\"Program execution was aborted!\",\"unexpected_execution_error\":\"Unexpected error during program execution.\"},\"es\":{\"test_case_success\":\"<div class='assessment-div-detail' onClick='ivprogCore.openAssessmentDetail(event)' data-page=\\\"$1\\\"><span>Test case $0</span>: OK</div>\",\"test_case_duration\":\"Tardó $0ms\",\"test_suite_grade\":\"Su solución obtuvo $0% de la calificación.\",\"awaiting_input_message\":\"Su programa se está ejecutando y esperando una entrada. Escriba algo y presione ENTER ...\",\"assessment-empty-expected-tooltip\":\"The generated output was beyond the amount expected\",\"assessment-empty-generated-tooltip\":\"El programa no generó suficientes resultados.\",\"testcase_autogen_unused_input\":\"La solución presentada no lee todas las entradas disponibles en el caso de prueba 1\",\"testcase_autogen_empty\":\"Su solución no generó ningún resultado para el caso de prueba de $ 0.\",\"success_execution\":\"¡Ejecución del programa terminada!\",\"aborted_execution\":\"¡La ejecución del programa fue abortada!\",\"unexpected_execution_error\":\"Error inesperado durante la ejecución del programa.\"}}","module.exports = {\"pt\":{\"function\":\"funcao\",\"btn_clear\":\"Limpar\",\"btn_function\":\"Função\",\"btn_arithmetic_plus\":\"Adição\",\"btn_arithmetic_minus\":\"Subtração\",\"btn_arithmetic_multiplication\":\"Multiplicação\",\"btn_arithmetic_division\":\"Divisão\",\"btn_arithmetic_module\":\"Módulo\",\"btn_break\":\"Pare\",\"btn_case\":\"Caso\",\"start\":\"inicio\",\"type_void\":\"vazio\",\"type_integer\":\"inteiro\",\"logic_operator_and\":\"E\",\"logic_operator_or\":\"OU\",\"logic_operator_not\":\"nao\",\"type_real\":\"real\",\"program\":\"programa\",\"type_text\":\"cadeia\",\"textvar_default_value\":\"texto\",\"type_boolean\":\"logico\",\"logic_value_true\":\"verdadeiro\",\"logic_value_false\":\"falso\",\"variable\":\"Variável\",\"command\":\"Comando\",\"new_parameter\":\"parametro\",\"new_variable\":\"variavel\",\"new_global\":\"global\",\"new_function\":\"nova_funcao\",\"matrix\":\"matriz\",\"vector\":\"vetor\",\"text_comment_start\":\"Comentário inicial da função...\",\"text_comment_main\":\"Esta é a função principal...\",\"text_read_var\":\"Entrada/Leitura de dados\",\"text_write_var\":\"Saída/Escrita de dados\",\"text_command_read\":\"leia\",\"text_command_write\":\"escreva\",\"text_return\":\"devolva\",\"text_btn_return\":\"Devolver\",\"text_comment\":\"Comentário\",\"string_join_or\":\"ou\",\"matrix_info_string\":\"matriz de $0\",\"vector_info_string\":\"vetor de $0\",\"text_attribution\":\"Atribuição\",\"text_if\":\"se\",\"text_break\":\"pare\",\"text_else\":\"senao\",\"text_for\":\"repita_para\",\"text_code_while\":\"repita_enquanto\",\"text_code_do\":\"repita\",\"text_code_do_until\":\"ate_que\",\"text_command_do\":\"repita\",\"text_command_while\":\"repita enquanto\",\"text_command_do_until\":\"até que\",\"text_code_switch\":\"escolha\",\"text_code_case\":\"caso\",\"text_config_programming\":\"Programação\",\"text_config_programming_both\":\"Visual e textual\",\"text_config_programming_textual\":\"Textual\",\"text_config_programming_visual\":\"Visual\",\"text_logic_expression\":\"Lógicos\",\"text_arithmetic_expression\":\"Aritméticos\",\"text_iftrue\":\"Se verdadeiro então\",\"text_message_error_activity_file\":\"Aconteceu um erro ao processar a atividade. <br> Recarregue a página para tentar novamente.\",\"text_message_error_activity_reload\":\"Recarregar\",\"text_repeatNtimes\":\"Repita N vezes\",\"text_receives\":\"recebe\",\"text_whiletrue\":\"Enquanto verdadeiro\",\"text_dowhiletrue\":\"Repita até que verdadeiro\",\"text_switch\":\"Escolha\",\"text_functioncall\":\"Chamada de função\",\"text_value\":\"Valor\",\"text_operator\":\"Operador\",\"text_parentheses\":\"Parênteses\",\"text_change\":\"Alterar\",\"text_teacher_algorithm\":\"Algoritmo\",\"text_teacher_algorithm_include\":\"Incluir o algoritmo abaixo no exercício\",\"text_teacher_test_case\":\"Casos de teste\",\"text_teacher_config\":\"Configurações\",\"text_teacher_data_types\":\"Tipos de dados\",\"text_teacher_commands\":\"Comandos\",\"text_teacher_functions\":\"Funções\",\"text_teacher_create_functions\":\"Criar novas funções\",\"text_teacher_create_movement_functions\":\"Movimentar funções\",\"text_teacher_test_case_input\":\"Entrada\",\"text_teacher_test_case_output\":\"Saída\",\"text_teacher_test_case_actions\":\"Ações\",\"text_teacher_test_case_add\":\"Adicionar caso de teste\",\"text_header_ivprog_functions\":\"Funções do iVProg\",\"text_menu_functions_math\":\"Matemática\",\"text_menu_functions_text\":\"Texto\",\"text_menu_functions_array\":\"Arranjo\",\"text_menu_functions_conversion\":\"Conversão\",\"text_no_variable\":\"Nenhuma variável declarada\",\"text_no_variable_instruction\":\"Antes de utilizar uma variável, é necessário criá-la\",\"text_ivprog_description\":\"Programação Visual interativa na Internet\",\"tooltip_visual\":\"Programação visual\",\"tooltip_textual\":\"Programação textual\",\"tooltip_upload\":\"Upload de código fonte\",\"tooltip_download\":\"Download do código fonte\",\"tooltip_undo\":\"Desfazer\",\"tooltip_redo\":\"Refazer\",\"tooltip_run\":\"Executar o programa\",\"tooltip_evaluate\":\"Avaliar o programa\",\"tooltip_help\":\"Ajuda\",\"tooltip_add_global\":\"Adicionar variável global\",\"tooltip_hide_function\":\"Ocultar os elementos da função\",\"var_menu_select_var\":\"Selecione uma variável\",\"var_menu_select_all\":\"Selecione\",\"var_menu_select_function\":\"Selecione uma função\",\"expression_menu_select\":\"Construir uma expressão lógica\",\"inform_valid_content\":\"Informe o conteúdo!\",\"inform_valid_expression\":\"Construa uma expressão lógica!\",\"tooltip_terminal_clear\":\"Limpa o terminal removendo todos os textos já escritos e os pendentes.\",\"tooltip_terminal_show\":\"Exibe o terminal caso esteja escondido\",\"tooltip_terminal_hide\":\"Esconde o terminal caso não esteja escondido\",\"text_ivprog_version\":\"Versão\",\"text_teacher_filter\":\"Filtro\",\"text_teacher_filter_active\":\"Ativado\",\"text_teacher_filter_help\":\"Ao ativar o filtro, as modificações do iVProg estarão bloqueadas.\",\"text_join_assessment_outputs\":\" ; \",\"assessment-detail-time-label\":\"Duração\",\"assessment-detail-grade-label\":\"Nota\",\"assessment-detail-input-label\":\"Entradas\",\"assessment-detail-output-label\":\"Saídas\",\"assessment-detail-expected-label\":\"Esperava\",\"assessment-detail-generated-label\":\"Gerou\",\"assessment-detail-result-label\":\"Resultado\",\"assessment-detail-title\":\"Caso de Teste $0\",\"text_teacher_generate_outputs\":\"Gerar saídas\",\"text_teacher_generate_outputs_algorithm\":\"Antes de gerar as saídas, elabore um algoritmo!\",\"text_code_for_from\":\"de\",\"text_code_for_to\":\"ate\",\"text_code_for_pass\":\"passo\",\"text_for_from\":\"de\",\"text_for_to\":\"até\",\"text_for_pass\":\"passo\",\"text_relational_expression\":\"Relacionais\",\"write_command_newline_on\":\"Quebra de linha ativada\",\"write_command_newline_off\":\" Quebra de linha desativada\",\"write_seprator_menu_text\":\"Espaço\",\"initial_program_code\":\"programa {\\\\n\\\\n\\\\t\\\\tfuncao vazio inicio () {\\\\n\\\\t\\\\t\\\\t// Inicie seu codigo aqui!\\\\n\\\\t\\\\t}\\\\n}\",\"type_char\":\"caractere\",\"charvar_default_value\":\"A\",\"write_seprator_menu_tooltip\":\"Separador para imprimir mais valores/variáveis\"},\"en\":{\"function\":\"function\",\"btn_clear\":\"Clean\",\"btn_function\":\"Function\",\"btn_arithmetic_plus\":\"Addition\",\"btn_arithmetic_minus\":\"Subtraction\",\"btn_arithmetic_multiplication\":\"Multiplication\",\"btn_arithmetic_division\":\"Division\",\"btn_arithmetic_module\":\"Remainder\",\"btn_break\":\"break\",\"btn_case\":\"Case\",\"start\":\"main\",\"type_void\":\"void\",\"type_integer\":\"int\",\"logic_operator_and\":\"AND\",\"logic_operator_or\":\"OR\",\"logic_operator_not\":\"not\",\"type_real\":\"real\",\"program\":\"program\",\"type_text\":\"string\",\"textvar_default_value\":\"text\",\"type_boolean\":\"bool\",\"logic_value_true\":\"true\",\"logic_value_false\":\"false\",\"variable\":\"Variable\",\"command\":\"Command\",\"new_parameter\":\"parameter\",\"new_variable\":\"variable\",\"new_global\":\"global\",\"new_function\":\"new_function\",\"matrix\":\"matrix\",\"vector\":\"vector\",\"text_comment_start\":\"Function initial comment\",\"text_comment_main\":\"This is the main funcion\",\"text_read_var\":\"Input/Read data\",\"text_write_var\":\"Output/Write data\",\"text_command_read\":\"read\",\"text_command_write\":\"write\",\"text_return\":\"return\",\"text_btn_return\":\"Return\",\"text_comment\":\"Comment\",\"string_join_or\":\"or\",\"matrix_info_string\":\"matrix of $0\",\"vector_info_string\":\"vector of $0\",\"text_attribution\":\"Assignment\",\"text_if\":\"if\",\"text_break\":\"break\",\"text_else\":\"else\",\"text_for\":\"repeat_for\",\"text_code_while\":\"repeat_while\",\"text_code_do\":\"repeat\",\"text_code_do_until\":\"until\",\"text_command_do\":\"repeat\",\"text_command_while\":\"repeat while\",\"text_command_do_until\":\"until\",\"text_code_switch\":\"switch\",\"text_code_case\":\"case\",\"text_config_programming\":\"Programming\",\"text_config_programming_both\":\"Visual & Textual\",\"text_config_programming_textual\":\"Textual\",\"text_config_programming_visual\":\"Visual\",\"text_logic_expression\":\"Logic\",\"text_arithmetic_expression\":\"Arithmetics\",\"text_iftrue\":\"If true then\",\"text_message_error_activity_file\":\"There was an error processing the activity.<br> Reload the page to try again.\",\"text_message_error_activity_reload\":\"Reload\",\"text_repeatNtimes\":\"Repeat N times\",\"text_receives\":\"receives\",\"text_whiletrue\":\"While true\",\"text_dowhiletrue\":\"Repeat until true\",\"text_switch\":\"Switch\",\"text_functioncall\":\"Function call\",\"text_value\":\"Value\",\"text_operator\":\"Operator\",\"text_parentheses\":\"Parentheses\",\"text_change\":\"Modify\",\"text_teacher_algorithm\":\"Algorithm\",\"text_teacher_algorithm_include\":\"Include the algorithm below in the activity\",\"text_teacher_test_case\":\"Test cases\",\"text_teacher_config\":\"Configurations\",\"text_teacher_data_types\":\"Data types\",\"text_teacher_commands\":\"Commands\",\"text_teacher_functions\":\"Functions\",\"text_teacher_create_functions\":\"Create new functions\",\"text_teacher_create_movement_functions\":\"Move functions\",\"text_teacher_test_case_input\":\"Input\",\"text_teacher_test_case_output\":\"Output\",\"text_teacher_test_case_actions\":\"Actions\",\"text_teacher_test_case_add\":\"Add test case\",\"text_header_ivprog_functions\":\"iVProg Functions\",\"text_menu_functions_math\":\"Math\",\"text_menu_functions_text\":\"Text\",\"text_menu_functions_array\":\"Array\",\"text_menu_functions_conversion\":\"Conversion\",\"text_no_variable\":\"No variable declared\",\"text_no_variable_instruction\":\"Before using a variable, you need to create it\",\"text_ivprog_description\":\"Interactive and Visual Programming on the Internet\",\"tooltip_visual\":\"Visual programming\",\"tooltip_textual\":\"Textual programming\",\"tooltip_upload\":\"Upload source code\",\"tooltip_download\":\"Download source code\",\"tooltip_undo\":\"Undo\",\"tooltip_redo\":\"Redo\",\"tooltip_run\":\"Run the program\",\"tooltip_evaluate\":\"Evaluate the program\",\"tooltip_help\":\"Help\",\"tooltip_add_global\":\"Add a global variable\",\"tooltip_hide_function\":\"Hide function elements\",\"var_menu_select_var\":\"Select a variable\",\"var_menu_select_all\":\"Select\",\"var_menu_select_function\":\"Select a function\",\"expression_menu_select\":\"Construct a logic expression\",\"inform_valid_content\":\"Provide some data\",\"inform_valid_expression\":\"Construct a logic expression\",\"tooltip_terminal_clear\":\"Clears the terminal by removing all wrriten and pending text.\",\"tooltip_terminal_show\":\"Shows the terminal if it is hidden\",\"tooltip_terminal_hide\":\"Hides the terminal if it is not on display\",\"text_ivprog_version\":\"Version\",\"text_teacher_filter\":\"Filter\",\"text_teacher_filter_active\":\"Activated\",\"text_teacher_filter_help\":\"By activating the filter modifications in iVProg will be blocked\",\"text_join_assessment_outputs\":\" ; \",\"assessment-detail-time-label\":\"Duration\",\"assessment-detail-grade-label\":\"Grade\",\"assessment-detail-input-label\":\"Inputs\",\"assessment-detail-output-label\":\"Outputs\",\"assessment-detail-expected-label\":\"Expected\",\"assessment-detail-generated-label\":\"Generated\",\"assessment-detail-result-label\":\"Result\",\"assessment-detail-title\":\"Test Case $0\",\"text_teacher_generate_outputs\":\"Generate outputs\",\"text_teacher_generate_outputs_algorithm\":\"Before generating the outputs you need to create an algorithm\",\"text_code_for_from\":\"from\",\"text_code_for_to\":\"to\",\"text_code_for_pass\":\"pass\",\"text_for_from\":\"from\",\"text_for_to\":\"to\",\"text_for_pass\":\"pass\",\"text_relational_expression\":\"Relational\",\"write_command_newline_on\":\" Line break is on\",\"write_command_newline_off\":\" Line break is off\",\"write_seprator_menu_text\":\"Spacer\",\"initial_program_code\":\"program {\\\\n\\\\n\\\\t\\\\tfunction void main () {\\\\n\\\\t\\\\t\\\\t// Start your code here!\\\\n\\\\t\\\\t}\\\\n}\",\"type_char\":\"char\",\"charvar_default_value\":\"A\",\"write_seprator_menu_tooltip\":\"Separator used to print more values/variables\"},\"es\":{\"function\":\"function\",\"btn_clear\":\"Limpiar\",\"btn_function\":\"Funcíon\",\"btn_arithmetic_plus\":\"Adición\",\"btn_arithmetic_minus\":\"Sustracción\",\"btn_arithmetic_multiplication\":\"Multiplicación\",\"btn_arithmetic_division\":\"División\",\"btn_arithmetic_module\":\"Resto\",\"btn_break\":\"break\",\"btn_case\":\"Caso\",\"start\":\"main\",\"type_void\":\"void\",\"type_integer\":\"int\",\"logic_operator_and\":\"AND\",\"logic_operator_or\":\"OR\",\"logic_operator_not\":\"not\",\"type_real\":\"real\",\"program\":\"program\",\"type_text\":\"string\",\"textvar_default_value\":\"texto\",\"type_boolean\":\"bool\",\"logic_value_true\":\"true\",\"logic_value_false\":\"false\",\"variable\":\"Variable\",\"command\":\"Comando\",\"new_parameter\":\"parametro\",\"new_variable\":\"variable\",\"new_global\":\"global\",\"new_function\":\"nueva_función\",\"matrix\":\"matriz\",\"vector\":\"vector\",\"text_comment_start\":\"Comentario inicial de la función\",\"text_comment_main\":\"Esta es la función principal\",\"text_read_var\":\"Entrada/Lectura de dados\",\"text_write_var\":\"Salida/Escribir datos\",\"text_command_read\":\"read\",\"text_command_write\":\"write\",\"text_return\":\"return\",\"text_btn_return\":\"Devolución\",\"text_comment\":\"Comentario\",\"string_join_or\":\"or\",\"matrix_info_string\":\"matriz de $0\",\"vector_info_string\":\"vector de $0\",\"text_attribution\":\"Asignación\",\"text_if\":\"if\",\"text_break\":\"break\",\"text_else\":\"else\",\"text_for\":\"repeat_for\",\"text_code_while\":\"repeat_while\",\"text_code_do\":\"repeat\",\"text_code_do_until\":\"until\",\"text_command_do\":\"repeat\",\"text_command_while\":\"repeat while\",\"text_command_do_until\":\"until\",\"text_code_switch\":\"switch\",\"text_code_case\":\"case\",\"text_config_programming\":\"Programación\",\"text_config_programming_both\":\"Visual & Textual\",\"text_config_programming_textual\":\"Textual\",\"text_config_programming_visual\":\"Visual\",\"text_logic_expression\":\"Lógicos\",\"text_arithmetic_expression\":\"Aritmética\",\"text_iftrue\":\"Si verdad entonces\",\"text_message_error_activity_file\":\"Se produjo un error al procesar la actividad.<br> Recargar la página para volver a intentarlo.\",\"text_message_error_activity_reload\":\"Recargar\",\"text_repeatNtimes\":\"Repetir N veces\",\"text_receives\":\"receives\",\"text_whiletrue\":\"Mientras verdad\",\"text_dowhiletrue\":\"Repita hasta verdad\",\"text_switch\":\"Switch\",\"text_functioncall\":\"Llamada de función\",\"text_value\":\"Valor\",\"text_operator\":\"Operador\",\"text_parentheses\":\"Paréntesis\",\"text_change\":\"Modify\",\"text_teacher_algorithm\":\"Algorithm\",\"text_teacher_algorithm_include\":\"Incluir el algoritmo en la actividad.\",\"text_teacher_test_case\":\"Test cases\",\"text_teacher_config\":\"Configuraciones\",\"text_teacher_data_types\":\"Data types\",\"text_teacher_commands\":\"Commands\",\"text_teacher_functions\":\"Funciones\",\"text_teacher_create_functions\":\"Create new functions\",\"text_teacher_create_movement_functions\":\"Move functions\",\"text_teacher_test_case_input\":\"Input\",\"text_teacher_test_case_output\":\"Output\",\"text_teacher_test_case_actions\":\"Actions\",\"text_teacher_test_case_add\":\"Add test case\",\"text_header_ivprog_functions\":\"iVProg Functions\",\"text_menu_functions_math\":\"Math\",\"text_menu_functions_text\":\"Text\",\"text_menu_functions_array\":\"Array\",\"text_menu_functions_conversion\":\"Conversion\",\"text_no_variable\":\"No variable declared\",\"text_no_variable_instruction\":\"Antes de usar una variable, debe crearla\",\"text_ivprog_description\":\"Interactive and Visual Programming on the Internet\",\"tooltip_visual\":\"Visual programming\",\"tooltip_textual\":\"Textual programming\",\"tooltip_upload\":\"Upload source code\",\"tooltip_download\":\"Download source code\",\"tooltip_undo\":\"Undo\",\"tooltip_redo\":\"Redo\",\"tooltip_run\":\"Run the program\",\"tooltip_evaluate\":\"Evaluate the program\",\"tooltip_help\":\"Help\",\"tooltip_add_global\":\"Add a global variable\",\"tooltip_hide_function\":\"Hide function elements\",\"var_menu_select_var\":\"Select a variable\",\"var_menu_select_all\":\"Select\",\"var_menu_select_function\":\"Select a function\",\"expression_menu_select\":\"Construct a logic expression\",\"inform_valid_content\":\"Proporcionar algunos datos\",\"inform_valid_expression\":\"Construct a logic expression\",\"tooltip_terminal_clear\":\"Borra el terminal eliminando todo el texto escrito y pendiente.\",\"tooltip_terminal_show\":\"Muestra el terminal si está oculto.\",\"tooltip_terminal_hide\":\"Oculta el terminal si no está en exhibición\",\"text_ivprog_version\":\"Version\",\"text_teacher_filter\":\"Filter\",\"text_teacher_filter_active\":\"Activated\",\"text_teacher_filter_help\":\"Al activar el filtro, las modificaciones en iVProg serán bloqueadas\",\"text_join_assessment_outputs\":\" ;\",\"assessment-detail-time-label\":\"Duration\",\"assessment-detail-grade-label\":\"Grade\",\"assessment-detail-input-label\":\"Inputs\",\"assessment-detail-output-label\":\"Outputs\",\"assessment-detail-expected-label\":\"Expected\",\"assessment-detail-generated-label\":\"Generated\",\"assessment-detail-result-label\":\"Result\",\"assessment-detail-title\":\"Test Case $0\",\"text_teacher_generate_outputs\":\"Generate outputs\",\"text_teacher_generate_outputs_algorithm\":\"Antes de generar las salidas necesita crear un algoritmo\",\"text_code_for_from\":\"from\",\"text_code_for_to\":\"to\",\"text_code_for_pass\":\"pass\",\"text_for_from\":\"from\",\"text_for_to\":\"to\",\"text_for_pass\":\"pass\",\"text_relational_expression\":\"Relational\",\"write_command_newline_on\":\"El salto de línea está activado\",\"write_command_newline_off\":\"El salto de línea está desactivado\",\"write_seprator_menu_text\":\"Spacer\",\"initial_program_code\":\"program {\\\\n\\\\n\\\\t\\\\tfunction void main () {\\\\n\\\\t\\\\t\\\\t// Start your code here!\\\\n\\\\t\\\\t}\\\\n}\",\"type_char\":\"char\",\"charvar_default_value\":\"A\",\"write_seprator_menu_tooltip\":\"Separator used to print more values/variables\"}}","import line_i18n from 'line-i18n'\nimport { IVProgProcessor } from \"./../processor/ivprogProcessor\";\nimport { DOMConsole} from \"./../io/domConsole\";\nimport * as LocalizedStringsService from \"../services/localizedStringsService\";\nimport { OutputMatching } from './output_matching/output_matching';\nimport { Config } from '../util/config';\n\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nconst StringTypes = line_i18n.StringTypes;\n\nconst AssessmentConfig = {\n max_instruction_count: 350250,\n suspend_threshold: 200\n}\n\nexport class IVProgAssessment {\n\n constructor (ast_code, testCases, domConsole) {\n this.ast_code = ast_code;\n this.testCases = testCases;\n this.domConsole = domConsole;\n this.old_config = JSON.parse(JSON.stringify(Config));\n Config.setConfig(AssessmentConfig);\n }\n\n runTest () {\n try {\n // loop test cases and show messages through domconsole\n const partialTests = this.testCases.map( (t, name) => {\n return new OutputMatching(new IVProgProcessor(this.ast_code), t.input, t.output, name);\n });\n const testResult = partialTests.map(om => om.eval());\n return Promise.all(testResult).then(results => {\n let grade = 0;\n for(let i = 0; i < results.length; i += 1) {\n const result = results[i];\n grade += result.grade;\n if(result.grade == 1) {\n this.writeToConsole(DOMConsole.INFO, StringTypes.MESSAGE,'test_case_success',\n result.name + 1, result.generateOutput());\n } else if (result.status == 1) {\n this.writeToConsole(DOMConsole.ERR, StringTypes.ERROR,'test_case_failed_exception',\n result.name + 1, result.error_msg, result.generateOutput());\n } else {\n this.writeToConsole(DOMConsole.ERR, StringTypes.ERROR,'test_case_failed',\n result.name + 1, result.generateOutput());\n }\n }\n grade /= results.length;\n const channel = grade == 1 ? DOMConsole.INFO : DOMConsole.ERR;\n this.writeToConsole(channel, StringTypes.MESSAGE, \"test_suite_grade\", (grade * 100).toFixed(2));\n return grade;\n });\n // return testResult.then(function (total) {\n // const grade = total / this.testCases.length;\n // const channel = grade == 1 ? DOMConsole.INFO : DOMConsole.ERR;\n // this.writeToConsole(channel, StringTypes.MESSAGE, \"test_suite_grade\", (grade * 100).toFixed(2));\n // return Promise.resolve(grade)\n // }).catch(err => {\n // this.domConsole.err(\"Erro inesperado durante o cálculo da nota.\");// try and show error messages through domconsole\n // this.domConsole.err(err.message);\n // return Promise.resolve(0);\n // });\n } catch (error) {\n this.showErrorMessage(DOMConsole.ERR, StringTypes.MESSAGE, \"unexpected_execution_error\");\n this.domConsole.err(error.message);\n return Promise.resolve(0);\n } finally {\n Config.setConfig(this.old_config);\n }\n }\n\n showErrorMessage (errorID, ...args) {\n this.domConsole.err(LocalizedStrings.getError(errorID, args));\n }\n\n showInfoMessage (msgID, ...args) {\n this.domConsole.info(LocalizedStrings.getMessage(msgID, args));\n }\n\n writeToConsole (channel, msgType, msgID, ...args) {\n let msg = LocalizedStrings.getString(msgID, msgType);\n msg = LocalizedStrings.processString(msg, args);\n this.domConsole.writeRawHTML(msg, channel);\n }\n}\n","import StringDiff from \"./../../util/string_diff\";\nimport { LocalizedStrings } from './../../services/localizedStringsService'\n\nexport class OutputAssessmentResult {\n\n static get PAGE_TEMPLATE () {\n return `<!DOCTYPE html>\n <html>\n <head>\n <meta http-equiv='content-type' content='text/html; charset=UTF-8'>\n <link rel='stylesheet' href='css/ivprog-assessment.css' type='text/css'/>\n </head>\n <body>\n :assessment-result:\n </body>\n </html>`;\n }\n\n static get DETAIL_TEMPLATE () {\n return `<div class='details-body'>\n <div class='details-header'>\n <h2>:test-name:</h2>\n <p>:time-label:: <span>:time:ms</span></p>\n <p>:grade-label:: <span>:grade:%</span></p>\n </div>\n <div>\n <h3>:input-label:</h3>\n <ul>\n <li>:input-list:</li>\n </ul>\n </div>\n <div>\n <h3>:output-label:</h3>\n :output-result:\n </div>\n </div>`;\n }\n\n static get OUPUT_TABLE_TEMPLATE () {\n return `<div class='detaisl-div-table'>\n <table class='assessment-output-table'>\n <tr>\n <th>:expected-label:</th>\n <th>:generated-label:</th>\n <th>:result-label:</th>\n </tr>\n :results:\n </table>\n </div>`;\n }\n\n static get OUTPUT_TEMPLATE () {\n return `<tr><td class=':class-expected:'>$0</td>\n <td class=':class-generated:'>$1</td>\n <td class=':class-result:'>$2</td></tr>`;\n }\n\n static get EMPTY_OUTPUT_TEMPLATE () {\n return `<div class='assessment-popup'><img class='assessment-empty-output' src='img/empty.svg'>\n <span class='assessment-popuptext'>$0</span></div>`;\n }\n\n static get FAILED_TEMPLATE () {\n return `<p class='assessment-failed-execution'><span class='assessment-failed-case'>✗</span>$0</p>`;\n }\n\n static get INPUT_INFO_TEMPLATE () {\n return `<span class='$0'>$1</span>`;\n }\n\n // Status code - it is not grade related!\n // 0 - Succesful execution\n // 1 - failed execution\n constructor (name, status, inputs, result, store, time, error_msg = '') {\n this.name = name;\n this.status = status;\n this.inputs = inputs;\n this.results = result;\n this.store = store;\n this.time = time;\n this.error_msg = error_msg;\n }\n\n get grade () {\n if(this.results == null) {\n return 0;\n }\n return this.results.reduce((prev, val) => prev + val.grade, 0) / this.results.length;\n }\n\n prepareResults () {\n let template = OutputAssessmentResult.DETAIL_TEMPLATE;\n const grade = (this.grade * 100).toFixed(2);\n const time = this.time || \"-\";\n template = template.replace(':test-name:', LocalizedStrings.getUI('assessment-detail-title', [this.name + 1]));\n template = template.replace(':time-label:', LocalizedStrings.getUI('assessment-detail-time-label'));\n template = template.replace(':time:', time);\n template = template.replace(':grade-label:', LocalizedStrings.getUI('assessment-detail-grade-label'));\n template = template.replace(':grade:', grade);\n const input_spans = this.prepareInputList(this.inputs);\n template = template.replace(':input-label:', LocalizedStrings.getUI('assessment-detail-input-label'));\n template = template.replace(':input-list:', input_spans);\n template = template.replace(':output-label:', LocalizedStrings.getUI('assessment-detail-output-label'));\n if(this.status == 0) {\n const output_rows = this.results.map(result => {\n if(result.type == \"string\") {\n return this.formatString(result);\n } else if (result.type == \"number\") {\n return this.formatNumber(result);\n } else {\n return this.formatBool(result);\n }\n }, this);\n template = template.replace(':output-result:', this.prepareOutputTable(output_rows));\n } else {\n let failed_text = OutputAssessmentResult.FAILED_TEMPLATE;\n failed_text = failed_text.replace(\"$0\", this.error_msg);\n template = template.replace(\":output-result:\", failed_text);\n }\n return template;\n }\n\n prepareInputList (input_list) {\n const list = input_list.map(input => {\n let template = OutputAssessmentResult.INPUT_INFO_TEMPLATE;\n template = template.replace(\"$1\", input.value);\n if(input.read) {\n template = template.replace(\"$0\", \"assessment-input-read\");\n } else {\n template = template.replace(\"$0\", \"assessment-input-unread\");\n }\n return template;\n }, this);\n return list.join(LocalizedStrings.getUI('text_join_assessment_outputs'));\n }\n\n prepareOutputTable (output_rows) {\n let template = OutputAssessmentResult.OUPUT_TABLE_TEMPLATE;\n template = template.replace(':expected-label:', LocalizedStrings.getUI('assessment-detail-expected-label'));\n template = template.replace(':generated-label:', LocalizedStrings.getUI('assessment-detail-generated-label'));\n template = template.replace(':result-label:', LocalizedStrings.getUI('assessment-detail-result-label'));\n template = template.replace(':results:', output_rows.join(''));\n return template;\n }\n\n generateOutput () {\n const assessment_result = this.prepareResults();\n let page = OutputAssessmentResult.PAGE_TEMPLATE;\n page = page.replace(':assessment-result:', assessment_result);\n page = page.replace(/(\\r|\\n|\\t)/gm,'').replace(/> *</g, '><');\n return page;\n }\n\n formatNumber (result) {\n const result_class = result.grade == 1 ? 'assessment-number-result' : 'assessment-number-result-failed';\n let template = this.formatOutput('assessment-number-expected',\n 'assessment-number-generated', result_class, result);\n return template\n }\n\n formatBool (result) {\n const result_class = result.grade == 1 ? 'assessment-bool-result' : 'assessment-bool-result-failed';\n let template = this.formatOutput('assessment-bool-expected',\n 'assessment-bool-generated', result_class, result);\n return template\n }\n\n formatOutput (expected_class, generated_class, result_class, result) {\n let template = OutputAssessmentResult.OUTPUT_TEMPLATE;\n template = template.replace(\":class-expected:\", expected_class);\n template = template.replace(\":class-generated:\", generated_class);\n template = template.replace(\":class-result:\", result_class);\n let expected_tmpl = result.expected;\n let generated_tmpl = result.generated;\n if(expected_tmpl == null) {\n expected_tmpl = OutputAssessmentResult.EMPTY_OUTPUT_TEMPLATE.replace('$0',\n LocalizedStrings.getMessage('assessment-empty-expected-tooltip'));\n } else if(generated_tmpl == null) {\n generated_tmpl = OutputAssessmentResult.EMPTY_OUTPUT_TEMPLATE.replace('$0',\n LocalizedStrings.getMessage('assessment-empty-generated-tooltip'));\n }\n template = template.replace(\"$0\", expected_tmpl);\n template = template.replace(\"$1\", generated_tmpl);\n const final_result = result.grade == 1 ? \"✓\" : \"✗\"\n template = template.replace(\"$2\", final_result);\n return template\n }\n\n formatString (result) {\n const expected_class = 'assessment-string-expected';\n const generated_class = 'assessment-string-generated';\n //const result_class = 'assessment-string-result';\n\n let template = OutputAssessmentResult.OUTPUT_TEMPLATE;\n template = template.replace(\":class-expected:\", expected_class);\n template = template.replace(\":class-generated:\", generated_class);\n //template = template.replace(\":class-result:\", result_class);\n\n const g_string = result.generated || \"\";\n const e_string = result.expected || \"\";\n // console.log(\"generated: \", g_string,\"expected: \", e_string);\n let g_string_tmpl = g_string;\n let e_string_tmpl = e_string;\n if(result.generated == null) {\n g_string_tmpl = OutputAssessmentResult.EMPTY_OUTPUT_TEMPLATE.replace('$0',\n LocalizedStrings.getMessage('assessment-empty-generated-tooltip'));\n } else if (result.expected == null) {\n e_string_tmpl = OutputAssessmentResult.EMPTY_OUTPUT_TEMPLATE.replace('$0',\n LocalizedStrings.getMessage('assessment-empty-expected-tooltip'));\n }\n template = template.replace(\"$0\", e_string_tmpl);\n template = template.replace(\"$1\", g_string_tmpl);\n if(result.grade == 1) {\n template = template.replace(\"$2\", \"✓\");\n template = template.replace(\":class-result:\", 'assessment-string-result');\n } else {\n const diff = StringDiff(g_string, e_string);\n // console.log(diff);\n const diff_vec = diff.map(part => this.getDiffStringStyle(part[1], part[0]), this);\n const diff_string = diff_vec.reduce((prev, actual) => prev + actual, \"\");\n template = template.replace(\"$2\", \"<span class='assessment-failed-case'>✗</span>\" + diff_string);\n template = template.replace(\":class-result:\", \"assessment-string-diff\");\n }\n return template;\n }\n\n getDiffStringStyle (text, action) {\n const template = \"<span class='$0'>$1</span>\"\n // Fix missing whitespace when its a single element\n text = text.replace(/\\s/g,\"&#160;\");\n switch(action) {\n case StringDiff.INSERT:\n return template.replace(\"$0\", \"stringdiff-insert\").replace(\"$1\", text);\n case StringDiff.DELETE:\n return template.replace(\"$0\", \"stringdiff-delete\").replace(\"$1\", text);\n case StringDiff.EQUAL:\n return template.replace(\"$0\", \"stringdiff-equal\").replace(\"$1\", text);\n }\n }\n}\n","import { Decimal } from 'decimal.js';\nimport { InputAssessment } from \"../../util/input_assessment\";\nimport { OutputTest } from \"../../util/outputTest\";\nimport { Config } from \"../../util/config\";\nimport { levenshteinDistance } from \"../../util/utils\";\nimport { OutputAssessmentResult } from './assessment_result';\nimport * as TypeParser from \"./../../typeSystem/parsers\";\nimport * as LocalizedStringsService from \"../../services/localizedStringsService\";\nimport * as OutputResult from \"./output_result\";\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nexport class OutputMatching {\n\n static get NUM_REGEX () {\n return /^[+-]?([0-9]+([.][0-9]*)?(e[+-]?[0-9]+)?)$/;\n }\n\n static get NUM_IN_STRING_REGEX () {\n return /[+-]?([0-9]+([.][0-9]*)?(e[+-]?[0-9]+)?)/g;\n }\n\n static get BOOLEAN_REGEX () {\n const str = `^(${LocalizedStrings.getUI(\"logic_value_true\")}|${LocalizedStrings.getUI(\"logic_value_false\")})$`;\n return new RegExp(str);\n }\n\n static get BOOLEAN_IN_STRING_REGEX () {\n const str = `(${LocalizedStrings.getUI(\"logic_value_true\")}|${LocalizedStrings.getUI(\"logic_value_false\")})`;\n return new RegExp(str, 'g');\n }\n\n constructor (program, input_list, expected_output, test_name) {\n this.program = program;\n this.name = test_name;\n this.input_list = input_list;\n this.expected_output = expected_output;\n }\n\n eval () {\n const refThis = this;\n const input = new InputAssessment(this.input_list);\n const gen_output = new OutputTest();\n this.program.registerInput(input);\n this.program.registerOutput(gen_output);\n const start_time = Date.now();\n return this.program.interpretAST().then( sto => {\n const final_time = Date.now() - start_time;\n if(input.isInputAvailable()) {\n return new OutputAssessmentResult(this.name, 1, input.input_list,\n null, sto, final_time, refThis.getErrorMessage('test_case_few_reads', this.name+1))\n }\n const result = gen_output.list.map((g_out, i) => {\n if(i >= this.expected_output.length) {\n return new OutputResult.OutputMatchResult(null, g_out, 0, this.getPotentialOutputType(g_out));\n }\n return this.outputMatch(g_out, this.expected_output[i]);\n }, this);\n if(this.expected_output.length > gen_output.list.length) {\n console.log(\"Saída insuficientes!\",this.expected_output.length,gen_output.list.length);\n for(let i = gen_output.list.length; i < this.expected_output.length; ++i) {\n const e_out = this.expected_output[i];\n result.push(new OutputResult.OutputMatchResult(e_out, null, 0, this.getPotentialOutputType(e_out)));\n }\n } else if (this.expected_output.length == 0 && this.expected_output.length == gen_output.list.length) {\n // no output expected....\n result.push(new OutputResult.OutputMatchResult(\"\", \"\", 1, \"string\"));\n }\n return new OutputAssessmentResult(this.name, 0, input.input_list, result, sto, final_time);\n }).catch(error => {\n return new OutputAssessmentResult(this.name, 1, input.input_list, null, null,\n null, refThis.getErrorMessage('test_case_exception', this.name + 1, error.message))\n });\n }\n\n getPotentialOutputType (output) {\n if(OutputMatching.NUM_REGEX.test(output)) {\n return \"number\";\n } else if (OutputMatching.BOOLEAN_REGEX.test(output)) {\n return \"bool\";\n } else {\n return \"string\";\n }\n }\n\n outputMatch (g_output, e_output) {\n if(OutputMatching.NUM_REGEX.test(e_output)) {\n if(!OutputMatching.NUM_REGEX.test(g_output)) {\n return this.checkStrings(g_output, e_output);\n }\n const g_num = new Decimal(g_output);\n const e_num = new Decimal(e_output);\n return this.checkNumbers(g_num, e_num);\n } else if (OutputMatching.BOOLEAN_REGEX.test(e_output)) {\n if (!OutputMatching.BOOLEAN_REGEX.test(g_output)) {\n return this.checkStrings(g_output, e_output)\n }\n const g_bool = TypeParser.toBool(g_output);\n const e_bool = TypeParser.toBool(e_output);\n return this.checkBoolean(g_bool, e_bool);\n } else {\n return this.checkStrings(g_output, e_output);\n }\n }\n\n checkNumbers (g_num, e_num) {\n const decimalPlaces = Math.min(e_num.dp(), Config.decimalPlaces);\n g_num = new Decimal(g_num.toFixed(decimalPlaces, Decimal.ROUND_FLOOR));\n e_num = new Decimal(e_num.toFixed(decimalPlaces, Decimal.ROUND_FLOOR));\n const result = g_num.eq(e_num);\n const grade = result ? 1 : 0;\n return OutputResult.createNumberResult(e_num.toNumber(), g_num.toNumber(), grade);\n }\n\n checkBoolean (g_bool, e_bool) {\n const grade = g_bool == e_bool ? 1 : 0;\n const g_bool_text = TypeParser.convertBoolToString(g_bool);\n const e_bool_text = TypeParser.convertBoolToString(e_bool);\n return OutputResult.createBoolResult(e_bool_text, g_bool_text, grade);\n }\n\n checkStrings (g_output, e_ouput) {\n const assessmentList = []\n let e_output_clean = e_ouput.trim();\n let g_output_clean = g_output.trim();\n if (OutputMatching.NUM_IN_STRING_REGEX.test(e_ouput)) {\n const expected_numbers = e_ouput.match(OutputMatching.NUM_IN_STRING_REGEX);\n const generated_numbers = g_output.match(OutputMatching.NUM_IN_STRING_REGEX) || [];\n const result = generated_numbers.map((val, i) => {\n if(i >= expected_numbers.length) {\n return OutputResult.createNumberResult(null, val, 0);\n }\n const g_val = new Decimal(val)\n const e_val = new Decimal(expected_numbers[i]);\n return this.checkNumbers(g_val, e_val);\n }, this);\n if(expected_numbers.length > generated_numbers.length) {\n for(let i = generated_numbers.length; i < expected_numbers.length; ++i) {\n result.push(OutputResult.createNumberResult(expected_numbers[i], null, 0));\n }\n }\n e_output_clean = e_output_clean.replace(OutputMatching.NUM_IN_STRING_REGEX, '');\n g_output_clean = g_output_clean.replace(OutputMatching.NUM_IN_STRING_REGEX, '');\n const numberGrade = result.reduce((prev, r) => prev + r.grade, 0) / result.length;\n assessmentList.push(numberGrade);\n }\n if(OutputMatching.BOOLEAN_IN_STRING_REGEX.test(e_ouput)) {\n const expected_bools = e_ouput.match(OutputMatching.BOOLEAN_IN_STRING_REGEX);\n const generated_bools = g_output.match(OutputMatching.BOOLEAN_IN_STRING_REGEX) || [];\n const result = generated_bools.map((val, i) => {\n if(i >= expected_bools.length) {\n return OutputResult.createBoolResult(null, val, 0);\n }\n const g_bool = TypeParser.toBool(val);\n const e_bool = TypeParser.toBool(expected_bools[i]);\n return this.checkBoolean(g_bool, e_bool );\n }, this);\n if(expected_bools.length > generated_bools.length) {\n for(let i = generated_bools.length; i < expected_bools.length; ++i) {\n result.push(OutputResult.createBoolResult(expected_bools[i], null, 0));\n }\n }\n e_output_clean = e_output_clean.replace(OutputMatching.BOOLEAN_IN_STRING_REGEX, '');\n g_output_clean = g_output_clean.replace(OutputMatching.BOOLEAN_IN_STRING_REGEX, '');\n const boolGrade = result.reduce((prev, r) => prev + r.grade, 0) / result.length;\n assessmentList.push(boolGrade);\n }\n const dist = levenshteinDistance(g_output_clean, e_output_clean);\n let gradeDiff = Math.max(0, e_output_clean.length - dist)/e_output_clean.length;\n gradeDiff = Number.isNaN(gradeDiff) ? 0 : gradeDiff;\n const assessment_size = assessmentList.length + 1;\n const gradeAcc = assessmentList.reduce((prev, val) => prev + val/assessment_size, 0);\n const finalGrade = 1 * (gradeDiff/assessment_size + gradeAcc);\n return OutputResult.createStringResult(e_ouput, g_output, finalGrade);\n }\n\n getErrorMessage (errorID, ...args) {\n return LocalizedStrings.getError(errorID, args);\n }\n}\n\n","\nexport function createNumberResult (expected, generated, grade) {\n return new OutputMatchResult(expected, generated, grade, \"number\");\n}\n\nexport function createBoolResult (expected, generated, grade) {\n return new OutputMatchResult(expected, generated, grade, \"bool\");\n}\n\nexport function createStringResult (expected, generated, grade) {\n return new OutputMatchResult(expected, generated, grade, \"string\");\n}\n\nexport class OutputMatchResult {\n\n constructor (expected, generated, grade, type) {\n this.expected = expected;\n this.generated = generated;\n this.grade = grade;\n this.type = type;\n }\n}","import { SyntaxErrorFactory } from \"./error/syntaxErrorFactory\";\n\nexport function recover (_) {\n const start = this._tokenStartCharIndex;\n const stop = this._input.index;\n let text = this._input.getText(start, stop);\n text = this.getErrorDisplay(text);\n const line = this._tokenStartLine;\n const column = this._tokenStartColumn;\n throw SyntaxErrorFactory.invalid_character(text, line, column);\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\n get isVector () {\n return this.columns == null;\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 /**\n * @type {Command[]}\n */\n this.commands = [];\n }\n\n /**\n * \n * @param {Command[]} commands \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 { Command } from './command';\n\nexport class For extends Command {\n\n constructor (for_id, for_from, for_to, for_pass, commandBlock) {\n super();\n this.for_id = for_id;\n this.for_from = for_from;\n this.for_to = for_to;\n this.for_pass = for_pass;\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, variadic = false) {\n this.type = type;\n this.id = id;\n this.byRef = byRef;\n this.variadic = variadic;\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 /**\n * \n * @param {string} name \n * @param {import('./../../typeSystem/itype').IType} returnType \n * @param {import('./formalParameter').FormalParameter[]} formalParameters \n * @param {import('./commandBlock').CommandBlock} commandBlock \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 }\n \n hasVariadic () {\n return this.formalParameters.some( p => p.variadic);\n }\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 { RepeatUntil } from './repeatUntil';\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 RepeatUntil,\n Switch,\n Case,\n SysCall,\n FormalParameter,\n FunctionCall\n};","import { While } from './while';\n\nexport class RepeatUntil 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 Return extends Command {\n\n constructor(expression) {\n super();\n this.expression = expression;\n }\n \n}","import { Command } from './command';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Expression } from '../expressions/expression';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Case } from '.';\n\nexport class Switch extends Command {\n \n /**\n * \n * @param {Expression} expression \n * @param {Case[]} cases \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\nfunction createError (message_id, context = []) {\n return new SyntaxError(LocalizedStrings.getError(message_id, context));\n}\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 createError(\"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 createError(\"id_missing\", context);\n },\n eos_missing: (token) => {\n const context = [token.line, token.column];\n return createError(\"eos_missing\", context);\n },\n invalid_array_dimension: (typeName, token) => {\n const context = [token.line, token.column, typeName];\n return createError(\"invalid_array_dimension\", context);\n },\n invalid_array_size: (token) => {\n const context = [token.line];\n return createError(\"invalid_array_size\", context);\n },\n invalid_main_return: (name, typeName, token) => {\n const context = [name, typeName, token.line];\n return createError(\"invalid_main_return\", context);\n },\n invalid_var_declaration: (token) => {\n const context = [token.line];\n return createError(\"invalid_var_declaration\", context);\n },\n invalid_break_command: (cmdName, token) => {\n const context = [token.line, cmdName];\n return createError(\"invalid_break_command\", context);\n },\n invalid_terminal: (token) => {\n const context = [token.text, token.line, token.column];\n return createError('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 createError(\"invalid_type\", context);\n },\n const_not_init: (token) => {\n const context = [token.line, token.column];\n return createError(\"const_not_init\", context);\n },\n invalid_id_format: (token) => {\n const context = [token.text, token.line, token.column];\n return createError(\"invalid_id_format\", context);\n },\n duplicate_function: (token) => {\n const context = [token.text, token.line, token.column];\n return createError(\"duplicate_function\", context);\n },\n main_parameters: () => {\n return createError(\"main_parameters\");\n },\n duplicate_variable: (token) => {\n const context = [token.text, token.line, token.column];\n return createError(\"duplicate_variable\", context);\n },\n invalid_character: (text, line, _column) => {\n const context = [text, line];\n return createError(\"invalid_character\", context);\n },\n annonymous_array_literal: (token) => {\n const context = [token.line];\n return createError(\"annonymous_array_literal\", context);\n },\n invalid_matrix_literal_line: (exp, sourceInfo) => {\n const context = [exp, sourceInfo.line];\n return createError(\"invalid_matrix_literal_line\", context);\n },\n cannot_infer_matrix_line: (name, sourceInfo) => {\n const context = [name, sourceInfo.line];\n return createError(\"cannot_infer_matrix_line\", context);\n },\n cannot_infer_matrix_column: (name, sourceInfo) => {\n const context = [name, sourceInfo.line];\n return createError(\"cannot_infer_matrix_column\", context);\n },\n cannot_infer_vector_size: (name, sourceInfo) => {\n const context = [name, sourceInfo.line];\n return createError(\"cannot_infer_vector_size\", context);\n },\n matrix_to_vector_literal_attr: (name, exp, sourceInfo) => {\n const context = [sourceInfo.line, exp, name];\n return createError(\"matrix_to_vector_literal_attr\", context);\n },\n vector_to_matrix_literal_attr: (name, exp, sourceInfo) => {\n const context = [sourceInfo.line, exp, name];\n return createError(\"vector_to_matrix_literal_attr\", context);\n },\n array_init_not_literal: (sourceInfo) => {\n const context = [sourceInfo.line];\n return createError(\"array_init_not_literal\", context);\n },\n array_exceeds_2d: (sourceInfo) => {\n const context = [sourceInfo.line];\n return createError(\"array_exceeds_2d\", context);\n },\n invalid_matrix_id_dimension: (sourceInfo) => {\n const context = [sourceInfo.line];\n return createError(\"invalid_matrix_id_dimension\", context);\n },\n invalid_vector_init: (sourceInfo) => {\n const context = [sourceInfo.line];\n return createError(\"invalid_vector_init\", context);\n },\n invalid_matrix_init: (sourceInfo) => {\n const context = [sourceInfo.line];\n return createError(\"invalid_matrix_init\", 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\tlet text = null;\n\t\tif(strColumn) {\n\t\t\ttext = `${this.id}[${strLine}][${strColumn}]`;\n\t\t} else {\n\t\t\ttext = `${this.id}[${strLine}]`;\n\t\t}\n\t\tif(this.parenthesis ){\n\t\t\treturn `(${text})`\n\t\t} else {\n\t\t\treturn text;\n\t\t}\n\t}\n}","import { Literal } from './literal';\n\nexport class ArrayLiteral extends Literal {\n \n /**\n * \n * @param {import('../../typeSystem/itype').IType} type \n * @param {import('./expression').Expression[]} value \n */\n constructor(type, value) {\n super(type);\n this.value = value;\n }\n\n get subtype () {\n const 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 const element = this.value[0];\n if (!(element instanceof ArrayLiteral)){\n return null;\n } else {\n return element.value.length;\n }\n }\n\n get isVector () {\n return this.columns === null;\n }\n\n get isValid () {\n return this.validateSize() && this.validateType();\n }\n\n validateType () {\n const valid = true;\n // const subtype = this.subtype;\n // if(this.columns !== null) {\n // const len = this.lines;\n // const len2 = this.columns;\n // for (let i = len - 1; i >= 0 && valid; --i) {\n // for (let j = len2 - 1; j >= 0 && valid; --j) {\n // if(!this.value[i].value[j].type.isCompatilbe(subtype)) {\n // valid = false;\n // break;\n // }\n // }\n // }\n // } else {\n // const len = this.lines;\n // for (var i = len - 1; i >= 0 && valid; i--) {\n // if(!this.value[i].type.isCompatilbe(subtype)) {\n // valid = false;\n // break;\n // }\n // }\n // }\n // Cannot validate type since no information on variables literals are available\n return valid;\n }\n\n validateSize () {\n const valid = true;\n // if(this.columns !== null) {\n // const equalityTest = this.value.map(v => v.value.length)\n // .reduce((old, next) => {\n // console.log(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 // check is now made inside IVProgParser.parseVectorList(...)\n return valid;\n }\n\n toString () {\n const strList = this.value.map(arrayLiteral => arrayLiteral.toString());\n const text = \"{\" + strList.join(',') + \"}\";\n if(this.parenthesis) {\n return `(${text})`;\n } else {\n return text;\n }\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 const text = convertBoolToString(this.value);\n if(this.parenthesis) {\n return `(${text})`\n } else {\n return text;\n }\n }\n}","import { Literal } from './literal';\nimport { Types } from './../../typeSystem/types';\n\nexport class CharLiteral extends Literal {\n \n constructor(value) {\n super(Types.CHAR);\n this.value = value;\n }\n\n toString () {\n const text = `'${this.value}'`;\n if(this.parenthesis) {\n return `(${text})`\n } else {\n return text;\n }\n }\n}","export class Expression {\n\n constructor () {\n\t\tthis._sourceInfo = null;\n\t\tthis._parenthesis = false;\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\n\tset parenthesis (flag) {\n\t\tthis._parenthesis = flag;\n\t}\n\n\tget parenthesis () {\n\t\treturn this._parenthesis;\n\t}\n}","import { Expression } from './expression';\nimport { LanguageDefinedFunction } from '../../processor/definedFunctions';\n\nexport class FunctionCall extends Expression {\n\n\t/**\n\t * \n\t * @param {string} id \n\t * @param {Expression[]} actualParameters \n\t */\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\tif(this.parenthesis) {\n\t\t\treturn `(${name + params})`;\n\t\t} else {\n\t\t\treturn name + params;\n\t\t}\n\t}\n}","import { ArrayAccess } from './arrayAccess';\nimport { FunctionCall } from './functionCall';\nimport { IntLiteral } from './intLiteral';\nimport { RealLiteral } from './realLiteral';\nimport { BoolLiteral } from './boolLiteral';\nimport { CharLiteral } from './charLiteral'\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 CharLiteral,\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 if(this.parenthesis) {\n return `(${l + op + r})`;\n } else {\n return l + op + r;\n }\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 const text = convertToString(this.value, this.type);\n if(this.parenthesis) {\n return `(${text})`;\n } else {\n return text;\n }\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 const text = convertToString(this.value, this.type);\n if (this.parenthesis) {\n return `(${text})`;\n } else {\n return text;\n }\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 const text = '\"' + this.value + '\"';\n if(this.parenthesis) {\n return `(${text})`;\n } else {\n return text;\n }\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 if(this.parenthesis) {\n return `(${op + l})`;\n } else {\n return op + l;\n }\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 if(this.parenthesis) {\n return `(${this.id})`;\n } else {\n return this.id;\n }\n }\n}","import { CommonTokenStream, InputStream } from 'antlr4/index';\nimport * as Expressions from './expressions';\nimport * as Commands from './commands';\nimport * as AstHelpers from \"./ast_helpers\";\nimport * as Parsers from '../typeSystem/parsers';\nimport { Types } from \"../typeSystem/types\";\nimport { ArrayType } from \"../typeSystem/array_type\";\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.inputStream = new InputStream(input)\n this.lexer = new lexerClass(this.inputStream);\n this.lexer.recover = AstHelpers.recover.bind(this.lexer);\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 this.lexerClass.RK_CHARACTER\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 this.consumeNewLines();\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 for(;;) {\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],\n 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, sourceInfo) {\n const index = this.getCurrentVariableStack().indexOf(variableID);\n if(index !== -1) {\n throw SyntaxErrorFactory.duplicate_variable(sourceInfo);\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 let dimensions = 0;\n const sourceInfo = SourceInfo.createSourceInfo(this.getToken())\n const idString = this.parseID();\n this.checkVariableDuplicate(idString, sourceInfo);\n // Check for array or vector\n // ID[int/IDi?][int/IDj?]\n if (this.checkOpenBrace(true)) {\n this.pos += 1; \n this.consumeNewLines();\n dim1 = this.parseArrayDimension();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos += 1;\n dimensions += 1\n if(this.checkOpenBrace(true)) {\n this.pos += 1;\n this.consumeNewLines();\n dim2 = this.parseArrayDimension();\n this.consumeNewLines();\n this.checkCloseBrace();\n this.pos += 1;\n dimensions += 1\n }\n return this.parseArrayDeclaration(typeString, isConst, idString, sourceInfo, dimensions, dim1, dim2);\n } else {\n const equalsToken = this.getToken();\n if(isConst && equalsToken.type !== this.lexerClass.EQUAL ) {\n throw SyntaxErrorFactory.const_not_init(sourceInfo);\n }\n if(equalsToken.type === this.lexerClass.EQUAL) {\n this.pos++;\n initial = this.parseExpressionOR();\n }\n const declaration = new Commands.Declaration(idString, typeString, initial, isConst);\n declaration.sourceInfo = sourceInfo;\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\n parseArrayDeclaration (typeString, isConst, idString, sourceInfo, dimensions, dim1, dim2) {\n const equalsToken = this.getToken();\n let n_lines = dim1;\n let n_columns = dim2;\n let initial = null;\n let dim_is_id = false;\n if(dim1 instanceof Expressions.VariableLiteral || dim2 instanceof Expressions.VariableLiteral) {\n dim_is_id = true;\n if(dimensions > 1 && (dim1 == null || dim2 == null)) {\n throw SyntaxErrorFactory.invalid_matrix_id_dimension(SourceInfo.createSourceInfo(equalsToken));\n }\n }\n if(isConst && equalsToken.type !== this.lexerClass.EQUAL ) {\n throw SyntaxErrorFactory.const_not_init(sourceInfo);\n }\n if(equalsToken.type === this.lexerClass.EQUAL) {\n if(dim_is_id) {\n if(dimensions == 1) {\n throw SyntaxErrorFactory.invalid_vector_init(SourceInfo.createSourceInfo(equalsToken));\n } else {\n throw SyntaxErrorFactory.invalid_matrix_init(SourceInfo.createSourceInfo(equalsToken));\n }\n }\n this.pos += 1\n initial = this.parseArrayLiteral(typeString);\n }\n if(initial == null && dim1 == null) {\n if(dimensions > 1) {\n throw SyntaxErrorFactory.cannot_infer_matrix_line(idString, sourceInfo);\n }\n throw SyntaxErrorFactory.cannot_infer_vector_size(idString, sourceInfo);\n }\n if(dimensions > 1) {\n if(initial == null && dim2 == null) {\n throw SyntaxErrorFactory.cannot_infer_matrix_column(idString, sourceInfo);\n }\n }\n\n if(dimensions === 1 && initial != null && !initial.isVector) {\n const expString = initial.toString();\n throw SyntaxErrorFactory.matrix_to_vector_literal_attr(idString, expString, initial.sourceInfo);\n } else if (dimensions > 1 && initial != null && initial.isVector) {\n const expString = initial.toString();\n throw SyntaxErrorFactory.vector_to_matrix_literal_attr(idString, expString, initial.sourceInfo);\n }\n\n if(dim1 == null) {\n n_lines = new Expressions.IntLiteral(Parsers.toInt(initial.lines));\n n_lines.sourceInfo = sourceInfo;\n }\n\n if (dimensions > 1) {\n if(dim2 == null) {\n n_columns = new Expressions.IntLiteral(Parsers.toInt(initial.columns));\n n_columns.sourceInfo = sourceInfo;\n } \n }\n const declaration = new Commands.ArrayDeclaration(idString,\n new ArrayType(typeString, dimensions), n_lines, n_columns, initial, isConst);\n declaration.sourceInfo = sourceInfo;\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 if(dimToken.type === this.lexerClass.CLOSE_BRACE) {\n return null;\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(Parsers.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(Parsers.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(Parsers.toString(text));\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n getCharLiteral (token) {\n const text = token.text;\n const exp = new Expressions.CharLiteral(Parsers.toChar(text));\n exp.sourceInfo = SourceInfo.createSourceInfo(token);\n return exp;\n }\n\n getBoolLiteral (token) {\n const val = Parsers.toBool(token.text);\n const exp = new Expressions.BoolLiteral(val);\n exp.sourceInfo = SourceInfo.createSourceInfo(token);\n return exp;\n }\n\n parseArrayLiteral (typeString) {\n const openCurly = this.checkOpenCurly(true);\n if(!openCurly) {\n const invalid_token = this.getToken();\n throw SyntaxErrorFactory.array_init_not_literal(SourceInfo.createSourceInfo(invalid_token));\n }\n const beginArray = this.getToken();\n if (this.parsingArrayDimension >= 2) {\n throw SyntaxErrorFactory.array_exceeds_2d(SourceInfo.createSourceInfo(beginArray));\n }\n this.pos += 1;\n this.parsingArrayDimension += 1;\n this.consumeNewLines();\n let data = null;\n const maybeCurlyOpen = this.checkOpenCurly(true);\n if(maybeCurlyOpen) {\n // This is potentially a list of vectors\n data = this.parseVectorList(typeString);\n } else {\n data = this.parseExpressionList();\n }\n this.consumeNewLines();\n this.checkCloseCurly()\n const endArray = this.getToken();\n this.pos += 1;\n this.parsingArrayDimension -= 1;\n const sourceInfo = SourceInfo.createSourceInfoFromList(beginArray, endArray);\n let dataDim = 1;\n if(data[0] instanceof Expressions.ArrayLiteral) {\n dataDim += 1;\n } else if(data.length == 1) {\n console.log(\"Talvez uma variável seja uma melhor opção\");\n }\n const type = new ArrayType(typeString, dataDim);\n const exp = new Expressions.ArrayLiteral(type, data);\n exp.sourceInfo = sourceInfo;\n return exp;\n }\n\n /** \n * Returns a list of ArrayLiterals. Helper function for parsing matrices\n */\n parseVectorList (typeString) {\n const list = [];\n let lastSize = null;\n for(;;) {\n this.checkOpenCurly();\n const beginArray = this.getToken();\n if (this.parsingArrayDimension >= 2) {\n throw SyntaxErrorFactory.array_exceeds_2d(SourceInfo.createSourceInfo(beginArray));\n }\n this.pos += 1;\n this.parsingArrayDimension += 1;\n this.consumeNewLines();\n const data = this.parseExpressionList();\n this.consumeNewLines();\n this.checkCloseCurly()\n const endArray = this.getToken();\n this.pos += 1;\n this.parsingArrayDimension -= 1;\n const sourceInfo = SourceInfo.createSourceInfoFromList(beginArray, endArray);\n if(lastSize == null) {\n lastSize = data.length;\n } else if (lastSize !== data.length) {\n const expString = this.inputStream.getText(beginArray.start, endArray.stop);\n throw SyntaxErrorFactory.invalid_matrix_literal_line(expString, sourceInfo);\n }\n const type = new ArrayType(typeString, 1);\n const exp = new Expressions.ArrayLiteral(type, data);\n exp.sourceInfo = sourceInfo;\n list.push(exp);\n const commaToken = this.getToken();\n if(commaToken.type !== this.lexerClass.COMMA) {\n break;\n } \n this.pos += 1;\n this.consumeNewLines();\n }\n if(list.length == 1) {\n console.log(\"Talvez um vetor seja uma melhor opção\");\n }\n return list\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 ArrayType(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 for(;;) {\n let dimensions = 0;\n let reference = false;\n const typeString = this.parseType();\n let maybeIDToken = this.getToken();\n if(maybeIDToken.type === this.lexerClass.RK_REFERENCE) {\n reference = true;\n this.pos += 1;\n maybeIDToken = this.getToken();\n }\n const idString = this.parseID();\n this.checkVariableDuplicate(idString, maybeIDToken);\n if (this.checkOpenBrace(true)) {\n this.pos += 1;\n dimensions += 1;\n this.checkCloseBrace();\n this.pos += 1;\n if(this.checkOpenBrace(true)) {\n this.pos += 1;\n dimensions += 1;\n this.checkCloseBrace();\n this.pos += 1;\n }\n }\n let type = null;\n if(dimensions > 0) {\n type = new ArrayType(typeString, dimensions);\n } else {\n type = typeString;\n }\n const parameter = new Commands.FormalParameter(type, idString, reference);\n parameter.sourceInfo = SourceInfo.createSourceInfo(maybeIDToken);\n list.push(parameter);\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 case this.lexerClass.RK_CHARACTER:\n return Types.CHAR;\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 let parsedCommand = false;\n for(;;) {\n\n const cmd = this.parseCommand();\n if (cmd === null)\n break;\n if(cmd !== -1) {\n if (cmd instanceof Array) {\n if(parsedCommand) {\n const lastToken = this.getToken(this.pos - 1);\n throw SyntaxErrorFactory.invalid_var_declaration(lastToken);\n }\n variablesDecl = variablesDecl.concat(cmd);\n } else {\n parsedCommand = true;\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);\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 || token.type === this.lexerClass.RK_WHILE_ALT) {\n return this.parseWhile();\n } else if (token.type === this.lexerClass.RK_FOR || token.type === this.lexerClass.RK_FOR_ALT) {\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.parseRepeatUntil();\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 parseRepeatUntil () {\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_DO_UNTIL) {\n throw SyntaxErrorFactory.token_missing_one(this.lexer.literalNames[this.lexerClass.RK_DO_UNTIL], 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.RepeatUntil(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 const for_token = this.getToken();\n this.pos += 1;\n // parse ID\n const id_token = this.getToken();\n const id = this.parseID();\n const for_id = new Expressions.VariableLiteral(id);\n for_id.sourceInfo = SourceInfo.createSourceInfo(id_token);\n // END parse ID\n const for_from = this.parseForParameters(this.lexerClass.RK_FOR_FROM);\n const for_to = this.parseForParameters(this.lexerClass.RK_FOR_TO);\n const maybePass = this.parseForParameters(this.lexerClass.RK_FOR_PASS);\n this.consumeNewLines();\n const commandsBlock = this.parseCommandBlock();\n this.popScope();\n const cmd = new Commands.For(for_id, for_from, for_to, maybePass, commandsBlock);\n cmd.sourceInfo = SourceInfo.createSourceInfo(for_token);\n return cmd;\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 parseForParameters (keyword_code) {\n if(keyword_code === this.lexerClass.RK_FOR_PASS) {\n if(this.checkOpenCurly(true)) {\n return null;\n }\n }\n const from_token = this.getToken();\n if (from_token.type !== keyword_code) {\n // TODO better error message\n const keyword = this.lexer.literalNames[keyword_code];\n throw new Error(\"Error de sintaxe no comando repita_para: esperava-se \"+keyword+\" mas encontrou \"+from_token.text);\n }\n this.pos += 1;\n let int_or_id = this.getToken();\n let is_unary_op = false;\n let op = null;\n if(int_or_id.type === this.lexerClass.SUM_OP) {\n is_unary_op = true;\n op = int_or_id.text;\n this.pos += 1;\n int_or_id = this.getToken();\n }\n let for_from = null;\n if (int_or_id.type === this.lexerClass.ID) {\n for_from = new Expressions.VariableLiteral(this.parseID());\n for_from.sourceInfo = SourceInfo.createSourceInfo(int_or_id);\n } else if (int_or_id.type === this.lexerClass.INTEGER) {\n this.pos += 1;\n for_from = this.getIntLiteral(int_or_id);\n }\n if (for_from == null) {\n // TODO better error message\n const keyword = this.lexer.literalNames[keyword_code]; \n throw new Error(\"Error de sintaxe no comando repeita_para: \"+ int_or_id.text + \" não é compativel com o esperado para o paramentro \"+ keyword + \". O valor deve ser um inteiro ou variável.\");\n }\n if (is_unary_op) {\n for_from = new Expressions.UnaryApp(convertFromString(op), for_from);\n }\n return for_from;\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 const 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 let exp = null;\n switch(token.type) {\n case this.lexerClass.SUM_OP:\n this.pos++;\n sourceInfo = SourceInfo.createSourceInfo(token);\n 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.CHARACTER:\n this.pos++;\n return this.getCharLiteral(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 // No more annonymous array\n // return this.parseArrayLiteral();\n throw SyntaxErrorFactory.annonymous_array_literal(token);\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 += 1;\n this.consumeNewLines();\n const exp = this.parseExpressionOR();\n this.consumeNewLines();\n this.checkCloseParenthesis();\n const tokenB = this.getToken();\n this.pos += 1;\n exp.sourceInfo = SourceInfo.createSourceInfoFromList(tokenA, tokenB);\n exp.parenthesis = true;\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 for(;;) {\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}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertFromString = exports.Operators = void 0;\nexports.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});\nfunction convertFromString(op) {\n switch (op) {\n case '+': return exports.Operators.ADD;\n case '-': return exports.Operators.SUB;\n case '*': return exports.Operators.MULT;\n case '/': return exports.Operators.DIV;\n case '%': return exports.Operators.MOD;\n case '>': return exports.Operators.GT;\n case '>=': return exports.Operators.GE;\n case '<': return exports.Operators.LT;\n case '<=': return exports.Operators.LE;\n case '==': return exports.Operators.EQ;\n case '!=': return exports.Operators.NEQ;\n case 'and': return exports.Operators.AND;\n case 'or': return exports.Operators.OR;\n case 'not': return exports.Operators.NOT;\n }\n return null;\n}\nexports.convertFromString = convertFromString;\n","export class SourceInfo {\n\n static createSourceInfo (token) {\n return new SourceInfo(token.line, token.column, token.text, token.text.length);\n }\n\n static createSourceInfoFromList (tokenA, tokenB) {\n const line = tokenA.line;\n const column = tokenA.column;\n // adapted 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, text, size) {\n this.line = line;\n this.column = column;\n this.text = text;\n this.size = size;\n }\n\n}","import { LocalizedStrings } from \"./../services/localizedStringsService\";\nimport * as Utils from \"./../util/utils\";\nimport { Config } from \"./../util/config\";\n\nexport class DOMConsole {\n static get BASH_TEMPLATE () {\n return `\n <div class=\"bash-title\">\n <i id=\"ivprog-console-clearbtn\" class=\"icon eraser\" style=\"float:left;padding-left: 5px\"></i>\n <span>Terminal</span>\n <i id=\"ivprog-console-showbtn\" class=\"icon window maximize outline\" style=\"float:right\"></i>\n <i id=\"ivprog-console-hidebtn\" class=\"icon window minimize outline\" style=\"float:right\"></i>\n </div>\n <div id='ivprog-term' class=\"bash-body\"></div>`;\n }\n\n static get INPUT_CARET_TEMPLATE () {\n return `\n <div id=\"cmd\">\n <span></span>\n <div id=\"cursor\"></div>\n </div>`;\n }\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 static get INPUT () {\n return 3;\n }\n\n constructor (elementID, disableMarginTop = false) {\n this.disableMarginTop = disableMarginTop;\n this.input = null;\n this.cursorInterval = null;\n this.idleInterval = null;\n this.inputDiv = null;\n this.inputCMD = null;\n this.inputSpan = null;\n this.cursorRef = null;\n this.needInput = false;\n this.clearBtn = null;\n this.hideBtn = null;\n this.showBtn = null;\n this.termDiv = null;\n this.anyKey = false;\n let actualID = elementID;\n if (elementID[0] === \"#\") {\n actualID = elementID.substring(1);\n }\n this.parent = document.getElementById(actualID);\n this.setup();\n this.inputListeners = [];\n this.hideInput();\n this.pending_writes = [];\n this.last_clear = -1;\n }\n\n setup () {\n this._setupDom();\n this._setupEvents();\n }\n\n _setupEvents () {\n this.input.addEventListener(\"keydown\", this.registerInput.bind(this));\n this.clearBtn.addEventListener(\"click\", this.clearBtnClick.bind(this));\n this.hideBtn.addEventListener(\"click\", this.hideBtnClick.bind(this));\n this.showBtn.addEventListener(\"click\", this.showBtnClick.bind(this));\n }\n\n registerInput (event) {\n if (!this.needInput) {\n return;\n }\n const keyCode = event.which;\n if (keyCode === 13 || this.anyKey) {\n if (this.idleInterval != null) {\n clearInterval(this.idleInterval);\n this.idleInterval = null;\n }\n let text = this.input.value;\n text = text.replace(\"[\\n\\r]+\", \"\");\n this.notifyListeners(text);\n this._appendUserInput(text);\n this.input.value = \"\";\n this.inputSpan.innerHTML = \"\";\n this.currentLine = null;\n }\n }\n\n _setupDom () {\n const bashNode = document.createElement(\"div\");\n bashNode.classList.add(\"bash\");\n bashNode.innerHTML = DOMConsole.BASH_TEMPLATE;\n this.termDiv = bashNode.querySelector(\"#ivprog-term\");\n this.termDiv.classList.add(\"ivprog-term-div\");\n this.inputDiv = document.createElement(\"div\");\n this.inputDiv.id = \"ivprog-terminal-inputdiv\";\n this.inputDiv.innerHTML = DOMConsole.INPUT_CARET_TEMPLATE;\n this.input = document.createElement(\"input\");\n this.input.setAttribute(\"name\", \"command\");\n this.input.setAttribute(\"value\", \"\");\n this.input.setAttribute(\"type\", \"text\");\n this.inputDiv.append(this.input);\n this.termDiv.append(this.inputDiv);\n bashNode.append(this.termDiv);\n this.parent.append(bashNode);\n this.inputCMD = this.inputDiv.querySelector(\"#cmd\");\n this.cursorRef = this.inputCMD.querySelector(\"#cursor\");\n this.inputSpan = this.inputCMD.querySelector(\"span\");\n this.clearBtn = bashNode.querySelector(\"#ivprog-console-clearbtn\");\n this.hideBtn = bashNode.querySelector(\"#ivprog-console-hidebtn\");\n this.showBtn = bashNode.querySelector(\"#ivprog-console-showbtn\");\n this._setupCursor();\n //Jquery tooltips....\n window\n .$(this.clearBtn)\n .popup({ content: LocalizedStrings.getUI(\"tooltip_terminal_clear\") });\n window\n .$(this.showBtn)\n .popup({ content: LocalizedStrings.getUI(\"tooltip_terminal_show\") });\n window\n .$(this.hideBtn)\n .popup({ content: LocalizedStrings.getUI(\"tooltip_terminal_hide\") });\n }\n\n _setupCursor () {\n this.inputCMD.addEventListener(\"click\", this.blinkCaretAndFocus.bind(this));\n //this.inputCMD.click();\n\n this.input.addEventListener(\"keyup\", this.updateSpanText.bind(this));\n this.input.addEventListener(\"blur\", this.stopBlinkCaret.bind(this));\n }\n\n blinkCaretAndFocus () {\n if (this.cursorInterval != null) {\n return;\n }\n this.input.focus();\n this.cursorInterval = window.setInterval(() => {\n if (this.cursorRef.style.visibility === \"visible\") {\n this.cursorRef.style.visibility = \"hidden\";\n } else {\n this.cursorRef.style.visibility = \"visible\";\n }\n }, 500);\n }\n\n updateSpanText () {\n this.inputSpan.innerHTML = this.input.value;\n if (this.idleInterval != null) window.clearInterval(this.idleInterval);\n this.scheduleNotify();\n }\n\n stopBlinkCaret () {\n clearInterval(this.cursorInterval);\n this.cursorInterval = null;\n this.cursorRef.style.visibility = \"visible\";\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 writeRawHTML (text, channel) {\n this._appendTextLn(text, channel, false);\n }\n\n write (text, newLine = false) {\n this._appendText(text, DOMConsole.USER, newLine);\n }\n\n info (text) {\n this._appendTextLn(text, DOMConsole.INFO);\n }\n\n err (text) {\n this._appendTextLn(text, DOMConsole.ERR);\n }\n\n async _appendText (text, type, newLine = false) {\n // console.debug(\"Caling appendText\");\n const write_time = Date.now();\n this.pending_writes.push(0);\n await Utils.sleep(5);\n this.pending_writes.pop();\n if (this.last_clear >= write_time) {\n return;\n }\n\n if (this.currentLine == null) {\n const divClass = this.getClassForType(type);\n const textDiv = document.createElement(\"div\");\n textDiv.classList.add(divClass);\n this.termDiv.insertBefore(textDiv, this.inputDiv);\n this.currentLine = textDiv;\n }\n this.currentLine.innerHTML += this.getOutputText(text);\n if (newLine) {\n // console.debug(\"append newline\");\n this.currentLine = null;\n }\n this.scrollTerm();\n }\n\n async _appendTextLn (text, type, filter = true) {\n const write_time = Date.now();\n this.pending_writes.push(0);\n await Utils.sleep(5);\n this.pending_writes.pop();\n if (this.last_clear >= write_time) {\n return;\n }\n const divClass = this.getClassForType(type);\n const textDiv = document.createElement(\"div\");\n textDiv.classList.add(divClass);\n if (filter) textDiv.innerHTML = this.getOutputText(text);\n else textDiv.innerHTML = `<span>${text}</span>`;\n if (this.currentLine != null && this.currentLine.innerHTML.length === 0) {\n this.termDiv.removeChild(this.currentLine);\n }\n this.termDiv.insertBefore(textDiv, this.inputDiv);\n this.currentLine = null;\n this.scrollTerm();\n }\n\n async _appendUserInput (text) {\n const write_time = Date.now();\n this.pending_writes.push(0);\n await Utils.sleep(5);\n this.pending_writes.pop();\n if (this.last_clear >= write_time) {\n return;\n }\n const divClass = this.getClassForType(DOMConsole.INPUT);\n const textDiv = document.createElement(\"div\");\n textDiv.innerHTML = this.getUserInputText(text);\n textDiv.classList.add(divClass);\n this.termDiv.insertBefore(textDiv, this.inputDiv);\n this.currentLine = null;\n this.scrollTerm();\n }\n\n getOutputText (text) {\n text = text.replace(/\\s/g, \"&#160;\");\n return `<span>${text}</span>`;\n }\n\n getUserInputText (text) {\n if (text.trim().length == 0) {\n text = \"&nbsp;\";\n }\n return `<i class=\"icon keyboard outline\" style=\"float:left\"></i><span>${text}</span>`;\n }\n\n scrollTerm () {\n //scrollIt(this.inputDiv.previousSibling,200);\n this.termDiv.scrollTop = this.termDiv.scrollHeight;\n }\n\n focus () {\n this.termDiv.style.display = \"block\";\n // Is in draggable mode?\n if (!this.disableMarginTop && this.parent.style.top.length == 0) {\n this.parent.style.marginTop = \"-160px\";\n }\n if (this.needInput) {\n this.showInput();\n this.scheduleNotify();\n }\n if (!Utils.isElementInViewport(this.termDiv))\n this.termDiv.scrollIntoView(false);\n this.scrollTerm();\n }\n\n hide () {\n if (this.needInput) {\n clearInterval(this.idleInterval);\n this.hideInput();\n this.needInput = true;\n }\n // Is in draggable mode?\n if (!this.disableMarginTop && this.parent.style.top.length == 0) {\n this.parent.style.marginTop = \"0\";\n }\n this.termDiv.style.display = \"none\";\n }\n\n getClassForType (type) {\n switch (type) {\n case DOMConsole.INPUT:\n return \"ivprog-term-userInput\";\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.input.removeEventListener(\"keyup\", this.updateSpanText.bind(this));\n this.input.removeEventListener(\"blur\", this.stopBlinkCaret.bind(this));\n this.input.removeEventListener(\"keydown\", this.registerInput.bind(this));\n this.inputCMD.removeEventListener(\n \"click\",\n this.blinkCaretAndFocus.bind(this)\n );\n this.clearBtn.removeEventListener(\"click\", this.clearBtnClick.bind(this));\n this.hideBtn.removeEventListener(\"click\", this.hideBtnClick.bind(this));\n this.showBtn.removeEventListener(\"click\", this.showBtnClick.bind(this));\n this.input = null;\n this.inputCMD = null;\n this.inputDiv = null;\n this.termDiv = null;\n this.inputSpan = null;\n this.cursorRef = null;\n this.clearBtn = null;\n this.hideBtn = null;\n this.showBtn = null;\n this.currentLine = null;\n const cNode = this.parent.cloneNode(false);\n this.parent.parentNode.replaceChild(cNode, this.parent);\n if (this.cursorInterval != null) {\n clearInterval(this.cursorInterval);\n }\n if (this.idleInterval != null) {\n clearInterval(this.idleInterval);\n }\n }\n\n showInput () {\n this.needInput = true;\n this.inputDiv.style.display = \"block\";\n this.inputCMD.click();\n //this.inputCMD.scrollIntoView();\n this.scrollTerm();\n }\n\n hideInput () {\n this.needInput = false;\n this.inputDiv.style.display = \" none\";\n clearInterval(this.cursorInterval);\n this.cursorInterval = null;\n }\n\n requestInput (anyKey = false) {\n const promise = new Promise((resolve, _) => {\n this.inputListeners.push(resolve);\n this.anyKey = anyKey;\n if (this.idleInterval == null) this.scheduleNotify();\n this.showInput();\n });\n return promise;\n }\n\n sendOutput (text) {\n //console.debug(text);\n let output = \"\" + text;\n if (output.indexOf(\"\\n\") !== -1) {\n //console.debug(\"newline\");\n const outputList = output.split(\"\\n\");\n let i = 0;\n for (; i < outputList.length - 1; i += 1) {\n //console.debug(\"newline write\");\n let t = outputList[i];\n t = t.replace(/\\t/g, \"&#x0020;&#x0020;\");\n t = t.replace(/\\s/g, \"&#x0020;\");\n if (t.length !== 0) {\n this.write(t);\n }\n this.write(\"\", true);\n }\n let t = outputList[i];\n t = t.replace(/\\t/g, \"&#x0020;&#x0020;\");\n t = t.replace(/\\s/g, \"&#x0020;\");\n if (t.length != 0) this.write(t);\n } else {\n // console.debug(\"no newline\");\n output = output.replace(/\\t/g, \"&#x0020;&#x0020;\");\n output = output.replace(/\\s/g, \"&#x0020;\");\n if (output.length != 0) this.write(output);\n }\n }\n\n clearPendingWrites () {\n this.last_clear = Date.now();\n }\n\n clear () {\n this.clearPendingWrites();\n while (this.inputDiv.parentElement.childNodes.length > 1) {\n this.inputDiv.parentElement.removeChild(\n this.inputDiv.parentElement.firstChild\n );\n }\n this.input.value = \"\";\n this.inputSpan.innerHTML = \"\";\n this.currentLine = null;\n }\n\n clearBtnClick () {\n this.clear();\n }\n\n showBtnClick () {\n this.focus();\n }\n\n hideBtnClick () {\n this.hide();\n }\n\n notifyIdle () {\n this.info(LocalizedStrings.getMessage(\"awaiting_input_message\"));\n this.inputCMD.click();\n }\n\n scheduleNotify () {\n this.idleInterval = window.setInterval(\n this.notifyIdle.bind(this),\n Config.idle_input_interval\n );\n }\n\n cancelPendingInputRequests () {\n this.inputListeners.forEach((resolve) => resolve(\"\"));\n this.inputListeners.splice(0, this.inputListeners.length);\n if (this.idleInterval != null) {\n clearInterval(this.idleInterval);\n this.idleInterval = null;\n }\n this.input.value = \"\";\n this.inputSpan.innerHTML = \"\";\n this.currentLine = null;\n this.hideInput();\n this.anyKey = false;\n }\n}\n","export class Input {\n\n requestInput () {\n throw new Error(\"Must be implemented\");\n }\n\n cancelPendingInputRequests () {\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 {\n initVisualUI,\n addFunctionChangeListener,\n addGlobalChangeListener,\n removeFunctionListener,\n removeGlobalListener,\n getTestCases,\n} from \"./visualUI/functions\";\nimport * as LocalizedStringsService from \"./services/localizedStringsService\";\nimport { i18nHelper } from \"./services/i18nHelper\";\nimport {\n ActionTypes,\n getLogs,\n getLogsAsString,\n registerClick,\n registerUserEvent,\n parseLogs,\n} from \"./services/userLog\";\nimport {\n prepareActivityToStudentHelper,\n autoEval,\n} from \"./util/iassignHelpers\";\nimport { openAssessmentDetail } from \"./util/utils\";\nimport { Config } from \"./util/config\";\nimport * as CodeEditorAll from \"./visualUI/text_editor\";\nimport { autoGenerateTestCaseOutput } from \"./util/auto_gen_output\";\n\nconst CodeEditor = {\n initTextEditor: CodeEditorAll.initTextEditor,\n setCode: CodeEditorAll.setCode,\n getCode: CodeEditorAll.getCode,\n updateEditor: CodeEditorAll.updateEditor,\n disable: CodeEditorAll.disable,\n};\n\nconst i18n = i18nHelper.i18n;\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nexport {\n runner,\n initVisualUI,\n addFunctionChangeListener,\n addGlobalChangeListener,\n removeFunctionListener,\n removeGlobalListener,\n getTestCases,\n autoEval,\n prepareActivityToStudentHelper,\n LocalizedStrings,\n i18n,\n getLogs,\n getLogsAsString,\n registerClick,\n registerUserEvent,\n parseLogs,\n ActionTypes,\n CodeEditor,\n openAssessmentDetail,\n autoGenerateTestCaseOutput,\n Config,\n};\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Address = void 0;\nclass Address {\n /**\n *\n * @param {Number} id the address id\n * @param {never} value the value stored at this address\n */\n constructor(id, value) {\n this.id = id;\n this.value = value;\n }\n}\nexports.Address = Address;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Location = void 0;\nconst address_1 = require(\"./address\");\nclass LocationHolder {\n constructor() {\n this.data = [];\n this.address_id = 0;\n }\n /**\n *\n * @param {never} value the value to be allocated\n * @returns {number} - the address id\n */\n allocate(value) {\n const id = this.address_id;\n // console.log(\"Allocation address \"+ id);\n const address = new address_1.Address(id, value);\n this.data.push(address);\n this.address_id += 1;\n return id;\n }\n /**\n *\n * @param {number} id\n */\n deallocate(id) {\n const index = this.findIndex(id);\n // console.log(\"Deallocation address \"+ id);\n if (index !== -1) {\n this.data.splice(index, 1);\n return true;\n }\n return false;\n }\n /**\n *\n * @param {number} id\n * @returns {Address} the address identified by id\n */\n find(id) {\n let beg = 0;\n let end = this.data.length;\n // console.log(\"Finding address \"+id);\n while (beg < end) {\n const med = Math.floor((beg + end) / 2);\n const address = this.getAddressAt(med);\n if (address.id === id) {\n return address;\n }\n else if (id > address.id) {\n beg = med;\n }\n else {\n end = med;\n }\n }\n return undefined;\n }\n getAddressAt(pos) {\n return this.data[pos];\n }\n /**\n *\n * @param {number} id address id\n * @returns {number} the index of the address identified by id\n */\n findIndex(id) {\n let beg = 0;\n let end = this.data.length;\n while (beg < end) {\n const med = Math.floor((beg + end) / 2);\n const address = this.getAddressAt(med);\n if (address.id === id) {\n return med;\n }\n else if (id > address.id) {\n beg = med;\n }\n else {\n end = med;\n }\n }\n return -1;\n }\n updateAddress(id, value) {\n const index = this.findIndex(id);\n if (index === -1) {\n throw new Error(\"Invalid address...\" + id);\n }\n this.data[index].value = value;\n }\n clear() {\n for (let i = 0; i < this.data.length; i += 1) {\n delete this.data[i];\n }\n this.data = [];\n this.address_id = 0;\n }\n}\nconst inner_ref = new LocationHolder();\nexports.Location = Object.freeze({\n allocate: inner_ref.allocate.bind(inner_ref),\n deallocate: inner_ref.deallocate.bind(inner_ref),\n find: inner_ref.find.bind(inner_ref),\n updateAddress: inner_ref.updateAddress.bind(inner_ref),\n clear: inner_ref.clear.bind(inner_ref),\n size: () => inner_ref.data.length\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resultTypeAfterUnaryOp = exports.resultTypeAfterInfixOp = void 0;\nconst types_1 = require(\"../typeSystem/types\");\nconst operators_1 = require(\"../ast/operators\");\nconst multiType_1 = require(\"../typeSystem/multiType\");\nconst config_1 = require(\"../util/config\");\nfunction buildInfixAddTable() {\n const table = [[], [], [], [], []];\n table[types_1.Types.INTEGER.ord][types_1.Types.INTEGER.ord] = types_1.Types.INTEGER;\n table[types_1.Types.INTEGER.ord][types_1.Types.REAL.ord] = types_1.Types.REAL;\n table[types_1.Types.INTEGER.ord][types_1.Types.STRING.ord] = types_1.Types.STRING;\n table[types_1.Types.REAL.ord][types_1.Types.INTEGER.ord] = types_1.Types.REAL;\n table[types_1.Types.REAL.ord][types_1.Types.REAL.ord] = types_1.Types.REAL;\n table[types_1.Types.REAL.ord][types_1.Types.STRING.ord] = types_1.Types.STRING;\n table[types_1.Types.STRING.ord][types_1.Types.INTEGER.ord] = types_1.Types.STRING;\n table[types_1.Types.STRING.ord][types_1.Types.REAL.ord] = types_1.Types.STRING;\n table[types_1.Types.STRING.ord][types_1.Types.STRING.ord] = types_1.Types.STRING;\n table[types_1.Types.STRING.ord][types_1.Types.BOOLEAN.ord] = types_1.Types.STRING;\n table[types_1.Types.STRING.ord][types_1.Types.CHAR.ord] = types_1.Types.STRING;\n table[types_1.Types.CHAR.ord][types_1.Types.CHAR.ord] = types_1.Types.STRING;\n table[types_1.Types.CHAR.ord][types_1.Types.STRING.ord] = types_1.Types.STRING;\n return table;\n}\nfunction buildInfixMultiDivSubTable() {\n const table = [[], []];\n table[types_1.Types.INTEGER.ord][types_1.Types.INTEGER.ord] = types_1.Types.INTEGER;\n table[types_1.Types.INTEGER.ord][types_1.Types.REAL.ord] = types_1.Types.REAL;\n table[types_1.Types.REAL.ord][types_1.Types.INTEGER.ord] = types_1.Types.REAL;\n table[types_1.Types.REAL.ord][types_1.Types.REAL.ord] = types_1.Types.REAL;\n return table;\n}\nfunction buildInfixEqualityInequalityTable() {\n const table = [[], [], [], [], []];\n table[types_1.Types.INTEGER.ord][types_1.Types.INTEGER.ord] = types_1.Types.BOOLEAN;\n table[types_1.Types.REAL.ord][types_1.Types.REAL.ord] = types_1.Types.BOOLEAN;\n table[types_1.Types.BOOLEAN.ord][types_1.Types.BOOLEAN.ord] = types_1.Types.BOOLEAN;\n table[types_1.Types.STRING.ord][types_1.Types.STRING.ord] = types_1.Types.BOOLEAN;\n table[types_1.Types.CHAR.ord][types_1.Types.CHAR.ord] = types_1.Types.BOOLEAN;\n return table;\n}\nfunction buildInfixRelationalTable() {\n const table = [[], [], [], [], []];\n table[types_1.Types.INTEGER.ord][types_1.Types.INTEGER.ord] = types_1.Types.BOOLEAN;\n table[types_1.Types.REAL.ord][types_1.Types.REAL.ord] = types_1.Types.BOOLEAN;\n table[types_1.Types.STRING.ord][types_1.Types.STRING.ord] = types_1.Types.BOOLEAN;\n table[types_1.Types.CHAR.ord][types_1.Types.CHAR.ord] = types_1.Types.BOOLEAN;\n return table;\n}\nfunction buildInfixAndOrTable() {\n const table = [[], [], [], []];\n table[types_1.Types.BOOLEAN.ord][types_1.Types.BOOLEAN.ord] = types_1.Types.BOOLEAN;\n return table;\n}\nfunction buildInfixModTable() {\n const table = [[]];\n table[types_1.Types.INTEGER.ord][types_1.Types.INTEGER.ord] = types_1.Types.INTEGER;\n return table;\n}\nfunction buildUnarySumSubList() {\n const list = [];\n list[types_1.Types.INTEGER.ord] = types_1.Types.INTEGER;\n list[types_1.Types.REAL.ord] = types_1.Types.REAL;\n return list;\n}\nfunction buildUnaryNegList() {\n const list = [];\n list[types_1.Types.BOOLEAN.ord] = types_1.Types.BOOLEAN;\n return list;\n}\nfunction buildInfixCompatibilityTable() {\n const compatibilityMap = new WeakMap();\n compatibilityMap.set(operators_1.Operators.ADD, buildInfixAddTable());\n compatibilityMap.set(operators_1.Operators.SUB, buildInfixMultiDivSubTable());\n compatibilityMap.set(operators_1.Operators.MULT, buildInfixMultiDivSubTable());\n compatibilityMap.set(operators_1.Operators.DIV, buildInfixMultiDivSubTable());\n compatibilityMap.set(operators_1.Operators.EQ, buildInfixEqualityInequalityTable());\n compatibilityMap.set(operators_1.Operators.NEQ, buildInfixEqualityInequalityTable());\n compatibilityMap.set(operators_1.Operators.GE, buildInfixRelationalTable());\n compatibilityMap.set(operators_1.Operators.GT, buildInfixRelationalTable());\n compatibilityMap.set(operators_1.Operators.LE, buildInfixRelationalTable());\n compatibilityMap.set(operators_1.Operators.LT, buildInfixRelationalTable());\n compatibilityMap.set(operators_1.Operators.OR, buildInfixAndOrTable());\n compatibilityMap.set(operators_1.Operators.AND, buildInfixAndOrTable());\n compatibilityMap.set(operators_1.Operators.MOD, buildInfixModTable());\n return compatibilityMap;\n}\nfunction buildUnaryCompatibilityTable() {\n const compatibilityMap = new WeakMap();\n compatibilityMap.set(operators_1.Operators.ADD, buildUnarySumSubList());\n compatibilityMap.set(operators_1.Operators.SUB, buildUnarySumSubList());\n compatibilityMap.set(operators_1.Operators.NOT, buildUnaryNegList());\n return compatibilityMap;\n}\nconst infixMap = buildInfixCompatibilityTable();\nconst unaryMap = buildUnaryCompatibilityTable();\nfunction resultTypeAfterInfixOp(operator, leftExpressionType, rightExpressionType) {\n try {\n if (leftExpressionType instanceof multiType_1.MultiType && rightExpressionType instanceof multiType_1.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_1.Types.UNDEFINED));\n if (newMulti.length <= 0) {\n if (config_1.Config.enable_type_casting) {\n if (leftExpressionType.isCompatible(types_1.Types.INTEGER) || leftExpressionType.isCompatible(types_1.Types.REAL)) {\n if (rightExpressionType.isCompatible(types_1.Types.INTEGER) || rightExpressionType.isCompatible(types_1.Types.REAL)) {\n return new multiType_1.MultiType([types_1.Types.INTEGER, types_1.Types.REAL]);\n }\n }\n }\n return types_1.Types.UNDEFINED;\n }\n else {\n return new multiType_1.MultiType(newMulti);\n }\n }\n else if (leftExpressionType instanceof multiType_1.MultiType) {\n if (leftExpressionType.isCompatible(rightExpressionType)) {\n return resultTypeAfterInfixOp(operator, rightExpressionType, rightExpressionType);\n }\n else {\n if (config_1.Config.enable_type_casting) {\n if (leftExpressionType.isCompatible(types_1.Types.INTEGER) || leftExpressionType.isCompatible(types_1.Types.REAL)) {\n if (rightExpressionType.isCompatible(types_1.Types.INTEGER) || rightExpressionType.isCompatible(types_1.Types.REAL)) {\n return rightExpressionType;\n }\n }\n }\n return types_1.Types.UNDEFINED;\n }\n }\n else if (rightExpressionType instanceof multiType_1.MultiType) {\n if (rightExpressionType.isCompatible(leftExpressionType)) {\n return resultTypeAfterInfixOp(operator, leftExpressionType, leftExpressionType);\n }\n else {\n if (config_1.Config.enable_type_casting) {\n if (leftExpressionType.isCompatible(types_1.Types.INTEGER) || leftExpressionType.isCompatible(types_1.Types.REAL)) {\n if (rightExpressionType.isCompatible(types_1.Types.INTEGER) || rightExpressionType.isCompatible(types_1.Types.REAL)) {\n return leftExpressionType;\n }\n }\n }\n return types_1.Types.UNDEFINED;\n }\n }\n const resultTable = infixMap.get(operator) || [];\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const resultType = resultTable[leftExpressionType.ord][rightExpressionType.ord];\n if (resultType === null || resultType === undefined) {\n if (config_1.Config.enable_type_casting) {\n if (leftExpressionType.isCompatible(types_1.Types.INTEGER) || leftExpressionType.isCompatible(types_1.Types.REAL)) {\n if (rightExpressionType.isCompatible(types_1.Types.INTEGER) || rightExpressionType.isCompatible(types_1.Types.REAL)) {\n if (operator === operators_1.Operators.MOD) {\n return types_1.Types.INTEGER;\n }\n else if (operator.ord >= 5 && operator.ord <= 10) {\n return types_1.Types.BOOLEAN;\n }\n }\n }\n }\n return types_1.Types.UNDEFINED;\n }\n return resultType;\n }\n catch (e) {\n if (e instanceof TypeError) {\n return types_1.Types.UNDEFINED;\n }\n else {\n throw e;\n }\n }\n}\nexports.resultTypeAfterInfixOp = resultTypeAfterInfixOp;\nfunction resultTypeAfterUnaryOp(operator, leftExpressionType) {\n try {\n if (leftExpressionType instanceof multiType_1.MultiType) {\n let newMulti = [];\n for (let i = 0; i < leftExpressionType.types.length; ++i) {\n const type = leftExpressionType.types[i];\n newMulti.push(resultTypeAfterUnaryOp(operator, type));\n }\n newMulti = newMulti.filter(x => !x.isCompatible(types_1.Types.UNDEFINED));\n if (newMulti.length <= 0) {\n return types_1.Types.UNDEFINED;\n }\n return new multiType_1.MultiType(newMulti);\n }\n const resultTable = unaryMap.get(operator) || [];\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const resultType = resultTable[leftExpressionType.ord];\n if (resultType == null) {\n return types_1.Types.UNDEFINED;\n }\n return resultType;\n }\n catch (e) {\n if (e instanceof TypeError) {\n return types_1.Types.UNDEFINED;\n }\n else {\n throw e;\n }\n }\n}\nexports.resultTypeAfterUnaryOp = resultTypeAfterUnaryOp;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nexports.Context = Object.freeze({\n BASE: Symbol('context:base'),\n BREAKABLE: Symbol('context:breakable'),\n FUNCTION: Symbol('context:function')\n});\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, createCastCharFun} from './lib/lang';\nimport {createAbsFun, createCosFun,\n createInvertFun, createLogFun,\n createMaxFun, createMinFun,\n createNegateFun, createPowFun,\n createSinFun, createSqrtFun,\n createTanFun, createRandFun} from './lib/math';\n\nfunction valueToKey (value, object) {\n for (const key in object) {\n if(Object.prototype.hasOwnProperty.call(object, key)){\n if (object[key] === value) {\n return key;\n }\n }\n }\n return null;\n}\n\nfunction concatObjects (...objs) {\n const result = {};\n for (let i = 0; i < objs.length; i++) {\n const obj = objs[i];\n for(const key in obj) {\n if(Object.prototype.hasOwnProperty.call(obj, 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 $rand: createRandFun()\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 $castChar: createCastCharFun()\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';\nimport { LanguageDefinedFunction } from '../definedFunctions';\n\nconst LocalizedStrings = LocalizedStringsService.getInstance();\n\nfunction createRuntimeError (i18n_id, context = []) {\n return new RuntimeError(LocalizedStrings.getError(i18n_id, context))\n}\n\nfunction createSemanticError (i18n_id, context = []) {\n return new SemanticError(LocalizedStrings.getError(i18n_id, context))\n}\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 createSemanticError(\"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 createSemanticError(\"symbol_not_found\", context);\n },\n function_missing_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [id, sourceInfo.line, sourceInfo.column];\n return createSemanticError(\"function_missing_full\", context);\n } else {\n return ProcessorErrorFactory.function_missing(id);\n }\n },\n function_missing: (id) => {\n const context = [id];\n return createSemanticError(\"function_missing\", context);\n },\n main_missing: () => {\n return createSemanticError(\"main_missing\");\n },\n array_dimension_not_int_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return createSemanticError(\"array_dimension_not_int_full\", context);\n } else {\n return ProcessorErrorFactory.array_dimension_not_int();\n }\n },\n array_dimension_not_int: () => {\n return createSemanticError(\"array_dimension_not_int\");\n },\n unknown_command_full: (sourceInfo)=> {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return createRuntimeError(\"unknown_command_full\", context);\n } else {\n return ProcessorErrorFactory.unknown_command();\n }\n \n },\n unknown_command: ()=> {\n return createRuntimeError(\"unknown_command\");\n },\n incompatible_types_full: (left_type, left_dim, right_type, right_dim, exp, source_info) => {\n if(source_info) {\n const context = [LocalizedStrings.translateType(left_type, left_dim), exp, source_info.line,\n LocalizedStrings.translateType(right_type, right_dim)];\n return createSemanticError(\"incompatible_types_full\", context);\n } else {\n return ProcessorErrorFactory.incompatible_types(left_type, left_dim, right_type, right_dim, exp);\n }\n },\n incompatible_types: (left_type, left_dim, right_type, right_dim, exp) => {\n const context = [LocalizedStrings.translateType(left_type, left_dim), exp,\n LocalizedStrings.translateType(right_type, right_dim)];\n return createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"loop_condition_type\", context);\n },\n /**\n * @deprecated 01/10/2019\n */\n endless_loop_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return createSemanticError(\"endless_loop_full\", context);\n } else {\n return ProcessorErrorFactory.endless_loop();\n }\n },\n endless_loop: () => {\n return createSemanticError(\"endless_loop\");\n },\n if_condition_type_full: (exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, sourceInfo.column, exp];\n return createSemanticError(\"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 createSemanticError(\"if_condition_type\", context);\n },\n invalid_global_var: () => {\n return createRuntimeError(\"invalid_global_var\")\n },\n not_implemented: (id) => {\n const context = [id]\n return createRuntimeError(\"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 createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"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 createRuntimeError(\"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 createRuntimeError(\"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 createRuntimeError(\"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 createRuntimeError(\"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 createRuntimeError(\"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 createRuntimeError(\"vector_line_outbounds\", context);\n },\n vector_not_matrix_full: (id, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, id];\n return createRuntimeError(\"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 createRuntimeError(\"vector_not_matrix\", context);\n },\n function_no_return: (id) => {\n const context = [id];\n return createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"invalid_parameters_size\", context);\n },\n invalid_parameter_type_full: (fun_name, exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [exp, LanguageDefinedFunction.getLocalName(fun_name), sourceInfo.line];\n return createSemanticError(\"invalid_parameter_type_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_parameter_type(fun_name, exp);\n }\n },\n invalid_parameter_type: (fun_name, exp) => {\n const context = [exp, LanguageDefinedFunction.getLocalName(fun_name)];\n return createSemanticError(\"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 createSemanticError(\"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 createSemanticError(\"invalid_ref\", context);\n },\n unexpected_break_command_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return createRuntimeError(\"unexpected_break_command_full\", context);\n } else {\n return ProcessorErrorFactory.unexpected_break_command();\n }\n },\n unexpected_break_command: () => {\n return createRuntimeError(\"unexpected_break_command\");\n },\n invalid_array_literal_type_full: (exp, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, exp];\n return createRuntimeError(\"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 createRuntimeError(\"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 createRuntimeError(\"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 createRuntimeError(\"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 createRuntimeError(\"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 createRuntimeError(\"invalid_array_literal_column\", context);\n },\n invalid_unary_op_full: (expString, opName, type, dim, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, expString, LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(type, dim)];\n return createRuntimeError(\"invalid_unary_op_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_unary_op(opName, type, dim);\n }\n },\n invalid_unary_op: (expString, opName, type, dim) => {\n const context = [expString, LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(type, dim)];\n return createRuntimeError(\"invalid_unary_op\", context);\n },\n invalid_infix_op_full: (expString, opName, typeLeft, dimLeft, typeRight, dimRight, sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line, expString, LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(typeLeft, dimLeft), LocalizedStrings.translateType(typeRight, dimRight)];\n return createRuntimeError(\"invalid_infix_op_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_infix_op(opName, typeLeft, dimLeft, typeRight, dimRight);\n }\n },\n invalid_infix_op: (expString, opName, typeLeft, dimLeft, typeRight, dimRight) => {\n const context = [expString, LocalizedStrings.translateOp(opName), LocalizedStrings.translateType(typeLeft, dimLeft), LocalizedStrings.translateType(typeRight, dimRight)];\n return createRuntimeError(\"invalid_infix_op\", context);\n },\n array_dimension_not_positive_full: (sourceInfo) => {\n if(sourceInfo) {\n const context = [sourceInfo.line];\n return createSemanticError(\"array_dimension_not_positive_full\", context);\n } else {\n return ProcessorErrorFactory.array_dimension_not_positive();\n }\n },\n array_dimension_not_positive: () => {\n return createSemanticError(\"array_dimension_not_positive\");\n },\n invalid_type_conversion: (value, type, dim) => {\n const context = [value, LocalizedStrings.translateType(type, dim)];\n return createRuntimeError(\"invalid_type_conversion\", context);\n },\n invalid_read_type: (exp, type, dim, name, source_info) => {\n const context = [source_info.line, exp, LocalizedStrings.translateType(type, dim), name];\n return createRuntimeError(\"invalid_read_type\", context)\n },\n invalid_read_type_array: (exp, typePos, dimPos, name, typeArray, dimArray, sourceInfo) => {\n const context = [sourceInfo.line, exp, LocalizedStrings.translateType(typePos, dimPos), name,LocalizedStrings.translateType(typeArray, dimArray)];\n return createRuntimeError(\"invalid_read_type_array\", context)\n },\n invalid_const_ref_full: (fun_name, exp, sourceInfo)=> {\n if(sourceInfo) {\n const context = [exp, LanguageDefinedFunction.getLocalName(fun_name), sourceInfo.line];\n return createSemanticError(\"invalid_const_ref_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_const_ref(fun_name, exp);\n }\n },\n invalid_const_ref: (fun_name, exp) => {\n const context = [exp, LanguageDefinedFunction.getLocalName(fun_name)];\n return createSemanticError(\"invalid_const_ref\", context);\n },\n invalid_const_assignment_full: (var_id, source_info) => {\n if(source_info) {\n const context = [source_info.line, var_id];\n return createSemanticError(\"invalid_const_assignment_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_const_assignment(var_id);\n }\n },\n invalid_const_assignment: (var_id) => {\n const context = [var_id];\n return createSemanticError(\"invalid_const_assignment\", context);\n },\n invalid_vector_assignment_full: (left_id, left_size, right_id, right_size, source_info) => {\n if(source_info) {\n const context = [source_info.line, left_id, left_size, right_id, right_size]\n return createRuntimeError(\"invalid_vector_assignment_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_vector_assignment(left_id, left_size, right_id, right_size);\n }\n },\n invalid_vector_assignment: (left_id, left_size, right_id, right_size) => {\n const context = [left_id, left_size, right_id, right_size]\n return createRuntimeError(\"invalid_vector_assignment\", context);\n },\n invalid_matrix_assignment_full: (left_id, left_line, left_column, right_id, right_line, right_column, source_info) => {\n if(source_info) {\n const context = [source_info.line, left_id, left_line, left_column, right_id, right_line, right_column]\n return createRuntimeError(\"invalid_matrix_assignment_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_matrix_assignment(left_id, left_line, left_column, right_id, right_line, right_column);\n }\n },\n invalid_matrix_assignment: (left_id, left_line, left_column, right_id, right_line, right_column) => {\n const context = [left_id, left_line, left_column, right_id, right_line, right_column]\n return createRuntimeError(\"invalid_matrix_assignment\", context);\n },\n matrix_to_vector_attr: (left_id, right_id, source_info) => {\n // SourceInfo have to be valid...\n const context = [source_info.line, right_id, left_id];\n return createSemanticError(\"matrix_to_vector_attr\", context);\n },\n vector_to_matrix_attr: (left_id, right_id, source_info) => {\n // SourceInfo have to be valid...\n const context = [source_info.line, right_id, left_id];\n return createSemanticError(\"vector_to_matrix_attr\", context);\n },\n invalid_matrix_index_assign_full: (mat_id, mat_line, mat_size, exp, exp_size, source_info) => {\n if(source_info){\n const context = [source_info.line, mat_line, mat_id, mat_size, exp, exp_size];\n return createRuntimeError(\"invalid_matrix_index_assign_full\", context);\n } else {\n return ProcessorErrorFactory.invalid_matrix_index_assign(mat_id, mat_line, mat_size, exp, exp_size)\n }\n },\n invalid_matrix_index_assign: (mat_id, mat_line, mat_size, exp, exp_size) =>{\n const context = [mat_line, mat_id, mat_size, exp, exp_size];\n return createRuntimeError(\"invalid_matrix_index_assign\", context);\n },\n invalid_number_elements_vector: (expected_num, exp, actual_num, source_info) => {\n // SourceInfo have to be valid...\n const context = [expected_num, source_info.line, exp, actual_num];\n return createRuntimeError(\"invalid_number_elements_vector\", context);\n },\n invalid_number_lines_matrix: (expected_num, exp, actual_num, source_info) => {\n // SourceInfo have to be valid...\n const context = [expected_num, source_info.line, exp, actual_num];\n return createRuntimeError(\"invalid_number_lines_matrix\", context);\n },\n divsion_by_zero_full: (exp, source_info) => {\n if(source_info) {\n const context = [source_info.line, exp];\n return createRuntimeError(\"divsion_by_zero_full\", context);\n } else {\n return ProcessorErrorFactory.divsion_by_zero(exp);\n }\n },\n divsion_by_zero: (exp) => {\n const context = [exp];\n return createRuntimeError(\"divsion_by_zero\", context);\n },\n undefined_tanget_value: (value, source_info) => {\n const context = [source_info.line, value];\n return createRuntimeError(\"undefined_tanget_value\", context);\n },\n negative_log_value: (source_info) => {\n return createRuntimeError(\"negative_log_value\",[source_info.line]);\n },\n invalid_string_index: (index, str, source_info) => {\n const local_fun_name = LanguageDefinedFunction.getLocalName(\"$charAt\");\n const context = [source_info.line, local_fun_name, index, str, str.length - 1];\n return createRuntimeError(\"invalid_string_index\", context);\n },\n negative_sqrt_value: (source_info) => {\n return createRuntimeError(\"negative_sqrt_value\",[source_info.line]);\n },\n /**\n * @deprecated 01/10/2019\n */\n exceeded_recursive_calls: (source_info) => {\n const context = [source_info.line];\n return createRuntimeError(\"exceeded_recursive_calls\", context);\n },\n invalid_for_variable: (id, source_info) => {\n const context = [source_info.line, id];\n return createSemanticError(\"invalid_for_variable\", context);\n },\n invalid_for_from: (exp, source_info) => {\n const context = [source_info.line, exp];\n return createSemanticError(\"invalid_for_from\", context);\n },\n invalid_for_to: (exp, source_info) => {\n const context = [source_info.line, exp];\n return createSemanticError(\"invalid_for_to\", context);\n },\n invalid_for_pass: (exp, source_info) => {\n const context = [source_info.line, exp];\n return createSemanticError(\"invalid_for_pass\", context);\n },\n exceed_max_instructions: () => {\n return createRuntimeError('exceed_max_instructions');\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 { Modes } from \"./modes\";\nimport { Context } from \"./context\";\nimport { Types } from \"./../typeSystem/types\";\nimport { Operators } from \"./../ast/operators\";\nimport { LanguageDefinedFunction } from \"./definedFunctions\";\nimport {\n resultTypeAfterInfixOp,\n resultTypeAfterUnaryOp,\n} from \"./compatibilityTable\";\nimport * as Commands from \"./../ast/commands/\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Command } from \"./../ast/commands/command\";\nimport * as Expressions from \"./../ast/expressions/\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Expression } from \"./../ast/expressions/expression\";\nimport * as Utils from \"./../util/utils\";\nimport { ArrayType } from \"./../typeSystem/array_type\";\nimport { convertToString, toInt } from \"../typeSystem/parsers\";\nimport { Config } from \"../util/config\";\nimport { ProcessorErrorFactory } from \"./error/processorErrorFactory\";\nimport { RuntimeError } from \"./error/runtimeError\";\nimport { Location } from \"../memory/location\";\nimport { StoreValue } from \"./store/value/store_value\";\nimport { StoreValueRef } from \"./store/value/store_value_ref\";\nimport { ArrayStoreValue } from \"./store/value/array_store_value\";\nimport { ArrayStoreValueRef } from \"./store/value/array_store_value_ref\";\nimport { StoreValueAddress } from \"./store/value/store_value_address\";\nimport { LocalizedStrings } from \"../services/localizedStringsService\";\n\nexport class IVProgProcessor {\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.output = null;\n this.mode = Modes.RUN;\n /**\n * Stores the sourceInfo of every function call, command or expression\n */\n this.function_call_stack = [];\n this.instruction_count = 0;\n this.function_call_count = 0;\n }\n\n registerInput (input) {\n if (this.input !== null) this.input = null;\n this.input = input;\n }\n\n registerOutput (output) {\n if (this.output !== null) 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) this.globalStore = null;\n this.globalStore = new Store(\"$global\");\n this.stores = [this.globalStore];\n this.context = [Context.BASE];\n this.instruction_count = 0;\n this.mode = Modes.RUN;\n }\n\n async interpretAST () {\n this.prepareState();\n Location.clear();\n await this.initGlobal();\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 async initGlobal () {\n if (!this.checkContext(Context.BASE)) {\n return 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 if (name === IVProgProcessor.MAIN_INTERNAL_ID) {\n return this.findMainFunction();\n }\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 async runFunction (func, actualParameters, store) {\n const funcName = func.isMain ? IVProgProcessor.MAIN_INTERNAL_ID : func.name;\n const funcStore = new Store(funcName);\n funcStore.extendStore(this.globalStore);\n await this.associateParameters(\n func.formalParameters,\n actualParameters,\n store,\n funcStore\n );\n this.context.push(Context.FUNCTION);\n this.stores.push(funcStore);\n const stoWithVars = await this.executeCommands(\n funcStore,\n func.variablesDeclarations\n );\n const finalSto = this.executeCommands(stoWithVars, func.commands);\n this.stores.pop();\n this.context.pop();\n return finalSto;\n }\n\n /**\n *\n * @param {import('./../ast/commands/formalParameter').FormalParameter[]} formal_params\n * @param {Expression[]} effective_params\n * @param {Store} caller_store\n * @param {Store} callee_store\n */\n async associateParameters (\n formal_params,\n effective_params,\n caller_store,\n callee_store\n ) {\n const funcName =\n callee_store.name === IVProgProcessor.MAIN_INTERNAL_ID\n ? LanguageDefinedFunction.getMainFunctionName()\n : callee_store.name;\n\n const hasVariadic = formal_params.some((p) => p.variadic);\n\n if (\n (formal_params.length != effective_params.length && !hasVariadic) ||\n formal_params.length > effective_params.length\n ) {\n throw ProcessorErrorFactory.invalid_parameters_size(\n funcName,\n formal_params.length,\n effective_params.length\n );\n }\n for (\n let i = 0, j = 0;\n i < formal_params.length && j < effective_params.length;\n i += 1, j += 1\n ) {\n const formalParameter = formal_params[i];\n if (formalParameter.variadic) {\n [j, callee_store] = await this.associateVariadicParameter(\n funcName,\n formalParameter,\n j,\n effective_params,\n caller_store,\n callee_store\n );\n } else {\n const actualParam = effective_params[i];\n callee_store = await this.associateParameter(\n funcName,\n formalParameter,\n actualParam,\n caller_store,\n callee_store\n );\n }\n }\n return callee_store;\n }\n\n /**\n *\n * @param {string} funcName\n * @param {import('./../ast/commands/formalParameter').FormalParameter} formalParameter\n * @param {number} index\n * @param {Expression[]} effective_params\n * @param {Store} caller_store\n * @param {Store} callee_store\n */\n async associateVariadicParameter (\n funcName,\n formalParameter,\n index,\n effective_params,\n caller_store,\n callee_store\n ) {\n let i;\n let count = 1;\n for (i = index; i < effective_params.length; i += 1) {\n const actualParam = effective_params[i];\n callee_store = await this.associateParameter(\n funcName,\n formalParameter,\n actualParam,\n caller_store,\n callee_store,\n count\n );\n count += 1;\n }\n const variadicCount = new StoreValue(Types.INTEGER, count, undefined, true);\n callee_store.insertStore(`${formalParameter.id}.0`, variadicCount);\n return [i - 1, callee_store];\n }\n\n /**\n *\n * @param {string} funcName\n * @param {import('./../ast/commands/formalParameter').FormalParameter} formalParameter\n * @param {Expression} actualParameter\n * @param {Store} callerStore\n * @param {Store} calleeStore\n * @param {number} variadicCount The number of the current value being assigned to the variadic parameter, default 0\n */\n async associateParameter (\n funcName,\n formalParameter,\n actualParameter,\n callerStore,\n calleeStore,\n variadicCount = 0\n ) {\n const actualValue = await this.evaluateExpression(\n callerStore,\n actualParameter\n );\n\n let shouldTypeCast = false;\n\n if (!formalParameter.type.isCompatible(actualValue.type)) {\n if (\n Config.enable_type_casting &&\n !formalParameter.byRef &&\n Store.canImplicitTypeCast(formalParameter.type, actualValue.type)\n ) {\n shouldTypeCast = true;\n } else {\n throw ProcessorErrorFactory.invalid_parameter_type(\n funcName,\n actualParameter.toString()\n );\n }\n }\n\n if (formalParameter.byRef && !actualValue.inStore()) {\n throw ProcessorErrorFactory.invalid_ref(\n funcName,\n actualParameter.toString()\n );\n }\n\n if (formalParameter.byRef) {\n const realObj = callerStore.getStoreObject(actualValue.id);\n let ref = null;\n if (actualValue instanceof ArrayStoreValue) {\n // it's a vector or matrix...\n const values = actualValue.get();\n const array_type = actualValue.type;\n const addresses = values.map((v) =>\n realObj.getLocAddressOf(v.line, v.column)\n );\n const columns = actualValue.isVector() ? 0 : actualValue.columns;\n ref = new ArrayStoreValueRef(\n array_type,\n values,\n addresses,\n actualValue.lines,\n columns,\n realObj.id\n );\n } else {\n if (actualValue instanceof StoreValueAddress) {\n const line = actualValue.line;\n const column = actualValue.column;\n ref = new StoreValueRef(\n actualValue.type,\n actualValue.get(),\n realObj.getLocAddressOf(line, column),\n realObj.id\n );\n ref.setReferenceDimension(realObj.type.dimensions);\n } else {\n ref = new StoreValueRef(\n actualValue.type,\n actualValue.get(),\n realObj.locAddress,\n realObj.id\n );\n }\n }\n let varID = formalParameter.id;\n if (formalParameter.variadic) varID = `${varID}.${variadicCount}`;\n calleeStore.insertStore(varID, ref);\n } else {\n let realValue = actualValue;\n if (shouldTypeCast) {\n realValue = Store.doImplicitCasting(formalParameter.type, realValue);\n }\n let varID = formalParameter.id;\n if (formalParameter.variadic) varID = `${varID}.${variadicCount}`;\n calleeStore.insertStore(varID, realValue);\n }\n return calleeStore;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Command[]} cmds\n *\n * @returns {Promise<Store>}\n */\n async executeCommands (store, cmds) {\n // helper to partially apply a function, in this case executeCommand\n let sto = store;\n for (let i = 0; i < cmds.length; i += 1) {\n sto = await this.executeCommand(sto, cmds[i]);\n }\n return sto;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Command} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeCommand (store, cmd) {\n this.instruction_count += 1;\n if (this.instruction_count % Config.suspend_threshold == 0) {\n //every Config.suspend_threshold instruction should briefly delay its execution in order to allow the browser to process other things\n await Utils.sleep(5);\n }\n\n // Checks if it must interrupt the execution for some reason\n if (this.instruction_count >= Config.max_instruction_count) {\n throw ProcessorErrorFactory.exceed_max_instructions();\n } else if (this.forceKill) {\n throw \"FORCED_KILL!\";\n } else if (store.mode === Modes.PAUSE) {\n return this.executeCommand(store, cmd);\n } else if (store.mode === Modes.RETURN) {\n return store;\n } else if (\n this.checkContext(Context.BREAKABLE) &&\n store.mode === Modes.BREAK\n ) {\n return store;\n } else if (this.mode === Modes.ABORT) {\n throw LocalizedStrings.getMessage(\"aborted_execution\");\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.RepeatUntil) {\n return this.executeRepeatUntil(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 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 /**\n *\n * @param {Store} store\n * @param {Commands.SysCall} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeSysCall (store, cmd) {\n const func = cmd.langFunc.bind(this);\n return func(store, cmd);\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.FunctionCall} cmd\n *\n * @returns {Promise<Store>}\n */\n async 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 this.function_call_stack.push(cmd.sourceInfo);\n const sto = await this.runFunction(func, cmd.actualParameters, store);\n sto.destroy();\n if (\n !Types.VOID.isCompatible(func.returnType) &&\n sto.mode !== Modes.RETURN\n ) {\n const funcName =\n func.name === IVProgProcessor.MAIN_INTERNAL_ID\n ? LanguageDefinedFunction.getMainFunctionName()\n : func.name;\n throw ProcessorErrorFactory.function_no_return(funcName);\n } else {\n this.function_call_stack.pop();\n return store;\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.Switch} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeSwitch (store, cmd) {\n this.context.push(Context.BREAKABLE);\n const switchCases = cmd.cases;\n let lastStore = store;\n let lastCaseCheckResult = false;\n for (\n let i = 0;\n i < switchCases.length && !this.ignoreSwitchCases(lastStore);\n i += 1\n ) {\n const switchCase = switchCases[i];\n if (lastCaseCheckResult || switchCase.isDefault) {\n lastStore = await this.executeCommands(lastStore, switchCase.commands);\n } else {\n const equalityInfixApp = new Expressions.InfixApp(\n Operators.EQ,\n cmd.expression,\n switchCase.expression\n );\n equalityInfixApp.sourceInfo = switchCase.sourceInfo;\n const result = await this.evaluateExpression(\n lastStore,\n equalityInfixApp\n );\n if (result.get()) {\n lastStore = await this.executeCommands(\n lastStore,\n switchCase.commands\n );\n }\n lastCaseCheckResult = result.get();\n }\n }\n this.context.pop();\n if (lastStore.mode === Modes.BREAK) {\n lastStore.mode = Modes.RUN;\n }\n return lastStore;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.For} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeFor (store, cmd) {\n //BEGIN for -> while rewrite\n const initCmd = new Commands.Assign(cmd.for_id.id, cmd.for_from);\n initCmd.sourceInfo = cmd.sourceInfo;\n // Assume for is iterating forward and that pass is not missing\n let passValue = cmd.for_pass;\n let condition = new Expressions.InfixApp(\n Operators.LT,\n cmd.for_id,\n cmd.for_to\n );\n\n if (cmd.for_pass == null) {\n passValue = new Expressions.IntLiteral(toInt(1));\n const checkEndGTBegin = await this.evaluateExpression(\n store,\n new Expressions.InfixApp(Operators.GE, cmd.for_to, cmd.for_from)\n );\n if (!checkEndGTBegin.get()) {\n passValue = new Expressions.IntLiteral(toInt(-1));\n condition = new Expressions.InfixApp(\n Operators.GT,\n cmd.for_id,\n cmd.for_to\n );\n }\n } else {\n const isForward = await this.evaluateExpression(\n store,\n new Expressions.InfixApp(\n Operators.GE,\n cmd.for_pass,\n new Expressions.IntLiteral(toInt(0))\n )\n );\n if (!isForward.get()) {\n condition = new Expressions.InfixApp(\n Operators.GT,\n cmd.for_id,\n cmd.for_to\n );\n }\n }\n\n condition.sourceInfo = cmd.sourceInfo;\n const increment = new Commands.Assign(\n cmd.for_id.id,\n new Expressions.InfixApp(Operators.ADD, cmd.for_id, passValue)\n );\n increment.sourceInfo = cmd.sourceInfo;\n const whileBlock = new Commands.CommandBlock(\n [],\n cmd.commands.concat(increment)\n );\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 }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.RepeatUntil} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeRepeatUntil (store, cmd) {\n this.context.push(Context.BREAKABLE);\n const sto = await this.executeCommands(store, cmd.commands);\n if (sto.mode === Modes.BREAK) {\n this.context.pop();\n sto.mode = Modes.RUN;\n return sto;\n }\n const checkCondition = await this.evaluateExpression(sto, cmd.expression);\n if (!checkCondition.type.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.loop_condition_type_full(cmd.sourceInfo);\n }\n this.context.pop();\n if (checkCondition.get()) {\n return sto;\n } else {\n return this.executeCommand(sto, cmd);\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.While} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeWhile (store, cmd) {\n this.context.push(Context.BREAKABLE);\n const checkCondition = await this.evaluateExpression(store, cmd.expression);\n if (!checkCondition.type.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.loop_condition_type_full(\n cmd.expression.toString(),\n cmd.sourceInfo\n );\n }\n if (checkCondition.get()) {\n const sto = await this.executeCommands(store, cmd.commands);\n this.context.pop();\n if (sto.mode === Modes.BREAK) {\n sto.mode = Modes.RUN;\n return sto;\n }\n return this.executeCommand(sto, cmd);\n } else {\n this.context.pop();\n return store;\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.IfThenElse} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeIfThenElse (store, cmd) {\n const isTrue = await this.evaluateExpression(store, cmd.condition);\n if (!isTrue.type.isCompatible(Types.BOOLEAN)) {\n throw ProcessorErrorFactory.if_condition_type_full(\n cmd.condition.toString(),\n cmd.sourceInfo\n );\n }\n if (isTrue.get()) {\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 store;\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.Return} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeReturn (store, cmd) {\n const funcName =\n store.name === IVProgProcessor.MAIN_INTERNAL_ID\n ? LanguageDefinedFunction.getMainFunctionName()\n : store.name;\n // console.log(funcName, store.name === IVProgProcessor.MAIN_INTERNAL_ID);\n const func = this.findFunction(store.name);\n const funcType = func.returnType;\n const value = await this.evaluateExpression(store, cmd.expression);\n if (value === null && funcType.isCompatible(Types.VOID)) {\n store.mode = Modes.RETURN;\n return store;\n }\n\n let real_value = value;\n if (value === null || !funcType.isCompatible(value.type)) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(funcType, value.type)\n ) {\n const stringInfo = funcType.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.invalid_return_type_full(\n funcName,\n info.type,\n info.dim,\n cmd.sourceInfo\n );\n }\n real_value = Store.doImplicitCasting(funcType, value);\n }\n\n store.insertStore(\"$\", real_value);\n store.mode = Modes.RETURN;\n return store;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.Break} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeBreak (store, cmd) {\n if (this.checkContext(Context.BREAKABLE)) {\n store.mode = Modes.BREAK;\n return store;\n } else {\n throw ProcessorErrorFactory.unexpected_break_command_full(cmd.sourceInfo);\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.Assign} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeAssign (store, cmd) {\n const inStore = store.applyStore(cmd.id);\n if (inStore.isConst) {\n throw ProcessorErrorFactory.invalid_const_assignment_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n const value = await this.evaluateExpression(store, cmd.expression);\n let realValue = value;\n if (!inStore.type.isCompatible(realValue.type)) {\n if (\n Config.enable_type_casting &&\n Store.canImplicitTypeCast(inStore.type, value.type)\n ) {\n realValue = Store.doImplicitCasting(inStore.type, realValue);\n } else {\n const stringInfo = inStore.type.stringInfo();\n const info = stringInfo[0];\n const exp_type_string_info = value.type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n const exp = cmd.expression.toString();\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n info.dim,\n exp_type_info.type,\n exp_type_info.dim,\n exp,\n cmd.sourceInfo\n );\n }\n }\n\n if (inStore instanceof ArrayStoreValue) {\n const columns = realValue.columns == null ? 0 : realValue.columns;\n if (inStore.lines !== realValue.lines || inStore.columns !== columns) {\n const exp = cmd.expression.toString();\n if (inStore.isVector()) {\n throw ProcessorErrorFactory.invalid_vector_assignment_full(\n cmd.id,\n inStore.lines,\n exp,\n realValue.lines,\n cmd.sourceInfo\n );\n } else {\n throw ProcessorErrorFactory.invalid_matrix_assignment_full(\n cmd.id,\n inStore.lines,\n inStore.columns,\n exp,\n realValue.lines,\n realValue.columns,\n cmd.sourceInfo\n );\n }\n }\n }\n\n store.updateStore(cmd.id, realValue);\n return store;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.ArrayIndexAssign} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeArrayIndexAssign (store, cmd) {\n const mustBeArray = store.applyStore(cmd.id);\n let used_dims = 0;\n if (mustBeArray.isConst) {\n throw ProcessorErrorFactory.invalid_const_assignment_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n if (!(mustBeArray.type instanceof ArrayType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n const lineSV = await this.evaluateExpression(store, cmd.line);\n if (!Types.INTEGER.isCompatible(lineSV.type)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo);\n }\n used_dims += 1;\n const line = lineSV.get().toNumber();\n const columnSV = await this.evaluateExpression(store, cmd.column);\n let column = null;\n if (columnSV != null) {\n if (!Types.INTEGER.isCompatible(columnSV.type)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(\n cmd.sourceInfo\n );\n }\n column = columnSV.get().toNumber();\n used_dims += 1;\n }\n const value = await this.evaluateExpression(store, cmd.expression);\n let actualValue = value;\n if (line >= mustBeArray.lines) {\n if (mustBeArray.isVector) {\n throw ProcessorErrorFactory.vector_line_outbounds_full(\n cmd.id,\n line,\n mustBeArray.lines,\n cmd.sourceInfo\n );\n } else {\n throw ProcessorErrorFactory.matrix_line_outbounds_full(\n cmd.id,\n line,\n mustBeArray.lines,\n cmd.sourceInfo\n );\n }\n } else if (line < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(\n cmd.sourceInfo\n );\n }\n if (column != null && mustBeArray.columns === 0) {\n throw ProcessorErrorFactory.vector_not_matrix_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n if (column != null) {\n if (column >= mustBeArray.columns) {\n throw ProcessorErrorFactory.matrix_column_outbounds_full(\n cmd.id,\n column,\n mustBeArray.columns,\n cmd.sourceInfo\n );\n } else if (column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(\n cmd.sourceInfo\n );\n }\n }\n\n if (!mustBeArray.type.canAccept(value.type, used_dims)) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(mustBeArray.type.innerType, value.type)\n ) {\n const type = mustBeArray.type.innerType;\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n const exp_type_string_info = value.type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n const exp = cmd.expression.toString();\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n info.dim,\n exp_type_info.type,\n exp_type_info.dim,\n exp,\n cmd.sourceInfo\n );\n }\n actualValue = Store.doImplicitCasting(mustBeArray.type.innerType, value);\n }\n\n const current_value = mustBeArray.getAt(line, column);\n if (current_value instanceof ArrayStoreValue) {\n if (\n current_value.lines !== actualValue.lines ||\n current_value.columns !== actualValue.columns\n ) {\n const exp = cmd.expression.toString();\n throw ProcessorErrorFactory.invalid_matrix_index_assign_full(\n cmd.id,\n line,\n current_value.lines,\n exp,\n actualValue.lines,\n cmd.sourceInfo\n );\n }\n }\n\n return store.updateStoreArray(cmd.id, actualValue, line, column);\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.Declaration} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeDeclaration (store, cmd) {\n if (cmd instanceof Commands.ArrayDeclaration) {\n return this.executeArrayDeclaration(store, cmd);\n } else {\n let temp = new StoreValue(cmd.type, null, null, cmd.isConst);\n if (cmd.initial !== null) {\n const value = await this.evaluateExpression(store, cmd.initial);\n let realValue = value;\n if (!value.type.isCompatible(cmd.type)) {\n if (\n Config.enable_type_casting &&\n Store.canImplicitTypeCast(cmd.type, value.type)\n ) {\n realValue = Store.doImplicitCasting(cmd.type, realValue);\n } else {\n const stringInfo = value.type.stringInfo();\n const info = stringInfo[0];\n const exp_type_string_info = value.type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n const exp = cmd.expression.toString();\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n info.dim,\n exp_type_info.type,\n exp_type_info.dim,\n exp,\n cmd.sourceInfo\n );\n }\n }\n temp = new StoreValue(cmd.type, realValue.get(), null, cmd.isConst);\n }\n store.insertStore(cmd.id, temp);\n return store;\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Commands.ArrayDeclaration} cmd\n *\n * @returns {Promise<Store>}\n */\n async executeArrayDeclaration (store, cmd) {\n const linesSV = await this.evaluateExpression(store, cmd.lines);\n if (!Types.INTEGER.isCompatible(linesSV.type)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(cmd.sourceInfo);\n }\n const line = linesSV.get().toNumber();\n const columnsSV = await this.evaluateExpression(store, cmd.columns);\n let column = null;\n if (columnsSV !== null) {\n if (!Types.INTEGER.isCompatible(columnsSV.type)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(\n cmd.sourceInfo\n );\n }\n column = columnsSV.get().toNumber();\n if (column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(\n cmd.sourceInfo\n );\n }\n }\n let temp = new ArrayStoreValue(\n cmd.type,\n [],\n line,\n column,\n null,\n cmd.isConst\n );\n if (cmd.initial !== null) {\n // array can only be initialized by a literal....\n const valueList = await this.evaluateArrayLiteral(\n store,\n cmd.initial,\n cmd.type,\n line,\n column\n );\n temp = new ArrayStoreValue(\n cmd.type,\n valueList,\n line,\n column,\n null,\n cmd.isConst\n );\n }\n store.insertStore(cmd.id, temp);\n return store;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Expression} exp\n *\n * @returns {Promise<import('./store/value/istore_value').IStoreValue>}\n */\n async evaluateExpression (store, exp) {\n this.instruction_count += 1;\n if (this.instruction_count % Config.suspend_threshold == 0) {\n //every Config.suspend_threshold instruction should briefly delay its execution in order to allow the browser to process other things\n await Utils.sleep(5);\n }\n if (this.mode === Modes.ABORT) {\n throw LocalizedStrings.getMessage(\"aborted_execution\");\n }\n if (this.instruction_count >= Config.max_instruction_count) {\n throw new Error(\n \"Número de instruções excedeu o limite definido. Verifique se seu código não possui laços infinitos ou muitas chamadas de funções recursivas.\"\n );\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.CharLiteral) {\n return this.evaluateLiteral(store, exp);\n } else if (exp instanceof Expressions.ArrayLiteral) {\n throw new Error(\n \"Internal Error: The system should not eval an array literal.\"\n );\n } else if (exp instanceof Expressions.FunctionCall) {\n return this.evaluateFunctionCall(store, exp);\n }\n return null;\n }\n\n async evaluateFunctionCall (store, exp) {\n if (exp.isMainCall) {\n throw ProcessorErrorFactory.void_in_expression_full(\n LanguageDefinedFunction.getMainFunctionName(),\n exp.sourceInfo\n );\n }\n const func = this.findFunction(exp.id);\n if (Types.VOID.isCompatible(func.returnType)) {\n throw ProcessorErrorFactory.void_in_expression_full(\n exp.id,\n exp.sourceInfo\n );\n }\n if (this.function_call_stack.length >= Config.max_call_stack) {\n throw ProcessorErrorFactory.exceeded_recursive_calls(exp.sourceInfo);\n }\n this.function_call_stack.push(exp.sourceInfo);\n const sto = await this.runFunction(func, exp.actualParameters, store);\n if (sto.mode !== Modes.RETURN) {\n throw new Error(\n \"!!!Internal error: the function that was called did not have a return command or did not set the store mode properly -> \" +\n exp.id\n );\n }\n const val = sto.applyStore(\"$\");\n sto.destroy();\n this.function_call_stack.pop();\n return val;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Expressions.ArrayLiteral} exp\n * @param {ArrayType} type\n *\n * @returns {Promise<StoreValue[]>}\n */\n async evaluateArrayLiteral (store, exp, type, lines, columns) {\n if (!exp.isVector) {\n if (columns == null) {\n throw new Error(\n \"This should never happen: Vector cannot be initialized by a matrix\"\n );\n }\n const storeValueMatrix = await this.evaluateMatrix(\n store,\n exp,\n type,\n lines,\n columns\n );\n return storeValueMatrix.reduce((prev, next) => prev.concat(next), []);\n } else {\n if (columns != null) {\n throw new Error(\n \"This should never happen: Matrix cannot be initialized by a vector\"\n );\n }\n return this.evaluateVector(store, exp, type, lines);\n }\n }\n\n /**\n * Evalautes a list of literals and expression composing the vector\n * @param {Store} store\n * @param {Expressions.ArrayLiteral} exps\n * @param {ArrayType} type\n * @param {number} n_elements\n *\n * @returns {Promise<StoreValue[]>} store object list\n */\n async evaluateVector (store, exps, type, n_elements) {\n const values = exps.value;\n if (n_elements !== values.length) {\n throw ProcessorErrorFactory.invalid_number_elements_vector(\n n_elements,\n exps.toString(),\n values.length,\n exps.sourceInfo\n );\n }\n const actualValues = await Promise.all(\n values.map((exp) => this.evaluateExpression(store, exp))\n );\n return actualValues.map((v, index) => {\n if (!type.canAccept(v.type, 1)) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(type.innerType, v.type)\n ) {\n // const stringInfo = v.type.stringInfo();\n // const info = stringInfo[0];\n const exp_str = values[index].toString();\n // TODO - fix error message\n throw ProcessorErrorFactory.invalid_array_literal_type_full(\n exp_str,\n values[index].sourceInfo\n );\n }\n const newValue = Store.doImplicitCasting(type.innerType, v);\n return newValue;\n }\n return v;\n });\n }\n\n /**\n * Evaluates a list of array literals composing the matrix\n * @param {Store} store\n * @param {Expressions.ArrayLiteral} exps\n * @param {ArrayType} type\n *\n * @returns {Promise<StoreValue[][]>}\n */\n async evaluateMatrix (store, exps, type, lines, columns) {\n const values = exps.value;\n if (values.length !== lines) {\n throw ProcessorErrorFactory.invalid_number_lines_matrix(\n lines,\n exps.toString(),\n values.length,\n exps.sourceInfo\n );\n }\n const vectors = values.map((vector) => {\n const vec_type = new ArrayType(type.innerType, 1);\n return this.evaluateVector(store, vector, vec_type, columns);\n });\n return await Promise.all(vectors);\n }\n\n /**\n *\n * @param {Store} _\n * @param {import('../ast/expressions/literal').Literal} exp\n *\n * @returns {import('./store/value/istore_value').IStoreValue}\n */\n async evaluateLiteral (_, exp) {\n return new StoreValue(exp.type, exp.value);\n }\n\n /**\n *\n * @param {Store} store\n * @param {Expressions.VariableLiteral} exp\n *\n * @returns {import('./store/value/istore_value').IStoreValue}\n */\n async evaluateVariableLiteral (store, exp) {\n const val = store.applyStore(exp.id);\n return val;\n }\n\n /**\n *\n * @param {Store} store\n * @param {Expressions.ArrayAccess} exp\n *\n * @returns {import('./store/value/istore_value').IStoreValue}\n */\n async evaluateArrayAccess (store, exp) {\n const mustBeArray = store.getStoreObject(exp.id);\n if (!(mustBeArray.type instanceof ArrayType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(\n exp.id,\n exp.sourceInfo\n );\n }\n const lineSV = await this.evaluateExpression(store, exp.line);\n if (!Types.INTEGER.isCompatible(lineSV.type)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(exp.sourceInfo);\n }\n const line = lineSV.get().toNumber();\n const columnSV = await this.evaluateExpression(store, exp.column);\n let column = null;\n if (columnSV !== null) {\n if (!Types.INTEGER.isCompatible(columnSV.type)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(\n exp.sourceInfo\n );\n }\n column = columnSV.get().toNumber();\n }\n if (line >= mustBeArray.lines) {\n if (mustBeArray.isVector) {\n throw ProcessorErrorFactory.vector_line_outbounds_full(\n exp.id,\n line,\n mustBeArray.lines,\n exp.sourceInfo\n );\n } else {\n throw ProcessorErrorFactory.matrix_line_outbounds_full(\n exp.id,\n line,\n mustBeArray.lines,\n exp.sourceInfo\n );\n }\n } else if (line < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(\n exp.sourceInfo\n );\n }\n if (column !== null && mustBeArray.columns === 0) {\n throw ProcessorErrorFactory.vector_not_matrix_full(\n exp.id,\n exp.sourceInfo\n );\n }\n if (column !== null) {\n if (column >= mustBeArray.columns) {\n throw ProcessorErrorFactory.matrix_column_outbounds_full(\n exp.id,\n column,\n mustBeArray.columns,\n exp.sourceInfo\n );\n } else if (column < 0) {\n throw ProcessorErrorFactory.array_dimension_not_positive_full(\n exp.sourceInfo\n );\n }\n }\n const result = mustBeArray.getAt(line, column);\n const type = mustBeArray.type.innerType;\n if (Array.isArray(result)) {\n const values = result.map((val, col) => {\n return new StoreValueAddress(\n type,\n val,\n line,\n col,\n mustBeArray.id,\n mustBeArray.readOnly\n );\n });\n return new ArrayStoreValue(\n new ArrayType(type, 1),\n values,\n mustBeArray.columns,\n null,\n mustBeArray.id,\n mustBeArray.readOnly\n );\n } else {\n return new StoreValueAddress(\n type,\n result,\n line,\n column,\n mustBeArray.id,\n mustBeArray.readOnly\n );\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Expressions.UnaryApp} unaryApp\n *\n * @returns {import('./store/value/istore_value').IStoreValue}\n */\n async evaluateUnaryApp (store, unaryApp) {\n const left = await this.evaluateExpression(store, unaryApp.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 throw ProcessorErrorFactory.invalid_unary_op_full(\n unaryApp.op,\n info.type,\n info.dim,\n unaryApp.sourceInfo\n );\n }\n switch (unaryApp.op.ord) {\n case Operators.ADD.ord:\n return new StoreValue(resultType, left.get());\n case Operators.SUB.ord:\n return new StoreValue(resultType, left.get().negated());\n case Operators.NOT.ord:\n return new StoreValue(resultType, !left.get());\n default:\n throw new RuntimeError(\"!!!Critical Invalid UnaryApp \" + unaryApp.op);\n }\n }\n\n /**\n *\n * @param {Store} store\n * @param {Expressions.InfixApp} infixApp\n *\n * @returns {import('./store/value/istore_value').IStoreValue}\n */\n async evaluateInfixApp (store, infixApp) {\n const left = await this.evaluateExpression(store, infixApp.left);\n const right = await this.evaluateExpression(store, infixApp.right);\n let shouldImplicitCast = false;\n let resultType = resultTypeAfterInfixOp(infixApp.op, left.type, right.type);\n if (Types.UNDEFINED.isCompatible(resultType)) {\n if (\n Config.enable_type_casting &&\n Store.canImplicitTypeCast(left.type, right.type)\n ) {\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 throw ProcessorErrorFactory.invalid_infix_op_full(\n infixApp.op,\n infoLeft.type,\n infoLeft.dim,\n infoRight.type,\n infoRight.dim,\n infixApp.sourceInfo\n );\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.get(), right.type);\n return new StoreValue(resultType, left.get() + rightStr);\n } else if (Types.STRING.isCompatible(right.type)) {\n const leftStr = convertToString(left.get(), left.type);\n return new StoreValue(resultType, leftStr + right.get());\n } else if (Types.CHAR.isCompatible(left.type)) {\n const strLeft = convertToString(left.get(), left.type);\n const strRight = convertToString(right.get(), right.type);\n return new StoreValue(resultType, strLeft + strRight);\n } else {\n return new StoreValue(resultType, left.get().plus(right.get()));\n }\n }\n case Operators.SUB.ord:\n return new StoreValue(resultType, left.get().minus(right.get()));\n case Operators.MULT.ord: {\n result = left.get().times(right.get());\n return new StoreValue(resultType, result);\n }\n case Operators.DIV.ord: {\n if (right.get() == 0) {\n throw ProcessorErrorFactory.divsion_by_zero_full(\n infixApp.toString(),\n infixApp.sourceInfo\n );\n }\n if (Types.INTEGER.isCompatible(resultType))\n result = left.get().divToInt(right.get());\n else result = left.get().div(right.get());\n return new StoreValue(resultType, result);\n }\n case Operators.MOD.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (shouldImplicitCast) {\n resultType = Types.INTEGER;\n leftValue = leftValue.trunc();\n rightValue = rightValue.trunc();\n }\n result = leftValue.modulo(rightValue);\n return new StoreValue(resultType, result);\n }\n case Operators.GT.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (Types.STRING.isCompatible(left.type)) {\n result = leftValue.length > rightValue.length;\n } else if (Types.CHAR.isCompatible(left.type)) {\n result = leftValue.charCodeAt(0) > rightValue.charCodeAt(0);\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 StoreValue(resultType, result);\n }\n case Operators.GE.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (Types.STRING.isCompatible(left.type)) {\n result = leftValue.length >= rightValue.length;\n } else if (Types.CHAR.isCompatible(left.type)) {\n result = leftValue.charCodeAt(0) >= rightValue.charCodeAt(0);\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 StoreValue(resultType, result);\n }\n case Operators.LT.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (Types.STRING.isCompatible(left.type)) {\n result = leftValue.length < rightValue.length;\n } else if (Types.CHAR.isCompatible(left.type)) {\n result = leftValue.charCodeAt(0) < rightValue.charCodeAt(0);\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 StoreValue(resultType, result);\n }\n case Operators.LE.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (Types.STRING.isCompatible(left.type)) {\n result = leftValue.length <= rightValue.length;\n } else if (Types.CHAR.isCompatible(left.type)) {\n result = leftValue.charCodeAt(0) <= rightValue.charCodeAt(0);\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 StoreValue(resultType, result);\n }\n case Operators.EQ.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (\n Types.INTEGER.isCompatible(left.type) ||\n Types.REAL.isCompatible(left.type)\n ) {\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 = leftValue === rightValue;\n }\n return new StoreValue(resultType, result);\n }\n case Operators.NEQ.ord: {\n let leftValue = left.get();\n let rightValue = right.get();\n if (\n Types.INTEGER.isCompatible(left.type) ||\n Types.REAL.isCompatible(left.type)\n ) {\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 = leftValue !== rightValue;\n }\n return new StoreValue(resultType, result);\n }\n case Operators.AND.ord:\n return new StoreValue(resultType, left.get() && right.get());\n case Operators.OR.ord:\n return new StoreValue(resultType, left.get() || right.get());\n default:\n throw new RuntimeError(\"!!!Critical Invalid InfixApp \" + infixApp.op);\n }\n }\n}\n","import * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toInt } from \"./../../typeSystem/parsers\";\nimport { ArrayType } from '../../typeSystem/array_type';\nimport { Modes } from '../modes';\nimport { StoreValue } from '../store/value/store_value';\n\n/**\n * num_elements\n * matrix_lines\n * matrix_columns\n */\n\nexport function createNumElementsFun () {\n const numElementsFun = async (sto, _) => {\n const vector = sto.applyStore(\"vector\");\n const temp = new StoreValue(Types.INTEGER, toInt(vector.lines));\n sto.mode = Modes.RETURN;\n sto.insertStore(\"$\", temp);\n return sto;\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 ArrayType(Types.ALL, 1), 'vector', false)],\n block);\n return func;\n }\n\nexport function createMatrixLinesFun () {\n const matrixLinesFun = async (sto, _) => {\n const matrix = sto.applyStore(\"matrix\");\n const temp = new StoreValue(Types.INTEGER, toInt(matrix.lines));\n sto.mode = Modes.RETURN;\n sto.insertStore(\"$\", temp);\n return sto;\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 ArrayType(Types.ALL, 2), 'matrix', false)],\n block);\n return func;\n }\n\nexport function createMatrixColumnsFun () {\n const matrixColumnsFun = async (sto, _) => {\n const matrix = sto.applyStore(\"matrix\");\n const temp = new StoreValue(Types.INTEGER, toInt(matrix.columns));\n sto.mode = Modes.RETURN;\n sto.insertStore(\"$\", temp);\n return sto;\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 ArrayType(Types.ALL, 2), 'matrix', false)],\n block);\n return func;\n }\n ","import * as Commands from \"./../../ast/commands\";\nimport { Modes } from \"../modes\";\nimport * as Parsers from \"./../../typeSystem/parsers\";\nimport { Types } from \"./../../typeSystem/types\";\nimport { ProcessorErrorFactory } from \"./../error/processorErrorFactory\";\nimport { StoreValue } from \"../store/value/store_value\";\n\nexport function createOutputFun () {\n const writeFunction = async function (store, _) {\n const totalSV = store.applyStore(\"p1.0\");\n const total = totalSV.get();\n for (let i = 1; i < total; i += 1) {\n const val = store.applyStore(`p1.${i}`);\n this.output.sendOutput(Parsers.convertToString(val.get(), val.type));\n }\n store.mode = Modes.RETURN;\n return store;\n };\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(writeFunction)]\n );\n const func = new Commands.Function(\n \"$write\",\n Types.VOID,\n [new Commands.FormalParameter(Types.ALL, \"p1\", false, true)],\n block\n );\n return func;\n}\n\nexport function createInputFun () {\n const readFunction = async function (store, _) {\n const text = await this.input.requestInput();\n const typeToConvert = store.applyStore(\"p1\").type;\n let type = null;\n let result = null;\n try {\n if (typeToConvert.isCompatible(Types.INTEGER)) {\n result = Parsers.toInt(text.trim()).trunc();\n type = Types.INTEGER;\n } else if (typeToConvert.isCompatible(Types.REAL)) {\n result = Parsers.toReal(text.trim());\n type = Types.REAL;\n } else if (typeToConvert.isCompatible(Types.BOOLEAN)) {\n result = Parsers.toBool(text.trim());\n type = Types.BOOLEAN;\n } else if (typeToConvert.isCompatible(Types.STRING)) {\n result = Parsers.toString(text);\n type = Types.STRING;\n } else if (typeToConvert.isCompatible(Types.CHAR)) {\n result = Parsers.toChar(text);\n type = Types.CHAR;\n } else {\n throw new Error(\"!!!!Critical error: Unknown type in readFunction!!!!\");\n }\n } catch (_) {\n if (this.mode == Modes.ABORT) {\n store.mode = Modes.RETURN;\n return store;\n }\n const stringInfo = typeToConvert.stringInfo()[0];\n const realObject = store.getStoreObject(\"p1\");\n if (realObject.getReferenceDimension() > 0) {\n const arrayInfo = realObject.type.stringInfo()[0];\n const dim = realObject.getReferenceDimension();\n throw ProcessorErrorFactory.invalid_read_type_array(\n text,\n stringInfo.type,\n stringInfo.dim,\n realObject.getRefObj(),\n arrayInfo.type,\n dim,\n this.function_call_stack.pop()\n );\n }\n throw ProcessorErrorFactory.invalid_read_type(\n text,\n stringInfo.type,\n stringInfo.dim,\n realObject.getRefObj(),\n this.function_call_stack.pop()\n );\n }\n const stoValue = new StoreValue(type, result);\n store.updateStore(\"p1\", stoValue);\n store.mode = Modes.RETURN;\n return store;\n };\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(readFunction)]\n );\n const func = new Commands.Function(\n \"$read\",\n Types.VOID,\n [new Commands.FormalParameter(Types.ALL, \"p1\", true)],\n block\n );\n return func;\n}\n","import * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport * as Parsers 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';\nimport { StoreValue } from '../store/value/store_value';\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 * cast_char\n */\n\nexport function createIsRealFun () {\n const isRealFun = async (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.get());\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof RealLiteral) {\n result = true;\n }\n } catch (error) {\n // ignore\n }\n const temp = new StoreValue(Types.BOOLEAN, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\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 = async (sto, _) => {\n const str = sto.applyStore(\"str\");\n const parser = IVProgParser.createParser(str.get());\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof IntLiteral) {\n result = true;\n }\n } catch { \n // ignore\n }\n const temp = new StoreValue(Types.BOOLEAN, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\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.get());\n let result = false;\n try {\n const val = parser.parseTerm();\n if (val instanceof BoolLiteral) {\n result = true;\n }\n } catch (error) { \n // ignore\n }\n const temp = new StoreValue(Types.BOOLEAN, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\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 = async (sto, _) => {\n const val = sto.applyStore(\"val\");\n let value = val.get();\n switch (val.type.ord) {\n case Types.INTEGER.ord: {\n value = value.toNumber();\n const temp = new StoreValue(Types.REAL, Parsers.toReal(value));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\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 StoreValue(Types.REAL, result.value);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n } catch (error) {\n // ignore\n }\n }\n }\n const typeStringInfoArray = Types.REAL.stringInfo();\n const typeInfo = typeStringInfoArray[0];\n throw 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 = async (sto, _) => {\n const val = sto.applyStore(\"val\");\n let value = val.get();\n switch (val.type.ord) {\n case Types.REAL.ord: {\n value = value.toNumber();\n const temp = new StoreValue(Types.INTEGER, Math.floor(value));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n case Types.CHAR.ord: {\n const temp = new StoreValue(Types.INTEGER, value.charCodeAt(0));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\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 StoreValue(Types.INTEGER, result.value);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n } catch (error) { \n // ignore\n }\n }\n }\n const typeStringInfoArray = Types.INTEGER.stringInfo();\n const typeInfo = typeStringInfoArray[0];\n throw 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 = async (sto, _) => {\n const str = sto.applyStore(\"str\");\n const value = str.get(); \n const parser = IVProgParser.createParser(value);\n try {\n const val = parser.parseTerm();\n if (val instanceof BoolLiteral) {\n const temp = new StoreValue(Types.BOOLEAN, val.value);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n } catch (error) { \n // ignore\n }\n const typeStringInfoArray = Types.BOOLEAN.stringInfo();\n const typeInfo = typeStringInfoArray[0];\n throw 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 = async function (store, _) {\n const val = store.applyStore('str');\n const result = Parsers.convertToString(val.get(), val.type);\n const temp = new StoreValue(Types.STRING, result);\n store.insertStore(\"$\", temp);\n store.mode = Modes.RETURN;\n return store;\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}\n\nexport function createCastCharFun () {\n const castCharFun = (store, _) => {\n const valSV = store.applyStore('charCode');\n // Force the int value to the range [0, 255]\n const value = valSV.get().toNumber() & 0xFF;\n const result = String.fromCharCode(value);\n const temp = new StoreValue(Types.CHAR, result);\n store.insertStore(\"$\", temp);\n store.mode = Modes.RETURN;\n return store;\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(castCharFun)]);\n const func = new Commands.Function('$castChar', Types.CHAR,\n [new Commands.FormalParameter(Types.INTEGER, 'charCode', false)],\n block);\n return func;\n}","import * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport * as Parsers from \"./../../typeSystem/parsers\";\nimport { Decimal } from 'decimal.js';\nimport { MultiType } from '../../typeSystem/multiType';\nimport { ArrayType } from '../../typeSystem/array_type';\nimport { Modes } from '../modes';\nimport { StoreValue } from '../store/value/store_value';\nimport { ProcessorErrorFactory } from '../error/processorErrorFactory';\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 = async (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.get().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 const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(sinFun)]);\n const func = new Commands.Function(\n \"$sin\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createCosFun () {\n const cosFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const angle = x.get().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 const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(cosFun)]);\n const func = new Commands.Function(\n \"$cos\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createTanFun () {\n const tanFun = async function (sto, _) {\n const x = sto.applyStore('x');\n const angle = x.get().mod(360);\n if(angle.eq(90) || angle.eq(270)) {\n throw ProcessorErrorFactory.undefined_tanget_value(x.get().toNumber(),\n this.function_call_stack.pop());\n }\n const result = Decimal.tan(convertToRadians(angle));\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(tanFun)]);\n const func = new Commands.Function(\n \"$tan\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createSqrtFun () {\n const sqrtFun = async function (sto, _) {\n const x = sto.applyStore('x');\n if(x.get().isNeg()) {\n return Promise.reject(ProcessorErrorFactory.negative_sqrt_value(this.function_call_stack.pop()));\n }\n const result = x.get().sqrt();\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(sqrtFun)]);\n const func = new Commands.Function(\n \"$sqrt\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createPowFun () {\n const powFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const y = sto.applyStore('y');\n const result = x.get().pow(y.get());\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(powFun)]);\n const func = new Commands.Function(\n \"$pow\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n ),\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"y\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createLogFun () {\n const logFun = async function (sto, _) {\n const x = sto.applyStore('x');\n if (x.get().isNegative()) {\n return Promise.reject(\n ProcessorErrorFactory.negative_log_value(this.function_call_stack.pop())\n );\n }\n const result = Decimal.log10(x.get());\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(logFun)]);\n const func = new Commands.Function(\n \"$log\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createAbsFun () {\n const absFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const result = x.get().abs();\n const temp = new StoreValue(x.type, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock([], [new Commands.SysCall(absFun)]);\n const func = new Commands.Function(\n \"$abs\",\n new MultiType([Types.INTEGER, Types.REAL]),\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createNegateFun () {\n const negateFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const result = x.get().negated();\n const temp = new StoreValue(x.type, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(negateFun)]\n );\n const func = new Commands.Function(\n \"$negate\",\n new MultiType([Types.INTEGER, Types.REAL]),\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createInvertFun() {\n const invertFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const result = Parsers.toReal(1).dividedBy(x.get());\n const temp = new StoreValue(Types.REAL, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(invertFun)]\n );\n const func = new Commands.Function(\n \"$invert\",\n Types.REAL,\n [\n new Commands.FormalParameter(\n new MultiType([Types.INTEGER, Types.REAL]),\n \"x\",\n false\n )\n ],\n block\n );\n return func;\n}\n\nexport function createMaxFun () {\n const maxFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const numbers = x.get().map(sto_addrs => sto_addrs.get());\n const result = Decimal.max(...numbers);\n const temp = new StoreValue(x.type.innerType, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n const paramType = new ArrayType(\n new MultiType([Types.INTEGER, Types.REAL]),\n 1\n );\n const block = new Commands.CommandBlock([], [new Commands.SysCall(maxFun)]);\n const func = new Commands.Function(\n \"$max\",\n new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(paramType, \"x\", false)],\n block\n );\n return func;\n}\n\nexport function createMinFun () {\n const minFun = async (sto, _) => {\n const x = sto.applyStore('x');\n const numbers = x.get().map(sto_addrs => sto_addrs.get());\n const result = Decimal.min(...numbers);\n const temp = new StoreValue(x.type.innerType, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n const paramType = new ArrayType(\n new MultiType([Types.INTEGER, Types.REAL]),\n 1\n );\n const block = new Commands.CommandBlock([], [new Commands.SysCall(minFun)]);\n const func = new Commands.Function(\n \"$min\",\n new MultiType([Types.INTEGER, Types.REAL]),\n [new Commands.FormalParameter(paramType, \"x\", false)],\n block\n );\n return func;\n}\n\nlet seed = Date.now();\nexport function createRandFun() {\n const a = 16807;\n const m = 2147483647;\n const c = 12345;\n const randFun = async (sto, _) => {\n seed = (a * seed + c) % m;\n const val = seed / (m - 1);\n const temp = new StoreValue(Types.REAL, new Decimal(val));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n };\n const block = new Commands.CommandBlock([], [new Commands.SysCall(randFun)]);\n const func = new Commands.Function(\"$rand\", Types.REAL, [], block);\n return func;\n}\n\nexport function createSetSeedFun() {\n const setSeedFun = async (sto, _) => {\n const value = sto.applyStore(\"x\");\n seed = value.get().toNumber();\n sto.mode = Modes.RETURN;\n return sto;\n };\n const block = new Commands.CommandBlock(\n [],\n [new Commands.SysCall(setSeedFun)]\n );\n const func = new Commands.Function(\n \"$setSeed\",\n Types.VOID,\n [new Commands.FormalParameter(Types.INTEGER, \"x\", false)],\n block\n );\n return func;\n}\n","import * as Commands from './../../ast/commands';\nimport { Types } from './../../typeSystem/types';\nimport { toInt } from \"./../../typeSystem/parsers\";\nimport { Modes } from '../modes';\nimport { StoreValue } from '../store/value/store_value';\nimport { ProcessorErrorFactory } from '../error/processorErrorFactory';\n\n/*\n* substring\n* length\n* uppercase\n* lowercase\n* charAt\n**/\n\nexport function createSubstringFun () {\n const substringFun = async (sto, _) => {\n const str = sto.applyStore(\"str\");\n const start = sto.applyStore(\"start\");\n const end = sto.applyStore(\"end\");\n const result = str.get().substring(start.get(), end.get());\n const temp = new StoreValue(Types.STRING, result);\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\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 = async (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreValue(Types.INTEGER, toInt(str.value.length));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\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 = async (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreValue(Types.STRING, str.get().toUpperCase());\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\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 = async (sto, _) => {\n const str = sto.applyStore(\"str\");\n const temp = new StoreValue(Types.STRING, str.get().toLowerCase());\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\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 = async function (sto, _) {\n const str = sto.applyStore(\"str\");\n const idx = sto.applyStore(\"index\");\n if (idx.get().toNumber() < 0 || idx.get().toNumber() >= str.get().length) {\n throw ProcessorErrorFactory.invalid_string_index(idx.get().toNumber(), str.get(),\n this.function_call_stack.pop());\n }\n const temp = new StoreValue(Types.CHAR, str.get().charAt(idx.get().toNumber()));\n sto.insertStore(\"$\", temp);\n sto.mode = Modes.RETURN;\n return sto;\n }\n const block = new Commands.CommandBlock([], [new Commands.SysCall(charAtFun)]);\n const func = new Commands.Function('$charAt', Types.CHAR,\n [new Commands.FormalParameter(Types.STRING, 'str', false),\n new Commands.FormalParameter(Types.INTEGER, 'index', false)],\n block);\n return func;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Modes = void 0;\nexports.Modes = Object.freeze({\n RETURN: Symbol('mode:return'),\n BREAK: Symbol('mode:break'),\n PAUSE: Symbol('mode:pause'),\n RUN: Symbol('mode:run'),\n ABORT: Symbol('mode:abort')\n});\n","import { ProcessorErrorFactory } from \"./../error/processorErrorFactory\";\nimport { LanguageDefinedFunction } from \"./../definedFunctions\";\nimport { LanguageService } from \"./../../services/languageService\";\nimport {\n ArrayDeclaration,\n While,\n For,\n Switch,\n Assign,\n Break,\n IfThenElse,\n Return,\n ArrayIndexAssign,\n} from \"../../ast/commands\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Expression } from \"./../../ast/expressions/expression\";\nimport {\n InfixApp,\n UnaryApp,\n FunctionCall,\n IntLiteral,\n RealLiteral,\n StringLiteral,\n BoolLiteral,\n VariableLiteral,\n ArrayAccess,\n CharLiteral,\n} from \"../../ast/expressions\";\nimport { Literal } from \"../../ast/expressions/literal\";\nimport {\n resultTypeAfterInfixOp,\n resultTypeAfterUnaryOp,\n} from \"../compatibilityTable\";\nimport { Types } from \"../../typeSystem/types\";\nimport { ArrayType } from \"../../typeSystem/array_type\";\nimport { MultiType } from \"../../typeSystem/multiType\";\nimport { Config } from \"../../util/config\";\nimport { Store } from \"../store/store\";\nimport { IVProgParser } from \"../../ast/ivprogParser\";\n\nexport class SemanticAnalyser {\n static analyseFromSource (stringCode) {\n const parser = IVProgParser.createParser(stringCode);\n const semantic = new SemanticAnalyser(parser.parseTree());\n return semantic.analyseTree();\n }\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, symbol_map) {\n if (!symbol_map.map[id]) {\n if (symbol_map.next) {\n return this.findSymbol(id, symbol_map.next);\n }\n return null;\n } else {\n return symbol_map.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 this.assertArrayDeclaration(declaration);\n this.insertSymbol(declaration.id, {\n id: declaration.id,\n lines: declaration.lines,\n columns: declaration.columns,\n type: declaration.type,\n isConst: declaration.isConst,\n });\n } else {\n if (declaration.initial === null) {\n this.insertSymbol(declaration.id, {\n id: declaration.id,\n type: declaration.type,\n isConst: declaration.isConst,\n });\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 const result_string_info = resultType.stringInfo();\n const result_info = result_string_info[0];\n const exp = declaration.initial;\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n info.dim,\n result_info.type,\n result_info.dim,\n exp.toString(),\n declaration.sourceInfo\n );\n }\n this.insertSymbol(declaration.id, {\n id: declaration.id,\n type: declaration.type,\n isConst: declaration.isConst,\n });\n } else if (\n (!declaration.type.isCompatible(resultType) &&\n !Config.enable_type_casting) ||\n (!declaration.type.isCompatible(resultType) &&\n Config.enable_type_casting &&\n !Store.canImplicitTypeCast(declaration.type, resultType))\n ) {\n const stringInfo = declaration.type.stringInfo();\n const info = stringInfo[0];\n const result_string_info = resultType.stringInfo();\n const result_info = result_string_info[0];\n const exp = declaration.initial;\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n info.dim,\n result_info.type,\n result_info.dim,\n exp.toString(),\n declaration.sourceInfo\n );\n } else {\n this.insertSymbol(declaration.id, {\n id: declaration.id,\n type: declaration.type,\n isConst: declaration.isConst,\n });\n }\n }\n }\n\n assertArrayDeclaration (declaration) {\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(\n declaration.sourceInfo\n );\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(\n declaration.sourceInfo\n );\n }\n }\n } else {\n this.evaluateArrayLiteral(declaration);\n }\n this.insertSymbol(declaration.id, {\n id: declaration.id,\n lines: declaration.lines,\n columns: declaration.columns,\n type: declaration.type,\n });\n return;\n }\n\n evaluateExpressionType (expression) {\n // TODO: Throw operator error in case type == UNDEFINED\n if (expression instanceof UnaryApp) {\n const op = expression.op;\n const resultType = this.evaluateExpressionType(expression.left);\n const finalResult = resultTypeAfterUnaryOp(op, resultType);\n if (Types.UNDEFINED.isCompatible(finalResult)) {\n const stringInfo = resultType.stringInfo();\n const info = stringInfo[0];\n const expString = expression.toString();\n throw ProcessorErrorFactory.invalid_unary_op_full(\n expString,\n op,\n info.type,\n info.dim,\n expression.sourceInfo\n );\n }\n return finalResult;\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 const finalResult = resultTypeAfterInfixOp(\n op,\n resultTypeLeft,\n resultTypeRight\n );\n if (Types.UNDEFINED.isCompatible(finalResult)) {\n const stringInfoLeft = resultTypeLeft.stringInfo();\n const infoLeft = stringInfoLeft[0];\n const stringInfoRight = resultTypeRight.stringInfo();\n const infoRight = stringInfoRight[0];\n const expString = expression.toString();\n throw ProcessorErrorFactory.invalid_infix_op_full(\n expString,\n op,\n infoLeft.type,\n infoLeft.dim,\n infoRight.type,\n infoRight.dim,\n expression.sourceInfo\n );\n }\n return finalResult;\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(\n LanguageDefinedFunction.getMainFunctionName(),\n expression.sourceInfo\n );\n }\n const fun = this.findFunction(expression.id);\n if (fun === null) {\n throw ProcessorErrorFactory.function_missing_full(\n expression.id,\n expression.sourceInfo\n );\n }\n if (fun.returnType.isCompatible(Types.VOID)) {\n throw ProcessorErrorFactory.void_in_expression_full(\n expression.id,\n expression.sourceInfo\n );\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(\n expression.id,\n expression.sourceInfo\n );\n }\n if (!(arrayTypeInfo.type instanceof ArrayType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(\n expression.id,\n expression.sourceInfo\n );\n }\n const lineType = this.evaluateExpressionType(expression.line);\n if (!lineType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(\n expression.sourceInfo\n );\n }\n if (expression.column !== null) {\n if (arrayTypeInfo.columns === null) {\n throw ProcessorErrorFactory.invalid_matrix_access_full(\n expression.id,\n expression.sourceInfo\n );\n }\n const columnType = this.evaluateExpressionType(expression.column);\n if (!columnType.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.array_dimension_not_int_full(\n expression.sourceInfo\n );\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 ArrayType(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 CharLiteral) {\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(\n literal.id,\n literal.sourceInfo\n );\n }\n if (typeInfo.type instanceof ArrayType) {\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(\n strExp,\n info.type,\n info.dim,\n literal.sourceInfo\n );\n }\n }\n }\n if (last instanceof ArrayType) {\n return new ArrayType(last.innerType, last.dimensions + 1);\n }\n return new ArrayType(last, 1);\n }\n }\n\n evaluateArrayLiteral (arrayDeclaration) {\n const type = arrayDeclaration.type;\n const literal = arrayDeclaration.initial;\n // console.log(arrayDeclaration);\n if (arrayDeclaration.isVector) {\n this.evaluateVectorLiteralType(literal, type);\n } else {\n // TODO matrix type check\n for (let i = 0; i < literal.lines; ++i) {\n const line_literal = literal.value[i];\n this.evaluateVectorLiteralType(\n line_literal,\n new ArrayType(type.innerType, 1)\n );\n }\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 ArrayType) {\n if (formalParam.type.dimensions > 1) {\n this.insertSymbol(formalParam.id, {\n id: formalParam.id,\n lines: -1,\n columns: -1,\n type: formalParam.type,\n });\n } else {\n this.insertSymbol(formalParam.id, {\n id: formalParam.id,\n lines: -1,\n columns: null,\n type: formalParam.type,\n });\n }\n } else {\n this.insertSymbol(formalParam.id, {\n id: formalParam.id,\n type: formalParam.type,\n });\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,\n 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(\n cmd.expression.toString(),\n cmd.sourceInfo\n );\n }\n this.checkCommands(type, cmd.commands, optional);\n return false;\n } else if (cmd instanceof For) {\n const var_type = this.evaluateExpressionType(cmd.for_id);\n if (!var_type.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.invalid_for_variable(\n cmd.for_id,\n cmd.sourceInfo\n );\n }\n const from_type = this.evaluateExpressionType(cmd.for_from);\n if (!from_type.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.invalid_for_from(\n cmd.for_from,\n cmd.sourceInfo\n );\n }\n const to_type = this.evaluateExpressionType(cmd.for_to);\n if (!to_type.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.invalid_for_to(cmd.for_to, cmd.sourceInfo);\n }\n if (cmd.for_pass != null) {\n const pass_type = this.evaluateExpressionType(cmd.for_pass);\n if (!pass_type.isCompatible(Types.INTEGER)) {\n throw ProcessorErrorFactory.invalid_for_pass(\n cmd.for_pass,\n cmd.sourceInfo\n );\n }\n }\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(\n strExp,\n info.type,\n info.dim,\n aCase.sourceInfo\n );\n }\n } else {\n hasDefault = true;\n }\n result = result && this.checkCommands(type, aCase.commands, result);\n }\n return result && hasDefault;\n } else if (cmd instanceof ArrayIndexAssign) {\n // TODO - rework!!!!!\n let used_dims = 0;\n const typeInfo = this.findSymbol(cmd.id, this.symbolMap);\n if (typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n if (typeInfo.isConst) {\n throw ProcessorErrorFactory.invalid_const_assignment_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n if (!(typeInfo.type instanceof ArrayType)) {\n throw ProcessorErrorFactory.invalid_array_access_full(\n cmd.id,\n cmd.sourceInfo\n );\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(\n cmd.sourceInfo\n );\n }\n used_dims += 1;\n const columnExp = cmd.column;\n if (typeInfo.columns === null && columnExp !== null) {\n throw ProcessorErrorFactory.invalid_matrix_access_full(\n cmd.id,\n cmd.sourceInfo\n );\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(\n cmd.sourceInfo\n );\n }\n used_dims += 1;\n }\n // exp a single value exp or an array access\n const exp_type = this.evaluateExpressionType(exp);\n const access_type = typeInfo.type;\n\n let compatible = false;\n if (exp_type instanceof MultiType) {\n let type = access_type;\n if (access_type.dimensions - used_dims == 0) {\n type = access_type.innerType;\n } else {\n type = new ArrayType(\n access_type.innerType,\n Math.max(0, access_type.dimensions - used_dims)\n );\n }\n compatible = exp_type.isCompatible(type);\n } else {\n compatible = access_type.canAccept(exp_type, used_dims);\n }\n if (!compatible) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(access_type, exp_type)\n ) {\n const access_type_string_info = access_type.stringInfo();\n const access_type_info = access_type_string_info[0];\n const exp_type_string_info = exp_type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n throw ProcessorErrorFactory.incompatible_types_full(\n access_type_info.type,\n access_type_info.dim - used_dims,\n exp_type_info.type,\n exp_type_info.dim,\n exp.toString(),\n cmd.sourceInfo\n );\n }\n }\n return optional;\n } else if (cmd instanceof Assign) {\n // TODO - rework since there is no literal array assignment\n const typeInfo = this.findSymbol(cmd.id, this.symbolMap);\n if (typeInfo === null) {\n throw ProcessorErrorFactory.symbol_not_found_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n if (typeInfo.isConst) {\n throw ProcessorErrorFactory.invalid_const_assignment_full(\n cmd.id,\n cmd.sourceInfo\n );\n }\n const exp = cmd.expression;\n const exp_type = this.evaluateExpressionType(exp);\n if (exp_type instanceof ArrayType) {\n if (!(typeInfo.type instanceof ArrayType)) {\n // TODO better error message\n throw new Error(\"Cannot assign an array to a non-array variable \");\n }\n // Both are arrays...\n // if both don't have same dimensions and type, cannot perform assignment\n if (!exp_type.isCompatible(typeInfo.type)) {\n if (\n exp_type.dimensions === typeInfo.type.dimensions &&\n !exp_type.innerType.isCompatible(typeInfo.type.innerType)\n ) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(\n typeInfo.type.innerType,\n exp_type.innerType\n )\n ) {\n const stringInfo = typeInfo.type.stringInfo();\n const info = stringInfo[0];\n const exp_type_string_info = exp_type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n info.dim,\n exp_type_info.type,\n exp_type_info.dim,\n exp.toString(),\n cmd.sourceInfo\n );\n }\n } else {\n switch (exp_type.dimensions) {\n case 1: {\n throw ProcessorErrorFactory.vector_to_matrix_attr(\n cmd.id,\n exp.toString(),\n cmd.sourceInfo\n );\n }\n case 2: {\n throw ProcessorErrorFactory.matrix_to_vector_attr(\n cmd.id,\n exp.toString(),\n cmd.sourceInfo\n );\n }\n }\n }\n }\n } else if (!exp_type.isCompatible(typeInfo.type)) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(typeInfo.type, exp_type)\n ) {\n const stringInfo = typeInfo.type.stringInfo();\n const info = stringInfo[0];\n const exp_type_string_info = exp_type.stringInfo();\n const exp_type_info = exp_type_string_info[0];\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n info.dim,\n exp_type_info.type,\n exp_type_info.dim,\n exp.toString(),\n cmd.sourceInfo\n );\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(\n cmd.condition.toString(),\n cmd.sourceInfo\n );\n }\n if (cmd.ifFalse instanceof IfThenElse) {\n return (\n this.checkCommands(type, cmd.ifTrue.commands, optional) &&\n this.checkCommand(type, cmd.ifFalse, optional)\n );\n } else if (cmd.ifFalse != null) {\n return (\n this.checkCommands(type, cmd.ifTrue.commands, optional) &&\n this.checkCommands(type, cmd.ifFalse.commands, optional)\n );\n } else {\n return this.checkCommands(type, cmd.ifTrue.commands, optional);\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(\n cmd.id,\n cmd.sourceInfo\n );\n }\n this.assertParameters(fun, cmd.actualParameters);\n return optional;\n } else if (cmd instanceof Return) {\n const funcName = this.currentFunction.isMain\n ? LanguageDefinedFunction.getMainFunctionName()\n : 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(\n funcName,\n info.type,\n info.dim,\n cmd.sourceInfo\n );\n } else if (cmd.expression !== null) {\n const resultType = this.evaluateExpressionType(cmd.expression);\n if (!type.isCompatible(resultType)) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(type, resultType)\n ) {\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n throw ProcessorErrorFactory.invalid_return_type_full(\n funcName,\n info.type,\n info.dim,\n cmd.sourceInfo\n );\n }\n }\n return true;\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,\n optional\n );\n }\n\n /**\n *\n * @param {import('./../../ast/commands/function').Function} fun\n * @param {Expression[]} actualParametersList\n */\n assertParameters (fun, actualParametersList) {\n const parameterList = fun.formalParameters;\n if (\n parameterList.length > actualParametersList.length ||\n (parameterList.length !== actualParametersList.length &&\n !fun.hasVariadic())\n ) {\n throw ProcessorErrorFactory.invalid_parameters_size_full(\n fun.name,\n actualParametersList.length,\n fun.formalParameters.length,\n null\n );\n }\n\n for (\n let i = 0, j = 0;\n i < parameterList.length && j < actualParametersList.length;\n i += 1, j += 1\n ) {\n const formalParam = parameterList[i];\n if (formalParam.variadic && i + 1 !== parameterList.length) {\n throw \"A function variadic parameter must be its last parameter!\";\n }\n if (formalParam.variadic) {\n j = this.assertVariadicParameter(\n fun,\n formalParam,\n j,\n actualParametersList\n );\n } else {\n const param = actualParametersList[j];\n this.assertParameter(fun, formalParam, param);\n }\n }\n }\n\n evaluateVectorLiteralType (literal, type) {\n // console.log(literal);\n for (let i = 0; i < literal.value.length; i += 1) {\n const exp = literal.value[i];\n const expType = this.evaluateExpressionType(exp);\n let compatible = false;\n if (expType instanceof MultiType) {\n compatible = expType.isCompatible(type.innerType);\n } else {\n compatible = type.canAccept(expType, 1);\n }\n if (!compatible) {\n if (\n !Config.enable_type_casting ||\n !Store.canImplicitTypeCast(type.innerType, expType)\n ) {\n const stringInfo = type.stringInfo();\n const info = stringInfo[0];\n const result_string_info = expType.stringInfo();\n const result_info = result_string_info[0];\n throw ProcessorErrorFactory.incompatible_types_full(\n info.type,\n 0,\n result_info.type,\n result_info.dim,\n exp.toString(),\n literal.sourceInfo\n );\n }\n }\n }\n return type;\n }\n\n /**\n *\n * @param {import('./../../ast/commands/function').Function} fun\n * @param {import('./../../ast/commands/formalParameter').FormalParameter} formalParam\n * @param {number} index\n * @param {Expression[]} actualParametersList\n */\n assertVariadicParameter (fun, formalParam, index, actualParametersList) {\n let i;\n for (i = index; i < actualParametersList.length; i += 1) {\n this.assertParameter(fun, formalParam, actualParametersList[i]);\n }\n return i - 1;\n }\n\n /**\n *\n * @param {import('./../../ast/commands/function').Function} fun\n * @param {import('./../../ast/commands/formalParameter').FormalParameter} formalParam\n * @param {Expression} actualParameter\n */\n assertParameter (fun, formalParam, actualParameter) {\n // const id = formalParam.id;\n if (formalParam.byRef) {\n if (actualParameter instanceof VariableLiteral) {\n const variable = this.findSymbol(actualParameter.id, this.symbolMap);\n if (variable.isConst) {\n throw ProcessorErrorFactory.invalid_const_ref_full(\n fun.name,\n actualParameter.toString(),\n actualParameter.sourceInfo\n );\n }\n } else if (\n !(\n actualParameter instanceof VariableLiteral ||\n actualParameter instanceof ArrayAccess\n )\n ) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(\n fun.name,\n actualParameter.toString(),\n actualParameter.sourceInfo\n );\n }\n }\n const resultType = this.evaluateExpressionType(actualParameter);\n if (\n resultType instanceof MultiType &&\n formalParam.type instanceof MultiType\n ) {\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 += 1;\n }\n }\n if (shared <= 0) {\n if (Config.enable_type_casting && !formalParam.byRef) {\n if (\n (!resultType.isCompatible(Types.INTEGER) &&\n !resultType.isCompatible(Types.REAL)) ||\n formalParam.type.isCompatible(Types.INTEGER) ||\n formalParam.type.isCompatible(Types.REAL)\n ) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(\n fun.name,\n actualParameter.toString(),\n actualParameter.sourceInfo\n );\n }\n }\n }\n } else if (resultType instanceof MultiType) {\n if (!resultType.isCompatible(formalParam.type)) {\n if (Config.enable_type_casting && !formalParam.byRef) {\n if (\n (!resultType.isCompatible(Types.INTEGER) &&\n !resultType.isCompatible(Types.REAL)) ||\n formalParam.type.isCompatible(Types.INTEGER) ||\n formalParam.type.isCompatible(Types.REAL)\n ) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(\n fun.name,\n actualParameter.toString(),\n actualParameter.sourceInfo\n );\n }\n }\n }\n } else if (!formalParam.type.isCompatible(resultType)) {\n if (Config.enable_type_casting && !formalParam.byRef) {\n if (!Store.canImplicitTypeCast(formalParam.type, resultType)) {\n throw ProcessorErrorFactory.invalid_parameter_type_full(\n fun.name,\n actualParameter.toString(),\n actualParameter.sourceInfo\n );\n }\n }\n }\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Store = void 0;\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nconst modes_1 = require(\"../modes\");\nconst types_1 = require(\"../../typeSystem/types\");\nconst storeObject_1 = require(\"./storeObject\");\nconst storeObjectRef_1 = require(\"./storeObjectRef\");\nconst array_type_1 = require(\"../../typeSystem/array_type\");\nconst array_store_value_1 = require(\"./value/array_store_value\");\nconst location_1 = require(\"../../memory/location\");\nconst storeObjectArray_1 = require(\"./storeObjectArray\");\nconst store_value_1 = require(\"./value/store_value\");\nconst store_value_address_1 = require(\"./value/store_value_address\");\nconst store_value_ref_1 = require(\"./value/store_value_ref\");\nconst array_store_value_ref_1 = require(\"./value/array_store_value_ref\");\nconst store_object_array_ref_1 = require(\"./store_object_array_ref\");\nclass Store {\n constructor(name) {\n this.name = name;\n this.store = new Map();\n this.mode = modes_1.Modes.RUN;\n }\n static canImplicitTypeCast(castType, sourceType) {\n if (castType.isCompatible(types_1.Types.INTEGER) || castType.isCompatible(types_1.Types.REAL)) {\n if (sourceType.isCompatible(types_1.Types.INTEGER) || sourceType.isCompatible(types_1.Types.REAL)) {\n return true;\n }\n }\n return false;\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_1.Types.INTEGER)) {\n return new store_value_1.StoreValue(types_1.Types.INTEGER, stoObj.get().trunc());\n }\n else {\n return new store_value_1.StoreValue(types_1.Types.REAL, stoObj.get());\n }\n }\n extendStore(nextStore) {\n this.nextStore = nextStore;\n }\n applyStore(id) {\n if (!this.store.has(id)) {\n if (this.nextStore != null) {\n return this.nextStore.applyStore(id);\n }\n else {\n throw new Error(`Variable ${id} not found.`);\n }\n }\n const val = this.store.get(id);\n let result = null;\n if (val.type instanceof array_type_1.ArrayType) {\n const array = val;\n const array_type = array.type;\n let l = 0, c = 0;\n const values = array.value.map(v => {\n if (array.isVector) {\n return new store_value_address_1.StoreValueAddress(array_type.innerType, v, l++, undefined, array.id, array.readOnly);\n }\n else {\n if (c >= array.columns) {\n c = 0;\n l += 1;\n }\n return new store_value_address_1.StoreValueAddress(array_type.innerType, v, l, c++, array.id, array.readOnly);\n }\n });\n result = new array_store_value_1.ArrayStoreValue(array_type, values, array.lines, array.columns, val.id, val.readOnly);\n }\n else {\n result = new store_value_1.StoreValue(val.type, val.value, val.id, val.readOnly);\n }\n return result;\n }\n updateStore(id, stoValue) {\n if (!this.store.has(id)) {\n if (this.nextStore != null) {\n this.nextStore.updateStore(id, stoValue);\n return this;\n }\n else {\n // TODO: better error message\n throw new Error(`Variable ${id} not found.`);\n }\n }\n else {\n const oldObj = this.store.get(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 instanceof storeObjectArray_1.StoreObjectArray) {\n const array_value = stoValue;\n if (oldObj.isCompatible(array_value)) {\n if (oldObj.isVector) {\n array_value.get().forEach((val, index) => {\n oldObj.setAt(val, index, undefined);\n });\n }\n else {\n let line = 0;\n let column = 0;\n array_value.get().forEach((val) => {\n oldObj.setAt(val, line, column);\n column += 1;\n if (column >= oldObj.columns) {\n line += 1;\n column = 0;\n }\n });\n }\n return this;\n }\n }\n else if (oldObj.isCompatible(stoValue)) {\n const loc_address = oldObj.locAddress;\n location_1.Location.updateAddress(loc_address, stoValue.get());\n return this;\n }\n const oldType = oldObj.type;\n const stoType = stoValue.type;\n // TODO: better error message\n throw new Error(`${oldType.value} is not compatible with type ${stoType.value} given`);\n }\n }\n /**\n * Method used to update regions of an array (vector or matrix). The should only be used when update an specific\n * possition since it will only update the required addresses.\n * @param {string} id the variable id to be updated\n * @param {IStoreValue} sto_value the value to be used in the update process\n * @param {number} line the line address of the vector/matrix\n * @param {number} column the matrix column, which can be undefined\n */\n updateStoreArray(id, sto_value, line, column) {\n if (!this.store.has(id)) {\n if (this.nextStore != null) {\n this.nextStore.updateStoreArray(id, sto_value, line, column);\n return this;\n }\n else {\n // TODO: better error message\n throw new Error(`Variable ${id} not found.`);\n }\n }\n else {\n const oldObj = this.store.get(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 instanceof storeObjectArray_1.StoreObjectArray) {\n if (sto_value instanceof array_store_value_1.ArrayStoreValue) {\n // this must be a vector or matrix line update\n const actual_values = sto_value.get();\n if (oldObj.isVector && sto_value.isVector()) {\n for (let i = 0; i < sto_value.lines; i += 1) {\n const val = actual_values[i];\n oldObj.setAt(val, i, undefined);\n }\n }\n else if (!oldObj.isVector && column == null && sto_value.isVector()) {\n for (let i = 0; i < oldObj.columns; i += 1) {\n const val = actual_values[i];\n oldObj.setAt(val, line, i);\n }\n }\n else {\n // TODO: better error message\n throw new Error(`Attempting to assign an invalid value to array ${id}`);\n }\n }\n else {\n if (!oldObj.isVector && column == null) {\n // TODO: better error message\n throw new Error(`Attempting to assign an invalid value to array ${id}`);\n }\n oldObj.setAt(sto_value, line, column);\n }\n }\n else {\n throw new Error(\"Cannot update a non-array variable using updateStoreArray\");\n }\n // const oldType = oldObj.type;\n // const stoType = sto_value.type;\n // // TODO: better error message\n // throw new Error(`${oldType.value} is not compatible with type ${stoType.value} given`);\n return this;\n }\n }\n /**\n * Inserts a new variable into the Store. This method should be used when declaring a new variable,\n * including the special return variable $.\n * @param id variable id\n * @param stoValue the value to be used as the initial value of id\n */\n insertStore(id, stoValue) {\n if (this.store.has(id)) {\n // TODO: better error message\n throw new Error(`${id} is already defined`);\n }\n // TODO check for array....\n let newObj;\n if (stoValue instanceof store_value_ref_1.StoreValueRef) {\n newObj = new storeObjectRef_1.StoreObjectRef(stoValue);\n }\n else if (stoValue instanceof array_store_value_ref_1.ArrayStoreValueRef) {\n newObj = new store_object_array_ref_1.StoreObjectArrayRef(stoValue, stoValue.lines, stoValue.columns);\n }\n else if (stoValue instanceof array_store_value_1.ArrayStoreValue) {\n const columns = stoValue.isVector() ? 0 : stoValue.columns;\n const addresses = [];\n const all_values = stoValue.get();\n if (all_values.length > 0) {\n for (let i = 0; i < stoValue.get().length; i += 1) {\n const val = all_values[i].get();\n addresses.push(location_1.Location.allocate(val));\n }\n }\n else {\n let total = stoValue.lines;\n total = stoValue.isVector() ? total : total * columns;\n for (let i = 0; i < total; i += 1) {\n addresses.push(location_1.Location.allocate(null));\n }\n }\n newObj = new storeObjectArray_1.StoreObjectArray(stoValue.type, stoValue.lines, columns, addresses, stoValue.isConst);\n }\n else {\n const loc_address = location_1.Location.allocate(stoValue.get());\n newObj = new storeObject_1.StoreObject(stoValue.type, loc_address, stoValue.isConst);\n }\n newObj.setID(id);\n this.store.set(id, newObj);\n return this;\n }\n /**\n * Helper function similar to applyStore. But it returns the actual object in the store be it ref or not\n * applyStore will return the refferenced object if the object in the store is a ref\n */\n getStoreObject(id) {\n if (!this.store.has(id)) {\n if (this.nextStore != null) {\n return this.nextStore.getStoreObject(id);\n }\n else {\n throw new Error(`Variable ${id} not found.`);\n }\n }\n return this.store.get(id);\n }\n destroy() {\n this.store.forEach(sto => sto.destroy(), this);\n }\n isDefined(id) {\n if (!this.store.has(id)) {\n if (this.nextStore != null) {\n return this.nextStore.isDefined(id);\n }\n else {\n return false;\n }\n }\n return true;\n }\n}\nexports.Store = Store;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StoreObject = void 0;\nconst location_1 = require(\"../../memory/location\");\nclass StoreObject {\n /**\n *\n * @param {Type} type\n * @param {Number} loc_address\n * @param {Boolean} readOnly\n */\n constructor(type, loc_address, readOnly = false) {\n this._loc_address = loc_address;\n this._type = type;\n this._readOnly = readOnly;\n this._id = undefined;\n }\n setID(id) {\n this._id = id;\n }\n get id() {\n return this._id;\n }\n get inStore() {\n return this.id !== null;\n }\n get type() {\n return this._type;\n }\n /**\n * Returns the actual value stored at the loccation address present in this object.\n * The returned value is compatible with @prop{StoreObject.type}\n */\n get value() {\n const address = location_1.Location.find(this._loc_address);\n if (address != null) {\n return address.value;\n }\n else {\n throw new Error(\"!!!Critical Error: variable \" + this.id + \" does not have a valid address. Loc-Address \" + this.locAddress);\n }\n }\n get number() {\n throw new Error(\"DOT NOT USE THIS PROPERTY!\");\n }\n get readOnly() {\n return this._readOnly;\n }\n set readOnly(value) {\n this._readOnly = value;\n }\n isCompatible(another) {\n return this.type.isCompatible(another.type);\n }\n destroy() {\n return location_1.Location.deallocate(this._loc_address);\n }\n get locAddress() {\n return this._loc_address;\n }\n}\nexports.StoreObject = StoreObject;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StoreObjectArray = void 0;\nconst storeObject_1 = require(\"./storeObject\");\nconst array_store_value_1 = require(\"./value/array_store_value\");\nconst location_1 = require(\"../../memory/location\");\nclass StoreObjectArray extends storeObject_1.StoreObject {\n constructor(type, _lines, _columns, loc_addresses, readOnly = false) {\n super(type, -1, readOnly);\n this._lines = _lines;\n this._columns = _columns;\n this.loc_addresses = loc_addresses;\n }\n get lines() {\n return this._lines;\n }\n get columns() {\n return this._columns;\n }\n isCompatible(another) {\n if (another instanceof array_store_value_1.ArrayStoreValue) {\n const cols = another.columns == null ? 0 : another.columns;\n if (this.lines === another.lines && this.columns === cols) {\n return super.isCompatible(another);\n }\n }\n return false;\n }\n get isVector() {\n return this.type.dimensions === 1;\n }\n /**@override\n * Returns the list of values stored by this array.\n * All returned values are compatible with @prop{StoreObject.type}\n */\n get value() {\n const values = [];\n for (let i = 0; i < this.addresses.length; i += 1) {\n const address = location_1.Location.find(this.addresses[i]);\n if (address != null) {\n values.push(address.value);\n }\n else {\n throw new Error(\"!!!Critical Error: variable \" + this.id + \" does not have a valid address. Loc-Address \" + this.locAddress);\n }\n }\n return values;\n }\n destroy() {\n let bool = true;\n for (let i = 0; i < this.addresses.length; i += 1) {\n bool = bool && location_1.Location.deallocate(this.addresses[i]);\n }\n return bool;\n }\n /**\n * @override\n *\n * Returns the address that contains a list of all addresses of the values present in the array\n */\n get locAddress() {\n throw new Error(\"!!!Internal Error: Cannot invoke locAddress on StoreObjectArray\");\n }\n get addresses() {\n return this.loc_addresses;\n }\n getAt(line, column) {\n if (this.isVector) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n column = line;\n line = 0;\n }\n else if (column == null) {\n // this is a whole line...\n const values = [];\n for (let col = 0; col < this.columns; col += 1) {\n const index = this.getIndexOf(line, col);\n const address = location_1.Location.find(this.addresses[index]);\n values.push(address.value);\n }\n return values;\n }\n const index = this.getIndexOf(line, column);\n const address = location_1.Location.find(this.addresses[index]);\n return address.value;\n }\n setAt(value, line, column) {\n let used_dims = 1;\n if (column != null) {\n used_dims += 1;\n }\n if (!this.type.canAccept(value.type, used_dims)) {\n throw new Error(\"!!!Internal Error: Attempting to insert an invalid value inside array \" + this.id);\n }\n if (this.isVector) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n column = line;\n line = 0;\n }\n else if (column == null) {\n throw new Error(\"!!!Internal Error: Attempting to insert a line into matrix \" + this.id);\n }\n const pos = this.getIndexOf(line, column);\n location_1.Location.updateAddress(this.addresses[pos], value.get());\n }\n getIndexOf(line, column) {\n return line * this.columns + column;\n }\n getLocAddressOf(line, column) {\n if (this.isVector) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n column = line;\n line = 0;\n }\n else if (column == null) {\n // this is a whole line...\n const values = [];\n for (let col = 0; col < this.columns; col += 1) {\n const index = this.getIndexOf(line, col);\n values.push(this.addresses[index]);\n }\n return values;\n }\n const index = this.getIndexOf(line, column);\n return this.addresses[index];\n }\n}\nexports.StoreObjectArray = StoreObjectArray;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StoreObjectRef = void 0;\nconst storeObject_1 = require(\"./storeObject\");\nclass StoreObjectRef extends storeObject_1.StoreObject {\n /**\n *\n * @param {StoreObject} stoValue\n */\n constructor(stoValue) {\n super(stoValue.type, stoValue.getRefAddress(), false);\n this.refObj = stoValue.id;\n this.reference_dimension = stoValue.getReferenceDimension();\n }\n get isRef() {\n return true;\n }\n getRefObj() {\n return this.refObj;\n }\n getReferenceDimension() {\n return this.reference_dimension;\n }\n destroy() {\n return false;\n }\n}\nexports.StoreObjectRef = StoreObjectRef;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StoreObjectArrayRef = void 0;\nconst storeObjectArray_1 = require(\"./storeObjectArray\");\nclass StoreObjectArrayRef extends storeObjectArray_1.StoreObjectArray {\n constructor(stoValue, lines, columns) {\n super(stoValue.type, lines, columns, stoValue.getAddresses(), false);\n this.refObj = stoValue.id;\n }\n get isRef() {\n return true;\n }\n getRefObj() {\n return this.refObj;\n }\n destroy() {\n return false;\n }\n}\nexports.StoreObjectArrayRef = StoreObjectArrayRef;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArrayStoreValue = void 0;\nconst array_type_1 = require(\"../../../typeSystem/array_type\");\nconst store_value_address_1 = require(\"./store_value_address\");\nclass ArrayStoreValue {\n constructor(type, values, lines, columns, id, isConst = false) {\n this.type = type;\n this.id = id;\n this.isConst = isConst;\n this.values = values;\n this.lines = lines;\n this.columns = columns;\n }\n get() {\n return this.values;\n }\n /**\n * @deprecated\n * Potential not necessary since array access is occuring directly in the StoreObject\n * @param line\n * @param column\n */\n getAt(line, column) {\n console.log(\"Column \", column);\n if (this.isVector()) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n column = line;\n line = 0;\n }\n else if (column == null) {\n const values = [];\n for (let col = 0; col < this.columns; col += 1) {\n const index = line * this.lines + col;\n values.push(this.values[index]);\n }\n const array_type = this.type;\n const vector_type = new array_type_1.ArrayType(array_type.innerType, array_type.dimensions - 1);\n return new ArrayStoreValue(vector_type, values, this.columns, 0, this.id, this.isConst);\n }\n const index = line * this.lines + column;\n console.log(\"Get at: \", index);\n return this.values[index];\n }\n setAt(value, line, column) {\n let used_dims = 1;\n if (column != null) {\n used_dims += 1;\n }\n let actual_line = line;\n let actual_column = column;\n if (!this.type.canAccept(value.type, used_dims)) {\n throw new Error(\"!!!Internal Error: Attempting to insert an invalid value inside array \" + this.id);\n }\n if (this.isVector()) {\n if (column != null) {\n throw new Error(this.id + \" is not a matrix!\");\n }\n actual_column = actual_line;\n actual_line = 0;\n }\n else if (column == null) {\n if (!(value instanceof ArrayStoreValue)) {\n throw new Error(\"Attempting to insert a single value as a line of matrix \" + this.id);\n }\n const actual_values = value.get();\n for (let i = 0; i < this.columns; i += 1) {\n const pos = actual_line * this.columns + i;\n const val = actual_values[i];\n this.values[pos] = new store_value_address_1.StoreValueAddress(value.type, val.get(), actual_line, i, this.id, this.isConst);\n }\n }\n const columns = this.columns == null ? 0 : this.columns;\n const pos = actual_line * columns + actual_column;\n this.values[pos] = new store_value_address_1.StoreValueAddress(value.type, value.get(), line, column, this.id, this.isConst);\n }\n inStore() {\n return this.id != null;\n }\n isVector() {\n return this.type.dimensions == 1;\n }\n}\nexports.ArrayStoreValue = ArrayStoreValue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArrayStoreValueRef = void 0;\nclass ArrayStoreValueRef {\n constructor(type, values, addresses, lines, columns, id) {\n this.type = type;\n this.values = values;\n this.addresses = addresses;\n this.lines = lines;\n this.columns = columns;\n this.id = id;\n this.isConst = false;\n }\n get() {\n return this.values;\n }\n getAddresses() {\n return this.addresses;\n }\n inStore() {\n return this.id != null;\n }\n}\nexports.ArrayStoreValueRef = ArrayStoreValueRef;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StoreValue = void 0;\nclass StoreValue {\n constructor(type, value, id, isConst = false) {\n this.type = type;\n this.id = id;\n this.isConst = isConst;\n this.value = value;\n }\n get() {\n return this.value;\n }\n inStore() {\n return this.id != null;\n }\n}\nexports.StoreValue = StoreValue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StoreValueAddress = void 0;\nconst store_value_1 = require(\"./store_value\");\nclass StoreValueAddress extends store_value_1.StoreValue {\n constructor(type, value, line, column, id, isConst = false) {\n super(type, value, id, isConst);\n this.line = line;\n this.column = column;\n }\n}\nexports.StoreValueAddress = StoreValueAddress;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StoreValueRef = void 0;\nclass StoreValueRef {\n constructor(type, value, loc_address, id) {\n this.type = type;\n this.value = value;\n this.loc_address = loc_address;\n this.id = id;\n this.isConst = false;\n this.reference_dimesion = 0;\n }\n get() {\n return this.value;\n }\n getRefAddress() {\n return this.loc_address;\n }\n inStore() {\n return this.id != null;\n }\n getReferenceDimension() {\n return this.reference_dimesion;\n }\n setReferenceDimension(dimension) {\n this.reference_dimesion = dimension;\n }\n}\nexports.StoreValueRef = StoreValueRef;\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';\nimport { Location } from \"./memory/location\";\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 window.JsonEditor('#json-renderer', {});\nconst domConsole = new DOMConsole(\"#console\", true);\ndomConsole.hide();\n// proc.interpretAST().then( sto => {\n// console.log(sto.applyStore('a'));\n// }).catch(e => console.log(e));\ntry {\n window.$('#btn').click( () => {\n const input = window.$('#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 => {\n console.log(sto);\n editor.load(sto.store);\n console.log(Location.size());\n }).catch( e => {\n alert(e);\n console.log(e);\n console.log(Location.size());\n });\n } catch (error) {\n alert(error);\n console.log(error);\n console.log(Location.size());\n }\n \n });\n} catch(a) {\n console.log(a);\n}\n}\n","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});","/* global iLMparameters*/\nimport Lexers from \"./../../grammar/\";\nimport line_i18n from \"line-i18n\";\nimport { Config } from \"./../util/config\";\n\nclass LanguageServiceExtended extends line_i18n.LanguageServiceNoLS {\n constructor () {\n super(\n typeof iLMparameters === \"undefined\"\n ? Config.default_lang\n : iLMparameters.lang\n );\n }\n\n getDefaultLang () {\n return \"en\";\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 line_i18n from \"line-i18n\";\nimport { LanguageService } from \"./languageService\";\nimport { LanguageDefinedFunction } from \"./../processor/definedFunctions\";\nimport Langs from \"./../../i18n\";\nimport { Operators } from \"./../ast/operators\";\n\nclass IVProgLocalizedStrings extends line_i18n.LocalizedStrings {\n constructor (langService, langsJsons, shouldListenToChange = false) {\n super(langService, langsJsons, shouldListenToChange);\n }\n\n translateType (type, dim) {\n const type_string = this.getUI(`type_${type}`);\n switch (dim) {\n case 0:\n return type_string;\n default:\n if (dim > 1) return this.getUI(\"matrix_info_string\", [type_string]);\n else return this.getUI(\"vector_info_string\", [type_string]);\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(`logic_operator_${op.value}`);\n default:\n return op.value;\n }\n }\n\n translateInternalFunction (name, category = null) {\n if (category == null) {\n return LanguageDefinedFunction.getLocalName(name);\n } else {\n return LanguageDefinedFunction.getLocalName(`${category}.${name}`);\n }\n }\n}\n\nexport const LocalizedStrings = Object.freeze(\n new IVProgLocalizedStrings(LanguageService, Langs, true)\n);\n\nlet _instance = null;\n\nexport function getInstance () {\n if (_instance == null) {\n _instance = new IVProgLocalizedStrings(LanguageService, Langs);\n }\n return _instance;\n}\n","let clicks = [];\nlet inRebuildMode = false;\n\nexport const ActionTypes = Object.freeze({\n // registerUserEvent payload:\n // (function_name, insert action)\n INSERT_FUNCTION:\"INSERT_FUNCTION\",\n // (function_name, remove action)\n REMOVE_FUNCTION:\"REMOVE_FUNCTION\",\n // (var_name,insert action, type, dim)\n INSERT_GLOBAL_VAR:\"INSERT_GLOBAL_VAR\",\n // (var name, remove action)\n REMOVE_GLOBAL_VAR:\"REMOVE_GLOBAL_VAR\",\n // (old function name, rename action, new function name)\n RENAME_FUNCTION:\"RENAME_FUNCTION\",\n // (old var name, rename action. new var name)\n RENAME_GLOBAL_VAR:\"RENAME_GLOBAL_VAR\",\n // (var name, set const action)\n SET_GLOBAL_CONST:\"SET_GLOBAL_CONST\",\n // (function name, change return action, type, dim)\n CHANGE_FUNCTION_RETURN:\"CHANGE_FUNCTION_RETURN\",\n // (var name, change type action, type, dim, rows?, columns?)\n CHANGE_GLOBAL_TYPE:\"CHANGE_GLOBAL_TYPE\",\n // (var name, change value action, value)\n CHANGE_GLOBAL_VALUE:\"CHANGE_GLOBAL_VALUE\",\n // (function name, insert param action, param varname, type, dim)\n INSERT_FUNCTION_PARAM:\"INSERT_FUNCTION_PARAM\",\n // (function name, remove param action, param varname)\n REMOVE_FUNCTION_PARAM:\"REMOVE_FUNCTION_PARAM\",\n // (function name, change param type action, type, dim)\n CHANGE_PARAM_TYPE:\"CHANGE_PARAM_TYPE\",\n // (function name, rename param action, old param name, new param name)\n RENAME_FUNCTION_PARAM:\"RENAME_FUNCTION_PARAM\",\n // (function name, insert var action, var name, type, dim)\n INSERT_FUNCTION_VAR:\"INSERT_FUCNTION_VAR\",\n // (function name, remove var action, var name)\n REMOVE_FUNCTION_VAR:\"REMOVE_FUNCTION_VAR\",\n // (function name, rename var action, old var name, new var name)\n RENAME_FUNCTION_VAR:\"RENAME_FUNCTION_VAR\",\n // (function name, change var type action, var name, type, dim, rows?, columns?)\n CHANGE_VAR_TYPE:\"CHANGE_VAR_TYPE\",\n // (function name, change var value action, var name, value)\n CHANGE_VAR_VALUE:\"CHANGE_VAR_VALUE\",\n // (function name, insert command action, command, path)\n INSERT_COMMAND:\"INSERT_COMMAND\",\n // (function name, remove command action, path)\n REMOVE_COMMAND:\"REMOVE_COMMAND\",\n // (function name, change command exp action, path, exp)\n CHANGE_COMMAND_EXP:\"CHANGE_COMMAND_EXP\",\n // (function name, change attrib exp action, path, exp)\n CHANGE_ATTRIB_EXP:\"CHANGE_ATTRIB_EXP\",\n // (function name, change attrib var action, path, var name, row_exp?, column_exp?)\n CHANGE_ATTRIB_VAR:\"CHANGE_ATTRIB_VAR\",\n // (function name, move command action, old path, new path)\n MOVE_COMMAND:\"MOVE_COMMAND\",\n // (function name, enter change name action, var name)\n ENTER_CHANGE_VAR_NAME:'ENTER_CHANGE_VAR_NAME',\n // (function name, enter change value action, var name)\n ENTER_CHANGE_VAR_VALUE:'ENTER_CHANGE_VAR_VALUE',\n // (var name, enter change name action)\n ENTER_CHANGE_GLOBAL_NAME:'ENTER_CHANGE_GLOBAL_NAME',\n // (var name, enter change value action)\n ENTER_CHANGE_GLOBAL_VALUE:'ENTER_CHANGE_GLOBAL_VALUE',\n // (function name, enter change name action, param name)\n ENTER_CHANGE_PARAM_NAME:'ENTER_CHANGE_PARAM_NAME',\n});\n\nexport function registerClick (x, y, details) {\n if (inRebuildMode) {\n return;\n }\n clicks.push([x, y, Date.now(), details]);\n}\n\nexport function registerUserEvent (command, action, ...params) {\n registerEvent('user_event', command, action, params);\n}\n\nexport function registerSystemEvent (command, action, ...params) {\n registerEvent('system_event', command, action, params);\n}\n\nfunction registerEvent (tag, command, action, params) {\n if (inRebuildMode) {\n return;\n }\n const event = {context: command, action: action, params:params};\n clicks.push([tag, Date.now(), event]);\n}\n\nexport function getLogs () {\n return clicks;\n}\n\nexport function setRebuildMode (flag) {\n inRebuildMode = flag;\n}\n\nexport function getLogsAsString () {\n return JSON.stringify(clicks);\n}\n\nexport function parseLogs (logData) {\n clicks = JSON.parse(logData);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArrayType = void 0;\nclass ArrayType {\n constructor(type, dimensions) {\n this.dimensions = dimensions;\n this.innerType = type;\n }\n get isVector() {\n return this.dimensions == 1;\n }\n isCompatible(another) {\n if (another instanceof ArrayType) {\n if (this.dimensions !== another.dimensions) {\n return false;\n }\n return this.innerType.isCompatible(another.innerType);\n }\n return false;\n }\n stringInfo() {\n const list = this.innerType.stringInfo();\n list.forEach(v => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tmp = v;\n tmp.dim = this.dimensions;\n });\n return list;\n }\n get value() {\n return undefined;\n }\n get ord() {\n return undefined;\n }\n canAccept(another, used_dims) {\n const free_dims = this.dimensions - used_dims;\n if (another instanceof ArrayType) {\n return free_dims == another.dimensions && this.innerType.isCompatible(another.innerType);\n }\n else {\n return free_dims == 0 && this.innerType.isCompatible(another);\n }\n }\n}\nexports.ArrayType = ArrayType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MultiType = void 0;\nclass MultiType {\n constructor(types) {\n this.types = types;\n }\n get value() {\n return undefined;\n }\n get ord() {\n return undefined;\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 isCompatible(another) {\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 return false;\n }\n}\nexports.MultiType = MultiType;\n","import { LanguageService } from \"../services/languageService\";\nimport { Types } from \"./types\";\nimport Decimal from \"decimal.js\";\nimport { Config } from \"../util/config\";\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 toChar (str) {\n console.debug(str, str.length);\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[0];\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 let result = null;\n if (bool) {\n result = instance.literalNames[lexer.RK_TRUE];\n } else {\n result = instance.literalNames[lexer.RK_FALSE];\n }\n return result.replace(/'/g, \"\");\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.toFixed(Config.decimalPlaces);\n }\n }\n case Types.BOOLEAN.ord:\n return convertBoolToString(value);\n default:\n return value;\n }\n}\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Type = void 0;\nclass Type {\n constructor(value, ord) {\n this.value = value;\n this.ord = ord;\n }\n stringInfo() {\n return [{ type: this.value, dim: 0 }];\n }\n isCompatible(another) {\n return this.value === another.value && this.ord === another.ord;\n }\n}\nexports.Type = Type;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromOrdToType = exports.Types = void 0;\nconst type_1 = require(\"./type\");\nconst multiType_1 = require(\"./multiType\");\nconst maybe_1 = require(\"../util/maybe\");\nconst INTEGER = new type_1.Type(\"integer\", 0);\nconst REAL = new type_1.Type(\"real\", 1);\nconst STRING = new type_1.Type(\"text\", 2);\nconst BOOLEAN = new type_1.Type(\"boolean\", 3);\nconst CHAR = new type_1.Type(\"char\", 4);\nconst VOID = new type_1.Type(\"void\", 5);\nconst UNDEFINED = new type_1.Type(\"undefined\", 6);\nconst ALL = new multiType_1.MultiType([INTEGER, REAL, STRING, CHAR, BOOLEAN]);\nexports.Types = Object.freeze({\n INTEGER: INTEGER,\n REAL: REAL,\n STRING: STRING,\n CHAR: CHAR,\n BOOLEAN: BOOLEAN,\n VOID: VOID,\n UNDEFINED: UNDEFINED,\n ALL: ALL\n});\nfunction fromOrdToType(ord) {\n const typeMap = exports.Types;\n for (const t in typeMap) {\n if (typeMap[t].ord && typeMap[t].ord === ord) {\n return maybe_1.Maybe.some(typeMap[t]);\n }\n }\n return maybe_1.Maybe.none();\n}\nexports.fromOrdToType = fromOrdToType;\n","import {SemanticAnalyser} from './../processor/semantic/semanticAnalyser';\nimport {IVProgProcessor} from './../processor/ivprogProcessor';\nimport { InputTest } from './inputTest';\nimport { OutputTest } from './outputTest';\nimport { LocalizedStrings } from './../services/localizedStringsService'\n\nexport function autoGenerateTestCaseOutput (program_text, testCases) {\n let copyTestCases = testCases.map((test) => Object.assign({}, test));\n try {\n const program = SemanticAnalyser.analyseFromSource(program_text);\n const resultList = testCases.map((test, id) => {\n const input = new InputTest(test.input);\n const output = new OutputTest();\n const exec = new IVProgProcessor(program);\n exec.registerInput(input);\n exec.registerOutput(output);\n return exec.interpretAST().then(_ => {\n return {id: id, program: exec};\n });\n });\n return Promise.all(resultList).then(result_final => {\n for(let i = 0; i < result_final.length; ++i) {\n const result = result_final[i];\n const output = result.program.output.list;\n const input = result.program.input;\n if(input.index != input.inputList.length) {\n window.showAlert(LocalizedStrings.getMessage(\"testcase_autogen_unused_input\", [result.id+1]));\n return Promise.resolve(false);\n }\n if(output.length == 0) {\n window.showAlert(LocalizedStrings.getMessage(\"testcase_autogen_empty\", [result.id+1]));\n }\n copyTestCases[result.id].output = output;\n }\n window.outputGenerated(copyTestCases);\n return Promise.resolve(true);\n });\n }catch (error) {\n return Promise.reject(error)\n }\n}","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Config = void 0;\nclass ConfigObject {\n constructor() {\n this.decimalPlaces = 8;\n this.intConvertRoundMode = 2;\n this.default_lang = 'pt';\n this.enable_type_casting = true;\n this.idle_input_interval = 5000;\n this.suspend_threshold = 100;\n // this.max_instruction_count = 350250; - automated evaluation limit\n this.max_instruction_count = Number.MAX_SAFE_INTEGER;\n }\n setConfig(opts) {\n const otherConfig = opts;\n for (const key in otherConfig) {\n if (Object.prototype.hasOwnProperty.call(this, key)) {\n this[key] = otherConfig[key];\n }\n }\n }\n}\nconst config = new ConfigObject();\nexports.Config = config;\n","import { getCodeEditorModeConfig } from \"./utils\";\n\n/**\n * Source: https://raw.githubusercontent.com/codemirror/CodeMirror/master/mode/clike/clike.js\n * @author arijn Haverbeke and others\n * @author Lucas de Souza\n * @param {CodeMirror} CodeMirror \n */\nexport function CodeEditorMode (CodeMirror) {\n \"use strict\";\n\n function Context(indented, column, type, info, align, prev) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.info = info;\n this.align = align;\n this.prev = prev;\n }\n\n function pushContext(state, col, type, info) {\n let indent = state.indented;\n if (state.context && state.context.type == \"statement\" && type != \"statement\")\n indent = state.context.indented;\n return state.context = new Context(indent, col, type, info, null, state.context);\n }\n \n function popContext(state) {\n const t = state.context.type;\n if (t == \")\" || t == \"]\" || t == \"}\")\n state.indented = state.context.indented;\n return state.context = state.context.prev;\n }\n\n function typeBefore(stream, state, pos) {\n if (state.prevToken == \"variable\" || state.prevToken == \"type\") return true;\n if (/\\S(?:[^- ]>|[*\\]])\\s*$|\\*$/.test(stream.string.slice(0, pos))) return true;\n if (state.typeAtEndOfLine && stream.column() == stream.indentation()) return true;\n }\n\n function isTopScope(context) {\n for (; ;) {\n if (!context || context.type == \"top\") return true;\n if (context.type == \"}\" && context.prev.info != \"namespace\") return false;\n context = context.prev;\n }\n }\n\n function contains(words, word) {\n if (typeof words === \"function\") {\n return words(word);\n } else {\n return Object.propertyIsEnumerable.call(words, word);\n }\n }\n\n function tokenComment(stream, state) {\n let maybeEnd = false, ch;\n while ((ch = stream.next())) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return \"comment\";\n }\n\n CodeMirror.defineMode(\"ivprog\", function (config, parserConfig) {\n const indentUnit = config.indentUnit,\n statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,\n dontAlignCalls = parserConfig.dontAlignCalls,\n keywords = parserConfig.keywords || {},\n switchKeyword = parserConfig.switchKeyword,\n caseKeyword = parserConfig.caseKeyword,\n defaultKeyword = parserConfig.defaultKeyword,\n caseRegex = new RegExp(`^\\\\s*(?:${caseKeyword} .*?:|${defaultKeyword}:|\\\\{\\\\}?|\\\\})$`),////,\n types = parserConfig.types || {},\n builtin = parserConfig.builtin || {},\n blockKeywords = parserConfig.blockKeywords || {},\n defKeywords = parserConfig.defKeywords || {},\n atoms = parserConfig.atoms || {},\n hooks = parserConfig.hooks || {},\n multiLineStrings = parserConfig.multiLineStrings,\n indentStatements = false,\n namespaceSeparator = null,\n isPunctuationChar = /[[\\]{}(),;:\\n]/,\n numberStart = /[\\d.]/,\n number = /^(?:0x[a-f\\d]+|0b[01]+|(?:\\d+\\.?\\d*|\\.\\d+)(?:e[-+]?\\d+)?)$/i,\n isOperatorChar = /[+\\-*%=<>!/&]/,\n isIdentifierChar = /[a-zA-Z0-9_]/,\n // An optional function that takes a {string} token and returns true if it\n // should be treated as a builtin.\n isReservedIdentifier = parserConfig.isReservedIdentifier || false;\n\n let curPunc, isDefKeyword;\n let tokenString = function () { /*SKIP*/};\n function tokenBase(stream, state) {\n const ch = stream.next();\n if (hooks[ch]) {\n const result = hooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == '\"') {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n }\n if (isPunctuationChar.test(ch)) {\n curPunc = ch;\n return null;\n }\n if (numberStart.test(ch)) {\n stream.backUp(1)\n if (stream.match(number)) return \"number\"\n stream.next()\n }\n if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n }\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return \"comment\";\n }\n }\n if (isOperatorChar.test(ch)) {\n while (!stream.match(/^\\/[/*]/, false) && stream.eat(isOperatorChar)) { /* SKIP */}\n return \"operator\";\n }\n stream.eatWhile(isIdentifierChar);\n if (namespaceSeparator) while (stream.match(namespaceSeparator))\n stream.eatWhile(isIdentifierChar);\n\n const cur = stream.current();\n if (contains(keywords, cur)) {\n if (contains(blockKeywords, cur)) curPunc = \"newstatement\";\n if (contains(defKeywords, cur)) isDefKeyword = true;\n return \"keyword\";\n }\n if (contains(types, cur)) return \"type\";\n if (contains(builtin, cur)\n || (isReservedIdentifier && isReservedIdentifier(cur))) {\n if (contains(blockKeywords, cur)) curPunc = \"newstatement\";\n return \"builtin\";\n }\n if (contains(atoms, cur)) return \"atom\";\n return \"variable\";\n }\n\n tokenString = function (quote) {\n return function (stream, state) {\n let escaped = false, next, end = false;\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) { end = true; break; }\n escaped = !escaped && next == \"\\\\\";\n }\n if (end || !(escaped || multiLineStrings))\n state.tokenize = null;\n return \"string\";\n };\n }\n\n function maybeEOL(stream, state) {\n if (parserConfig.typeFirstDefinitions && stream.eol() && isTopScope(state.context))\n state.typeAtEndOfLine = typeBefore(stream, state, stream.pos)\n }\n\n // Interface\n\n return {\n startState: function (basecolumn) {\n return {\n tokenize: null,\n context: new Context((basecolumn || 0) - indentUnit, 0, \"top\", null, false),\n indented: 0,\n startOfLine: true,\n prevToken: null\n };\n },\n\n token: function (stream, state) {\n let ctx = state.context;\n if (stream.sol()) {\n if (ctx.align == null) ctx.align = false;\n state.indented = stream.indentation();\n state.startOfLine = true;\n }\n if (stream.eatSpace()) { maybeEOL(stream, state); return null; }\n curPunc = isDefKeyword = null;\n let style = (state.tokenize || tokenBase)(stream, state);\n if (style == \"comment\" || style == \"meta\") return style;\n if (ctx.align == null) ctx.align = true;\n\n if (curPunc == \";\" || curPunc == \":\" || (curPunc == \",\" && stream.match(/^\\s*(?:\\/\\/.*)?$/, false)))\n while (state.context.type == \"statement\") popContext(state);\n else if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n else if (curPunc == \"}\") {\n while (ctx.type == \"statement\") ctx = popContext(state);\n if (ctx.type == \"}\") ctx = popContext(state);\n while (ctx.type == \"statement\") ctx = popContext(state);\n }\n else if (curPunc == ctx.type) popContext(state);\n else if (indentStatements &&\n (((ctx.type == \"}\" || ctx.type == \"top\") && curPunc != \";\") ||\n (ctx.type == \"statement\" && curPunc == \"newstatement\"))) {\n pushContext(state, stream.column(), \"statement\", stream.current());\n }\n\n if (style == \"variable\" &&\n ((state.prevToken == \"def\" ||\n (parserConfig.typeFirstDefinitions && typeBefore(stream, state, stream.start) &&\n isTopScope(state.context) && stream.match(/^\\s*\\(/, false)))))\n style = \"def\";\n\n if (hooks.token) {\n const result = hooks.token(stream, state, style);\n if (result !== undefined) style = result;\n }\n\n if (style == \"def\" && parserConfig.styleDefs === false) style = \"variable\";\n\n state.startOfLine = false;\n state.prevToken = isDefKeyword ? \"def\" : style || curPunc;\n maybeEOL(stream, state);\n return style;\n },\n\n indent: function (state, textAfter) {\n if (state.tokenize != tokenBase && state.tokenize != null || state.typeAtEndOfLine) return CodeMirror.Pass;\n let ctx = state.context;\n const firstChar = textAfter && textAfter.charAt(0)\n const closing = firstChar == ctx.type;\n if (ctx.type == \"statement\" && firstChar == \"}\") ctx = ctx.prev;\n if (parserConfig.dontIndentStatements)\n while (ctx.type == \"statement\" && parserConfig.dontIndentStatements.test(ctx.info))\n ctx = ctx.prev\n if (hooks.indent) {\n const hook = hooks.indent(state, ctx, textAfter, indentUnit);\n if (typeof hook == \"number\") return hook\n }\n const switchBlock = ctx.prev && ctx.prev.info == switchKeyword;\n if (parserConfig.allmanIndentation && /[{(]/.test(firstChar)) {\n while (ctx.type != \"top\" && ctx.type != \"}\") ctx = ctx.prev\n return ctx.indented\n }\n if (ctx.type == \"statement\")\n return ctx.indented + (firstChar == \"{\" ? 0 : statementIndentUnit);\n if (ctx.align && (!dontAlignCalls || ctx.type != \")\"))\n return ctx.column + (closing ? 0 : 1);\n if (ctx.type == \")\" && !closing)\n return ctx.indented + statementIndentUnit;\n const caseTestRegex = new RegExp(`^(?:${caseKeyword}|${defaultKeyword})\\b`)\n return ctx.indented + (closing ? 0 : indentUnit) +\n (!closing && switchBlock && !caseTestRegex.test(textAfter) ? indentUnit : 0);\n },\n\n electricInput: caseRegex,\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: \"//\",\n fold: \"brace\"\n };\n });\n\n function words(str) {\n const obj = {}, words = str.split(\" \");\n for (let i = 0; i < words.length; ++i) obj[words[i]] = true;\n return obj;\n }\n \n const codeConfig = getCodeEditorModeConfig();\n\n const ivprogKeywords = codeConfig.keywords.join(\" \");\n\n const basicTypes = words(codeConfig.types.join(\" \"));\n\n function ivprogTypes(identifier) {\n return contains(basicTypes, identifier);\n }\n\n const ivprogBlockKeywords = codeConfig.blocks.join(\" \");\n const ivprogDefKeywords = \"funcao const\";\n\n function def(mimes, mode) {\n if (typeof mimes == \"string\") mimes = [mimes];\n const words = [];\n function add(obj) {\n if (obj) {\n for (const prop in obj) if (Object.hasOwnProperty.call(obj, prop)) {\n words.push(prop);\n }\n }\n }\n add(mode.keywords);\n add(mode.types);\n add(mode.builtin);\n add(mode.atoms);\n if (words.length) {\n mode.helperType = mimes[0];\n CodeMirror.registerHelper(\"hintWords\", mimes[0], words);\n }\n\n for (let i = 0; i < mimes.length; ++i)\n CodeMirror.defineMIME(mimes[i], mode);\n }\n \n def([\"text/x-ivprog\"], {\n name: \"ivprog\",\n keywords: words(ivprogKeywords),\n types: ivprogTypes,\n blockKeywords: words(ivprogBlockKeywords),\n defKeywords: words(ivprogDefKeywords),\n typeFirstDefinitions: true,\n atoms: words(codeConfig.atoms.join(\" \")),\n switchKeyword: codeConfig.switchString,\n caseKeyword: codeConfig.case_default[0],\n defaultKeyword: codeConfig.case_default[1],\n modeProps: { fold: [\"brace\"] }\n });\n\n}\n","import { setTestCases, getTestCases } from \"../visualUI/functions\";\nimport { generate } from \"../visualUI/code_generator\";\nimport { IVProgAssessment } from \"../assessment/ivprogAssessment\";\nimport { TestConsole } from \"./testConsole\";\nimport { parseLogs } from \"./../services/userLog\";\nimport { SemanticAnalyser } from \"../processor/semantic/semanticAnalyser\";\nimport { Maybe } from \"./maybe\";\n\nfunction parseActivityData (data) {\n let algorithm_in_ilm = null;\n if (data.split(\"\\n::algorithm::\")[1]) {\n algorithm_in_ilm = data.split(\"\\n::algorithm::\")[1].split(\"\\n::logs::\")[0];\n const logs = data.split(\"\\n::algorithm::\")[1].split(\"\\n::logs::\")[1];\n if (logs != null) {\n parseLogs(logs);\n }\n }\n let content;\n try {\n content = JSON.parse(data.split(\"\\n::algorithm::\")[0]);\n content[\"algorithm_in_ilm\"] = algorithm_in_ilm;\n } catch (e) {\n console.error(e);\n return Maybe.none();\n }\n return Maybe.some(content);\n}\n\nexport function prepareActivityToStudentHelper (ilm_cont) {\n const maybe_content = parseActivityData(ilm_cont);\n return maybe_content.map((content) => {\n const testCases = content.testcases;\n setTestCases(testCases);\n\n let prog_type = null;\n if (content.settings_programming_type) {\n prog_type = content.settings_programming_type[0].value;\n } else {\n prog_type = \"visual\";\n }\n\n return {\n settingsProgrammingType: prog_type,\n settingsDataTypes: content.settings_data_types,\n settingsCommands: content.settings_commands,\n settingsFunctions: content.settings_functions,\n algorithmInIlm: content.algorithm_in_ilm,\n settingsFilter: content.settings_filter,\n };\n });\n}\n\nfunction compareArray (a, b) {\n for (let i = 0; i < a.length; ++i) {\n const elementA = a[i];\n const elementB = b[i];\n if (elementA != elementB) {\n return false;\n }\n }\n return true;\n}\n\nfunction compareTestcases (original, student) {\n if (original.length != student.length) {\n return false;\n }\n for (let i = 0; i < original.length; ++i) {\n const elementO = original[i];\n const elementS = student[i];\n if (!compareArray(elementO.input, elementS.input)) {\n return false;\n }\n if (!compareArray(elementO.output, elementS.output)) {\n return false;\n }\n }\n return true;\n}\n\nexport function autoEval (originalData, callback) {\n const code = generate();\n //console.debug(code);\n const original = parseActivityData(originalData).getOrElse(undefined);\n if (original == null) {\n alert(\"iAssign did not provide the original activity data!\");\n return callback(null);\n }\n if (code == null) {\n return callback(-1); // @FeedbackConvention Casos de teste vazios\n } else {\n if (!compareTestcases(original.testcases, getTestCases())) {\n return callback(-2); // @FeedbackConvention Casos de teste alterados pelo aluno\n }\n try {\n const ast_code = SemanticAnalyser.analyseFromSource(code);\n const con = new TestConsole([]);\n const autoAssessment = new IVProgAssessment(\n ast_code,\n original.testcases,\n con\n );\n autoAssessment\n .runTest()\n .then((grade) => callback(grade))\n .catch((err) => {\n console.log(err);\n callback(-5); // @FeedbackConvention Falha na execução\n });\n } catch (e) {\n console.error(e);\n callback(-5);\n }\n }\n}\n","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 () {\n const promise = new Promise( (resolve, reject) => {\n if(this.index < this.inputList.length) { \n resolve(this.inputList[this.index]);\n this.index++;\n } else {\n reject(new Error(LocalizedStrings.getError(\"exceeded_input_request\")));\n }\n });\n return promise\n }\n}","import { Input } from './../io/input';\nimport { LocalizedStrings } from '../services/localizedStringsService';\n\nexport class InputAssessment extends Input {\n\n constructor (input_list) {\n super();\n this.index = 0;\n this.input_list = input_list.map((val) => {\n return {\"value\": val, \"read\": false};\n });\n }\n\n requestInput () {\n const promise = new Promise( (resolve, reject) => {\n if(this.index < this.input_list.length) {\n const input = this.input_list[this.index];\n input.read = true;\n this.index += 1;\n resolve(input.value);\n } else {\n reject(new Error(LocalizedStrings.getError(\"exceeded_input_request\")));\n }\n });\n return promise\n }\n\n isInputAvailable () {\n return this.index < this.input_list.length;\n }\n}","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Maybe = void 0;\n/**\n*\n* Maybe Monad\n* @Source: https://codewithstyle.info/advanced-functional-programming-in-typescript-maybe-monad/\n* @Modified by: @lucascalion - 28/08/2019\n*\n**/\nclass Maybe {\n constructor(value) {\n this.value = value;\n }\n static some(value) {\n if (!value) {\n throw Error(\"Provided value must not be empty\");\n }\n return new Maybe(value);\n }\n static none() {\n return new Maybe(null);\n }\n static fromValue(value) {\n return value ? Maybe.some(value) : Maybe.none();\n }\n getOrElse(defaultValue) {\n return this.value === null ? defaultValue : this.value;\n }\n map(f) {\n if (this.value === null) {\n return Maybe.none();\n }\n else {\n return Maybe.fromValue(f(this.value));\n }\n }\n}\nexports.Maybe = Maybe;\n","import { Output } from './../io/output';\n\nexport class OutputTest extends Output {\n\n constructor () {\n super();\n this.list = [];\n this.currentLine = null;\n }\n\n write (text, newLine = false) {\n if (this.currentLine == null) {\n this.currentLine = this.list.push('') - 1;\n }\n\n this.list[this.currentLine] += text;\n if (newLine) {\n this.currentLine = null;\n }\n }\n\n sendOutput (text) {\n let output = '' + text;\n if (output.indexOf('\\n') !== -1) {\n const outputList = output.split('\\n');\n let last = outputList.pop();\n outputList.forEach( t => {\n t = t.replace(/\\t/g, '&#x0020;&#x0020;');\n t = t.replace(/\\s/g, \"&#x0020;\");\n if (t.length == 0)\n this.currentLine = null;\n else\n this.write(t, true);\n });\n last = last.replace(/\\t/g, '&#x0020;&#x0020;');\n last = last.replace(/\\s/g, \"&#x0020;\");\n if (last.length != 0)\n this.write(last);\n } else {\n output = output.replace(/\\t/g, '&#x0020;&#x0020;');\n output = output.replace(/\\s/g, \"&#x0020;\");\n this.write(output);\n }\n }\n}\n","/**\n * Author: @jhchen - https://github.com/jhchen\n * Modified by: @lucascalion - 23/07/2019\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nconst DIFF_DELETE = -1;\nconst DIFF_INSERT = 1;\nconst DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int|Object} [cursor_pos] Edit position in text1 or object with more info\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos, _fix_unicode) {\n // Check for equality\n if (text1 === text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n if (cursor_pos != null) {\n const editdiff = find_cursor_edit_diff(text1, text2, cursor_pos);\n if (editdiff) {\n return editdiff;\n }\n }\n\n // Trim off common prefix (speedup).\n let commonlength = diff_commonPrefix(text1, text2);\n const commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n const commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n const diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs, _fix_unicode);\n return diffs;\n}\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n let diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n const longtext = text1.length > text2.length ? text1 : text2;\n const shorttext = text1.length > text2.length ? text2 : text1;\n const i = longtext.indexOf(shorttext);\n if (i !== -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [\n [DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]\n ];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length === 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n}\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n const text1_length = text1.length;\n const text2_length = text2.length;\n const max_d = Math.ceil((text1_length + text2_length) / 2);\n const v_offset = max_d;\n const v_length = 2 * max_d;\n const v1 = new Array(v_length);\n const v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n const delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n const front = (delta % 2 !== 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n let k1start = 0;\n let k1end = 0;\n let k2start = 0;\n let k2end = 0;\n for (let d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (let k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n const k1_offset = v_offset + k1;\n let x1;\n if (k1 === -d || (k1 !== d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n let y1 = x1 - k1;\n while (\n x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) === text2.charAt(y1)\n ) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n const k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] !== -1) {\n // Mirror x2 onto top-left coordinate system.\n const x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detfrontected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (let k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n const k2_offset = v_offset + k2;\n let x2;\n if (k2 === -d || (k2 !== d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n let y2 = x2 - k2;\n while (\n x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) === text2.charAt(text2_length - y2 - 1)\n ) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n const k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] !== -1) {\n const x1 = v1[k1_offset];\n const y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n}\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n const text1a = text1.substring(0, x);\n const text2a = text2.substring(0, y);\n const text1b = text1.substring(x);\n const text2b = text2.substring(y);\n\n // Compute both diffs serially.\n const diffs = diff_main(text1a, text2a);\n const diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n}\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) !== text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n let pointermin = 0;\n let pointermax = Math.min(text1.length, text2.length);\n let pointermid = pointermax;\n let pointerstart = 0;\n while (pointermin < pointermid) {\n if (\n text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)\n ) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n\n if (is_surrogate_pair_start(text1.charCodeAt(pointermid - 1))) {\n pointermid--;\n }\n\n return pointermid;\n}\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.slice(-1) !== text2.slice(-1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n let pointermin = 0;\n let pointermax = Math.min(text1.length, text2.length);\n let pointermid = pointermax;\n let pointerend = 0;\n while (pointermin < pointermid) {\n if (\n text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)\n ) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n\n if (is_surrogate_pair_end(text1.charCodeAt(text1.length - pointermid))) {\n pointermid--;\n }\n\n return pointermid;\n}\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n const longtext = text1.length > text2.length ? text1 : text2;\n const shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.<string>} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n const seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n let j = -1;\n let best_common = '';\n let best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) !== -1) {\n const prefixLength = diff_commonPrefix(\n longtext.substring(i), shorttext.substring(j));\n const suffixLength = diff_commonSuffix(\n longtext.substring(0, i), shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(\n j - suffixLength, j) + shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [\n best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common\n ];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n const hm1 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n const hm2 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 2));\n let hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n let text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n const mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n}\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n * @param {boolean} fix_unicode Whether to normalize to a unicode-correct diff\n */\nfunction diff_cleanupMerge(diffs, fix_unicode) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n let pointer = 0;\n let count_delete = 0;\n let count_insert = 0;\n let text_delete = '';\n let text_insert = '';\n let commonlength;\n let previous_equality;\n while (pointer < diffs.length) {\n if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\n diffs.splice(pointer, 1);\n continue;\n }\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n previous_equality = pointer - count_insert - count_delete - 1;\n if (fix_unicode) {\n // prevent splitting of unicode surrogate pairs. when fix_unicode is true,\n // we assume that the old and new text in the diff are complete and correct\n // unicode-encoded JS strings, but the tuple boundaries may fall between\n // surrogate pairs. we fix this by shaving off stray surrogates from the end\n // of the previous equality and the beginning of this equality. this may create\n // empty equalities or a common prefix or suffix. for example, if AB and AC are\n // emojis, `[[0, 'A'], [-1, 'BA'], [0, 'C']]` would turn into deleting 'ABAC' and\n // inserting 'AC', and then the common suffix 'AC' will be eliminated. in this\n // particular case, both equalities go away, we absorb any previous inequalities,\n // and we keep scanning for the next equality before rewriting the tuples.\n if (previous_equality >= 0 && ends_with_pair_start(diffs[previous_equality][1])) {\n const stray = diffs[previous_equality][1].slice(-1);\n diffs[previous_equality][1] = diffs[previous_equality][1].slice(0, -1);\n text_delete = stray + text_delete;\n text_insert = stray + text_insert;\n if (!diffs[previous_equality][1]) {\n // emptied out previous equality, so delete it and include previous delete/insert\n diffs.splice(previous_equality, 1);\n pointer--;\n var k = previous_equality - 1;\n if (diffs[k] && diffs[k][0] === DIFF_INSERT) {\n count_insert++;\n text_insert = diffs[k][1] + text_insert;\n k--;\n }\n if (diffs[k] && diffs[k][0] === DIFF_DELETE) {\n count_delete++;\n text_delete = diffs[k][1] + text_delete;\n k--;\n }\n previous_equality = k;\n }\n }\n if (starts_with_pair_end(diffs[pointer][1])) {\n const stray = diffs[pointer][1].charAt(0);\n diffs[pointer][1] = diffs[pointer][1].slice(1);\n text_delete += stray;\n text_insert += stray;\n }\n }\n if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\n // for empty equality not at end, wait for next equality\n diffs.splice(pointer, 1);\n break;\n }\n if (text_delete.length > 0 || text_insert.length > 0) {\n // note that diff_commonPrefix and diff_commonSuffix are unicode-aware\n if (text_delete.length > 0 && text_insert.length > 0) {\n // Factor out any common prefixes.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if (previous_equality >= 0) {\n diffs[previous_equality][1] += text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL, text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixes.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] =\n text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length - commonlength);\n text_delete = text_delete.substring(0, text_delete.length - commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n const n = count_insert + count_delete;\n if (text_delete.length === 0 && text_insert.length === 0) {\n diffs.splice(pointer - n, n);\n pointer = pointer - n;\n } else if (text_delete.length === 0) {\n diffs.splice(pointer - n, n, [DIFF_INSERT, text_insert]);\n pointer = pointer - n + 1;\n } else if (text_insert.length === 0) {\n diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete]);\n pointer = pointer - n + 1;\n } else {\n diffs.splice(pointer - n, n, [DIFF_DELETE, text_delete], [DIFF_INSERT, text_insert]);\n pointer = pointer - n + 2;\n }\n }\n if (pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n let changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] === DIFF_EQUAL &&\n diffs[pointer + 1][0] === DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) === diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs, fix_unicode);\n }\n}\n\nfunction is_surrogate_pair_start(charCode) {\n return charCode >= 0xD800 && charCode <= 0xDBFF;\n}\n\nfunction is_surrogate_pair_end(charCode) {\n return charCode >= 0xDC00 && charCode <= 0xDFFF;\n}\n\nfunction starts_with_pair_end(str) {\n return is_surrogate_pair_end(str.charCodeAt(0));\n}\n\nfunction ends_with_pair_start(str) {\n return is_surrogate_pair_start(str.charCodeAt(str.length - 1));\n}\n\nfunction remove_empty_tuples(tuples) {\n const ret = [];\n for (let i = 0; i < tuples.length; i++) {\n if (tuples[i][1].length > 0) {\n ret.push(tuples[i]);\n }\n }\n return ret;\n}\n\nfunction make_edit_splice(before, oldMiddle, newMiddle, after) {\n if (ends_with_pair_start(before) || starts_with_pair_end(after)) {\n return null;\n }\n return remove_empty_tuples([\n [DIFF_EQUAL, before],\n [DIFF_DELETE, oldMiddle],\n [DIFF_INSERT, newMiddle],\n [DIFF_EQUAL, after]\n ]);\n}\n\nfunction find_cursor_edit_diff(oldText, newText, cursor_pos) {\n // note: this runs after equality check has ruled out exact equality\n const oldRange = typeof cursor_pos === 'number' ?\n { index: cursor_pos, length: 0 } : cursor_pos.oldRange;\n const newRange = typeof cursor_pos === 'number' ?\n null : cursor_pos.newRange;\n // take into account the old and new selection to generate the best diff\n // possible for a text edit. for example, a text change from \"xxx\" to \"xx\"\n // could be a delete or forwards-delete of any one of the x's, or the\n // result of selecting two of the x's and typing \"x\".\n const oldLength = oldText.length;\n const newLength = newText.length;\n if (oldRange.length === 0 && (newRange === null || newRange.length === 0)) {\n // see if we have an insert or delete before or after cursor\n const oldCursor = oldRange.index;\n const oldBefore = oldText.slice(0, oldCursor);\n const oldAfter = oldText.slice(oldCursor);\n const maybeNewCursor = newRange ? newRange.index : null;\n editBefore: {\n // is this an insert or delete right before oldCursor?\n const newCursor = oldCursor + newLength - oldLength;\n if (maybeNewCursor !== null && maybeNewCursor !== newCursor) {\n break editBefore;\n }\n if (newCursor < 0 || newCursor > newLength) {\n break editBefore;\n }\n const newBefore = newText.slice(0, newCursor);\n const newAfter = newText.slice(newCursor);\n if (newAfter !== oldAfter) {\n break editBefore;\n }\n const prefixLength = Math.min(oldCursor, newCursor);\n const oldPrefix = oldBefore.slice(0, prefixLength);\n const newPrefix = newBefore.slice(0, prefixLength);\n if (oldPrefix !== newPrefix) {\n break editBefore;\n }\n const oldMiddle = oldBefore.slice(prefixLength);\n const newMiddle = newBefore.slice(prefixLength);\n return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldAfter);\n }\n editAfter: {\n // is this an insert or delete right after oldCursor?\n if (maybeNewCursor !== null && maybeNewCursor !== oldCursor) {\n break editAfter;\n }\n const cursor = oldCursor;\n const newBefore = newText.slice(0, cursor);\n const newAfter = newText.slice(cursor);\n if (newBefore !== oldBefore) {\n break editAfter;\n }\n const suffixLength = Math.min(oldLength - cursor, newLength - cursor);\n const oldSuffix = oldAfter.slice(oldAfter.length - suffixLength);\n const newSuffix = newAfter.slice(newAfter.length - suffixLength);\n if (oldSuffix !== newSuffix) {\n break editAfter;\n }\n const oldMiddle = oldAfter.slice(0, oldAfter.length - suffixLength);\n const newMiddle = newAfter.slice(0, newAfter.length - suffixLength);\n return make_edit_splice(oldBefore, oldMiddle, newMiddle, oldSuffix);\n }\n }\n if (oldRange.length > 0 && newRange && newRange.length === 0) {\n replaceRange: {\n // see if diff could be a splice of the old selection range\n const oldPrefix = oldText.slice(0, oldRange.index);\n const oldSuffix = oldText.slice(oldRange.index + oldRange.length);\n const prefixLength = oldPrefix.length;\n const suffixLength = oldSuffix.length;\n if (newLength < prefixLength + suffixLength) {\n break replaceRange;\n }\n const newPrefix = newText.slice(0, prefixLength);\n const newSuffix = newText.slice(newLength - suffixLength);\n if (oldPrefix !== newPrefix || oldSuffix !== newSuffix) {\n break replaceRange;\n }\n const oldMiddle = oldText.slice(prefixLength, oldLength - suffixLength);\n const newMiddle = newText.slice(prefixLength, newLength - suffixLength);\n return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldSuffix);\n }\n }\n\n return null;\n}\n\nfunction diff(text1, text2, cursor_pos) {\n // only pass fix_unicode=true at the top level, not when diff_main is\n // recursively invoked\n return diff_main(text1, text2, cursor_pos, true);\n}\n\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nexport default diff;\n","import { DOMConsole } from \"../io/domConsole\";\nimport { getInstance } from \"../services/localizedStringsService\";\n\nconst LocalizedStrings = getInstance();\n\nexport class TestConsole {\n\n\n constructor (inputList) {\n this.index = 0;\n this.inputList = inputList;\n this.list = [];\n this.currentLine = null;\n }\n\n writeRawHTML (text) {\n this._appendTextLn(text);\n }\n write (text, newLine = false) {\n this._appendText(text, DOMConsole.USER, newLine);\n }\n\n info (text) {\n this._appendTextLn(text, DOMConsole.INFO);\n }\n\n err (text) {\n this._appendTextLn(text, DOMConsole.ERR);\n }\n\n _appendText (text, _type, newLine = false) {\n if (this.currentLine == null) {\n this.currentLine = this.list.push('') - 1;\n }\n\n this.list[this.currentLine] += text;\n if (newLine) {\n this.currentLine = null;\n }\n }\n\n _appendTextLn (text) {\n this.list.push(text);\n this.currentLine = null;\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 requestInput () {\n const promise = new Promise( (resolve, reject) => {\n if(this.index < this.inputList.length) {\n resolve(this.inputList[this.index]);\n this.index++;\n } else {\n reject(new Error(LocalizedStrings.getError(\"exceeded_input_request\")));\n }\n });\n return promise\n }\n\n sendOutput (text) {\n let output = '' + text;\n if (output.indexOf('\\n') !== -1) {\n const outputList = output.split('\\n');\n let last = outputList.pop();\n outputList.forEach( t => {\n t = t.replace(/\\t/g, '&#x0020;&#x0020;');\n t = t.replace(/\\s/g, \"&#x0020;\");\n if (t.length == 0)\n this.currentLine = null;\n else\n this.write(t, true);\n });\n last = last.replace(/\\t/g, '&#x0020;&#x0020;');\n last = last.replace(/\\s/g, \"&#x0020;\");\n if (last.length != 0)\n this.write(last);\n } else {\n output = output.replace(/\\t/g, '&#x0020;&#x0020;');\n output = output.replace(/\\s/g, \"&#x0020;\");\n this.write(output);\n }\n }\n}\n","import { LanguageService } from \"./../services/languageService\";\nimport { LocalizedStrings } from \"./../services/localizedStringsService\";\nimport { Operators } from \"./../ast/operators\";\n\n/** \n * source: https://pawelgrzybek.com/page-scroll-in-vanilla-javascript/ \n * \n*/\nexport function scrollIt (destination, duration = 200, easing = 'linear', callback = null) {\n\n const easings = {\n linear(t) {\n return t;\n },\n easeInQuad(t) {\n return t * t;\n },\n easeOutQuad(t) {\n return t * (2 - t);\n },\n easeInOutQuad(t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n },\n easeInCubic(t) {\n return t * t * t;\n },\n easeOutCubic(t) {\n return (--t) * t * t + 1;\n },\n easeInOutCubic(t) {\n return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n },\n easeInQuart(t) {\n return t * t * t * t;\n },\n easeOutQuart(t) {\n return 1 - (--t) * t * t * t;\n },\n easeInOutQuart(t) {\n return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * (--t) * t * t * t;\n },\n easeInQuint(t) {\n return t * t * t * t * t;\n },\n easeOutQuint(t) {\n return 1 + (--t) * t * t * t * t;\n },\n easeInOutQuint(t) {\n return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * (--t) * t * t * t * t;\n }\n };\n\n const start = window.pageYOffset;\n const startTime = 'now' in window.performance ? performance.now() : new Date().getTime();\n\n const documentHeight = Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);\n const windowHeight = window.innerHeight || document.documentElement.clientHeight || document.getElementsByTagName('body')[0].clientHeight;\n const destinationOffset = typeof destination === 'number' ? destination : destination.offsetTop;\n const destinationOffsetToScroll = Math.round(documentHeight - destinationOffset < windowHeight ? documentHeight - windowHeight : destinationOffset);\n\n if ('requestAnimationFrame' in window === false) {\n window.scroll(0, destinationOffsetToScroll);\n if (callback) {\n callback();\n }\n return;\n }\n\n function scroll() {\n const now = 'now' in window.performance ? performance.now() : new Date().getTime();\n const time = Math.min(1, ((now - startTime) / duration));\n const timeFunction = easings[easing](time);\n window.scroll(0, Math.ceil((timeFunction * (destinationOffsetToScroll - start)) + start));\n\n if (window.pageYOffset === destinationOffsetToScroll) {\n if (callback) {\n callback();\n }\n return;\n }\n\n requestAnimationFrame(scroll);\n }\n\n scroll();\n}\n\n/**\n * \n * source: https://stackoverflow.com/a/16270434\n */\nexport function isElementInViewport (el) {\n const rect = el.getBoundingClientRect();\n\n return rect.bottom > 0 &&\n rect.right > 0 &&\n rect.left < (window.innerWidth || document.documentElement.clientWidth) &&\n rect.top < (window.innerHeight || document.documentElement.clientHeight);\n}\n\nlet cacheMainList = null;\nlet cacheOp = null;\n\nfunction fillCache () {\n if(cacheMainList == null) {\n cacheMainList = [];\n const mainList = [\"RK_PROGRAM\",\"RK_REAL\",\"RK_VOID\",\"RK_BOOLEAN\",\"RK_STRING\",\n \"RK_INTEGER\",\"RK_CHARACTER\",\"RK_SWITCH\",\"RK_CASE\",\"RK_DEFAULT\",\"RK_CONST\",\n \"RK_FUNCTION\",\"RK_RETURN\",\"RK_FOR\",\"RK_BREAK\",\"RK_DO\",\"RK_WHILE\",\"RK_IF\",\n \"RK_ELSE\",\"RK_FALSE\",\"RK_TRUE\"];\n const lexerClass = LanguageService.getCurrentLexer();\n const nullLexer = new lexerClass();\n for (let key = 0; key < mainList.length; ++key) {\n const word = mainList[key];\n const keyword = nullLexer.literalNames[lexerClass[word]];\n cacheMainList.push(keyword.substring(1, keyword.length-1));\n }\n }\n if(cacheOp == null) {\n cacheOp = []\n const logicOpList = [Operators.AND.value, Operators.OR.value, Operators.NOT.value];\n for (let op = 0; op < logicOpList.length; ++op) {\n const lOp = `logic_operator_${logicOpList[op]}`;\n cacheOp.push(LocalizedStrings.getUI(lOp))\n }\n }\n}\n\nexport function isKeyword (text) {\n fillCache();\n for (let key = 0; key < cacheMainList.length; ++key) {\n const keyword = cacheMainList[key];\n if(keyword == text) {\n return true;\n }\n }\n // not in main list, check op\n for (let op = 0; op < cacheOp.length; op++) {\n const lOp = cacheOp[op];\n if(lOp == text) {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidIdentifier (identifier_str) {\n const validRegex = /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(identifier_str);\n if(!validRegex) {\n return false;\n }\n\treturn !isKeyword(identifier_str);\n}\n\nexport function getCodeEditorModeConfig () {\n const blockList = [\"RK_SWITCH\", \"RK_PROGRAM\",\"RK_CASE\",\"RK_DEFAULT\",\"RK_FOR\",\"RK_FOR_ALT\",\n \"RK_FUNCTION\",\"RK_DO\",\"RK_WHILE\",\"RK_WHILE_ALT\",\"RK_IF\",\"RK_ELSE\"]\n const keywordsList = [\"RK_CONST\",\"RK_RETURN\",\"RK_BREAK\",\"RK_FOR_FROM\",\"RK_FOR_TO\",\"RK_FOR_PASS\",\"RK_DO_UNTIL\"];\n const typeList = [\"RK_REAL\",\"RK_VOID\",\"RK_BOOLEAN\",\"RK_STRING\",\"RK_INTEGER\",\"RK_CHARACTER\"];\n const atomList = [\"RK_FALSE\", \"RK_TRUE\"];\n\n const case_default = [];\n const blocks = [];\n const keywords = [];\n const types = [];\n const atoms = []\n let switchString = \"\";\n\n cacheMainList = [];\n const lexerClass = LanguageService.getCurrentLexer();\n const nullLexer = new lexerClass();\n blockList.forEach( v => {\n const keyword = nullLexer.literalNames[lexerClass[v]];\n const value = keyword.substring(1, keyword.length-1);\n cacheMainList.push(value);\n keywords.push(value);\n blocks.push(value);\n if(v == \"RK_SWITCH\") {\n switchString = value;\n } else if (v == \"RK_CASE\" || v == \"RK_DEFAULT\") {\n case_default.push(value);\n }\n });\n keywordsList.forEach( v => {\n const keyword = nullLexer.literalNames[lexerClass[v]];\n const value = keyword.substring(1, keyword.length-1);\n cacheMainList.push(value);\n keywords.push(value);\n });\n typeList.forEach(v => {\n const keyword = nullLexer.literalNames[lexerClass[v]];\n const value = keyword.substring(1, keyword.length-1);\n cacheMainList.push(value);\n types.push(value);\n })\n atomList.forEach( v => {\n const keyword = nullLexer.literalNames[lexerClass[v]];\n const value = keyword.substring(1, keyword.length-1);\n cacheMainList.push(value);\n atoms.push(value);\n })\n \n cacheOp = []\n const logicOpList = [Operators.AND.value, Operators.OR.value, Operators.NOT.value];\n for (let op = 0; op < logicOpList.length; ++op) {\n const lOp = `logic_operator_${logicOpList[op]}`;\n const value = LocalizedStrings.getUI(lOp);\n cacheOp.push(value)\n keywords.push(value);\n }\n return {\n case_default: case_default,\n atoms: atoms,\n keywords: keywords,\n switchString: switchString,\n types: types,\n blocks: blocks\n }\n}\n\n/**\n * Source: https://gist.github.com/andrei-m/982927\n * @param {string} a \n * @param {string} b \n */\nexport function levenshteinDistance (a, b) {\n if(a.length == 0) return b.length; \n if(b.length == 0) return a.length; \n\n const matrix = [];\n\n // increment along the first column of each row\n let i;\n for(i = 0; i <= b.length; i++){\n matrix[i] = [i];\n }\n\n // increment each column in the first row\n let j;\n for(j = 0; j <= a.length; j++){\n matrix[0][j] = j;\n }\n\n // Fill in the rest of the matrix\n for(i = 1; i <= b.length; i++){\n for(j = 1; j <= a.length; j++){\n if(b.charCodeAt(i-1) == a.charCodeAt(j-1)){\n matrix[i][j] = matrix[i-1][j-1];\n } else {\n matrix[i][j] = Math.min(matrix[i-1][j-1] + 1, // substitution\n Math.min(matrix[i][j-1] + 1, // insertion\n matrix[i-1][j] + 1)); // deletion\n }\n }\n }\n return matrix[b.length][a.length];\n}\n\nlet win = null\nexport function openAssessmentDetail (event) {\n event.preventDefault();\n const page_code = event.currentTarget.dataset.page;\n if(win != null) {\n win.close()\n }\n win = window.open(\"\", \"DetailWindow\", \"width=550,height=600\");\n win.document.open();\n win.document.write(page_code);\n win.document.close();\n}\n\nexport function range (size, startAt = 0) {\n return [...Array(size).keys()].map(i => i + startAt);\n}\n\n/**\n * \n * @param {number} ms \n */\nexport async function sleep (ms) {\n return new Promise( (res, _) => setTimeout(res, ms));\n }\n","import * as GlobalsManagement from './globals';\nimport * as FunctionsManagement from './functions';\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\n\tif (settingsFilter && settingsFilter[0]) {\n blockAllEditingOptions();\n } \n}","/* eslint-disable @typescript-eslint/no-use-before-define */\n/* globals $*/\nimport { Types } from \"./types\";\nimport * as Models from \"./ivprog_elements\";\nimport { LocalizedStrings } from \"./../services/localizedStringsService\";\nimport * as Utils from \"./utils\";\n\nexport function generate () {\n $(\".ivprog_visual_panel\")\n .find(\".error_icon\")\n .remove();\n\n let code = LocalizedStrings.getUI(\"program\") + \" { \";\n\n code += globalsCode();\n\n code += \"\\n\";\n\n let has_error = false;\n\n for (let i = 0; i < window.program_obj.functions.length; i++) {\n const n_code = functionsCode(window.program_obj.functions[i]);\n if (n_code == null) {\n has_error = true;\n }\n code += n_code;\n code += \"\\n\";\n }\n\n code += \"\\n}\";\n\n if (has_error) {\n return null;\n } else {\n return code;\n }\n}\n\nfunction functionsCode (function_obj) {\n let ret = \"\\n\\t\" + LocalizedStrings.getUI(\"function\") + \" \";\n\n const has_error = false;\n\n switch (function_obj.return_type) {\n case Types.INTEGER:\n ret += LocalizedStrings.getUI(\"type_integer\");\n break;\n case Types.REAL:\n ret += LocalizedStrings.getUI(\"type_real\");\n break;\n case Types.TEXT:\n ret += LocalizedStrings.getUI(\"type_text\");\n break;\n case Types.BOOLEAN:\n ret += LocalizedStrings.getUI(\"type_boolean\");\n break;\n case Types.CHAR:\n ret += LocalizedStrings.getUI(\"type_char\");\n break;\n case Types.VOID:\n ret += LocalizedStrings.getUI(\"type_void\");\n break;\n }\n ret += \" \";\n\n if (function_obj.return_dimensions == 1) {\n ret += \"[] \";\n } else if (function_obj.return_dimensions == 2) {\n ret += \"[][] \";\n }\n if (function_obj.is_main) {\n ret += LocalizedStrings.getUI(\"start\");\n } else {\n ret += function_obj.name;\n }\n ret += \" ( \";\n for (let j = 0; j < function_obj.parameters_list.length; j++) {\n ret += parametersCode(function_obj.parameters_list[j]);\n if (j + 1 < function_obj.parameters_list.length) {\n ret += \", \";\n }\n }\n\n ret += \" ) {\";\n\n for (let j = 0; j < function_obj.variables_list.length; j++) {\n ret += variablesCode(function_obj.variables_list[j]);\n }\n\n for (let j = 0; j < function_obj.commands.length; j++) {\n //try {\n ret += commandsCode(function_obj.commands[j]);\n /*} catch (err) {\n\n has_error = true;\n\n console.error(err.message);\n\n var todos = $('body').find('.command_container');\n\n for (var i = 0; i < todos.length; i++) {\n if ($(todos[i]).data('command') == function_obj.commands[j]) {\n $( todos[i] ).prepend( ' <i class=\"ui icon red exclamation triangle error_icon\"></i> ' );\n break;\n }\n }\n\n }*/\n }\n\n ret += \"\\n\\t}\";\n\n if (has_error) {\n return null;\n } else {\n return ret;\n }\n}\n\nfunction commandsCode (command_obj, indentation = 2) {\n switch (command_obj.type) {\n case Models.COMMAND_TYPES.break:\n return breaksCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.comment:\n return commentsCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.reader:\n return readersCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.writer:\n return writersCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.functioncall:\n return functioncallsCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.attribution:\n return attributionsCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.whiletrue:\n return whiletruesCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.dowhiletrue:\n return doWhilesCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.iftrue:\n return iftruesCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.repeatNtimes:\n return repeatNtimesCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.switch:\n return switchsCode(command_obj, indentation);\n\n case Models.COMMAND_TYPES.return:\n return returnsCode(command_obj, indentation);\n }\n}\n\nfunction returnsCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_return\");\n\n if (command_obj.variable_value_menu) {\n try {\n ret += \" \" + elementExpressionCode(command_obj.variable_value_menu);\n //ret += ' ' + variableValueMenuCode(command_obj.variable_value_menu, true);\n } catch (err) {\n //Empty block\n }\n }\n\n return ret;\n}\n\nfunction breaksCode (_command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_break\");\n\n return ret;\n}\n\nfunction switchsCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_code_switch\") + \" ( \";\n\n ret += variableValueMenuCode(command_obj.variable);\n\n ret += \" ) { \";\n\n if (command_obj.cases) {\n for (let i = 0; i < command_obj.cases.length; i++) {\n ret += switchcasesCode(command_obj.cases[i], indentation + 1);\n }\n }\n\n ret += \"\\n\";\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n ret += \"} \";\n\n return ret;\n}\n\nfunction switchcasesCode (switchcase, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_code_case\") + \" \";\n ret += variableValueMenuCode(switchcase.variable_value_menu);\n ret += \" :\";\n\n if (switchcase.commands_block) {\n for (let i = 0; i < switchcase.commands_block.length; i++) {\n ret += commandsCode(switchcase.commands_block[i], indentation + 1);\n }\n }\n\n return ret;\n}\n\nfunction repeatNtimesCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_for\") + \" \";\n\n if (command_obj.var_attribution) {\n ret += variableValueMenuCode(command_obj.var_attribution);\n ret += ` ${LocalizedStrings.getUI(\"text_code_for_from\")} `;\n ret += variableValueMenuCode(command_obj.expression1);\n }\n\n if (command_obj.expression2) {\n ret += ` ${LocalizedStrings.getUI(\"text_code_for_to\")} `;\n ret += variableValueMenuCode(command_obj.expression2);\n }\n\n if (command_obj.expression3) {\n ret += ` ${LocalizedStrings.getUI(\"text_code_for_pass\")} `;\n switch (command_obj.expression3.itens[1]) {\n case Models.ARITHMETIC_TYPES.plus:\n ret += \" +\";\n break;\n case Models.ARITHMETIC_TYPES.minus:\n ret += \" -\";\n break;\n }\n ret += variableValueMenuCode(command_obj.expression3.itens[2]);\n }\n\n /*if (command_obj.var_incrementation) {\n ret += variableValueMenuCode(command_obj.var_incrementation);\n ret += ' <- ';\n ret += variableValueMenuCode(command_obj.expression3.itens[0]);\n\n switch (command_obj.expression3.itens[1]) {\n case Models.ARITHMETIC_TYPES.plus:\n ret += ' + ';\n break;\n case Models.ARITHMETIC_TYPES.minus:\n ret += ' - ';\n break;\n case Models.ARITHMETIC_TYPES.multiplication:\n ret += ' * ';\n break;\n case Models.ARITHMETIC_TYPES.division:\n ret += ' / ';\n break;\n case Models.ARITHMETIC_TYPES.module:\n ret += ' % ';\n break;\n }\n\n ret += variableValueMenuCode(command_obj.expression3.itens[2]);\n }*/\n\n ret += \" { \";\n\n if (command_obj.commands_block) {\n for (let i = 0; i < command_obj.commands_block.length; i++) {\n ret += commandsCode(command_obj.commands_block[i], indentation + 1);\n }\n }\n\n ret += \"\\n\";\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += \"}\";\n return ret;\n}\n\nfunction iftruesCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_if\");\n\n if (!command_obj.expression) {\n Utils.renderErrorMessage(\n command_obj.expression.dom_object,\n LocalizedStrings.getUI(\"inform_valid_expression\")\n );\n } else {\n ret += \" ( \";\n ret += elementExpressionCode(command_obj.expression);\n ret += \" ) \";\n }\n\n /*switch (command_obj.expression.expression.type) {\n case Models.EXPRESSION_TYPES.exp_logic:\n ret += logicExpressionCode(command_obj.expression.expression);\n break;\n case Models.EXPRESSION_TYPES.exp_arithmetic:\n ret += arithmeticExpressionCode(command_obj.expression.expression);\n break;\n }*/\n\n ret += \" { \";\n\n if (command_obj.commands_block) {\n for (let i = 0; i < command_obj.commands_block.length; i++) {\n ret += commandsCode(command_obj.commands_block[i], indentation + 1);\n }\n }\n\n ret += \"\\n\";\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += \"} \" + LocalizedStrings.getUI(\"text_else\") + \" {\";\n\n if (command_obj.commands_else) {\n for (let i = 0; i < command_obj.commands_else.length; i++) {\n ret += commandsCode(command_obj.commands_else[i], indentation + 1);\n }\n }\n\n ret += \"\\n\";\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += \"}\";\n\n return ret;\n}\n\nfunction doWhilesCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_code_do\") + \" { \";\n\n if (command_obj.commands_block) {\n for (let i = 0; i < command_obj.commands_block.length; i++) {\n ret += commandsCode(command_obj.commands_block[i], indentation + 1);\n }\n }\n\n ret += \"\\n\";\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += \"} \" + LocalizedStrings.getUI(\"text_code_do_until\");\n\n if (!command_obj.expression) {\n Utils.renderErrorMessage(\n command_obj.expression.dom_object,\n LocalizedStrings.getUI(\"inform_valid_expression\")\n );\n }\n\n /*switch (command_obj.expression.expression.type) {\n case Models.EXPRESSION_TYPES.exp_logic:\n ret += logicExpressionCode(command_obj.expression.expression);\n break;\n case Models.EXPRESSION_TYPES.exp_arithmetic:\n ret += arithmeticExpressionCode(command_obj.expression.expression);\n break;\n }*/\n\n if (command_obj.expression) {\n ret += \" ( \";\n ret += elementExpressionCode(command_obj.expression);\n ret += \" ) \";\n }\n\n return ret;\n}\n\nfunction whiletruesCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_code_while\");\n\n if (!command_obj.expression) {\n Utils.renderErrorMessage(\n command_obj.expression.dom_object,\n LocalizedStrings.getUI(\"inform_valid_expression\")\n );\n }\n\n /*switch (command_obj.expression.expression.type) {\n case Models.EXPRESSION_TYPES.exp_logic:\n ret += logicExpressionCode(command_obj.expression.expression);\n break;\n case Models.EXPRESSION_TYPES.exp_arithmetic:\n ret += arithmeticExpressionCode(command_obj.expression.expression);\n break;\n }*/\n if (command_obj.expression) {\n ret += \" ( \";\n ret += elementExpressionCode(command_obj.expression);\n ret += \" ) \";\n }\n\n ret += \" { \";\n\n if (command_obj.commands_block) {\n for (let i = 0; i < command_obj.commands_block.length; i++) {\n ret += commandsCode(command_obj.commands_block[i], indentation + 1);\n }\n }\n\n ret += \"\\n\";\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += \"}\";\n\n return ret;\n}\n\nfunction logicExpressionCode (expression) {\n let ret = \" ( \";\n\n if (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n ret += logicExpressionCode(expression.first_operand);\n } else if (\n expression.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic\n ) {\n ret += arithmeticExpressionCode(expression.first_operand);\n } else {\n ret += variableValueMenuCode(expression.first_operand);\n }\n\n if (expression.operator) {\n switch (expression.operator) {\n case Models.LOGIC_COMPARISON.equals_to:\n ret += \" == \";\n break;\n case Models.LOGIC_COMPARISON.not_equals_to:\n ret += \" != \";\n break;\n case Models.LOGIC_COMPARISON.and:\n ret += \" && \";\n break;\n case Models.LOGIC_COMPARISON.or:\n ret += \" || \";\n break;\n }\n\n if (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n ret += logicExpressionCode(expression.second_operand);\n } else if (\n expression.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic\n ) {\n ret += arithmeticExpressionCode(expression.second_operand);\n } else {\n ret += variableValueMenuCode(expression.second_operand);\n }\n }\n\n ret += \" ) \";\n\n return ret;\n}\n\nfunction arithmeticExpressionCode (expression) {\n let ret = \" ( \";\n\n if (expression.first_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n ret += logicExpressionCode(expression.first_operand);\n } else if (\n expression.first_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic\n ) {\n ret += arithmeticExpressionCode(expression.first_operand);\n } else {\n ret += variableValueMenuCode(expression.first_operand);\n }\n\n switch (expression.operator) {\n case Models.ARITHMETIC_COMPARISON.greater_than:\n ret += \" > \";\n break;\n case Models.ARITHMETIC_COMPARISON.less_than:\n ret += \" < \";\n break;\n case Models.ARITHMETIC_COMPARISON.equals_to:\n ret += \" == \";\n break;\n case Models.ARITHMETIC_COMPARISON.not_equals_to:\n ret += \" != \";\n break;\n case Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to:\n ret += \" >= \";\n break;\n case Models.ARITHMETIC_COMPARISON.less_than_or_equals_to:\n ret += \" <= \";\n break;\n }\n\n if (expression.second_operand.type == Models.EXPRESSION_TYPES.exp_logic) {\n ret += logicExpressionCode(expression.second_operand);\n } else if (\n expression.second_operand.type == Models.EXPRESSION_TYPES.exp_arithmetic\n ) {\n ret += arithmeticExpressionCode(expression.second_operand);\n } else {\n ret += variableValueMenuCode(expression.second_operand);\n }\n\n ret += \" ) \";\n\n return ret;\n}\n\nfunction attributionsCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += variableValueMenuCode(command_obj.variable) + \" <- \";\n\n /*for (var i = 0; i < command_obj.expression.length; i++) {\n ret += elementExpressionCode(command_obj.expression[i]);\n }*/\n ret += elementExpressionCode(command_obj.expression);\n\n return ret;\n}\n\nfunction elementExpressionCode (expression_obj) {\n let ret = \"\";\n\n for (let i = 0; i < expression_obj.length; i++) {\n if (expression_obj[i].type) {\n ret += variableValueMenuCode(expression_obj[i]);\n } else if (expression_obj[i].type_op) {\n switch (expression_obj[i].item) {\n case Models.ARITHMETIC_TYPES.plus:\n ret += \" + \";\n break;\n case Models.ARITHMETIC_TYPES.minus:\n ret += \" - \";\n break;\n case Models.ARITHMETIC_TYPES.multiplication:\n ret += \" * \";\n break;\n case Models.ARITHMETIC_TYPES.division:\n ret += \" / \";\n break;\n case Models.ARITHMETIC_TYPES.module:\n ret += \" % \";\n break;\n\n case Models.LOGIC_COMPARISON.equals_to:\n ret += \" == \";\n break;\n\n case Models.LOGIC_COMPARISON.not_equals_to:\n ret += \" != \";\n break;\n\n case Models.LOGIC_COMPARISON.and:\n ret += \" \" + LocalizedStrings.getUI(\"logic_operator_and\") + \" \";\n break;\n\n case Models.LOGIC_COMPARISON.or:\n ret += \" \" + LocalizedStrings.getUI(\"logic_operator_or\") + \" \";\n break;\n\n case Models.LOGIC_COMPARISON.not:\n ret += \" \" + LocalizedStrings.getUI(\"logic_operator_not\") + \" \";\n break;\n\n case Models.ARITHMETIC_COMPARISON.greater_than:\n ret += \" > \";\n break;\n\n case Models.ARITHMETIC_COMPARISON.less_than:\n ret += \" < \";\n break;\n\n case Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to:\n ret += \" >= \";\n break;\n\n case Models.ARITHMETIC_COMPARISON.less_than_or_equals_to:\n ret += \" <= \";\n break;\n case Models.EXPRESSION_TYPES.write_sep:\n ret += \", \";\n break;\n }\n } else {\n ret += \" \" + expression_obj[i] + \" \";\n }\n }\n\n return ret;\n}\n\nfunction functioncallsCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += variableValueMenuCode(command_obj.function_called);\n\n return ret;\n}\n\nfunction readersCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_command_read\") + \" ( \";\n\n ret += variableValueMenuCode(command_obj.variable_value_menu);\n\n ret += \" ) \";\n return ret;\n}\n\nfunction variableValueMenuCode (variable_obj, is_return = false) {\n let ret = \"\";\n try {\n if (variable_obj.function_called) {\n if (variable_obj.function_called.name) {\n ret += variable_obj.function_called.name + \" ( \";\n } else {\n ret +=\n LocalizedStrings.translateInternalFunction(\n variable_obj.function_called.identifier,\n variable_obj.function_called.category\n ) + \" ( \";\n }\n\n if (variable_obj.parameters_list) {\n for (let i = 0; i < variable_obj.parameters_list.length; i++) {\n ret += variableValueMenuCode(variable_obj.parameters_list[i]);\n if (i + 1 < variable_obj.parameters_list.length) {\n ret += \", \";\n }\n }\n }\n\n ret += \" )\";\n } else if (variable_obj.content.type) {\n ret += variable_obj.content.name;\n\n if (\n variable_obj.content.dimensions == 1 &&\n variable_obj.dimensions != 1\n ) {\n ret += \" [ \" + variableValueMenuCode(variable_obj.column) + \" ] \";\n }\n\n if (\n variable_obj.content.dimensions == 2 &&\n variable_obj.dimensions != 2\n ) {\n ret += \" [ \" + variableValueMenuCode(variable_obj.row) + \" ] \";\n ret += \" [ \" + variableValueMenuCode(variable_obj.column) + \" ] \";\n }\n } else {\n const content = String(variable_obj.content);\n if (isNaN(content)) {\n // console.debug(\"Content length: \", content.length);\n // console.debug(\"Char code at 0\", content.charCodeAt(0));\n const isBackslash = content.charCodeAt(0) === 92;\n if (content.length === 1 || (content.length === 2 && isBackslash)) {\n ret += `'${content}'`;\n } else {\n ret += '\"' + variable_obj.content + '\"';\n }\n } else if (content.length == 0) {\n ret += '\"\"';\n } else if (content.trim().length == 0) {\n ret += '\"' + content + '\"';\n } else {\n ret += variable_obj.content;\n }\n }\n } catch (err) {\n if (!is_return) {\n Utils.renderErrorMessage(\n variable_obj.dom_object,\n LocalizedStrings.getUI(\"inform_valid_content\")\n );\n throw err;\n }\n }\n\n return ret;\n}\n\nfunction writersCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += LocalizedStrings.getUI(\"text_command_write\") + \" ( \";\n\n /*for (var i = 0; i < command_obj.content.length; i++) {\n ret += variableValueMenuCode(command_obj.content[i]);\n\n if ((i + 1) < command_obj.content.length) {\n ret += ' + ';\n }\n }*/\n\n ret += elementExpressionCode(command_obj.content);\n if (command_obj.newline) {\n ret += ', \"\\\\n\"';\n }\n\n ret += \" ) \";\n return ret;\n}\n\nfunction commentsCode (command_obj, indentation) {\n let ret = \"\\n\";\n\n for (let i = 0; i < indentation; i++) {\n ret += \"\\t\";\n }\n\n ret += \"// \";\n\n ret += command_obj.comment_text.content;\n return ret;\n}\n\nfunction parametersCode (parameter_obj) {\n let ret = \"\";\n switch (parameter_obj.type) {\n case Types.INTEGER:\n ret += \" \" + LocalizedStrings.getUI(\"type_integer\") + \" \";\n break;\n case Types.REAL:\n ret += \" \" + LocalizedStrings.getUI(\"type_real\") + \" \";\n break;\n case Types.TEXT:\n ret += \" \" + LocalizedStrings.getUI(\"type_text\") + \" \";\n break;\n case Types.BOOLEAN:\n ret += \" \" + LocalizedStrings.getUI(\"type_boolean\") + \" \";\n break;\n case Types.CHAR:\n ret += \" \" + LocalizedStrings.getUI(\"type_char\") + \" \";\n break;\n }\n ret += parameter_obj.name + \"\";\n\n if (parameter_obj.dimensions == 1) {\n ret += \" []\";\n } else if (parameter_obj.dimensions == 2) {\n ret += \" [][]\";\n }\n return ret;\n}\n\nfunction variablesCode (variable_obj) {\n let ret = \"\";\n\n const temp = variable_obj;\n\n ret += \"\\n\\t\\t\";\n\n if (temp.is_constant) {\n ret += \"const \";\n }\n switch (temp.type) {\n case Types.INTEGER:\n ret += LocalizedStrings.getUI(\"type_integer\") + \" \";\n break;\n case Types.REAL:\n ret += LocalizedStrings.getUI(\"type_real\") + \" \";\n break;\n case Types.TEXT:\n ret += LocalizedStrings.getUI(\"type_text\") + \" \";\n break;\n case Types.BOOLEAN:\n ret += LocalizedStrings.getUI(\"type_boolean\") + \" \";\n break;\n case Types.CHAR:\n ret += LocalizedStrings.getUI(\"type_char\") + \" \";\n break;\n }\n ret += temp.name + \" \";\n\n if (temp.dimensions == 1) {\n ret += \"[\" + temp.columns + \"] \";\n\n switch (temp.type) {\n case Types.INTEGER:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += temp.value[j];\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.REAL:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += temp.value[j].toFixed(2);\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.TEXT:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += '\"' + temp.value[j] + '\"';\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.BOOLEAN:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n if (temp.value[j]) {\n ret += LocalizedStrings.getUI(\"logic_value_true\");\n } else {\n ret += LocalizedStrings.getUI(\"logic_value_false\");\n }\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.CHAR:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += \"'\" + temp.value[j] + \"'\";\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n }\n } else if (temp.dimensions == 2) {\n ret += \"[\" + temp.rows + \"][\" + temp.columns + \"] \";\n\n switch (temp.type) {\n case Types.INTEGER:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += temp.value[j][k];\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n break;\n case Types.REAL:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += temp.value[j][k].toFixed(2);\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n break;\n case Types.TEXT:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += '\"' + temp.value[j][k] + '\"';\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.BOOLEAN:\n ret += \"<- {\";\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n if (temp.value[j][k]) {\n ret += LocalizedStrings.getUI(\"logic_value_true\");\n } else {\n ret += LocalizedStrings.getUI(\"logic_value_false\");\n }\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.CHAR:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += \"'\" + temp.value[j][k] + \"'\";\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n }\n } else {\n switch (temp.type) {\n case Types.INTEGER:\n ret += \"<- \" + temp.value;\n break;\n case Types.REAL:\n ret += \"<- \" + temp.value.toFixed(2);\n break;\n case Types.TEXT:\n ret += '<- \"' + temp.value + '\"';\n break;\n case Types.BOOLEAN:\n ret += \"<- \";\n if (temp.value) {\n ret += LocalizedStrings.getUI(\"logic_value_true\");\n } else {\n ret += LocalizedStrings.getUI(\"logic_value_false\");\n }\n break;\n case Types.CHAR:\n ret += \"<- '\" + temp.value + \"'\";\n break;\n }\n }\n\n return ret;\n}\n\nfunction globalsCode () {\n let ret = \"\";\n\n if (window.program_obj.globals) {\n for (let i = 0; i < window.program_obj.globals.length; i++) {\n const temp = window.program_obj.globals[i];\n\n ret += \"\\n\\t\";\n\n if (temp.is_constant) {\n ret += \"const \";\n }\n switch (temp.type) {\n case Types.INTEGER:\n ret += LocalizedStrings.getUI(\"type_integer\");\n break;\n case Types.REAL:\n ret += LocalizedStrings.getUI(\"type_real\");\n break;\n case Types.TEXT:\n ret += LocalizedStrings.getUI(\"type_text\");\n break;\n case Types.BOOLEAN:\n ret += LocalizedStrings.getUI(\"type_boolean\");\n break;\n case Types.CHAR:\n ret += LocalizedStrings.getUI(\"type_char\");\n break;\n }\n ret += \" \" + temp.name + \" \";\n\n if (temp.dimensions == 1) {\n ret += \"[\" + temp.columns + \"] \";\n\n switch (temp.type) {\n case Types.INTEGER:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += temp.value[j];\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.REAL:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += temp.value[j].toFixed(2);\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.TEXT:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += '\"' + temp.value[j] + '\"';\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.BOOLEAN:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n if (temp.value[j]) {\n ret += LocalizedStrings.getUI(\"logic_value_true\");\n } else {\n ret += LocalizedStrings.getUI(\"logic_value_false\");\n }\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.CHAR:\n ret += \"<- {\";\n for (let j = 0; j < temp.value.length; j++) {\n ret += \"'\" + temp.value[j] + \"'\";\n if (j + 1 < temp.value.length) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n }\n } else if (temp.dimensions == 2) {\n ret += \"[\" + temp.rows + \"][\" + temp.columns + \"] \";\n\n switch (temp.type) {\n case Types.INTEGER:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += temp.value[j][k];\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n break;\n case Types.REAL:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += temp.value[j][k].toFixed(2);\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n break;\n case Types.TEXT:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += '\"' + temp.value[j][k] + '\"';\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.BOOLEAN:\n ret += \"<- {\";\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n if (temp.value[j][k]) {\n ret += LocalizedStrings.getUI(\"logic_value_true\");\n } else {\n ret += LocalizedStrings.getUI(\"logic_value_false\");\n }\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n case Types.CHAR:\n ret += \"<- {\";\n\n for (let j = 0; j < temp.rows; j++) {\n ret += \"{\";\n\n for (let k = 0; k < temp.columns; k++) {\n ret += \"'\" + temp.value[j][k] + \"'\";\n\n if (k + 1 < temp.columns) {\n ret += \", \";\n }\n }\n\n ret += \"}\";\n if (j + 1 < temp.rows) {\n ret += \", \";\n }\n }\n ret += \"}\";\n break;\n }\n } else {\n switch (temp.type) {\n case Types.INTEGER:\n ret += \"<- \" + temp.value;\n break;\n case Types.REAL:\n ret += \"<- \" + temp.value.toFixed(2);\n break;\n case Types.TEXT:\n ret += '<- \"' + temp.value + '\"';\n break;\n case Types.BOOLEAN:\n ret += \"<- \";\n if (temp.value) {\n ret += LocalizedStrings.getUI(\"logic_value_true\");\n } else {\n ret += LocalizedStrings.getUI(\"logic_value_false\");\n }\n break;\n case Types.CHAR:\n ret += \"<- '\" + temp.value + \"'\";\n break;\n }\n }\n }\n }\n\n return ret;\n}\n","import * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\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';\nimport { registerUserEvent, ActionTypes } from \"./../services/userLog\";\n\n// let has_element_created_draged = false;\n// let which_element_is_draged = null;\n\nexport function removeCommand (command, function_obj, dom_obj) {\n\n\tregisterUserEvent(function_obj.name, ActionTypes.REMOVE_COMMAND, command.type, '/', 0);\n\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\tvar undermouse = $(evt.target);\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.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)]);\n//(var_attribution, var_incrementation, expression1, expression2, expression3, commands_block)\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.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true), null, null);\n\n\t\tcase Models.COMMAND_TYPES.whiletrue:\n\t\t\treturn new Models.WhileTrue([new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)], null);\n\n\t\tcase Models.COMMAND_TYPES.dowhiletrue:\n\t\t\treturn new Models.DoWhileTrue([new Models.VariableValueMenu(VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all, null, null, null, true)], 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 findSingleElement (searching, query) {\n\n\tif (!searching || !query) {\n\t\treturn '';\n\t}\n\n\tif (searching.type == Models.COMMAND_TYPES.repeatNtimes || \n\t\tsearching.type == Models.COMMAND_TYPES.whiletrue ||\n\t\tsearching.type == Models.COMMAND_TYPES.dowhiletrue) {\n\n\t\tif (searching.commands_block) {\n\t\t\treturn '' + searching.commands_block.indexOf(query);\n\t\t} else {\n\t\t\treturn '0';\n\t\t}\n\n\t} else if (searching.type == Models.COMMAND_TYPES.iftrue) {\n\n\t\tif (searching.commands_block == null) {\n\t\t\tsearching.commands_block = [];\n\t\t}\n\t\tif (searching.commands_else == null) {\n\t\t\tsearching.commands_else = [];\n\t\t}\n\n\t\tconsole.log('\\n\\nveja onde: ', searching.commands_block, ' \\n\\nquery: ', query);\n\n\t\tif (searching.commands_block.indexOf(query) >= 0) {\n\t\t\treturn 'if[' + searching.commands_block.indexOf(query) + ']';\n\t\t} else {\n\t\t\treturn 'else[' + searching.commands_else.indexOf(query) + ']';\n\t\t}\n\n\t} else if (searching.type == Models.COMMAND_TYPES.switch) {\n\n\t\tfor (var i = 0; i < searching.cases.length; i++) {\n\t\t\tif (searching.cases[i].commands_block.indexOf(query) >= 0) {\n\t\t\t\treturn 'case[' + searching.cases[i].commands_block.indexOf(query) + ']';\n\t\t\t}\n\t\t}\n\n\t}\n\n}\n\nfunction findPathRecursive (starter_index, hierarquia_bottom_up, function_obj, index_command = -1, actual = null) {\n\tvar full_path = '';\n\t\n\tfor (var i = 0; i <= hierarquia_bottom_up.length; i ++) {\n\n\t\tconsole.log('\\n\\n:: ', i, ':\\n', hierarquia_bottom_up[i]);\n\n\t\tfull_path += findSingleElement(hierarquia_bottom_up[i], hierarquia_bottom_up[i + 1]) + '-';\n\t}\n\n\treturn full_path;\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\t// has_element_created_draged = false;\n\t\t// which_element_is_draged = null;\n\t\tdragTrash(event);\n\t\treturn;\n\t} else {\n\t\tif (!esta_na_div_correta) {\n\t\t\t// has_element_created_draged = false;\n\t\t\t// which_element_is_draged = null;\n\t\t\tdragTrash(event);\n\t\t\treturn;\n\t\t}\n\t}\n\tvar hierarquia_bottom_up = null;\n\t// Agora é descobrir qual o escopo para adicionar o comando:\n\tconsole.log('ev0');\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\t\t\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', 0);\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\thierarquia_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\t// has_element_created_draged = false;\n\t// which_element_is_draged = null;\n\n\tif (hierarquia_bottom_up) {\n\t\tconsole.log('\\n\\n:::índices::\\n\\n');\n\t\tvar i = hierarquia_bottom_up.length - 1;\n\t\tvar starter_index = window.program_obj.functions[window.program_obj.functions.indexOf(function_obj)].commands.indexOf(hierarquia_bottom_up[i]);\n\t\tvar all_str_path = starter_index + '-' + findPathRecursive(starter_index, hierarquia_bottom_up, function_obj);\n\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/' , all_str_path);\n\t\tconsole.log('\\n\\nfull path: \\n\\n', all_str_path);\n\t\tconsole.log('fim dos índices');\n\t}\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\t\t\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/' + el_jq.data('command').type, 0);\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\tconsole.log(\"\\n\\n\\n::COMANDOS:\\n\\n\", 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\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', index);\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\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', index);\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\t\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', function_obj.commands.length - 1);\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\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, command_type, '/', index);\n\t}\n}\n","import * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\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 <&#8212; 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 { 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 pause\"></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 pause\"></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 { LocalizedStrings } from '../../services/localizedStringsService';\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 * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\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 * 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\nexport function renderMenu (command, dom_where_render, function_obj, dom_command) {\n\n\tvar menu_div = '<button class=\"ui icon button minimize_block_button tiny\"><i class=\"icon window minimize\"></i></button> <div class=\"ui dropdown menu_commands pause\" ><i class=\"icon pause\"></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=\"pause 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=\"pause icon\"></i> '+LocalizedStrings.getUI('btn_break')+' </a>';\n\t\tmenu_div += '<a class=\"item\" data-command=\"'+Models.COMMAND_TYPES.switchcase+'\"><i class=\"pause 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\tif (command.collapsed) {\n\t\tdom_command.children('.ui.block_commands').toggle();\n\t}\n}\n\nfunction addHandlers (command, dom_where_render, function_obj, dom_command) {\n\n\tdom_where_render.find('.minimize_block_button').on('click', function(evt){\n\t\tdom_command.children('.ui.block_commands').toggle();\n\t\tcommand.collapsed = !command.collapsed;\n\t});\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 { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as ContextualizedMenu from './contextualized_menu';\nimport * as GenericExpressionManagement from './generic_expression';\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_command_do_until') +'(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_command_do_until') + ' </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\t//ConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\n\tif (command.expression) {\n\t\tGenericExpressionManagement.renderExpression(command, function_obj, el.find('.conditional_expression'), command.expression);\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\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 * 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 { Types } from \"../types\";\nimport * as Models from \"../ivprog_elements\";\nimport { LocalizedStrings } from \"../../services/localizedStringsService\";\nimport * as VariableValueMenuManagement from \"./variable_value_menu\";\nimport { registerUserEvent, ActionTypes } from \"../../services/userLog\";\nimport WatchJS from \"melanke-watchjs\";\n\nwindow.timer = false;\n\nexport function renderExpression (\n command,\n function_obj,\n div_to_render,\n expression_array\n) {\n div_to_render.empty();\n\n WatchJS.unwatch(command, \"expression\");\n WatchJS.watch(\n command,\n \"expression\",\n function () {\n if (window.timer) return;\n const m = div_to_render\n .find(\".single_element_expression\")\n .not(\".mouse_distance\")\n .not(\".add_parentheses\");\n let s = \"\";\n m.each(function (e) {\n if ($(this).hasClass(\"parentheses_in_expression\")) {\n s += $(this).text() + \" \";\n } else {\n s += $(this)\n .find(\".text\")\n .text();\n\n s += $(this)\n .find(\".var_name\")\n .text();\n\n s += $(this)\n .find(\".parameters_function_called\")\n .text();\n\n s += $(this)\n .find(\".value_rendered\")\n .text();\n\n s += \" \";\n }\n });\n if (s) {\n window.timer = true;\n } else {\n return;\n }\n registerUserEvent(\n function_obj.name,\n ActionTypes.CHANGE_COMMAND_EXP,\n command.type,\n \"/\",\n s\n );\n setTimeout(function () {\n window.timer = false;\n }, 200);\n },\n 20,\n true\n );\n\n if (command.type === Models.COMMAND_TYPES.attribution) {\n WatchJS.unwatch(command.variable);\n WatchJS.watch(\n command.variable,\n function () {\n renderExpression(\n command,\n function_obj,\n div_to_render,\n expression_array\n );\n },\n 0\n );\n\n if (command.variable.content) {\n const types_included = [];\n\n if (\n command.variable.content.type == Types.INTEGER ||\n command.variable.content.type == Types.REAL\n ) {\n types_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n } else if (command.variable.content.type == Types.BOOLEAN) {\n types_included.push(Models.EXPRESSION_TYPES.exp_conditional);\n types_included.push(Models.EXPRESSION_TYPES.exp_logic);\n types_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n } else if (command.variable.content.type == Types.TEXT) {\n types_included.push(Models.EXPRESSION_TYPES.exp_conditional);\n types_included.push(Models.EXPRESSION_TYPES.exp_logic);\n types_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n } else {\n console.log(\"NÃO RECONHECI! VEJA: \", command.variable.content.type);\n }\n\n renderElements(\n command,\n function_obj,\n div_to_render,\n expression_array,\n types_included\n );\n } else {\n div_to_render.text(\n LocalizedStrings.getUI(\"var_menu_select_var\").toLowerCase()\n );\n }\n } else {\n const types_included = [];\n types_included.push(Models.EXPRESSION_TYPES.exp_conditional);\n types_included.push(Models.EXPRESSION_TYPES.exp_logic);\n if (command.type === Models.COMMAND_TYPES.writer)\n types_included.push(Models.EXPRESSION_TYPES.write_sep);\n types_included.push(Models.EXPRESSION_TYPES.exp_arithmetic);\n renderElements(\n command,\n function_obj,\n div_to_render,\n expression_array,\n types_included\n );\n }\n\n div_to_render.children(\".mouse_distance\").addClass(\"mouse_distance_hidden\");\n div_to_render.children(\".higher_element\").on(\"mousemove\", function (evt) {\n if (!window.open_or_close) {\n $(this).css(\"position\", \"relative\", \"!important\");\n $(this)\n .children(\".mouse_distance\")\n .css(\"opacity\", \"1\");\n }\n });\n div_to_render.children(\".higher_element\").on(\"mouseout\", function (evt) {\n if (!window.open_or_close) {\n $(this).css(\"position\", \"absolute\", \"!important\");\n $(this)\n .children(\".mouse_distance\")\n .css(\"opacity\", \"0\");\n }\n });\n const lixeira = $('<div class=\"lixeira\" draggable=\"true\"></div>');\n\n div_to_render\n .find(\".single_element_expression\")\n .on(\"mousedown\", function (evt) {\n window.posX = evt.clientX;\n window.posY = evt.clientY;\n });\n\n Sortable.create(div_to_render[0], {\n animation: 100,\n ghostClass: \"ghost\",\n group: {\n name: \"shared\",\n put: false, // Do not allow items to be put into this list\n },\n draggable: \".single_element_expression\",\n sort: false,\n filter: \".not_allowed\",\n\n onStart: function () {\n $(\"body\").append(lixeira);\n lixeira.css(\"display\", \"block\");\n lixeira.css(\"top\", window.posY + 70, \"!important\");\n lixeira.css(\"left\", window.posX - 20, \"!important\");\n },\n onMove: function () {\n lixeira.addClass(\"color_test\");\n },\n onEnd: function () {\n lixeira.remove();\n div_to_render.find(\".ghost\").removeClass(\"ghost\");\n },\n });\n new Sortable(lixeira[0], {\n group: \"shared\",\n animation: 150,\n onAdd: function (evt) {\n lixeira.css(\"display\", \"none\");\n lixeira.find(\".single_element_expression\").remove();\n lixeira.css(\"background-color\", \"\");\n lixeira.remove();\n removeElement(evt, expression_array);\n renderExpression(command, function_obj, div_to_render, expression_array);\n },\n });\n}\n\nfunction removeElement (event, expression_array) {\n const indice = $(event.item).data(\"index\");\n const first = expression_array[0];\n console.log(\"indice: \", indice);\n if (expression_array[indice].type) {\n // if is alone in expression:\n if (expression_array.length == 1) {\n //function_obj.commands.splice(function_obj.commands.indexOf(command), 1);\n expression_array.splice(0, 1);\n } else if (expression_array.length > 1) {\n if (indice > 0 && expression_array[indice - 1].type_op) {\n if (\n indice < expression_array.length &&\n expression_array[indice - 2] == \"(\" &&\n expression_array[indice + 1].type_op\n ) {\n expression_array.splice(indice + 1, 1);\n }\n expression_array.splice(indice, 1);\n expression_array.splice(indice - 1, 1);\n if (\n indice - 2 < expression_array.length &&\n expression_array[indice - 2] == \"(\" &&\n expression_array[indice - 1] == \")\"\n ) {\n expression_array.splice(indice - 1, 1);\n expression_array.splice(indice - 2, 1);\n if (\n indice - 3 >= 0 &&\n indice - 3 < expression_array.length &&\n expression_array[indice - 3].type_op\n ) {\n expression_array.splice(indice - 3, 1);\n }\n }\n } else if (\n indice < expression_array.length - 1 &&\n expression_array[indice + 1].type_op\n ) {\n expression_array.splice(indice + 1, 1);\n expression_array.splice(indice, 1);\n } else if (\n indice < expression_array.length - 1 &&\n indice > 0 &&\n expression_array[indice - 1] == \"(\" &&\n expression_array[indice + 1] == \")\"\n ) {\n if (indice > 1 && expression_array[indice - 2].type_op) {\n expression_array.splice(indice + 1, 1);\n expression_array.splice(indice, 1);\n expression_array.splice(indice - 1, 1);\n expression_array.splice(indice - 2, 1);\n } else if (\n indice < expression_array.length - 2 &&\n expression_array[indice + 2].type_op\n ) {\n expression_array.splice(indice + 1, 1);\n expression_array.splice(indice, 1);\n expression_array.splice(indice - 1, 1);\n } else {\n expression_array.splice(indice + 1, 1);\n expression_array.splice(indice, 1);\n expression_array.splice(indice - 1, 1);\n }\n }\n }\n } else if (expression_array[indice].type_op) {\n // iVProg doesn't support operator remove\n } else {\n let opening = -1;\n let closing = -1;\n\n if (expression_array[indice] == \"(\") {\n opening = indice;\n for (var i = indice + 1; i < expression_array.length; i++) {\n if (expression_array[i] == \")\") {\n closing = i;\n break;\n }\n }\n } else {\n closing = indice;\n for (var i = indice - 1; i >= 0; i--) {\n if (expression_array[i] == \"(\") {\n opening = i;\n break;\n }\n }\n }\n\n if (expression_array[opening + 1].type_op) {\n expression_array.splice(closing, 1);\n expression_array.splice(opening + 1, 1);\n expression_array.splice(opening, 1);\n } else {\n expression_array.splice(closing, 1);\n expression_array.splice(opening, 1);\n }\n }\n // if expression is empty, add a new var value:\n if (expression_array.length == 0) {\n expression_array.push(\n new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n )\n );\n }\n if (first != expression_array[0] && expression_array[0].type_op) {\n expression_array.splice(0, 1);\n }\n}\n\nfunction renderElements (\n command,\n function_obj,\n div_to_render,\n expression_array,\n types_included\n) {\n /*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 let i = 0;\n for (i = 0; i < expression_array.length; i++) {\n if (expression_array[i].type == \"var_value\") {\n const div_temp = $(\n '<div class=\"single_element_expression\" data-index=\"' + i + '\"></div>'\n );\n if (i == 0) {\n if (expression_array.length > 0 && !expression_array[0].type_op) {\n //renderStartAddOperator(div_to_render, types_included, expression_array, command, function_obj, 0);\n }\n }\n VariableValueMenuManagement.renderMenu(\n command,\n expression_array[i],\n div_temp,\n function_obj\n );\n div_to_render.append(div_temp);\n } else if (expression_array[i] == \"(\" || expression_array[i] == \")\") {\n if (expression_array[i] == \")\") {\n renderFinalAddElements(\n div_to_render,\n types_included,\n expression_array,\n command,\n function_obj,\n i\n );\n renderParenthesis(\n div_to_render,\n expression_array[i],\n command,\n function_obj,\n i,\n expression_array\n );\n } else if (\n expression_array[i] == \"(\" &&\n !expression_array[i + 1].type_op\n ) {\n renderParenthesis(\n div_to_render,\n expression_array[i],\n command,\n function_obj,\n i,\n expression_array\n );\n renderStartAddOperator(\n div_to_render,\n types_included,\n expression_array,\n command,\n function_obj,\n i + 1\n );\n } else {\n renderParenthesis(\n div_to_render,\n expression_array[i],\n command,\n function_obj,\n i,\n expression_array\n );\n }\n } else {\n if (i == 0) {\n console.log(\"NEGAÇÃO NO PRIMEIRO ELEMENTO\");\n } else if (expression_array[i - 1] == \"(\") {\n console.log(\"NEGAÇÃO APÓS O PARÊNTESES\");\n }\n renderOperatorMenu(\n command,\n function_obj,\n div_to_render,\n expression_array[i],\n types_included,\n i,\n expression_array\n );\n }\n }\n\n renderFinalAddElements(\n div_to_render,\n types_included,\n expression_array,\n command,\n function_obj,\n i,\n true\n );\n\n renderAddParenthesis(\n command,\n function_obj,\n div_to_render,\n expression_array,\n types_included\n );\n}\n\nwindow.parentheses_activate = false;\nwindow.open_or_close = null;\nfunction renderAddParenthesis (\n command,\n function_obj,\n div_to_render,\n expression_array,\n types_included\n) {\n const addParentheses = $(\n '<div class=\"single_element_expression add_parentheses not_allowed\"><img style=\"width: 15px; position: relative; top: 3px; left: 1px; height: 15px;\" src=\"data:image/png;base64,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\"></div>'\n );\n div_to_render.append(addParentheses);\n addParentheses.popup({\n content: \"Adicionar parênteses\",\n delay: {\n show: 750,\n hide: 0,\n },\n });\n\n addParentheses.on(\"click\", function (mouse_event) {\n // verificar se já está ativado\n if (window.parentheses_activate) {\n return;\n }\n\n div_to_render.find(\".usepointer\").off(\"click\");\n\n window.parentheses_activate = true;\n\n window.open_or_close = \"open\";\n\n div_to_render.find(\".dropdown\").addClass(\"disabled\");\n\n div_to_render.find(\".ghost_element\").addClass(\"temp_class\");\n div_to_render.find(\".ghost_element\").removeClass(\"ghost_element\");\n\n const floatingObject = $('<div class=\"floating_parenthesis\"> ( </div>');\n floatingObject.draggable().appendTo(\"body\");\n floatingObject.css(\"position\", \"absolute\");\n mouse_event.type = \"mousedown.draggable\";\n mouse_event.target = floatingObject[0];\n floatingObject.css(\"left\", mouse_event.pageX + 10);\n floatingObject.css(\"top\", mouse_event.pageY + 10);\n floatingObject.trigger(mouse_event);\n\n div_to_render.on(\"mousemove\", function (evt) {\n let actual_target = null;\n if ($(evt.target).hasClass(\"single_element_expression\")) {\n actual_target = $(evt.target);\n } else {\n actual_target = $(evt.target).closest(\".single_element_expression\");\n }\n\n if (\n $(evt.target).hasClass(\"temp_class\") ||\n actual_target.length < 1 ||\n actual_target.hasClass(\"add_parentheses\") ||\n actual_target.hasClass(\"rendered_parentheses\") ||\n $(evt.target).hasClass(\"expression_elements\")\n ) {\n return;\n }\n renderGhostParentheses(\n actual_target,\n command,\n function_obj,\n div_to_render,\n expression_array\n );\n });\n\n div_to_render.on(\"mouseleave\", function () {\n /*window.open_parentheses.remove();\n\t\t\twindow.close_parentheses.remove();*/\n });\n\n let floating;\n\n $(\"body\").on(\"mouseup\", function (evt) {\n if (window.open_or_close == \"open\") {\n window.open_or_close = \"close\";\n\n floatingObject.remove();\n\n var comando_que_esta = $(evt.target).closest(\".command_container\");\n var comando_certo = div_to_render.closest(\".command_container\");\n if (!comando_que_esta.is(comando_certo)) {\n window.parentheses_activate = false;\n div_to_render.find(\".temp_class\").addClass(\"ghost_element\");\n div_to_render.find(\".temp_class\").removeClass(\"temp_class\");\n div_to_render.off(\"mousemove\");\n div_to_render.off(\"mouseleave\");\n $(\"body\").off(\"mouseup\");\n window.open_parentheses.remove();\n window.close_parentheses.remove();\n window.inserir_open = -1;\n window.inserir_close = -1;\n window.open_or_close = null;\n renderExpression(\n command,\n function_obj,\n div_to_render,\n expression_array\n );\n\n return;\n }\n\n window.open_parentheses.addClass(\"parentheses_fixed\");\n\n floating = $('<div class=\"floating_parenthesis\"> ) </div>');\n floating.draggable().appendTo(\"body\");\n floating.css(\"position\", \"absolute\");\n floating.css(\"left\", evt.pageX + 10);\n floating.css(\"top\", evt.pageY + 10);\n\n $(\"body\").on(\"mousemove\", function (evts) {\n floating.css(\"left\", evts.pageX + 10);\n floating.css(\"top\", evts.pageY + 10);\n });\n } else {\n floating.remove();\n\n window.open_parentheses.removeClass(\"parentheses_fixed\");\n\n div_to_render.off(\"mousemove\");\n div_to_render.off(\"mouseleave\");\n $(\"body\").off(\"mouseup\");\n\n setTimeout(function () {\n window.parentheses_activate = false;\n }, 50);\n\n var comando_que_esta = $(evt.target).closest(\".command_container\");\n var comando_certo = div_to_render.closest(\".command_container\");\n let is_correct = false;\n if (comando_que_esta.is(comando_certo)) {\n is_correct = true;\n }\n\n if (is_correct) {\n expression_array.splice(window.inserir_open, 0, \"(\");\n expression_array.splice(window.inserir_close, 0, \")\");\n }\n\n window.inserir_open = -1;\n window.inserir_close = -1;\n window.open_or_close = null;\n\n renderExpression(\n command,\n function_obj,\n div_to_render,\n expression_array\n );\n }\n });\n });\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 (\n actual_target,\n command,\n function_obj,\n div_to_render,\n expression_array\n) {\n /*window.open_parentheses.remove();\n\twindow.close_parentheses.remove();*/\n\n const index_in_array = actual_target.data(\"index\");\n\n if (\n expression_array[index_in_array] == \"(\" ||\n expression_array[index_in_array] == \")\"\n ) {\n return;\n }\n\n if (window.open_or_close == \"close\") {\n if (index_in_array < window.inserir_open) {\n return;\n }\n }\n\n // Tratando a situação quando é na primeira posição:\n\n if (index_in_array == 0) {\n if (expression_array[index_in_array].type == \"var_value\") {\n if (window.open_or_close == \"open\") {\n window.open_parentheses.insertBefore(actual_target);\n window.inserir_open = index_in_array;\n }\n\n /*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 //} else {\n var count_opened = 0;\n var count_closed = 0;\n for (var i = 0; i < expression_array.length; i++) {\n if (expression_array[i] == \"(\") {\n count_opened++;\n }\n if (expression_array[i] == \")\") {\n count_closed++;\n }\n if (count_opened != count_closed) {\n } else {\n if (count_opened > 0) {\n if (window.open_or_close == \"close\") {\n window.close_parentheses.insertAfter(\n div_to_render.find(\n '.single_element_expression[data-index=\"' + i + '\"]'\n )\n );\n window.inserir_close = i + 2;\n }\n break;\n } else {\n if (expression_array[i].type == \"var_value\") {\n if (window.open_or_close == \"close\") {\n window.close_parentheses.insertAfter(\n div_to_render.find(\n '.single_element_expression[data-index=\"' + i + '\"]'\n )\n );\n window.inserir_close = i + 2;\n }\n break;\n }\n }\n }\n }\n //}\n } else if (expression_array[index_in_array].type_op) {\n if (window.open_or_close == \"open\") {\n window.open_parentheses.insertBefore(actual_target);\n window.inserir_open = index_in_array;\n }\n\n var count_opened = 0;\n var count_closed = 0;\n for (var i = 1; i < expression_array.length; i++) {\n // $('.slide-link[data-slide=\"0\"]')\n if (expression_array[i] == \"(\") {\n count_opened++;\n }\n if (expression_array[i] == \")\") {\n count_closed++;\n }\n if (count_opened != count_closed) {\n } else {\n if (count_opened > 0) {\n if (expression_array[i].type == \"var_value\") {\n window.close_parentheses.insertAfter(\n div_to_render.find(\n '.single_element_expression[data-index=\"' + i + '\"]'\n )\n );\n window.inserir_close = i + 2;\n }\n\n break;\n } else {\n if (expression_array[i].type == \"var_value\") {\n if (expression_array[i].type == \"var_value\") {\n window.close_parentheses.insertAfter(\n div_to_render.find(\n '.single_element_expression[data-index=\"' + i + '\"]'\n )\n );\n window.inserir_close = i + 2;\n }\n break;\n }\n }\n }\n }\n }\n return;\n }\n\n // Tratando quando não é no índice 0:\n if (expression_array[index_in_array].type == \"var_value\") {\n if (window.open_or_close == \"open\") {\n window.open_parentheses.insertBefore(actual_target);\n window.inserir_open = index_in_array;\n }\n if (window.open_or_close == \"close\") {\n window.close_parentheses.insertAfter(actual_target);\n window.inserir_close = index_in_array + 2;\n }\n return;\n }\n\n if (expression_array[index_in_array].type_op) {\n // buscar para a esquerda primeiro:\n if (expression_array[index_in_array - 1] == \"(\") {\n if (window.open_or_close == \"open\") {\n window.open_parentheses.insertBefore(actual_target);\n window.inserir_open = index_in_array;\n }\n } else if (expression_array[index_in_array - 1] == \")\") {\n // buscar a abertura\n var count_opened = 0;\n var count_closed = 0;\n for (var j = index_in_array - 1; j >= 0; j--) {\n if (expression_array[j] == \"(\") {\n count_opened++;\n }\n if (expression_array[j] == \")\") {\n count_closed++;\n }\n\n if (count_opened != count_closed) {\n } else {\n if (count_closed > 0) {\n if (window.open_or_close == \"open\") {\n window.open_parentheses.insertBefore(\n div_to_render.find(\n '.single_element_expression[data-index=\"' + j + '\"]'\n )\n );\n window.inserir_open = j;\n }\n break;\n }\n }\n }\n } else if (expression_array[index_in_array - 1].type == \"var_value\") {\n if (window.open_or_close == \"open\") {\n window.open_parentheses.insertBefore(\n div_to_render.find(\n '.single_element_expression[data-index=\"' +\n (index_in_array - 1) +\n '\"]'\n )\n );\n window.inserir_open = index_in_array - 1;\n }\n }\n\n // buscar para a direita agora:\n if (expression_array[index_in_array + 1] == \"(\") {\n // buscar o fechamento:\n\n var count_opened = 0;\n var count_closed = 0;\n for (var j = index_in_array + 1; j < expression_array.length; j++) {\n if (expression_array[j] == \"(\") {\n count_opened++;\n }\n if (expression_array[j] == \")\") {\n count_closed++;\n }\n\n if (count_opened != count_closed) {\n } else {\n if (count_opened > 0) {\n if (window.open_or_close == \"close\") {\n window.close_parentheses.insertAfter(\n div_to_render.find(\n '.single_element_expression[data-index=\"' + j + '\"]'\n )\n );\n window.inserir_close = j + 2;\n }\n break;\n }\n }\n }\n } else if (expression_array[index_in_array + 1].type == \"var_value\") {\n if (window.open_or_close == \"close\") {\n window.close_parentheses.insertAfter(\n div_to_render.find(\n '.single_element_expression[data-index=\"' +\n (index_in_array + 1) +\n '\"]'\n )\n );\n window.inserir_close = index_in_array + 3;\n }\n }\n }\n}\n\nfunction renderParenthesis (\n div_to_render,\n expression_content,\n command,\n function_obj,\n position,\n expression_array\n) {\n const ghost_parenthesis = $(\n '<div class=\"single_element_expression parentheses_in_expression\" data-index=\"' +\n position +\n '\">' +\n expression_content +\n \"</div>\"\n );\n div_to_render.append(ghost_parenthesis);\n}\n\nfunction renderStartAddOperator (\n div_to_render,\n types_included,\n expression_array,\n command,\n function_obj,\n position\n) {\n let menu_final =\n '<div class=\"ui dropdown disabled usepointer\"><div class=\"text\"> + </div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_arithmetic_expression\") +\n '<div class=\"menu\">';\n menu_final += getArithmeticOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getArithmeticOperators();\n }\n }\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_logic_expression\") +\n '<div class=\"menu\">';\n menu_final += getLogicOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getLogicOperators();\n }\n }\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_relational_expression\") +\n '<div class=\"menu\">';\n menu_final += getRelationalOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getRelationalOperators();\n }\n }\n menu_final += \"</div></div>\";\n\n menu_final = $(menu_final);\n const div_temp = $(\n '<div class=\"single_element_expression ghost_element mouse_distance\"></div>'\n );\n div_temp.append(menu_final);\n const div_higher = $('<div class=\"higher_element\"></div>');\n div_higher.append(div_temp);\n div_to_render.append(div_higher);\n menu_final.dropdown(\"set selected\", Models.ARITHMETIC_TYPES.minus);\n\n div_temp.on(\"click\", function () {\n if (!window.open_or_close) {\n const sera = position;\n\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n console.log(\"p1\");\n expression_array.splice(\n sera,\n 0,\n new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_arithmetic,\n Models.ARITHMETIC_TYPES.minus\n )\n );\n } else if (\n types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0\n ) {\n console.log(\"p2\");\n expression_array.splice(\n sera,\n 0,\n new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_logic,\n Models.LOGIC_COMPARISON.equals_to\n )\n );\n } else if (\n types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0\n ) {\n console.log(\"p3\");\n expression_array.splice(\n sera,\n 0,\n new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_conditional,\n Models.ARITHMETIC_COMPARISON.greater_than\n )\n );\n }\n\n renderExpression(command, function_obj, div_to_render, expression_array);\n }\n });\n}\n\nfunction renderFinalAddElements (\n div_to_render,\n types_included,\n expression_array,\n command,\n function_obj,\n position,\n is_last = false\n) {\n let menu_final =\n '<div class=\"ui dropdown disabled usepointer\"><div class=\"text\"> + </div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_arithmetic_expression\") +\n '<div class=\"menu\">';\n menu_final += getArithmeticOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getArithmeticOperators();\n }\n }\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_logic_expression\") +\n '<div class=\"menu\">';\n menu_final += getLogicOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getLogicOperators();\n }\n }\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_relational_expression\") +\n '<div class=\"menu\">';\n menu_final += getRelationalOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getRelationalOperators();\n }\n }\n menu_final += \"</div></div>\";\n\n menu_final = $(menu_final);\n const div_temp = $('<div class=\"simple_add mouse_distance\"></div>');\n const div_higher = $('<div class=\"higher_element\"></div>');\n\n const button = $(\n '<button class=\"ui button green add_expression\"><i class=\"plus circle inverted icon\"></i></button>'\n );\n div_temp.append(button);\n\n if (!is_last) {\n div_higher.append(div_temp);\n div_to_render.append(div_higher);\n //div_temp.append(menu_final);\n div_temp.css(\"opacity\", \"0\", \"!important\");\n } else {\n div_temp.removeClass(\"mouse_distance\");\n div_temp.css(\"opacity\", \"1\", \"!important\");\n //div_temp.append(menu_final);\n div_to_render.append(div_temp);\n }\n\n menu_final.dropdown(\"set selected\", Models.ARITHMETIC_TYPES.plus);\n\n div_temp.on(\"click\", function () {\n const sera = position;\n\n if (expression_array[sera] == \")\" && expression_array[sera - 1] == \"(\") {\n expression_array.splice(\n sera,\n 0,\n new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n )\n );\n renderExpression(command, function_obj, div_to_render, expression_array);\n return;\n }\n\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n expression_array.splice(\n sera,\n 0,\n new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_arithmetic,\n Models.ARITHMETIC_TYPES.plus\n )\n );\n expression_array.splice(\n sera + 1,\n 0,\n new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n )\n );\n } else if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n expression_array.splice(\n sera,\n 0,\n new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_logic,\n Models.LOGIC_COMPARISON.equals_to\n )\n );\n expression_array.splice(\n sera + 1,\n 0,\n new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n )\n );\n } else if (\n types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0\n ) {\n expression_array.splice(\n sera,\n 0,\n new Models.ExpressionOperator(\n Models.EXPRESSION_TYPES.exp_conditional,\n Models.ARITHMETIC_COMPARISON.greater_than\n )\n );\n expression_array.splice(\n sera + 1,\n 0,\n new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n )\n );\n }\n\n renderExpression(command, function_obj, div_to_render, expression_array);\n });\n}\n\nfunction renderOperatorMenu (\n command,\n function_obj,\n div_to_render,\n expression_element,\n types_included,\n position,\n expression_array\n) {\n let menu_final =\n '<div class=\"ui dropdown\"><div class=\"text\"> + </div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n if (types_included.indexOf(Models.EXPRESSION_TYPES.write_sep) >= 0) {\n menu_final += getSeparator();\n }\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_arithmetic) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_arithmetic_expression\") +\n '<div class=\"menu\">';\n menu_final += getArithmeticOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getArithmeticOperators();\n }\n }\n\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_logic) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_logic_expression\") +\n '<div class=\"menu\">';\n menu_final += getLogicOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getLogicOperators();\n }\n }\n if (types_included.indexOf(Models.EXPRESSION_TYPES.exp_conditional) >= 0) {\n if (types_included.length > 1) {\n menu_final +=\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_relational_expression\") +\n '<div class=\"menu\">';\n menu_final += getRelationalOperators();\n menu_final += \"</div></div>\";\n } else {\n menu_final += getRelationalOperators();\n }\n }\n menu_final += \"</div></div>\";\n\n menu_final = $(menu_final);\n menu_final.find(\".ivprog-write-sep\").popup({\n content: LocalizedStrings.getUI(\"write_seprator_menu_tooltip\"),\n delay: {\n show: 500,\n hide: 0,\n },\n });\n\n const div_temp = $(\n '<div class=\"single_element_expression not_allowed\" data-index=\"' +\n position +\n '\"></div>'\n );\n div_temp.append(menu_final);\n div_to_render.append(div_temp);\n menu_final.dropdown({\n onChange: function (_value, _text, $selectedItem) {\n expression_element.item = $selectedItem.data(\"value\");\n expression_element.type_op = $selectedItem.data(\"type\");\n },\n });\n\n menu_final.dropdown(\"set selected\", expression_element.item);\n}\n\nfunction getArithmeticOperators () {\n let arithmetic_operators;\n arithmetic_operators =\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_arithmetic +\n '\" data-value=\"' +\n Models.ARITHMETIC_TYPES.plus +\n '\">+</div>';\n arithmetic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_arithmetic +\n '\" data-value=\"' +\n Models.ARITHMETIC_TYPES.minus +\n '\">-</div>';\n arithmetic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_arithmetic +\n '\" data-value=\"' +\n Models.ARITHMETIC_TYPES.multiplication +\n '\">*</div>';\n arithmetic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_arithmetic +\n '\" data-value=\"' +\n Models.ARITHMETIC_TYPES.division +\n '\">/</div>';\n arithmetic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_arithmetic +\n '\" data-value=\"' +\n Models.ARITHMETIC_TYPES.module +\n '\">%</div>';\n return arithmetic_operators;\n}\n\nfunction getLogicOperators () {\n let logic_operators;\n logic_operators =\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_logic +\n '\" data-value=\"' +\n Models.LOGIC_COMPARISON.equals_to +\n '\">==</div>';\n logic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_logic +\n '\" data-value=\"' +\n Models.LOGIC_COMPARISON.not_equals_to +\n '\">!=</div>';\n logic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_logic +\n '\" data-value=\"' +\n Models.LOGIC_COMPARISON.and +\n '\">' +\n LocalizedStrings.getUI(\"logic_operator_and\") +\n \"</div>\";\n logic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_logic +\n '\" data-value=\"' +\n Models.LOGIC_COMPARISON.or +\n '\">' +\n LocalizedStrings.getUI(\"logic_operator_or\") +\n \"</div>\";\n logic_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_logic +\n '\" data-value=\"' +\n Models.LOGIC_COMPARISON.not +\n '\">' +\n LocalizedStrings.getUI(\"logic_operator_not\") +\n \"</div>\";\n return logic_operators;\n}\n\nfunction getRelationalOperators () {\n let relational_operators;\n relational_operators =\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_conditional +\n '\" data-value=\"' +\n Models.ARITHMETIC_COMPARISON.greater_than +\n '\">></div>';\n relational_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_conditional +\n '\" data-value=\"' +\n Models.ARITHMETIC_COMPARISON.less_than +\n '\"><</div>';\n relational_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_conditional +\n '\" data-value=\"' +\n Models.ARITHMETIC_COMPARISON.equals_to +\n '\">==</div>';\n relational_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_conditional +\n '\" data-value=\"' +\n Models.ARITHMETIC_COMPARISON.not_equals_to +\n '\">!=</div>';\n relational_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_conditional +\n '\" data-value=\"' +\n Models.ARITHMETIC_COMPARISON.greater_than_or_equals_to +\n '\">>=</div>';\n relational_operators +=\n '<div class=\"item\" data-type=\"' +\n Models.EXPRESSION_TYPES.exp_conditional +\n '\" data-value=\"' +\n Models.ARITHMETIC_COMPARISON.less_than_or_equals_to +\n '\"><=</div>';\n return relational_operators;\n}\n\nfunction getSeparator () {\n return `<div class=\"item ivprog-write-sep\" data-type=\"${\n Models.EXPRESSION_TYPES.write_sep\n }\" data-value=\"${Models.EXPRESSION_TYPES.write_sep}\">${LocalizedStrings.getUI(\n \"write_seprator_menu_text\"\n )}</div>`;\n}\n","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as GenericExpressionManagement from './generic_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> <button class=\"ui icon button minimize_block_button tiny\"><i class=\"icon window minimize\"></i></button>';\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\t//ConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\n\tGenericExpressionManagement.renderExpression(command, function_obj, el.find('.conditional_expression'), command.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\tif (command.collapsed) {\n\t\tel.children('.data_block_else').toggle();\n\t\t$(el.find('.block_commands')[0]).toggle();\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\n\tiftrue_dom.find('.minimize_block_button').on('click', function() {\n\t\tiftrue_dom.children('.data_block_else').toggle();\n\t\t$(iftrue_dom.find('.block_commands')[0]).toggle();\n\t\tcommand.collapsed = !command.collapsed;\n\t});\n\n}","import { LocalizedStrings } from '../../services/localizedStringsService';\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 * as Models from '../ivprog_elements';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as ContextualizedMenu from './contextualized_menu';\nimport * as GenericExpressionManagement from './generic_expression';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui repeatNtimes created_element\"> <i class=\"ui icon small sync\"></i> <span> repita_para i de 0 ate 10 passo 1 <br> </span></div>');\n}\n\nexport function renderCommand (command, function_obj) {\n\tlet ret = `<div class=\"ui repeatNtimes command_container\"> \n\t\t<i class=\"ui icon small sync command_drag\"></i>\n\t\t<i class=\"ui icon times red button_remove_command\"></i>\n\t\t<div class=\"ui context_menu\"></div> <span class=\"span_command_spec\"> ${LocalizedStrings.getUI('text_for')}\n\t\t</span> <div class=\"ui attribution_expression\">\n\t\t<div class=\"ui variable_attribution\"></div>\n\t\t<span class=\"text_receives span_command_spec\" style=\"margin-left: 10px;margin-right: 20px;\"></span>\n\t\t<div class=\"ui var_value_expression div_expression_st\"></div>\n\t\t</div>\n\t\t<span class=\"span_command_spec separator_character\" style=\"margin-left: 25px; margin-right: 15px;\">\n\t\t${LocalizedStrings.getUI(\"text_for_to\")} </span>\n\t\t<div class=\"conditional_expression\"></div> <div class=\"pass_button\"></div> \n\t\t<div class=\"ui incrementation_field\"><span class=\"text_inc_receives span_command_spec\"></span>\n\t\t<div class=\"ui first_operand\"></div><div class=\"ui operator\"></div>\n\t\t<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\t//ConditionalExpressionManagement.renderExpression(command, command.expression2, function_obj, el.find('.conditional_expression'));\n\n\tVariableValueMenu.renderMenu(command, command.expression2, el.find('.conditional_expression'), function_obj);\t\n\t//GenericExpressionManagement.renderExpression(command, function_obj, el.find('.conditional_expression'), command.expression2);\n\n\t//VariableValueMenu.renderMenu(command, command.var_incrementation, el.find('.incrementation_variable'), function_obj);\t\n\t//angle double right\n\tif (!command.expression1) {\n\t\tcommand.expression1 = new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"0\", null, null, true);\n\t}\n\n\tel.find('.text_receives').text(LocalizedStrings.getUI(\"text_for_from\"));\n\tVariableValueMenu.renderMenu(command, command.expression1, el.find('.var_value_expression'), function_obj);\n\n\tif (!command.expression3) {\n\t\tel.find('.pass_button').html('<button class=\"ui\">' + LocalizedStrings.getUI(\"text_for_pass\") + '<i class=\"ui icon angle double right\"></i></button>');\n\t\tel.find('.pass_button').find('button').on('click', function() {\n\t\t\ttogglePasso(command);\n\t\t});\n\t\t/*var exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, \n\t\t\t[command.var_attribution,\n \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"1\", null, null, true)]);\n\n\t\tcommand.expression3 = exp;\n\t\tcommand.var_incrementation = command.var_attribution;*/\n\t} else {\n\t\tel.find('.pass_button').html('<button class=\"ui\">' + LocalizedStrings.getUI(\"text_for_pass\") + '<i class=\"ui icon angle double left\"></i></button>');\n\t\tel.find('.pass_button').find('button').on('click', function() {\n\t\t\ttogglePasso(command);\n\t\t});\n\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\nfunction togglePasso (command) {\n\tif (!command.expression3) {\n\t\tvar exp = new Models.ExpressionElement(Models.EXPRESSION_ELEMENTS.exp_op_exp, \n\t\t\t[command.var_attribution,\n \t\tModels.ARITHMETIC_TYPES.plus, \n\t\t\tnew Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, \"1\", null, null, true)]);\n\n\t\tcommand.expression3 = exp;\n\t\tcommand.var_incrementation = command.var_attribution;\n\t} else {\n\t\tcommand.expression3 = null;\n\t}\n\trenderAlgorithm();\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('de');\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('de');\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 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 { Types } from '../types';\nimport { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as VariableValueMenu from './variable_value_menu';\nimport * as CommandsManagement from '../commands';\nimport * as GenericExpressionManagement from './generic_expression';\nimport * as Models from '../ivprog_elements';\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=\"expression_elements\"></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\tif (!command.variable_value_menu) {\n\t\t\tcommand.variable_value_menu = [new Models.VariableValueMenu(VariableValueMenu.VAR_OR_VALUE_TYPES.all, null, null, null, true)];\n\t\t}\n\t\tGenericExpressionManagement.renderExpression(command, function_obj, el.find('.expression_elements'), command.variable_value_menu);\n\t} else {\n\t\tel.find('.expression_elements').remove();\n\t\tcommand.variable_value_menu = null;\n\t}\n\t\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 { LocalizedStrings } from '../../services/localizedStringsService';\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 * as Models from \"../ivprog_elements\";\nimport { LocalizedStrings } from \"../../services/localizedStringsService\";\nimport * as AttribuitionsManagement from \"./attribution\";\nimport * as RepeatNTimesManagement from \"./repeatNtimes\";\n\nexport const VAR_OR_VALUE_TYPES = Object.freeze({\n only_variable: 1,\n only_value: 2,\n only_function: 3,\n variable_and_function: 4,\n variable_and_value_opt: 5,\n value_and_function: 6,\n all: 7,\n});\n\nexport function renderMenu (\n command,\n ref_object,\n dom_object,\n function_obj,\n size_field = 2,\n expression_element\n) {\n // Verificar se o objeto atual trata-se de uma chamada de função e conferir se possui a quantidade correta de parâmetros\n // Caso não possua, tem que adicionar as variáveis que servirão de parâmetros:\n if (ref_object.function_called) {\n if (ref_object.function_called.parameters_list) {\n while (\n ref_object.function_called.parameters_list.length !=\n ref_object.parameters_list.length\n ) {\n if (\n ref_object.parameters_list.length >\n ref_object.function_called.parameters_list.length\n ) {\n ref_object.parameters_list.pop();\n } else {\n ref_object.parameters_list.push(\n new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n )\n );\n }\n }\n }\n }\n\n let menu_var_or_value =\n '<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 if (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_variable) {\n menu_var_or_value =\n '<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 menu_var_or_value += \"</div>\";\n }\n\n if (\n ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_function ||\n ref_object.variable_and_value ==\n VAR_OR_VALUE_TYPES.variable_and_value_opt ||\n ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all\n ) {\n menu_var_or_value +=\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_variable +\n '\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"variable\");\n menu_var_or_value += '<div class=\"menu menu_only_vars\">';\n menu_var_or_value += \"</div></div>\";\n }\n\n if (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_value) {\n menu_var_or_value =\n '<input type=\"text\" class=\"width-dynamic\" size=\"' +\n size_field +\n '\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />';\n }\n\n if (\n ref_object.variable_and_value ==\n VAR_OR_VALUE_TYPES.variable_and_value_opt ||\n ref_object.variable_and_value == VAR_OR_VALUE_TYPES.value_and_function ||\n ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all\n ) {\n menu_var_or_value +=\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_value +\n '\">' +\n LocalizedStrings.getUI(\"text_value\") +\n \"</div>\";\n }\n\n if (ref_object.variable_and_value == VAR_OR_VALUE_TYPES.only_function) {\n menu_var_or_value =\n '<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 menu_var_or_value += \"</div>\";\n }\n\n if (\n ref_object.variable_and_value == VAR_OR_VALUE_TYPES.variable_and_function ||\n ref_object.variable_and_value == VAR_OR_VALUE_TYPES.value_and_function ||\n ref_object.variable_and_value == VAR_OR_VALUE_TYPES.all\n ) {\n menu_var_or_value +=\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_function +\n '\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"btn_function\");\n menu_var_or_value += '<div class=\"menu menu_only_functions\">';\n menu_var_or_value += \"</div></div>\";\n\n /* if (command.type == Models.COMMAND_TYPES.attribution) {\n menu_var_or_value += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n menu_var_or_value += '<div class=\"menu\">';\n menu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n menu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n menu_var_or_value += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n menu_var_or_value += '</div></div>';\n }*/\n }\n\n menu_var_or_value += \"</div></div>\";\n\n menu_var_or_value = $(menu_var_or_value);\n\n menu_var_or_value.find('.width-dynamic').on('input', function() {\n var input_field = $(this);\n var inputWidth = input_field.textWidth()+10;\n inputWidth = inputWidth<50?50:inputWidth;\n input_field.css({\n width: inputWidth\n })\n }).trigger('input');\n\n dom_object.append(menu_var_or_value);\n\n ref_object.dom_object = menu_var_or_value;\n\n addHandlers(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n expression_element\n );\n\n addVariablesToMenu(\n function_obj,\n menu_var_or_value,\n ref_object,\n expression_element\n );\n\n addFunctionsToMenu(\n function_obj,\n menu_var_or_value,\n ref_object,\n expression_element\n );\n\n addIVProgFunctionsToMenu(\n function_obj,\n menu_var_or_value,\n ref_object,\n expression_element\n );\n\n if (ref_object.content || ref_object.function_called) {\n if (ref_object.content) {\n // Verificar se a variável ainda existe:\n const variable_fun = isVarInProgram(ref_object.content, function_obj);\n if (variable_fun) {\n ref_object.content = variable_fun;\n renderPreviousContent(\n function_obj,\n menu_var_or_value,\n ref_object,\n dom_object,\n command,\n expression_element\n );\n } else {\n if (ref_object.content && ref_object.content.type) {\n ref_object.content = null;\n appendSelectText(ref_object, menu_var_or_value);\n } else {\n renderPreviousContent(\n function_obj,\n menu_var_or_value,\n ref_object,\n dom_object,\n command,\n expression_element\n );\n }\n }\n } else if (ref_object.function_called) {\n // Verificar se a função ainda existe:\n const ret_function = isFunctionInProgram(ref_object.function_called);\n if (ret_function) {\n ref_object.function_called = ret_function;\n renderPreviousContent(\n function_obj,\n menu_var_or_value,\n ref_object,\n dom_object,\n command,\n expression_element\n );\n } else {\n ref_object.content = null;\n ref_object.row = null;\n ref_object.column = null;\n delete ref_object.function_called;\n delete ref_object.parameters_list;\n appendSelectText(ref_object, menu_var_or_value);\n }\n }\n } else {\n appendSelectText(ref_object, menu_var_or_value);\n }\n}\n\nfunction appendSelectText (ref_object, menu_var_or_value) {\n switch (ref_object.variable_and_value) {\n case VAR_OR_VALUE_TYPES.only_variable:\n menu_var_or_value\n .find(\".text\")\n .append(\"<i>\" + LocalizedStrings.getUI(\"var_menu_select_var\") + \"</i>\");\n break;\n case VAR_OR_VALUE_TYPES.all:\n menu_var_or_value\n .find(\".text\")\n .append(\"<i>\" + LocalizedStrings.getUI(\"var_menu_select_all\") + \"</i>\");\n break;\n case VAR_OR_VALUE_TYPES.variable_and_function:\n menu_var_or_value\n .find(\".text\")\n .append(\"<i>\" + LocalizedStrings.getUI(\"var_menu_select_all\") + \"</i>\");\n break;\n case VAR_OR_VALUE_TYPES.only_function:\n menu_var_or_value\n .find(\".text\")\n .append(\n \"<i>\" + LocalizedStrings.getUI(\"var_menu_select_function\") + \"</i>\"\n );\n break;\n }\n}\n\nfunction isFunctionInProgram (function_called_obj) {\n if (function_called_obj.name) {\n if (window.program_obj.functions) {\n for (var i = 0; i < window.program_obj.functions.length; i++) {\n if (window.program_obj.functions[i] == function_called_obj) {\n return window.program_obj.functions[i];\n }\n }\n for (var i = 0; i < window.program_obj.functions.length; i++) {\n if (window.program_obj.functions[i].name == function_called_obj.name) {\n return window.program_obj.functions[i];\n }\n }\n }\n } else if (function_called_obj.identifier) {\n for (var i = 0; i < window.system_functions.length; i++) {\n if (\n window.system_functions[i].identifier == function_called_obj.identifier\n ) {\n return window.system_functions[i];\n }\n }\n }\n\n return null;\n}\n\nfunction isVarInProgram (var_obj, function_obj) {\n // Verify in locals:\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] == var_obj) {\n return function_obj.variables_list[i];\n }\n }\n }\n // Verify in parameters:\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] == var_obj) {\n return function_obj.parameters_list[i];\n }\n }\n }\n // Verify in globals:\n if (window.program_obj.globals) {\n for (var i = 0; i < window.program_obj.globals.length; i++) {\n if (window.program_obj.globals[i] == var_obj) {\n return window.program_obj.globals[i];\n }\n }\n }\n\n // If not found, verify if the reference was lost\n if (var_obj) {\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 == var_obj.name) {\n return function_obj.variables_list[i];\n }\n }\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 == var_obj.name) {\n return function_obj.parameters_list[i];\n }\n }\n }\n if (window.program_obj.globals) {\n for (var i = 0; i < window.program_obj.globals.length; i++) {\n if (window.program_obj.globals[i].name == var_obj.name) {\n return window.program_obj.globals[i];\n }\n }\n }\n }\n\n return null;\n}\n\nfunction renderPreviousContent (\n function_obj,\n menu_var_or_value,\n ref_object,\n dom_object,\n command,\n expression_element\n) {\n if (ref_object.function_called) {\n menu_var_or_value.remove();\n variableValueMenuCode(\n command,\n ref_object,\n dom_object,\n function_obj,\n menu_var_or_value,\n expression_element\n );\n } else if (ref_object.content.type) {\n menu_var_or_value.remove();\n variableValueMenuCode(\n command,\n ref_object,\n dom_object,\n function_obj,\n menu_var_or_value,\n expression_element\n );\n } else {\n menu_var_or_value.remove();\n variableValueMenuCode(\n command,\n ref_object,\n dom_object,\n function_obj,\n menu_var_or_value,\n expression_element\n );\n }\n}\n\nfunction variableValueMenuCode (\n command,\n variable_obj,\n dom_object,\n function_obj,\n menu_var_or_value,\n expression_element\n) {\n if (variable_obj.content || variable_obj.function_called) {\n // Verificar se a variável ainda existe:\n const var_fun = isVarInProgram(variable_obj.content, function_obj);\n\n if (var_fun) {\n variable_obj.content = var_fun;\n } else {\n if (variable_obj.content && variable_obj.content.type) {\n variable_obj.content = null;\n appendSelectText(variable_obj, menu_var_or_value);\n }\n }\n } else {\n appendSelectText(variable_obj, menu_var_or_value);\n }\n\n if (variable_obj.content == null && variable_obj.function_called == null) {\n renderMenu(\n command,\n variable_obj,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n return;\n }\n\n const ret = \"\";\n if (variable_obj.function_called) {\n if (\n variable_obj.function_called.parameters_list == null ||\n variable_obj.function_called.length == 0\n ) {\n menu_var_or_value.find(\".text\").text(\" \");\n dom_object.find(\".menu_var_or_value_dom\").remove();\n\n var parameters_menu;\n\n if (variable_obj.function_called.name) {\n parameters_menu =\n '<div class=\"parameters_function_called\"> ' +\n variable_obj.function_called.name +\n \" <span> ( </span>\";\n } else {\n parameters_menu =\n '<div class=\"parameters_function_called\"> <i>' +\n LocalizedStrings.translateInternalFunction(\n variable_obj.function_called.identifier,\n variable_obj.function_called.category\n ) +\n \"</i> <span> ( </span>\";\n }\n\n parameters_menu += \"<span> ) </span></div>\";\n\n parameters_menu = $(parameters_menu);\n\n dom_object.append(parameters_menu);\n\n var context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n context_menu.insertAfter(dom_object.find(\".parameters_function_called\"));\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n console.log(\"S1\");\n if ($selectedItem.data(\"clear\")) {\n console.log(\"PP1\");\n dom_object.text(\"\");\n\n variable_obj.content = null;\n variable_obj.row = null;\n variable_obj.column = null;\n delete variable_obj.function_called;\n delete variable_obj.parameters_list;\n\n renderMenu(\n command,\n variable_obj,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n variable_obj,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n } else {\n menu_var_or_value.find(\".text\").text(\" \");\n dom_object.find(\".menu_var_or_value_dom\").remove();\n\n var parameters_menu;\n\n if (variable_obj.function_called.name) {\n parameters_menu =\n '<div class=\"parameters_function_called\"> ' +\n variable_obj.function_called.name +\n \" <span> ( </span>\";\n } else {\n parameters_menu =\n '<div class=\"parameters_function_called\"> <i>' +\n LocalizedStrings.translateInternalFunction(\n variable_obj.function_called.identifier,\n variable_obj.function_called.category\n ) +\n \"</i> <span> ( </span>\";\n }\n\n for (\n let j = 0;\n j < variable_obj.function_called.parameters_list.length;\n j++\n ) {\n parameters_menu +=\n '<div class=\"render_style_param parameter_' + j + '\"></div>';\n if (j + 1 != variable_obj.function_called.parameters_list.length) {\n parameters_menu += \" , \";\n }\n }\n parameters_menu += \"<span> ) </span></div>\";\n\n parameters_menu = $(parameters_menu);\n\n dom_object.append(parameters_menu);\n\n for (\n let j = 0;\n j < variable_obj.function_called.parameters_list.length;\n j++\n ) {\n renderMenu(\n command,\n variable_obj.parameters_list[j],\n parameters_menu.find(\".parameter_\" + j),\n function_obj,\n 2,\n expression_element\n );\n }\n\n let context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n context_menu.insertAfter(parameters_menu);\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n console.log(\"S2\");\n if ($selectedItem.data(\"clear\")) {\n console.log(\"PP2\");\n dom_object.text(\"\");\n\n variable_obj.content = null;\n variable_obj.row = null;\n variable_obj.column = null;\n delete variable_obj.function_called;\n delete variable_obj.parameters_list;\n\n renderMenu(\n command,\n variable_obj,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n variable_obj,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n }\n } else if (variable_obj.content.type) {\n let variable_render = \"\";\n\n if (variable_obj.content.dimensions == 1 && variable_obj.dimensions != 1) {\n variable_render =\n '<div class=\"variable_rendered\"> <span class=\"var_name\">' +\n variable_obj.content.name +\n \"</span>\";\n\n variable_render +=\n ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n\n variable_render += \"</div>\";\n\n variable_render = $(variable_render);\n\n dom_object.append(variable_render);\n\n let context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n variable_render.append(context_menu);\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n console.log(\"S3\");\n if ($selectedItem.data(\"clear\")) {\n console.log(\"PP3\");\n dom_object.text(\"\");\n\n variable_obj.content = null;\n variable_obj.row = null;\n variable_obj.column = null;\n delete variable_obj.function_called;\n delete variable_obj.parameters_list;\n\n renderMenu(\n command,\n variable_obj,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n variable_obj,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n\n if (!variable_obj.column) {\n variable_obj.column = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n }\n\n variableValueMenuCode(\n command,\n variable_obj.column,\n $(variable_render.find(\".column_container\")),\n function_obj,\n menu_var_or_value,\n expression_element\n );\n } else if (\n variable_obj.content.dimensions == 2 &&\n variable_obj.dimensions != 2\n ) {\n variable_render =\n '<div class=\"variable_rendered\"> <span class=\"var_name\">' +\n variable_obj.content.name +\n \"</span>\";\n\n variable_render +=\n ' <span>[ </span> <div class=\"row_container\"></div> <span> ]</span>';\n variable_render +=\n ' <span>[ </span> <div class=\"column_container\"></div> <span> ] </span>';\n\n variable_render += \"</div>\";\n\n variable_render = $(variable_render);\n\n dom_object.append(variable_render);\n\n let context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n variable_render.append(context_menu);\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n console.log(\"S4\");\n if ($selectedItem.data(\"clear\")) {\n console.log(\"PP4\");\n dom_object.text(\"\");\n\n variable_obj.content = null;\n variable_obj.row = null;\n variable_obj.column = null;\n delete variable_obj.function_called;\n delete variable_obj.parameters_list;\n\n renderMenu(\n command,\n variable_obj,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n variable_obj,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n\n if (!variable_obj.column) {\n variable_obj.column = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n }\n if (!variable_obj.row) {\n variable_obj.row = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n }\n\n variableValueMenuCode(\n command,\n variable_obj.row,\n $(variable_render.find(\".row_container\")),\n function_obj,\n menu_var_or_value,\n expression_element\n );\n variableValueMenuCode(\n command,\n variable_obj.column,\n $(variable_render.find(\".column_container\")),\n function_obj,\n menu_var_or_value,\n expression_element\n );\n } else {\n variable_render =\n '<div class=\"variable_rendered\"> <span class=\"var_name\">' +\n variable_obj.content.name +\n \"</span>\";\n\n variable_render += \"</div>\";\n\n variable_render = $(variable_render);\n\n dom_object.append(variable_render);\n\n let context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution && !dom_object.hasClass('var_attributed')) {\n console.log('dom_object6');\n console.log(dom_object);\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n variable_render.append(context_menu);\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n console.log(\"S5\");\n if ($selectedItem.data(\"clear\")) {\n console.log(\"PP5\");\n dom_object.text(\"\");\n\n variable_obj.content = null;\n variable_obj.row = null;\n variable_obj.column = null;\n\n delete variable_obj.function_called;\n delete variable_obj.parameters_list;\n\n renderMenu(\n command,\n variable_obj,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n variable_obj,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n }\n } else {\n let variable_render;\n\n variable_render =\n '<div class=\"variable_rendered\"> <span class=\"var_name\">';\n\n if (isNaN(variable_obj.content)) {\n variable_render += variable_obj.content.replaceAll(\" \", \"&nbsp;\");\n } else {\n variable_render += variable_obj.content;\n }\n\n variable_render += \"</span>\";\n variable_render += \"</div>\";\n\n variable_render = $(variable_render);\n\n dom_object.append(variable_render);\n\n var context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n if (variable_obj.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n context_menu.insertAfter(variable_render);\n }\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n console.log(\"S6\");\n if ($selectedItem.data(\"clear\")) {\n console.log(\"PP6\");\n dom_object.text(\"\");\n\n variable_obj.content = null;\n variable_obj.row = null;\n variable_obj.column = null;\n\n delete variable_obj.function_called;\n delete variable_obj.parameters_list;\n\n dom_object.find(\".value_rendered\").remove();\n dom_object.find(\".context_menu_clear\").remove();\n dom_object.find(\".width-dynamic-minus\").remove();\n\n renderMenu(\n command,\n variable_obj,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n variable_obj,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n\n variable_render.on(\"click\", function (e) {\n variable_render.remove();\n variable_render.empty();\n variable_render.remove();\n dom_object.empty();\n dom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\n openInputToValue(\n command,\n variable_obj,\n dom_object,\n menu_var_or_value,\n function_obj,\n expression_element\n );\n });\n }\n}\n\nfunction addIVProgFunctionsToMenu (\n function_obj,\n menu_var_or_value,\n ref_object,\n expression_element\n) {\n const sub_menu = menu_var_or_value.find(\".menu_only_functions\");\n sub_menu.append(\n '<div class=\"divider\"></div><div class=\"header\">' +\n LocalizedStrings.getUI(\"text_header_ivprog_functions\") +\n \"</div>\"\n );\n sub_menu.append(\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_menu_functions_math\") +\n '<div class=\"menu menu_math_functions\"></div></div>'\n );\n sub_menu.append(\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_menu_functions_text\") +\n '<div class=\"menu menu_text_functions\"></div></div>'\n );\n sub_menu.append(\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_menu_functions_array\") +\n '<div class=\"menu menu_arrangement_functions\"></div></div>'\n );\n sub_menu.append(\n '<div class=\"item\"><i class=\"dropdown icon\"></i>' +\n LocalizedStrings.getUI(\"text_menu_functions_conversion\") +\n '<div class=\"menu menu_conversion_functions\"></div></div>'\n );\n\n // Insert Math functions:\n for (let i = 0; i < window.system_functions.length; i++) {\n const t = $('<div class=\"item\"></div>');\n t.data(\"function_reference\", window.system_functions[i]);\n t.data(\"option\", VAR_OR_VALUE_TYPES.only_function);\n t.text(\n LocalizedStrings.translateInternalFunction(\n window.system_functions[i].identifier\n )\n );\n\n switch (window.system_functions[i].category) {\n case Models.SYSTEM_FUNCTIONS_CATEGORIES.math:\n sub_menu.find(\".menu_math_functions\").append(t);\n break;\n case Models.SYSTEM_FUNCTIONS_CATEGORIES.text:\n sub_menu.find(\".menu_text_functions\").append(t);\n break;\n case Models.SYSTEM_FUNCTIONS_CATEGORIES.arrangement:\n sub_menu.find(\".menu_arrangement_functions\").append(t);\n break;\n case Models.SYSTEM_FUNCTIONS_CATEGORIES.conversion:\n sub_menu.find(\".menu_conversion_functions\").append(t);\n break;\n }\n }\n}\n\nfunction addFunctionsToMenu (\n function_obj,\n menu_var_or_value,\n ref_object,\n expression_element\n) {\n const sub_menu = menu_var_or_value.find(\".menu_only_functions\");\n sub_menu.text(\"\");\n\n for (let i = 0; i < window.program_obj.functions.length; i++) {\n const temp = $(\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_function +\n '\">' +\n window.program_obj.functions[i].name +\n \" </div>\"\n );\n temp.data(\"function_reference\", window.program_obj.functions[i]);\n sub_menu.append(temp);\n }\n}\n\nfunction addVariablesToMenu (\n function_obj,\n menu_var_or_value,\n ref_object,\n expression_element\n) {\n const sub_menu = menu_var_or_value.find(\".menu_only_vars\");\n sub_menu.text(\"\");\n let is_there = false;\n\n if (window.program_obj.globals) {\n if (ref_object.include_constant) {\n for (var i = 0; i < window.program_obj.globals.length; i++) {\n var temp = $(\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_variable +\n '\">' +\n window.program_obj.globals[i].name +\n \" </div>\"\n );\n temp.data(\"variable_reference\", window.program_obj.globals[i]);\n sub_menu.append(temp);\n is_there = true;\n }\n } else {\n for (var i = 0; i < window.program_obj.globals.length; i++) {\n if (!window.program_obj.globals[i].is_constant) {\n var temp = $(\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_variable +\n '\">' +\n window.program_obj.globals[i].name +\n \" </div>\"\n );\n temp.data(\"variable_reference\", window.program_obj.globals[i]);\n sub_menu.append(temp);\n is_there = true;\n }\n }\n }\n }\n\n if (function_obj.parameters_list) {\n for (var i = 0; i < function_obj.parameters_list.length; i++) {\n var temp = $(\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_variable +\n '\">' +\n function_obj.parameters_list[i].name +\n \" </div>\"\n );\n temp.data(\"variable_reference\", function_obj.parameters_list[i]);\n sub_menu.append(temp);\n is_there = true;\n }\n }\n\n if (function_obj.variables_list) {\n for (var i = 0; i < function_obj.variables_list.length; i++) {\n var temp = $(\n '<div class=\"item\" data-option=\"' +\n VAR_OR_VALUE_TYPES.only_variable +\n '\">' +\n function_obj.variables_list[i].name +\n \" </div>\"\n );\n temp.data(\"variable_reference\", function_obj.variables_list[i]);\n sub_menu.append(temp);\n is_there = true;\n }\n }\n if (!is_there) {\n sub_menu.append(\n $(\n '<div class=\"header\">' +\n LocalizedStrings.getUI(\"text_no_variable\") +\n \"</div>\"\n )\n );\n sub_menu.append(\n $(\n '<div class=\"item disabled\">' +\n LocalizedStrings.getUI(\"text_no_variable_instruction\") +\n \"</div>\"\n )\n );\n }\n}\n\nfunction addHandlers (\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n expression_element\n) {\n if (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n menu_var_or_value.dropdown({\n onChange: function (value, text, $selectedItem) {\n console.log(\"S7\");\n dom_object.find(\".var_name\").remove();\n switch ($selectedItem.data(\"option\")) {\n case VAR_OR_VALUE_TYPES.only_function:\n openInputToFunction(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $($selectedItem).data(\"function_reference\"),\n expression_element\n );\n break;\n\n case VAR_OR_VALUE_TYPES.only_value:\n openInputToValue(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n expression_element\n );\n break;\n\n case VAR_OR_VALUE_TYPES.only_variable:\n openInputToVariable(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $($selectedItem).data(\"variable_reference\"),\n expression_element\n );\n break;\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n\n if (command.type == Models.COMMAND_TYPES.repeatNtimes) {\n RepeatNTimesManagement.manageExpressionElements(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n }\n\n dom_object\n .find(\".width-dynamic\")\n .on(\"input\", function () {\n const inputWidth = $(this).textWidth() + 10;\n $(this).focus();\n\n const tmpStr = $(this).val();\n $(this).val(\"\");\n $(this).val(tmpStr);\n\n $(this).css({\n width: inputWidth,\n });\n })\n .trigger(\"input\");\n\n if (command.type == Models.COMMAND_TYPES.comment) {\n dom_object.parent().on(\"click\", function (e) {\n dom_object.find(\".value_rendered\").remove();\n dom_object.find(\".value_rendered\").empty();\n dom_object.find(\".value_rendered\").remove();\n dom_object.empty();\n dom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\n openInputToValue(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n expression_element\n );\n });\n }\n}\n\nfunction openInputToFunction (\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n function_selected,\n expression_element\n) {\n ref_object.function_called = function_selected;\n ref_object.parameters_list = [];\n\n if (\n function_selected.parameters_list != null &&\n function_selected.parameters_list.length > 0\n ) {\n menu_var_or_value.find(\".text\").text(\" \");\n dom_object.find(\".menu_var_or_value_dom\").remove();\n\n var parameters_menu;\n if (function_selected.name) {\n parameters_menu =\n '<div class=\"parameters_function_called\"> ' +\n function_selected.name +\n \" <span> ( </span>\";\n } else {\n parameters_menu =\n '<div class=\"parameters_function_called\"> <i>' +\n LocalizedStrings.translateInternalFunction(\n function_selected.identifier,\n function_selected.category\n ) +\n \"</i> <span> ( </span>\";\n }\n for (var j = 0; j < function_selected.parameters_list.length; j++) {\n parameters_menu +=\n '<div class=\"render_style_param parameter_' + j + '\"></div>';\n if (j + 1 != function_selected.parameters_list.length) {\n parameters_menu += \" , \";\n }\n }\n parameters_menu += \"<span> ) </span></div>\";\n\n parameters_menu = $(parameters_menu);\n\n dom_object.append(parameters_menu);\n\n for (var j = 0; j < function_selected.parameters_list.length; j++) {\n var temp;\n if (function_selected.parameters_list[j].dimensions > 0) {\n temp = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.variable_and_function,\n null,\n null,\n null,\n true,\n function_selected.parameters_list[j].dimensions\n );\n } else {\n temp = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n }\n ref_object.parameters_list.push(temp);\n renderMenu(\n command,\n temp,\n parameters_menu.find(\".parameter_\" + j),\n function_obj,\n 2,\n expression_element\n );\n }\n\n var context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n context_menu.insertAfter(dom_object.find(\".parameters_function_called\"));\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n console.log(\"S8\");\n if ($selectedItem.data(\"clear\")) {\n console.log(\"PP7\");\n dom_object.text(\"\");\n\n ref_object.content = null;\n ref_object.row = null;\n ref_object.column = null;\n delete ref_object.function_called;\n delete ref_object.parameters_list;\n\n renderMenu(\n command,\n ref_object,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n } else {\n menu_var_or_value.find(\".text\").text(\" \");\n dom_object.find(\".menu_var_or_value_dom\").remove();\n\n var parameters_menu;\n\n if (function_selected.name) {\n parameters_menu =\n '<div class=\"parameters_function_called\"> ' +\n function_selected.name +\n \" <span> ( </span>\";\n } else {\n parameters_menu =\n '<div class=\"parameters_function_called\"> <i>' +\n LocalizedStrings.translateInternalFunction(\n function_selected.identifier,\n function_selected.category\n ) +\n \"</i> <span> ( </span>\";\n }\n\n parameters_menu += \"<span> ) </span></div>\";\n\n parameters_menu = $(parameters_menu);\n\n dom_object.append(parameters_menu);\n\n var context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n context_menu.insertAfter(dom_object.find(\".parameters_function_called\"));\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n console.log(\"S9\");\n if ($selectedItem.data(\"clear\")) {\n console.log(\"PP8\");\n dom_object.text(\"\");\n\n ref_object.content = null;\n ref_object.row = null;\n ref_object.column = null;\n delete ref_object.function_called;\n delete ref_object.parameters_list;\n\n renderMenu(\n command,\n ref_object,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n }\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n AttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj);\n }*/\n}\n\nfunction openInputToVariable (\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n variable_selected,\n expression_element\n) {\n ref_object.content = variable_selected;\n\n menu_var_or_value.find(\".text\").text(\" \");\n dom_object.find(\".menu_var_or_value_dom\").remove();\n\n let variable_render =\n '<div class=\"variable_rendered\"> <span class=\"var_name\">' +\n variable_selected.name +\n \"</span>\";\n\n if (variable_selected.dimensions == 1 && ref_object.dimensions != 1) {\n variable_render +=\n ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n }\n if (variable_selected.dimensions == 2 && ref_object.dimensions != 2) {\n variable_render +=\n ' <span>[ </span> <div class=\"row_container\"></div> <span> ]</span> ';\n variable_render +=\n ' <span>[ </span> <div class=\"column_container\"></div> <span> ]</span>';\n }\n\n variable_render += \"</div>\";\n\n variable_render = $(variable_render);\n\n dom_object.append(variable_render);\n\n if (variable_selected.dimensions == 1 && ref_object.dimensions != 1) {\n ref_object.column = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n renderMenu(\n command,\n ref_object.column,\n variable_render.find(\".column_container\"),\n function_obj,\n 2,\n expression_element\n );\n }\n if (variable_selected.dimensions == 2 && ref_object.dimensions != 2) {\n ref_object.row = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n renderMenu(\n command,\n ref_object.row,\n variable_render.find(\".row_container\"),\n function_obj,\n 2,\n expression_element\n );\n\n ref_object.column = new Models.VariableValueMenu(\n VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n renderMenu(\n command,\n ref_object.column,\n variable_render.find(\".column_container\"),\n function_obj,\n 2,\n expression_element\n );\n }\n\n let context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution && !dom_object.hasClass('var_attributed')) {\n console.log(\"dom_object 10: \");\n console.log(dom_object);\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n context_menu.insertAfter(dom_object.find(\".variable_rendered\"));\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n console.log(\"S10\");\n if ($selectedItem.data(\"clear\")) {\n console.log(\"PP9\");\n dom_object.text(\"\");\n\n ref_object.content = null;\n ref_object.row = null;\n ref_object.column = null;\n\n delete ref_object.function_called;\n delete ref_object.parameters_list;\n\n renderMenu(\n command,\n ref_object,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n\n if (command.type == Models.COMMAND_TYPES.repeatNtimes) {\n RepeatNTimesManagement.manageClearExpressionElements(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n AttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj, variable_selected);\n }*/\n}\n\nfunction openInputToValue (\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n expression_element\n) {\n if (ref_object.content == null) {\n ref_object.content = \"\";\n }\n\n menu_var_or_value.find(\".text\").text(\" \");\n const field = $(\n '<input type=\"text\" size=\"2\" class=\"width-dynamic-minus\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />'\n );\n field.insertBefore(dom_object.find(\".menu_var_or_value_dom\"));\n\n\n field.on('input', function() {\n var input_field = $(this);\n var inputWidth = input_field.textWidth()+10;\n inputWidth = inputWidth<50?50:inputWidth;\n input_field.css({\n width: inputWidth\n })\n }).trigger('input');\n\n const rendered = $('<div class=\"value_rendered\"></div>');\n rendered.insertBefore(field);\n\n field.focus();\n field.val(ref_object.content);\n\n let context_menu =\n '<div class=\"ui dropdown context_menu_clear\"><div class=\"text\"></div><i class=\"dropdown icon\"></i><div class=\"menu\">';\n context_menu +=\n '<div class=\"item\" data-clear=\"true\">' +\n LocalizedStrings.getUI(\"btn_clear\") +\n \"</div>\";\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n context_menu += '<div class=\"item\"><i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('text_change');\n context_menu += '<div class=\"menu\">';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.exp_op_exp+'\">EXP OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.op_exp+'\">OP EXP</div>';\n context_menu += '<div class=\"item\" data-exp=\"'+Models.EXPRESSION_ELEMENTS.par_exp_par+'\">( EXP )</div>';\n context_menu += '</div></div>';\n }*/\n\n context_menu += \"</div></div>\";\n\n context_menu = $(context_menu);\n\n dom_object.find(\".menu_var_or_value_dom\").remove();\n\n if (ref_object.variable_and_value != VAR_OR_VALUE_TYPES.only_value) {\n context_menu.insertAfter(field);\n }\n\n context_menu.dropdown({\n onChange: function (value, text, $selectedItem) {\n if ($selectedItem.data(\"clear\")) {\n dom_object.text(\"\");\n\n dom_object.find(\".value_rendered\").remove();\n dom_object.find(\".context_menu_clear\").remove();\n dom_object.find(\".width-dynamic-minus\").remove();\n\n ref_object.content = null;\n ref_object.row = null;\n ref_object.column = null;\n\n delete ref_object.function_called;\n delete ref_object.parameters_list;\n\n renderMenu(\n command,\n ref_object,\n dom_object,\n function_obj,\n 2,\n expression_element\n );\n }\n\n if ($selectedItem.data(\"exp\")) {\n AttribuitionsManagement.manageExpressionElements(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n $selectedItem,\n expression_element\n );\n }\n },\n selectOnKeydown: false,\n });\n\n dom_object.find(\".width-dynamic-minus\").focusout(function () {\n /*if (\n $(this)\n .val()\n .trim()\n ) {\n ref_object.content = $(this)\n .val()\n .trim();\n }*/\n ref_object.content = $(this)\n .val();\n\n if (isNaN(ref_object.content)) {\n rendered.html(ref_object.content.replaceAll(\" \", \"&nbsp;\"));\n } else {\n rendered.text(ref_object.content);\n }\n $(this).remove();\n });\n\n dom_object.find(\".width-dynamic-minus\").on(\"keydown\", function (e) {\n const code = e.keyCode || e.which;\n if (code == 13) {\n /*if (\n $(this)\n .val()\n .trim()\n ) {\n ref_object.content = $(this)\n .val()\n .trim();\n }*/\n ref_object.content = $(this)\n .val();\n\n if (isNaN(ref_object.content)) {\n rendered.html(ref_object.content.replaceAll(\" \", \"&nbsp;\"));\n } else {\n rendered.text(ref_object.content);\n }\n\n $(this).remove();\n }\n if (code == 27) {\n if (isNaN(ref_object.content)) {\n rendered.html(ref_object.content.replaceAll(\" \", \"&nbsp;\"));\n } else {\n rendered.text(ref_object.content);\n }\n\n $(this).remove();\n }\n });\n\n if (command.type == Models.COMMAND_TYPES.comment) {\n /*rendered.parent().on('click', function(e) {\n rendered.parent().off();\n console.log(\"TTT14\");\n rendered.remove();\n rendered.empty();\n rendered.remove();\n dom_object.empty();\n dom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\n openInputToValue(command, ref_object, dom_object, menu_var_or_value, function_obj, expression_element)\n });*/\n }\n\n rendered.on(\"click\", function (e) {\n console.log(\"TTT2\");\n rendered.empty();\n rendered.remove();\n dom_object.empty();\n dom_object.append('<span class=\"menu_var_or_value_dom\"> </span>');\n\n openInputToValue(\n command,\n ref_object,\n dom_object,\n menu_var_or_value,\n function_obj,\n expression_element\n );\n });\n\n /*if (command.type == Models.COMMAND_TYPES.attribution) {\n AttribuitionsManagement.renderMenuOperations(command, ref_object, dom_object, menu_var_or_value, function_obj);\n }*/\n}\n\n$.fn.textWidth = function (text, font) {\n if (!$.fn.textWidth.fakeEl)\n $.fn.textWidth.fakeEl = $(\"<span>\")\n .hide()\n .appendTo(document.body);\n\n $.fn.textWidth.fakeEl\n .text(text || this.val() || this.text() || this.attr(\"placeholder\"))\n .css(\"font\", font || this.css(\"font\"));\n\n return $.fn.textWidth.fakeEl.width();\n};\n","import { LocalizedStrings } from '../../services/localizedStringsService';\nimport * as CommandsManagement from '../commands';\nimport * as ConditionalExpressionManagement from './conditional_expression';\nimport * as ContextualizedMenu from './contextualized_menu';\nimport * as GenericExpressionManagement from './generic_expression';\n\nexport function createFloatingCommand () {\n\treturn $('<div class=\"ui whiletrue created_element\"> <i class=\"ui icon small sync\"></i> <span> ' + LocalizedStrings.getUI('text_command_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_command_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\t//ConditionalExpressionManagement.renderExpression(command, command.expression, function_obj, el.find('.conditional_expression'));\n\n\tGenericExpressionManagement.renderExpression(command, function_obj, el.find('.conditional_expression'), command.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 * as Models from \"../ivprog_elements\";\nimport { LocalizedStrings } from \"../../services/localizedStringsService\";\nimport * as VariableValueMenu from \"./variable_value_menu\";\nimport * as VariableValueMenuManagement from \"./variable_value_menu\";\nimport * as CommandsManagement from \"../commands\";\nimport * as GenericExpressionManagement from \"./generic_expression\";\n\nexport function createFloatingCommand () {\n return $(\n '<div class=\"ui writer created_element\"> <i class=\"ui icon small upload\"></i> <span> ' +\n LocalizedStrings.getUI(\"text_command_write\") +\n \" var </span></div>\"\n );\n}\n\nexport function renderCommand (command, function_obj) {\n const ret = `<div class=\"ui writer command_container\">\n <i class=\"ui icon small upload command_drag\"></i>\n <i class=\"ui icon times red button_remove_command\"></i>\n <span class=\"span_command_spec\">${LocalizedStrings.getUI(\n \"text_command_write\"\n )}\n ( </span><div class=\"all_elements_write\"></div>\n <span class=\"close_parentheses span_command_spec\">)</span>\n <img data-state=\"${command.newline ? \"on\" : \"false\"}\" src=\"${\n command.newline ? \"img/new_line.svg\" : \"img/no_new_line.svg\"\n }\" class=\"ivprog_newline_btn\"/>\n </div>`;\n const el = $(ret);\n el.data(\"command\", command);\n\n //renderExpression (command, function_obj, div_to_render, expression_array)\n\n GenericExpressionManagement.renderExpression(\n command,\n function_obj,\n el.find(\".all_elements_write\"),\n command.content\n );\n\n /*for (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 addHandlers(command, function_obj, el);\n return el;\n}\n\nfunction addHandlersManager (\n command,\n _function_obj,\n _writer_dom,\n item_div,\n content_element\n) {\n item_div.find(\".times\").on(\"click\", function () {\n for (let i = 0; i < command.content.length; i++) {\n if (command.content[i] == content_element) {\n delete command.content[i];\n command.content.splice(i, 1);\n\n item_div.children().off();\n item_div.off();\n item_div.fadeOut();\n\n if (command.content.length > 0) {\n item_div.next(\".icon_add_item_to_writer\").fadeOut();\n }\n break;\n }\n }\n });\n}\n\nfunction addHandlers (command, function_obj, writer_dom) {\n writer_dom.find(\".button_remove_command\").on(\"click\", function () {\n if (CommandsManagement.removeCommand(command, function_obj, writer_dom)) {\n writer_dom.fadeOut(400, function () {\n writer_dom.remove();\n });\n }\n });\n\n Sortable.create(writer_dom.find(\".all_elements_write\")[0], {\n handle: \".ellipsis\",\n animation: 100,\n ghostClass: \"ghost\",\n group: \"writer_\" + Math.floor(Math.random() * 10000000),\n draggable: \".div_parent_handler\",\n onEnd: function (evt) {\n command.content.splice(\n evt.newIndex,\n 0,\n command.content.splice(evt.oldIndex, 1)[0]\n );\n\n writer_dom.empty();\n writer_dom.replaceWith(renderCommand(command, function_obj));\n },\n });\n // Attach event handles for the newline button\n const newlineBtn = writer_dom.find(\".ivprog_newline_btn\");\n newlineBtn.on(\"click\", function () {\n const state = this.dataset.state;\n if (state === \"on\") {\n this.dataset.state = \"off\";\n command.newline = false;\n this.setAttribute(\"src\", \"img/no_new_line.svg\");\n } else {\n this.dataset.state = \"on\";\n command.newline = true;\n this.setAttribute(\"src\", \"img/new_line.svg\");\n }\n writer_dom.data(\"command\", command);\n setPopup(newlineBtn, command.newline);\n });\n // Attach jquery popup\n setPopup(newlineBtn, command.newline);\n}\n\nfunction setPopup (element, state) {\n if (element.popup(\"exists\")) {\n element.popup(\"destroy\");\n }\n const content = state\n ? LocalizedStrings.getUI(\"write_command_newline_on\")\n : LocalizedStrings.getUI(\"write_command_newline_off\");\n element.popup({\n content: content,\n delay: {\n show: 750,\n hide: 0,\n },\n });\n}\n\nfunction _addHandlerIconAdd (\n dom_object,\n command,\n function_obj,\n insert_after = false,\n after_which = null\n) {\n const icon_add_item = $(\n '<i class=\"ui icon plus square outline icon_add_item_to_writer\"></i> '\n );\n if (!insert_after) {\n dom_object.append(icon_add_item);\n } else {\n icon_add_item.insertAfter(after_which);\n }\n\n icon_add_item.on(\"click\", function (_event) {\n const div_parent_with_handler = $(\n '<div class=\"div_parent_handler\" style=\"display:none;\"></div>'\n );\n const new_div_item = $('<div class=\"var_value_menu_div\"></div>');\n div_parent_with_handler.append(\n $('<i class=\"ui icon ellipsis vertical inverted handler\"></i>')\n );\n div_parent_with_handler.append(new_div_item);\n div_parent_with_handler.append(\n $('<i class=\"white inverted icon times handler\"></i>')\n );\n div_parent_with_handler.insertAfter(icon_add_item);\n\n const new_related_menu = new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n\n VariableValueMenu.renderMenu(\n command,\n new_related_menu,\n new_div_item,\n function_obj\n );\n\n addHandlerIconAdd(\n dom_object,\n command,\n function_obj,\n true,\n div_parent_with_handler\n );\n\n addHandlersManager(\n command,\n function_obj,\n dom_object,\n div_parent_with_handler,\n new_related_menu\n );\n let pos = 1;\n dom_object.find(\".icon_add_item_to_writer\").each(function () {\n if ($(this).get(0) === icon_add_item.get(0)) {\n command.content.splice(pos, 0, new_related_menu);\n } else {\n pos++;\n }\n });\n if (command.content.length == 1) {\n icon_add_item.remove();\n }\n div_parent_with_handler.fadeIn();\n });\n}\n\nexport function addContent (\n command,\n _ref_object,\n dom_object,\n _menu_var_or_value,\n function_obj,\n _ref_object_content\n) {\n if (dom_object.hasClass(\"var_value_menu_div\")) {\n const icon_add_item = $(\n '<i class=\"ui icon plus square outline icon_add_item_to_writer\"></i> '\n );\n icon_add_item.insertAfter(dom_object);\n\n icon_add_item.on(\"click\", function (_event) {\n const div_parent_with_handler = $(\n '<div class=\"div_parent_handler\"></div>'\n );\n div_parent_with_handler.append(\n $('<i class=\"ui icon ellipsis vertical inverted handler\"></i>')\n );\n div_parent_with_handler.append(new_div_item);\n div_parent_with_handler.append(\n $('<i class=\"white inverted icon times handler\"></i>')\n );\n\n div_parent_with_handler.insertAfter(icon_add_item);\n const new_related_menu = new Models.VariableValueMenu(\n VariableValueMenuManagement.VAR_OR_VALUE_TYPES.all,\n null,\n null,\n null,\n true\n );\n\n VariableValueMenu.renderMenu(\n command,\n new_related_menu,\n new_div_item,\n function_obj\n );\n\n addHandlersManager(\n command,\n function_obj,\n dom_object,\n div_parent_with_handler,\n new_related_menu\n );\n\n command.content.push(new_related_menu);\n\n if (command.content.length == 1) {\n icon_add_item.remove();\n }\n });\n }\n}\n","import { 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 { 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 { registerUserEvent, ActionTypes } from \"./../services/userLog\";\nimport VersionInfo from './../../.ima_version.json';\nimport * as TextEditor from \"./text_editor\";\nimport { isValidIdentifier } from \"./../util/utils\";\nimport { Modes } from '../processor/modes';\n\nvar counter_new_functions = 0;\nvar counter_new_parameters = 0;\nvar ivprog_version = VersionInfo.version;\n\nconst globalChangeListeners = [];\nconst functionsChangeListeners = [];\nlet proc = null;\nlet domConsole = null;\nlet _testCases = [];\nlet isRunning = false;\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));\nwindow.system_functions.push(new Models.SystemFunction('$rand', Types.REAL, 0, [],\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.CHAR, 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));\nwindow.system_functions.push(new Models.SystemFunction('$castChar', Types.CHAR, 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\tconst 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 registerUserEvent(new_function.name, ActionTypes.INSERT_FUNCTION);\n\n // var newe = renderFunction(new_function);\n renderFunction(new_function);\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 const 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 registerUserEvent(function_obj.name, ActionTypes.INSERT_FUNCTION_PARAM, new_parameter.name, Types.INTEGER, 0);\n //var newe = renderParameter(function_obj, new_parameter, function_container);\n renderParameter(function_obj, new_parameter, function_container);\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 registerUserEvent(function_obj.name, ActionTypes.CHANGE_FUNCTION_RETURN, new_type, new_dimensions);\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 registerUserEvent(function_obj.name, ActionTypes.REMOVE_FUNCTION);\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 registerUserEvent(function_obj.name, ActionTypes.INSERT_COMMAND, $(this).data('command'), '/', 0);\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 == 1) {\n ret += '<div class=\"text\">'+ LocalizedStrings.getUI(\"vector\") +': '+ LocalizedStrings.getUI(`type_${function_obj.return_type.toLowerCase()}`);\n ret += ' [ ] </div>';\n } else if (function_obj.return_dimensions == 2) {\n ret += '<div class=\"text\">'+ LocalizedStrings.getUI(\"matrix\") +': '+ LocalizedStrings.getUI(`type_${function_obj.return_type.toLowerCase()}`);\n ret += ' [ ] [ ] </div>';\n } else {\n ret += '<div class=\"text\">'+LocalizedStrings.getUI(`type_${function_obj.return_type.toLowerCase()}`)+'</div>';\n }\n\n ret += '<div class=\"menu\">';\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(`type_${tm.toLowerCase()}`)+'</div>';\n }\n\n ret += '<div class=\"item ' + (function_obj.return_dimensions == 1 ? ' selected ' : '') + '\">'\n + '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('vector')\n + '<div class=\"menu\">';\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n\n ret += '<div class=\"item ' + (function_obj.return_type == tm.toLowerCase() && function_obj.return_dimensions == 1 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n ret += '</div></div>';\n\n\n ret += '<div class=\"item ' + (function_obj.return_dimensions == 2 ? ' selected ' : '') + '\">'\n + '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('matrix')\n + '<div class=\"menu\">';\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n\n ret += '<div class=\"item ' + (function_obj.return_type == tm.toLowerCase() && function_obj.return_dimensions == 2 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('matrix')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n ret += '</div></div>';\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('type_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;\"> <div class=\"ui icon button purple\"> ';\n\n appender += '<i class=\"icons\"><i class=\"icon superscript\" style=\"margin-top: -2px;margin-bottom: 2px;margin-left: 1px;margin-right: 1px;\"></i><i class=\"corner add icon inverted\" style=\"font-size: 9px;padding-top: 6px;padding-left: 9px;\"></i></i>';\n\n appender += '</div></div>';\n\n appender += '<div class=\"ui top attached segment variables_list_div\"></div>';\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 += '<div class=\"ui icon button dropdown menu_commands orange\" > '\n + '<i class=\"icons\"><i class=\"icon code\" style=\"margin-top: -1px;margin-bottom: 1px;margin-right: 0px;\"></i><i class=\"corner add icon inverted\" style=\"font-size: 9px;padding-top: 6px;padding-left: 9px;\"></i></i>'\n + '<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_hide_function\"),\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 const nodes = Array.prototype.slice.call( $('.all_functions').children() );\n let function_index;\n var start_index;\n let function_obj;\n $(evento_drag.item).parentsUntil(\".all_functions\").each(function (index) {\n const ref = $(this);\n if (ref.hasClass('function_div')) {\n function_index = nodes.indexOf(this);\n start_index = index;\n function_obj = ref;\n }\n });\n\n const path_target = [];\n $(evento_drag.item).parentsUntil(\".all_functions\").each(function () {\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 const 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 const 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\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 - 1, 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 console.log(\"existe alguma coisa dentro do bloco, index: \", evento_drag.newIndex);\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 \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\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 registerUserEvent(function_obj.name, ActionTypes.MOVE_COMMAND, $(evt.item).data('command').type, '/', 'from: ' + evt.oldIndex + ' to: ' + evt.newIndex);\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 console.error(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 domConsole = new DOMConsole(\"ivprog-term-div\");\n domConsole.hide();\n $(document.getElementById(\"ivprog-term-div\")).draggable()\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', function () {\n showStopButton();\n runCode();\n });\n\n $('#stop_button').on('click', function () {\n showRunButton();\n stopExecution();\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 is_iassign = true;\n runCodeAssessment();\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 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\nexport function setTestCases (testCases) {\n _testCases = testCases;\n}\n\nexport function getTestCases () {\n // Deep clone of test cases to avoid unauthorized modification\n // TODO: It may be not possible to use this once custom test are fully implemented \n return JSON.parse(JSON.stringify(_testCases));\n}\n\nvar is_iassign = false;\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 if (isRunning) {\n // cannot run assessment or it's already running\n return -1;\n }\n \n let strCode = null;\n\n is_iassign = false;\n\n window.studentGrade = null;\n\n if (settingsProgrammingTypes == \"textual\") {\n strCode = TextEditor.getCode();\n } else {\n strCode = CodeManagement.generate();\n }\n\n if (strCode == null) {\n // No code, so no assessment\n return -1;\n }\n\n toggleConsole(true);\n\n try {\n const data = SemanticAnalyser.analyseFromSource(strCode);\n isRunning = true;\n const runner = new IVProgAssessment(data, _testCases, domConsole);\n runner.runTest().then(grade => {\n if (!is_iassign) {\n parent.getEvaluationCallback(grade);\n } else {\n is_iassign = false;\n }\n isRunning = false;\n }).catch( err => {\n console.log(err);\n isRunning = false;\n });\n } catch (error) {\n isRunning = false;\n domConsole.err(error.message);\n console.log(error);\n if (!is_iassign) {\n parent.getEvaluationCallback(0);\n } else {\n is_iassign = false;\n }\n }\n return 0;\n}\n\nfunction runCode () {\n if (isRunning) {\n return;\n }\n let strCode = null;\n\n if (settingsProgrammingTypes == \"textual\") {\n strCode = TextEditor.getCode();\n } else {\n strCode = CodeManagement.generate();\n }\n\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 data = SemanticAnalyser.analyseFromSource(strCode);\n proc = new IVProgProcessor(data);\n proc.registerInput(domConsole);\n proc.registerOutput(domConsole);\n $(\"#ivprog-term\").addClass('ivprog-term-active');\n isRunning = true;\n proc.interpretAST().then( _ => {\n scheduleCall(() => {\n if(domConsole.pending_writes.length == 0) {\n if(proc.mode === Modes.ABORT) {\n domConsole.info(LocalizedStrings.getMessage(\"aborted_execution\")); \n } else {\n domConsole.info(LocalizedStrings.getMessage(\"success_execution\"));\n }\n $(\"#ivprog-term\").removeClass('ivprog-term-active');\n isRunning = false;\n proc = null;\n showRunButton();\n return true;\n }\n return false;\n },100);\n }).catch(err => {\n scheduleCall(() => {\n if(domConsole.pending_writes.length == 0) {\n if(err instanceof Error) {\n domConsole.err(err.message);\n } else {\n domConsole.err(err);\n }\n $(\"#ivprog-term\").removeClass('ivprog-term-active');\n isRunning = false;\n proc = null;\n showRunButton();\n return true;\n }\n return false;\n },100);\n }) \n } catch (error) {\n scheduleCall(() => {\n if(domConsole.pending_writes.length == 0) {\n isRunning = false;\n proc = null;\n showRunButton();\n domConsole.err(error.message);\n console.log(error);\n return true;\n }\n return false;\n },100);\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 if(domConsole != null)\n domConsole.focus();\n //$('#ivprog-term').css('margin-top', '-170px');\n return;\n } else {\n domConsole.hide();\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\n// function 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 let code = null;\n if (settingsProgrammingTypes != \"textual\") {\n code = CodeManagement.generate();\n if (code == null) {\n return;\n }\n }\n\n\n $('.ivprog_visual_panel').css('display', 'none');\n $('.ivprog_textual_panel').css('display', 'block');\n $('.ivprog_textual_panel').removeClass('loading');\n TextEditor.updateEditor();\n if (code != null)\n TextEditor.setCode(code);\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 registerUserEvent(parameter_obj.name, ActionTypes.REMOVE_FUNCTION_PARAM, function_obj.name);\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, function_name, new_dimensions = 0) {\n registerUserEvent(parameter_obj.name, ActionTypes.CHANGE_PARAM_TYPE, function_name, new_type, new_dimensions);\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 let 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(`type_${parameter_obj.type.toLowerCase()}`);\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(`type_${parameter_obj.type.toLowerCase()}`)+'</div>';\n }\n\n ret += '<div class=\"menu\">';\n\n \n for (const tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n ret += '<div class=\"item ' + (parameter_obj.type == tm.toLowerCase() && parameter_obj.dimensions == 0 ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n\n\n ret += '<div class=\"item ' + (parameter_obj.dimensions == 1 ? ' selected ' : '') + '\">'\n + '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('vector')\n + '<div class=\"menu\">';\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n\n ret += '<div class=\"item ' + (parameter_obj.type == tm.toLowerCase() && parameter_obj.dimensions == 1 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n ret += '</div></div>';\n\n\n ret += '<div class=\"item ' + (parameter_obj.dimensions == 2 ? ' selected ' : '') + '\">'\n + '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('matrix')\n + '<div class=\"menu\">';\n\n for (var tm in Types) {\n if (tm == Types.VOID.toUpperCase()) {\n continue;\n }\n\n ret += '<div class=\"item ' + (parameter_obj.type == tm.toLowerCase() && parameter_obj.dimensions == 2 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('matrix')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n }\n ret += '</div></div>';\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(_, __, $selectedItem) {\n if ($selectedItem.data('dimensions')) {\n updateParameterType(parameter_obj, Types[$selectedItem.data('type')], function_obj.name, $selectedItem.data('dimensions'));\n } else {\n updateParameterType(parameter_obj, Types[$selectedItem.data('type')], function_obj.name);\n }\n },\n selectOnKeydown: false\n });\n\n ret.find('.parameter_div_edit').on('click', function(e){\n registerUserEvent(function_obj.name, ActionTypes.ENTER_CHANGE_PARAM_NAME, parameter_obj.name);\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.getError('inform_valid_param_duplicated', [new_name, function_obj.name]));\n } else {\n registerUserEvent(function_obj.name, ActionTypes.RENAME_FUNCTION_PARAM, parameter_var.name, new_name);\n parameter_var.name = new_name;\n }\n } else {\n Utils.renderErrorMessage(parameter_obj_dom.find('.parameter_div_edit'), LocalizedStrings.getError('inform_valid_identifier'));\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.getError('inform_valid_function_duplicated', [new_name]));\n } else {\n registerUserEvent(function_var.name, ActionTypes.RENAME_FUNCTION, new_name);\n function_var.name = new_name;\n }\n } else {\n Utils.renderErrorMessage(function_obj_dom.find('.function_name_div'), LocalizedStrings.getError('inform_valid_identifier'));\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\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}\n\nfunction scheduleCall (callback, time) {\n const scheduled_call = () => {\n const id = setInterval(() => {\n if(callback()) {\n clearInterval(id);\n }\n }, time)\n }\n scheduled_call();\n}\n\nfunction showRunButton () {\n document.getElementById('run_button').style.display = 'inline';\n document.getElementById('stop_button').style.display = 'none';\n}\n\nfunction showStopButton () {\n document.getElementById('run_button').style.display = 'none';\n document.getElementById('stop_button').style.display = 'inline';\n}\n\nfunction stopExecution () {\n domConsole.clearPendingWrites();\n domConsole.cancelPendingInputRequests();\n if(!isRunning) {\n return;\n }\n proc.mode = Modes.ABORT;\n}","import { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as Utils from './utils';\nimport { registerUserEvent, registerSystemEvent, ActionTypes } from \"./../services/userLog\";\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, 0);\n\tcounter_new_globals ++;\n\n\tprogram.addGlobal(new_global);\n\n\tregisterUserEvent(new_global.name, ActionTypes.INSERT_GLOBAL_VAR);\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\tregisterUserEvent(global_var.name, ActionTypes.SET_GLOBAL_CONST);\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\tregisterUserEvent(global_var.name, ActionTypes.RENAME_GLOBAL_VAR, new_name);\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\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_VAR_TYPE, new_type,\n\t\tnew_dimensions, global_var.rows, global_var.columns);\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\tregisterUserEvent(global_var.name, ActionTypes.REMOVE_GLOBAL_VAR);\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 = 0;\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [0, 0];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[0, 0], [0, 0]];\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 = 0.0;\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [0.0, 0.0];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[0.0, 0.0], [0.0, 0.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('textvar_default_value');\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = [LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [[LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')], \n\t\t\t\t\t\t\t\t\t[LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')]];\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\tif (global_var.type == Types.CHAR) {\n\t\tif (global_var.dimensions == 0) {\n\t\t\tglobal_var.value = 'A';\n\t\t}\n\t\tif (global_var.dimensions == 1) {\n\t\t\tglobal_var.value = ['A', 'A'];\n\t\t}\n\t\tif (global_var.dimensions == 2) {\n\t\t\tglobal_var.value = [['A', 'A'], ['A', 'A']];\n\t\t}\n\t}\n\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.name,\n\t\tglobal_var.value);\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(`logic_value_${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(`logic_value_${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(0);\n\t}\n\tif (global_var.type == Types.REAL) {\n\t\tglobal_var.value.push(0.0);\n\t}\n\tif (global_var.type == Types.TEXT) {\n\t\tglobal_var.value.push(LocalizedStrings.getUI('textvar_default_value'));\n\t}\n\tif (global_var.type == Types.BOOLEAN) {\n\t\tglobal_var.value.push(true);\n\t}\n\n\tif (global_var.type == Types.CHAR) {\n\t\tglobal_var.value.push(LocalizedStrings.getUI('charvar_default_value'));\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(0);\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(0.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('textvar_default_value'));\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\tif (global_var.type == Types.CHAR) {\n\t\tfor (var i = 0; i < global_var.rows; i++) {\n\t\t\tglobal_var.value[i].push(LocalizedStrings.getUI('charvar_default_value'));\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(0);\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(0.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('textvar_default_value'));\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\tif (global_var.type == Types.CHAR) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < global_var.columns; i++) {\n\t\t\tn_l.push(LocalizedStrings.getUI('charvar_default_value'));\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(`logic_value_${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(`logic_value_${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(`logic_value_${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(`logic_value_${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\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t});\n\tret.find( \".simple_var\" ).on('click', function(e){\n\t\tregisterUserEvent(global_var.name, ActionTypes.ENTER_CHANGE_GLOBAL_VALUE);\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\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t});\n\tret.find( \".vector_var\" ).on('click', function(e){\n\t\tregisterUserEvent(global_var.name, ActionTypes.ENTER_CHANGE_GLOBAL_VALUE);\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\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\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\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\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\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\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\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\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\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\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\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_TYPE,\n\t\t\tglobal_var.type, global_var.dimensions, global_var.rows, global_var.columns);\n\t\tregisterSystemEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\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\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\n\t});\n\tret.find( \".matrix_var\" ).on('click', function(e){\n\t\tregisterUserEvent(global_var.name, ActionTypes.ENTER_CHANGE_GLOBAL_VALUE);\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( \".editing_name_var\" ).on('click', function(e){\n\t\tregisterUserEvent(global_var.name, ActionTypes.ENTER_CHANGE_GLOBAL_NAME);\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(_, __, $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 == 1) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('vector')+ ': ' + LocalizedStrings.getUI(`type_${global_var.type}`);\n \t\telement += ' [ <span class=\"dimensions_0\"></span> ] ';\n \t\telement += '</div>';\n \t} else if (global_var.dimensions == 2) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('matrix')+ ': ' + LocalizedStrings.getUI(`type_${global_var.type}`);\n \t\telement += ' [ <span class=\"dimensions_0\"></span> ] [ <span class=\"dimensions_1\"></span> ] ';\n \t\telement += '</div>';\n \t} else {\n \t\telement += '<div class=\"text\">' + LocalizedStrings.getUI(`type_${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() && global_var.dimensions == 0 ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n\t}\n\n\n\telement += '<div class=\"item ' + (global_var.dimensions == 1 ? ' selected ' : '') + '\">'\n\t\t+ '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('vector')\n\t\t+ '<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\n \t\telement += '<div class=\"item ' + (global_var.type == tm.toLowerCase() && global_var.dimensions == 1 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n \t}\n\telement += '</div></div>';\n\n\n\telement += '<div class=\"item ' + (global_var.dimensions == 2 ? ' selected ' : '') + '\">'\n\t\t+ '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('matrix')\n\t\t+ '<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\n \t\telement += '<div class=\"item ' + (global_var.type == tm.toLowerCase() && global_var.dimensions == 2 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('matrix')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n \t}\n\telement += '</div></div>';\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\"> <&#8212; </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\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\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\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\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\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, global_var.value);\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\tvar inputWidth = input_field.textWidth()+10;\n\t\topened_input_value_global_ar = input_field;\n\t\tinput_field.focus();\n\n\t var tmpStr = input_field.val();\n\t\tinput_field.val('');\n\t\tinput_field.val(tmpStr);\n\n\t\tinput_field.css({\n\t\t\t\twidth: inputWidth\n\t\t})\n\t}).trigger('input');\n\n\tinput_field.focusout(function() {\n\t\tlet changed = false;\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 if (global_var.type == Types.CHAR) {\n\t\t\t\t\tglobal_var.value = input_field.val().charAt(0);\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\tchanged = true;\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\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, 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\tconst code = e.keyCode || e.which;\n\t\tlet changed = true;\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 if (global_var.type == Types.CHAR) {\n\t\t\t\t\t\tglobal_var.value = input_field.val().charAt(0);\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\tchanged = true;\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\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, 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\tlet changed = false;\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\tchanged = true;\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\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, 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_vector_global_ = false;\n\t\topened_input_value_vector_global_ = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tconst code = e.keyCode || e.which;\n\t\tlet changed = false;\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\tchanged = true;\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\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(global_var.value[index]);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(global_var.name, ActionTypes.CHANGE_GLOBAL_VALUE, 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_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 { Types } from \"./types\";\nimport WatchJS from \"melanke-watchjs\";\nimport * as AlgorithmManagement from \"./algorithm\";\n\nexport const COMMAND_TYPES = Object.freeze({\n function: \"function\",\n comment: \"comment\",\n reader: \"reader\",\n writer: \"writer\",\n attribution: \"attribution\",\n iftrue: \"iftrue\",\n repeatNtimes: \"repeatNtimes\",\n whiletrue: \"whiletrue\",\n dowhiletrue: \"dowhiletrue\",\n switch: \"switch\",\n switchcase: \"switchcase\",\n functioncall: \"functioncall\",\n break: \"break\",\n return: \"return\",\n});\n\nexport const ARITHMETIC_TYPES = Object.freeze({\n plus: \"plus\",\n minus: \"minus\",\n multiplication: \"multiplication\",\n division: \"division\",\n module: \"module\",\n none: \"none\",\n});\n\nexport const EXPRESSION_ELEMENTS = Object.freeze({\n exp_op_exp: \"exp_op_exp\",\n op_exp: \"op_exp\",\n par_exp_par: \"par_exp_par\",\n start_point: \"start_point\",\n});\n\nexport const EXPRESSION_TYPES = Object.freeze({\n exp_conditional: \"exp_conditional\",\n exp_logic: \"exp_logic\",\n exp_arithmetic: \"exp_arithmetic\",\n write_sep: \"write_separator\",\n});\n\nexport const ARITHMETIC_COMPARISON = Object.freeze({\n greater_than: \"greater_than\",\n less_than: \"less_than\",\n equals_to: \"equals_to\",\n not_equals_to: \"not_equals_to\",\n greater_than_or_equals_to: \"greater_than_or_equals_to\",\n less_than_or_equals_to: \"less_than_or_equals_to\",\n});\n\nexport const LOGIC_COMPARISON = Object.freeze({\n equals_to: \"equals_to\",\n not_equals_to: \"not_equals_to\",\n and: \"and\",\n or: \"or\",\n not: \"not\",\n});\n\nexport const SYSTEM_FUNCTIONS_CATEGORIES = Object.freeze({\n math: \"$mathLib\",\n text: \"$strLib\",\n arrangement: \"$arrayLib\",\n conversion: \"$langLib\",\n});\n\nexport class Variable {\n constructor (\n type,\n name,\n value,\n dimensions = 0,\n is_constant = false,\n rows = 0,\n columns = 0\n ) {\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 constructor (\n name,\n return_type = Types.VOID,\n return_dimensions = 0,\n parameters_list = [],\n is_main = false,\n is_hidden = false,\n variables_list = [],\n function_comment = null,\n commands = []\n ) {\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 constructor (\n identifier,\n return_type,\n return_dimensions,\n parameters_list,\n function_comment = null,\n category\n ) {\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 constructor (comment_text) {\n this.type = COMMAND_TYPES.comment;\n this.comment_text = comment_text;\n }\n}\n\nexport class Break {\n constructor () {\n this.type = COMMAND_TYPES.break;\n }\n}\n\nexport class Reader {\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 constructor (content, newline = true) {\n this.type = COMMAND_TYPES.writer;\n this.content = content;\n this.newline = newline;\n }\n}\n\nexport class Attribution {\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 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 constructor (type_exp, itens = []) {\n this.type_exp = type_exp;\n this.itens = itens;\n }\n}\n\nexport class ConditionalExpression {\n constructor (expression) {\n this.type = EXPRESSION_TYPES.exp_conditional;\n this.expression = expression;\n }\n}\n\nexport class LogicExpression {\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 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 constructor (expression, commands_block, commands_else, collapsed = false) {\n this.type = COMMAND_TYPES.iftrue;\n this.expression = expression;\n this.commands_block = commands_block;\n this.commands_else = commands_else;\n this.collapsed = collapsed;\n }\n}\n\nexport class RepeatNTimes {\n constructor (\n var_attribution,\n var_incrementation,\n expression1,\n expression2,\n expression3,\n commands_block\n ) {\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 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 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 constructor (variable, cases = []) {\n this.type = COMMAND_TYPES.switch;\n this.variable = variable;\n this.cases = cases;\n }\n}\n\nexport class Return {\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 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 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 constructor (\n variable_and_value = 7,\n content = null,\n row = null,\n column = null,\n include_constant = true,\n dimensions = 0\n ) {\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 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 constructor () {\n this.functions = [];\n this.globals = [];\n }\n\n addFunction (function_to_add) {\n WatchJS.watch(\n function_to_add.parameters_list,\n function () {\n if (window.insertContext) {\n setTimeout(function () {\n AlgorithmManagement.renderAlgorithm();\n }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n }\n },\n 1\n );\n\n WatchJS.watch(\n function_to_add.variables_list,\n function () {\n if (window.insertContext) {\n setTimeout(function () {\n AlgorithmManagement.renderAlgorithm();\n }, 300);\n window.insertContext = false;\n } else {\n AlgorithmManagement.renderAlgorithm();\n }\n },\n 1\n );\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","import * as CodeMirror from \"codemirror\";\nimport \"codemirror/addon/edit/closebrackets\";\nimport \"codemirror/addon/edit/matchbrackets\";\n// import \"codemirror/addon/hint/show-hint\";\n// import \"codemirror/addon/hint/anyword-hint\";\nimport \"codemirror/addon/selection/active-line\";\nimport { CodeEditorMode } from \"./../util/editorMode2\"\nCodeEditorMode(CodeMirror);\n\nlet codeEditor = null;\n\nexport function initTextEditor (element) {\n let id = element;\n if (element[0] == '#') {\n id = element.substring(1);\n }\n codeEditor = CodeMirror.fromTextArea(document.getElementById(id), {\n theme: \"ttcn\",\n value: \"\",\n mode: \"text/x-ivprog\",\n indentUnit: 4,\n lineNumbers: true,\n matchBrackets: true,\n autoCloseBrackets: true,\n fixedGutter: true,\n styleActiveLine: true,\n readOnly: true\n });\n}\n\nexport function disable (flag) {\n codeEditor.setOption(\"readOnly\", flag);\n updateEditor();\n}\n\nexport function updateEditor () {\n codeEditor.refresh();\n}\n\nexport function setCode (code) {\n codeEditor.setValue(code);\n}\n\nexport function getCode () {\n return codeEditor.getValue();\n}\n","export const Types = Object.freeze({\n INTEGER: \"integer\",\n REAL: \"real\",\n TEXT: \"text\",\n CHAR: 'char',\n BOOLEAN: \"boolean\",\n VOID: \"void\"\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 { Types } from './types';\nimport * as Models from './ivprog_elements';\nimport { LocalizedStrings } from './../services/localizedStringsService';\nimport * as Utils from './utils';\nimport { registerUserEvent, registerSystemEvent, ActionTypes } from \"./../services/userLog\";\nimport { isValidIdentifier } from \"./../util/utils\";\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, 0);\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\tregisterUserEvent(function_obj.name, ActionTypes.INSERT_FUNCTION_VAR, new_var.name, Types.INTEGER, 0);\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.getError('inform_valid_variable_duplicated', [new_name, function_obj.name]));\n\t\t} else {\n\t\t\tregisterUserEvent(function_obj.name, ActionTypes.RENAME_FUNCTION_VAR, variable_obj.name, new_name);\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.getError('inform_valid_identifier'));\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 removeVariable (variable_obj, variable_container, function_name) {\n\tvar function_associated = variable_container.data('associatedFunction');\n\tregisterUserEvent(function_name, ActionTypes.REMOVE_FUNCTION_VAR, variable_obj.name);\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, function_name, new_dimensions = 0) {\n\tvariable_obj.type = new_type;\t\t\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\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, variable_obj.name,\n\t\tnew_type, new_dimensions, variable_obj.rows, variable_obj.columns);\n\n\tupdateInitialValues(variable_obj, function_name);\n}\n\nfunction addHandlers (variable_obj, variable_container, function_obj) {\n\n\t// Manage variable name: \n\tvariable_container.find( \".editing_name_var\" ).on('click', function(e){\n\t\tregisterUserEvent(function_obj.name, ActionTypes.ENTER_CHANGE_VAR_NAME, variable_obj.name);\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(_, __, $selectedItem) {\n\t \tif ($selectedItem.data('dimensions')) {\n\t \t\tupdateType(variable_obj, Types[$selectedItem.data('type')], function_obj.name, $selectedItem.data('dimensions'));\n\t \t} else {\n\t \t\tupdateType(variable_obj, Types[$selectedItem.data('type')], function_obj.name);\n\t \t}\n\n\t \trenderValues(variable_obj, variable_container, function_obj.name);\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, function_obj.name);\n\t});\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 == 1) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('vector') + ': ' + LocalizedStrings.getUI(`type_${new_var.type.toLowerCase()}`);\n \t\telement += ' [ ] </div>';\n \t} else if (new_var.dimensions == 2) {\n \t\telement += '<div class=\"text\">'+ LocalizedStrings.getUI('matrix') + ': ' + LocalizedStrings.getUI(`type_${new_var.type.toLowerCase()}`);\n \t\telement += ' [ ] [ ] </div>';\n \t} else {\n \t\telement += '<div class=\"text\">' + LocalizedStrings.getUI(`type_${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() && new_var.dimensions == 0 ? ' selected ' : '') + '\" data-type=\"'+tm+'\" >'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n\t}\n\n\n\telement += '<div class=\"item ' + (new_var.dimensions == 1 ? ' selected ' : '') + '\">'\n\t\t+ '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('vector')\n\t\t+ '<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\n \t\telement += '<div class=\"item ' + (new_var.type == tm.toLowerCase() && new_var.dimensions == 1 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('vector')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"1\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n \t}\n\telement += '</div></div>';\n\n\n\telement += '<div class=\"item ' + (new_var.dimensions == 2 ? ' selected ' : '') + '\">'\n\t\t+ '<i class=\"dropdown icon\"></i>' + LocalizedStrings.getUI('matrix')\n\t\t+ '<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\n \t\telement += '<div class=\"item ' + (new_var.type == tm.toLowerCase() && new_var.dimensions == 2 ? ' selected ' : '') + '\" data-text=\"'+ LocalizedStrings.getUI('matrix')+':'+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+' [ ] \" data-type=\"'+tm+'\" data-dimensions=\"2\"> '+LocalizedStrings.getUI(`type_${tm.toLowerCase()}`)+'</div>';\n \t}\n\telement += '</div></div>';\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\"> <&#8212; </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, function_obj.name);\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, function_name) {\n\n\tvar ret = \"\";\n\tvar j = 0;\n\t\t\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(`logic_value_${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(`logic_value_${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(`logic_value_${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').\t\tdata('associatedOject', new_var);\n\n\t$( ret ).find( \".boolean_simple_type\" ).on('click', function(e){\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name, new_var.value);\n\t\talternateBooleanValue(new_var, this.parentNode);\n\t});\n\t$( ret ).find( \".simple_var\" ).on('click', function(e){\n\t\tregisterUserEvent(function_name, ActionTypes.ENTER_CHANGE_VAR_VALUE, new_var.name);\n\t\tenableValueUpdate(new_var, this.parentNode, function_name);\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\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t});\n\t$( ret ).find( \".vector_var\" ).on('click', function(e){\n\t\tenableVectorValueUpdate(new_var, $(this).data('index'), this.parentNode, function_name);\n\t});\n\t$( ret ).find( \".remove_global_vector_column\" ).on('click', function(e){\n\t\tremoveColumnVector(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".add_global_vector_column\" ).on('click', function(e){\n\t\taddColumnVector(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".remove_global_matrix_column\" ).on('click', function(e){\n\t\tremoveColumnMatrix(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".add_global_matrix_column\" ).on('click', function(e){\n\t\taddColumnMatrix(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".remove_global_matrix_line\" ).on('click', function(e){\n\t\tremoveLineMatrix(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\n\t});\n\t$( ret ).find( \".add_global_matrix_line\" ).on('click', function(e){\n\t\taddLineMatrix(new_var);\n\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_TYPE, new_var.name,\n\t\t\tnew_var.type, new_var.dimensions, new_var.rows, new_var.columns);\n\t\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t\t$( variable_container ).find( \".div_valor_var\" ).html('');\n\t\trenderValues(new_var, variable_container, function_name);\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\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, new_var.name,\n\t\t\tnew_var.value);\n\t});\n\t$( ret ).find( \".matrix_var\" ).on('click', function(e){\n\t\tregisterUserEvent(function_name, ActionTypes.ENTER_CHANGE_VAR_VALUE, new_var.name);\n\t\tenableMatrixValueUpdate(new_var, $(this).data('row'), $(this).data('index'), this.parentNode, function_name);\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(`logic_value_${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(0);\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(0.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('textvar_default_value'));\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\tif (var_obj.type == Types.CHAR) {\n\t\tvar n_l = [];\n\t\tfor (i = 0; i < var_obj.columns; i++) {\n\t\t\tn_l.push(LocalizedStrings.getUI('charvar_default_value'));\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(0);\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(0.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('textvar_default_value'));\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\tif (var_obj.type == Types.CHAR) {\n\t\tfor (var i = 0; i < var_obj.rows; i++) {\n\t\t\tvar_obj.value[i].push(LocalizedStrings.getUI('charvar_default_value'));\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(0);\n\t}\n\tif (var_obj.type == Types.REAL) {\n\t\tvar_obj.value.push(0.0);\n\t}\n\tif (var_obj.type == Types.TEXT) {\n\t\tvar_obj.value.push(LocalizedStrings.getUI('textvar_default_value'));\n\t}\n\tif (var_obj.type == Types.BOOLEAN) {\n\t\tvar_obj.value.push(true);\n\t}\n\tif (var_obj.type == Types.CHAR) {\n\t\tvar_obj.value.push(LocalizedStrings.getUI('charvar_default_value'));\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(`logic_value_${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(`logic_value_${var_obj.value[index]}`));\n}\n\nfunction updateInitialValues (variable_obj, function_name) {\n\tif (variable_obj.type == Types.INTEGER) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = 0;\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [0, 0];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[0, 0], [0, 0]];\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 = 0.0;\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [0.0, 0.0];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[0.0, 0.0], [0.0, 0.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('textvar_default_value');\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = [LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [[LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')], \n\t\t\t\t\t\t\t\t\t[LocalizedStrings.getUI('textvar_default_value'), LocalizedStrings.getUI('textvar_default_value')]];\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\tif (variable_obj.type == Types.CHAR) {\n\t\tif (variable_obj.dimensions == 0) {\n\t\t\tvariable_obj.value = 'A';\n\t\t}\n\t\tif (variable_obj.dimensions == 1) {\n\t\t\tvariable_obj.value = ['A', 'A'];\n\t\t}\n\t\tif (variable_obj.dimensions == 2) {\n\t\t\tvariable_obj.value = [['A', 'A'], ['A', 'A']];\n\t\t}\n\t}\n\tregisterSystemEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, variable_obj.name, variable_obj.value);\n}\n\nvar opened_name_value_vector_global_ = false;\nvar opened_input_value_vector_global_ = null;\nfunction enableVectorValueUpdate (var_obj, index, parent_node, function_name) {\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\tlet changed = false;\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\tchanged = true;\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\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\tvar_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_vector_global_ = false;\n\t\topened_input_value_vector_global_ = false;\n\t});\n\n\tinput_field.on('keydown', function(e) {\n\t\tconst code = e.keyCode || e.which;\n\t\tlet changed = false;\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\tchanged = true;\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\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[index]);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\t\tvar_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_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, function_name) {\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\tlet changed = false;\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 if (var_obj.type == Types.CHAR) {\n\t\t\t\t\tvar_obj.value = input_field.val().charAt(0);\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\tchanged = true;\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\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\tvar_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\tconst code = e.keyCode || e.which;\n\t\tlet changed = false;\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 if (var_obj.type == Types.CHAR) {\n\t\t\t\t\t\tvar_obj.value = input_field.val().charAt(0);\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\tchanged = true;\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\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\t\tvar_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();\t\t\t\t\t\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, function_name) {\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\tlet changed = false;\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 {\t\t\t\t\t\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\tchanged = true;\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\tchanged = true;\n\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t}\n\t\tif (changed) {\n\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\tvar_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_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\tconst code = e.keyCode || e.which;\n\t\tlet changed = false;\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\tchanged = true;\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\tchanged = true;\n\t\t\t\tparent_node.find('.span_value_variable').text(var_obj.value[row][index]);\n\t\t\t}\n\t\t\tif (changed) {\n\t\t\t\tregisterUserEvent(function_name, ActionTypes.CHANGE_VAR_VALUE, var_obj.name,\n\t\t\t\t\tvar_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_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"],"sourceRoot":""}