From 31e676fd22f2ec1b7fc6aec7f7c85333df7820c1 Mon Sep 17 00:00:00 2001 From: Oleg Sh Date: Sat, 18 Oct 2025 19:46:39 +0200 Subject: [PATCH] Add Salesman Problem algorithms. --- core/config/main.php | 2 +- lang/bg/home.php | 6 + lang/ch/home.php | 6 + lang/cs/home.php | 6 + lang/de/home.php | 6 + lang/el/home.php | 6 + lang/en/home.php | 6 + lang/es/home.php | 6 + lang/fr/home.php | 6 + lang/nl/home.php | 6 + lang/pl/home.php | 6 + lang/pt/home.php | 6 + lang/ru/home.php | 6 + lang/sv/home.php | 6 + lang/ua/home.php | 6 + script/features/algorithms/api/index.js | 4 +- .../model/plugins/SalesmanProblem.js | 125 +++++++++++++++ .../model/plugins/SalesmanProblemPath.js | 144 ++++++++++++++++++ .../graphoffline/Graphoffline.Emscripten.js | 2 +- .../graphoffline/Graphoffline.Emscripten.wasm | Bin 452265 -> 460903 bytes .../api/index.js.cache | 2 +- .../api/index.js.cache | 2 +- .../create_graph_by_matrix/api/index.js.cache | 2 +- script/pages/editor/api/index.js.cache | 10 +- script/pages/editor/model/texts.js | 12 ++ script/pages/editor/ui/editor.js | 2 + tpl/home.php | 6 + 27 files changed, 386 insertions(+), 11 deletions(-) create mode 100644 script/features/algorithms/model/plugins/SalesmanProblem.js create mode 100644 script/features/algorithms/model/plugins/SalesmanProblemPath.js diff --git a/core/config/main.php b/core/config/main.php index 904f8b0..6c661da 100755 --- a/core/config/main.php +++ b/core/config/main.php @@ -94,5 +94,5 @@ $g_config['vote'] = "./tmp/vote/vote.txt"; $g_config['voteTopics'] = "./tmp/vote/voteTopics.txt_"; $g_config['use_js_cache'] = true; - $g_config['engine_version'] = 102; + $g_config['engine_version'] = 103; ?> diff --git a/lang/bg/home.php b/lang/bg/home.php index 8b39773..86c3f7c 100644 --- a/lang/bg/home.php +++ b/lang/bg/home.php @@ -335,4 +335,10 @@ We have added Dutch translation 🇳🇱. Thank you Willie de Wit"; $g_lang['graph_is_to_large'] = "The graph is too large for this algorithm (X vertices, X edges)."; $g_lang['algorith_supports_max_limit'] = "The algorithm supports graphs of size no larger than X vertices and X edges."; $g_lang['error'] = "Error"; + + $g_lang['salesman_problem'] = "Salesman Problem"; + $g_lang['no_solution'] = "The solution doesn't exist"; + $g_lang['shortest_loop_is'] = "The length of shortest possible loop is "; + $g_lang['salesman_path_problem'] = "Salesman Path Problem"; + $g_lang['shortest_path_is'] = "The length of shortest path is "; ?> diff --git a/lang/ch/home.php b/lang/ch/home.php index c441f17..4cf4b8a 100644 --- a/lang/ch/home.php +++ b/lang/ch/home.php @@ -337,4 +337,10 @@ $g_lang['graph_is_to_large'] = "The graph is too large for this algorithm (X vertices, X edges)."; $g_lang['algorith_supports_max_limit'] = "The algorithm supports graphs of size no larger than X vertices and X edges."; $g_lang['error'] = "Error"; + + $g_lang['salesman_problem'] = "Salesman Problem"; + $g_lang['no_solution'] = "The solution doesn't exist"; + $g_lang['shortest_loop_is'] = "The length of shortest possible loop is "; + $g_lang['salesman_path_problem'] = "Salesman Path Problem"; + $g_lang['shortest_path_is'] = "The length of shortest path is "; ?> diff --git a/lang/cs/home.php b/lang/cs/home.php index 4e14871..728f722 100644 --- a/lang/cs/home.php +++ b/lang/cs/home.php @@ -336,4 +336,10 @@ $g_lang['graph_is_to_large'] = "The graph is too large for this algorithm (X vertices, X edges)."; $g_lang['algorith_supports_max_limit'] = "The algorithm supports graphs of size no larger than X vertices and X edges."; $g_lang['error'] = "Error"; + + $g_lang['salesman_problem'] = "Salesman Problem"; + $g_lang['no_solution'] = "The solution doesn't exist"; + $g_lang['shortest_loop_is'] = "The length of shortest possible loop is "; + $g_lang['salesman_path_problem'] = "Salesman Path Problem"; + $g_lang['shortest_path_is'] = "The length of shortest path is "; ?> \ No newline at end of file diff --git a/lang/de/home.php b/lang/de/home.php index be7f965..4876f94 100644 --- a/lang/de/home.php +++ b/lang/de/home.php @@ -294,4 +294,10 @@ $g_lang['graph_is_to_large'] = "The graph is too large for this algorithm (X vertices, X edges)."; $g_lang['algorith_supports_max_limit'] = "The algorithm supports graphs of size no larger than X vertices and X edges."; $g_lang['error'] = "Error"; + + $g_lang['salesman_problem'] = "Salesman Problem"; + $g_lang['no_solution'] = "The solution doesn't exist"; + $g_lang['shortest_loop_is'] = "The length of shortest possible loop is "; + $g_lang['salesman_path_problem'] = "Salesman Path Problem"; + $g_lang['shortest_path_is'] = "The length of shortest path is "; ?> diff --git a/lang/el/home.php b/lang/el/home.php index 49fdfbf..471d8bf 100644 --- a/lang/el/home.php +++ b/lang/el/home.php @@ -333,4 +333,10 @@ $g_lang['graph_is_to_large'] = "The graph is too large for this algorithm (X vertices, X edges)."; $g_lang['algorith_supports_max_limit'] = "The algorithm supports graphs of size no larger than X vertices and X edges."; $g_lang['error'] = "Error"; + + $g_lang['salesman_problem'] = "Salesman Problem"; + $g_lang['no_solution'] = "The solution doesn't exist"; + $g_lang['shortest_loop_is'] = "The length of shortest possible loop is "; + $g_lang['salesman_path_problem'] = "Salesman Path Problem"; + $g_lang['shortest_path_is'] = "The length of shortest path is "; ?> diff --git a/lang/en/home.php b/lang/en/home.php index 336dfa5..9cb3524 100755 --- a/lang/en/home.php +++ b/lang/en/home.php @@ -338,4 +338,10 @@ We have added Dutch translation 🇳🇱. Thank you Willie de Wit"; $g_lang['graph_is_to_large'] = "The graph is too large for this algorithm (X vertices, X edges)."; $g_lang['algorith_supports_max_limit'] = "The algorithm supports graphs of size no larger than X vertices and X edges."; $g_lang['error'] = "Error"; + + $g_lang['salesman_problem'] = "Salesman Problem"; + $g_lang['no_solution'] = "The solution doesn't exist"; + $g_lang['shortest_loop_is'] = "The length of shortest possible loop is "; + $g_lang['salesman_path_problem'] = "Salesman Path Problem"; + $g_lang['shortest_path_is'] = "The length of shortest path is "; ?> diff --git a/lang/es/home.php b/lang/es/home.php index 831ce79..4192058 100755 --- a/lang/es/home.php +++ b/lang/es/home.php @@ -337,4 +337,10 @@ Tenemos traducciones en griego 🇬🇷. X vertices, X edges)."; $g_lang['algorith_supports_max_limit'] = "The algorithm supports graphs of size no larger than X vertices and X edges."; $g_lang['error'] = "Error"; + + $g_lang['salesman_problem'] = "Salesman Problem"; + $g_lang['no_solution'] = "The solution doesn't exist"; + $g_lang['shortest_loop_is'] = "The length of shortest possible loop is "; + $g_lang['salesman_path_problem'] = "Salesman Path Problem"; + $g_lang['shortest_path_is'] = "The length of shortest path is "; ?> diff --git a/lang/fr/home.php b/lang/fr/home.php index 5651ca4..3f5d440 100644 --- a/lang/fr/home.php +++ b/lang/fr/home.php @@ -304,4 +304,10 @@ $g_lang['graph_is_to_large'] = "The graph is too large for this algorithm (X vertices, X edges)."; $g_lang['algorith_supports_max_limit'] = "The algorithm supports graphs of size no larger than X vertices and X edges."; $g_lang['error'] = "Error"; + + $g_lang['salesman_problem'] = "Salesman Problem"; + $g_lang['no_solution'] = "The solution doesn't exist"; + $g_lang['shortest_loop_is'] = "The length of shortest possible loop is "; + $g_lang['salesman_path_problem'] = "Salesman Path Problem"; + $g_lang['shortest_path_is'] = "The length of shortest path is "; ?> diff --git a/lang/nl/home.php b/lang/nl/home.php index c1e9d89..faa610d 100644 --- a/lang/nl/home.php +++ b/lang/nl/home.php @@ -301,4 +301,10 @@ $g_lang['graph_is_to_large'] = "The graph is too large for this algorithm (X vertices, X edges)."; $g_lang['algorith_supports_max_limit'] = "The algorithm supports graphs of size no larger than X vertices and X edges."; $g_lang['error'] = "Error"; + + $g_lang['salesman_problem'] = "Salesman Problem"; + $g_lang['no_solution'] = "The solution doesn't exist"; + $g_lang['shortest_loop_is'] = "The length of shortest possible loop is "; + $g_lang['salesman_path_problem'] = "Salesman Path Problem"; + $g_lang['shortest_path_is'] = "The length of shortest path is "; ?> diff --git a/lang/pl/home.php b/lang/pl/home.php index 8642319..eee2720 100644 --- a/lang/pl/home.php +++ b/lang/pl/home.php @@ -337,4 +337,10 @@ Dodaliśmy polskie tłumaczenie, Patryk"; $g_lang['graph_is_to_large'] = "The graph is too large for this algorithm (X vertices, X edges)."; $g_lang['algorith_supports_max_limit'] = "The algorithm supports graphs of size no larger than X vertices and X edges."; $g_lang['error'] = "Error"; + + $g_lang['salesman_problem'] = "Salesman Problem"; + $g_lang['no_solution'] = "The solution doesn't exist"; + $g_lang['shortest_loop_is'] = "The length of shortest possible loop is "; + $g_lang['salesman_path_problem'] = "Salesman Path Problem"; + $g_lang['shortest_path_is'] = "The length of shortest path is "; ?> diff --git a/lang/pt/home.php b/lang/pt/home.php index 2b948ae..0758ec4 100644 --- a/lang/pt/home.php +++ b/lang/pt/home.php @@ -302,4 +302,10 @@ $g_lang['graph_is_to_large'] = "The graph is too large for this algorithm (X vertices, X edges)."; $g_lang['algorith_supports_max_limit'] = "The algorithm supports graphs of size no larger than X vertices and X edges."; $g_lang['error'] = "Error"; + + $g_lang['salesman_problem'] = "Salesman Problem"; + $g_lang['no_solution'] = "The solution doesn't exist"; + $g_lang['shortest_loop_is'] = "The length of shortest possible loop is "; + $g_lang['salesman_path_problem'] = "Salesman Path Problem"; + $g_lang['shortest_path_is'] = "The length of shortest path is "; ?> diff --git a/lang/ru/home.php b/lang/ru/home.php index c163efd..097acec 100755 --- a/lang/ru/home.php +++ b/lang/ru/home.php @@ -342,4 +342,10 @@ $g_lang['graph_is_to_large'] = "Граф слишком большой для этого алгоритма (X вершин, X дуг)."; $g_lang['algorith_supports_max_limit'] = "Алгоритм поддерживает графы размером не больше X вершин и X дуг."; $g_lang['error'] = "Ошибка"; + + $g_lang['salesman_problem'] = "Задача коммивояжёра"; + $g_lang['no_solution'] = "Решения не существует"; + $g_lang['shortest_loop_is'] = "Кратчайшие цикл имеет длинну "; + $g_lang['salesman_path_problem'] = "Задача коммивояжёра для пути"; + $g_lang['shortest_path_is'] = "Кратчайшие путь имеет длинну "; ?> diff --git a/lang/sv/home.php b/lang/sv/home.php index b962777..fb76d88 100644 --- a/lang/sv/home.php +++ b/lang/sv/home.php @@ -298,4 +298,10 @@ $g_lang['graph_is_to_large'] = "The graph is too large for this algorithm (X vertices, X edges)."; $g_lang['algorith_supports_max_limit'] = "The algorithm supports graphs of size no larger than X vertices and X edges."; $g_lang['error'] = "Error"; + + $g_lang['salesman_problem'] = "Salesman Problem"; + $g_lang['no_solution'] = "The solution doesn't exist"; + $g_lang['shortest_loop_is'] = "The length of shortest possible loop is "; + $g_lang['salesman_path_problem'] = "Salesman Path Problem"; + $g_lang['shortest_path_is'] = "The length of shortest path is "; ?> diff --git a/lang/ua/home.php b/lang/ua/home.php index 5147e46..8210ed9 100644 --- a/lang/ua/home.php +++ b/lang/ua/home.php @@ -340,4 +340,10 @@ $g_lang['graph_is_to_large'] = "Граф слишком большой для этого алгоритма (X вершин, X дуг)."; $g_lang['algorith_supports_max_limit'] = "Алгоритм поддерживает графы размером не больше X вершин и X дуг."; $g_lang['error'] = "Ошибка"; + + $g_lang['salesman_problem'] = "Задача коммивояжёра"; + $g_lang['no_solution'] = "Решения не существует"; + $g_lang['shortest_loop_is'] = "Кратчайшие цикл имеет длинну "; + $g_lang['salesman_path_problem'] = "Задача коммивояжёра для пути"; + $g_lang['shortest_path_is'] = "Кратчайшие путь имеет длинну "; ?> diff --git a/script/features/algorithms/api/index.js b/script/features/algorithms/api/index.js index 1df76c5..5a4dead 100644 --- a/script/features/algorithms/api/index.js +++ b/script/features/algorithms/api/index.js @@ -30,7 +30,9 @@ function loadAsyncAlgorithms(onFinish) { "ShortestPath.js", "VerticesDegree.js", "MaxIndependentSet.js", - "FindAllShortestPatches.js"]; + "FindAllShortestPatches.js", + "SalesmanProblem.js", + "SalesmanProblemPath.js"]; doIncludeAsync (pluginsList.map((plugin) => include ("model/plugins/" + plugin, modulDir)), onFinish); } diff --git a/script/features/algorithms/model/plugins/SalesmanProblem.js b/script/features/algorithms/model/plugins/SalesmanProblem.js new file mode 100644 index 0000000..84597d4 --- /dev/null +++ b/script/features/algorithms/model/plugins/SalesmanProblem.js @@ -0,0 +1,125 @@ +/** + * Find Salesman Problem Loop. + * + */ +function SalesmanProblem(graph, app) +{ + BaseAlgorithmEx.apply(this, arguments); + this.message = g_processing; + this.selectedObjects = []; +} + + +// inheritance. +SalesmanProblem.prototype = Object.create(BaseAlgorithmEx.prototype); + + +SalesmanProblem.prototype.getName = function(local) +{ + return g_salesmanProblem; +} + +SalesmanProblem.prototype.getId = function() +{ + return "OlegSh.SalesmanProblem"; +} + +// @return message for user. +SalesmanProblem.prototype.getMessage = function(local) +{ + return this.message; +} + +SalesmanProblem.prototype.getCategory = function() +{ + return 1; +} + +SalesmanProblem.prototype.MaxGraphSize = function() +{ + return 18; +} + +SalesmanProblem.prototype.MaxEgdeNumber = function() +{ + return 50; +} + +SalesmanProblem.prototype.result = function(resultCallback) +{ + this.outResultCallback = function (result ) { resultCallback(result); }; + self = this; + this.CalculateAlgorithm("slsmen", + [ + {name: "start", value: 0} + ], function (pathObjects, properties, results) + { + self.resultCallback(pathObjects, properties, results); + }); + + return true; +} + +SalesmanProblem.prototype.resultCallback = function(pathObjects, properties, results) +{ + let result = results.length > 0 && results[0].value > 0 && results[0].type == 1; + let dist = results.length > 1 && (results[1].type == 1 || results[1].type == 2) ? results[1].value : 0; + + var outputResult = {}; + outputResult["version"] = 1; + + this.message = result > 0 ? g_shortestLoopIs + (dist * 1).toString() : g_noSolution; + if (result > 0) + { + var nodesEdgesPath = this.GetNodesEdgesPath(results, 1, results.length - 1); + var nodesPath = this.GetNodesPath(results, 1, results.length - 1); + + this.message = this.message + ": "; + + outputResult["pathsWithEdges"] = []; + outputResult["pathsWithEdges"].push(nodesEdgesPath); + + for (var i = 0; i < nodesPath.length; i++) + { + this.message = this.message + this.graph.FindVertex(nodesPath[i]).mainText + ((i < nodesPath.length - 1) ? "⇒" : ""); + } + this.selectedObjects = []; + + for (var i = 0; i < pathObjects.length; i++) + { + this.selectedObjects[pathObjects[i].id] = 1; + } + } + + this.outResultCallback(outputResult); +} + +SalesmanProblem.prototype.getObjectSelectedGroup = function(object) +{ + return (object.id in this.selectedObjects) ? this.selectedObjects[object.id] : 0; +} + +SalesmanProblem.prototype.getPriority = function() +{ + return -1; +} + +// Algorithm support multi graph +SalesmanProblem.prototype.IsSupportMultiGraph = function() +{ + return false; +} + +SalesmanProblem.prototype.IsSupportNegativeWeight = function() +{ + return true; +} + +// Factory for connected components. +function CreateSalesmanProblem(graph, app) +{ + return new SalesmanProblem(graph, app) +} + +// Gerister connected component. +RegisterAlgorithm (CreateSalesmanProblem); diff --git a/script/features/algorithms/model/plugins/SalesmanProblemPath.js b/script/features/algorithms/model/plugins/SalesmanProblemPath.js new file mode 100644 index 0000000..a64588a --- /dev/null +++ b/script/features/algorithms/model/plugins/SalesmanProblemPath.js @@ -0,0 +1,144 @@ +/** + * Find Salesman Problem Path. + * + */ +function SalesmanProblemPath(graph, app) +{ + BaseAlgorithmEx.apply(this, arguments); + this.message = g_startTraversal; + this.selectedObjects = []; + this.startVertex = null +} + + +// inheritance. +SalesmanProblemPath.prototype = Object.create(BaseAlgorithmEx.prototype); + + +SalesmanProblemPath.prototype.getName = function(local) +{ + return g_salesmanProblemPath; +} + +SalesmanProblemPath.prototype.getId = function() +{ + return "OlegSh.SalesmanProblemPath"; +} + +// @return message for user. +SalesmanProblemPath.prototype.getMessage = function(local) +{ + return this.message; +} + +SalesmanProblemPath.prototype.getCategory = function() +{ + return 1; +} + +SalesmanProblemPath.prototype.MaxGraphSize = function() +{ + return 20; +} + +SalesmanProblemPath.prototype.MaxEgdeNumber = function() +{ + return 50; +} + +SalesmanProblemPath.prototype.result = function(resultCallback) +{ + if (!this.startVertex) + { + return false; + } + + this.outResultCallback = function (result ) { resultCallback(result); }; + self = this; + this.CalculateAlgorithm("slsmenpath", + [ + {name: "start", value: this.startVertex.id} + ], function (pathObjects, properties, results) + { + self.resultCallback(pathObjects, properties, results); + }); + this.startVertex = false; + + return true; +} + +SalesmanProblemPath.prototype.selectVertex = function(vertex) +{ + this.startVertex = vertex; + this.message = g_processing; + return true; +} + +SalesmanProblemPath.prototype.resultCallback = function(pathObjects, properties, results) +{ + let result = results.length > 0 && results[0].value > 0 && results[0].type == 1; + let dist = results.length > 1 && (results[1].type == 1 || results[1].type == 2) ? results[1].value : 0; + + var outputResult = {}; + outputResult["version"] = 1; + + this.message = result > 0 ? g_shortestPathIs + (dist * 1).toString() : g_noSolution; + if (result > 0) + { + var nodesEdgesPath = this.GetNodesEdgesPath(results, 1, results.length - 1); + var nodesPath = this.GetNodesPath(results, 1, results.length - 1); + + this.message = this.message + ": "; + + outputResult["pathsWithEdges"] = []; + outputResult["pathsWithEdges"].push(nodesEdgesPath); + + for (var i = 0; i < nodesPath.length; i++) + { + this.message = this.message + this.graph.FindVertex(nodesPath[i]).mainText + ((i < nodesPath.length - 1) ? "⇒" : ""); + } + this.selectedObjects = []; + + for (var i = 0; i < pathObjects.length; i++) + { + this.selectedObjects[pathObjects[i].id] = 1; + } + } + + this.outResultCallback(outputResult); +} + +SalesmanProblemPath.prototype.getObjectSelectedGroup = function(object) +{ + return (object.id in this.selectedObjects) ? this.selectedObjects[object.id] : 0; +} + +SalesmanProblemPath.prototype.getPriority = function() +{ + return -0.9; +} + +// Algorithm support multi graph +SalesmanProblemPath.prototype.IsSupportMultiGraph = function() +{ + return false; +} + +SalesmanProblemPath.prototype.IsSupportNegativeWeight = function() +{ + return true; +} + +SalesmanProblemPath.prototype.instance = function() +{ + return false; +} + +// Factory for connected components. +function CreateSalesmanProblemPath(graph, app) +{ + return new SalesmanProblemPath(graph, app) +} + +// Gerister connected component. +RegisterAlgorithm (CreateSalesmanProblemPath); diff --git a/script/features/graphoffline/Graphoffline.Emscripten.js b/script/features/graphoffline/Graphoffline.Emscripten.js index 0a245c7..6234f57 100644 --- a/script/features/graphoffline/Graphoffline.Emscripten.js +++ b/script/features/graphoffline/Graphoffline.Emscripten.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope!="undefined";var ENVIRONMENT_IS_NODE=typeof process=="object"&&process.versions?.node&&process.type!="renderer";var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=typeof document!="undefined"?document.currentScript?.src:undefined;if(typeof __filename!="undefined"){_scriptName=__filename}else if(ENVIRONMENT_IS_WORKER){_scriptName=self.location.href}var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var isFileURI=filename=>filename.startsWith("file://");var wasmMemory;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var HEAP64,HEAPU64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();wasmExports["o"]();FS.ignorePermissions=false}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var wasmBinaryFile;function findWasmBinary(){return locateFile("Graphoffline.Emscripten.wasm")}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["n"];updateMemoryViews();assignWasmExports(wasmExports);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(mod,inst)=>{resolve(receiveInstance(mod,inst))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var ___assert_fail=(condition,filename,line,func)=>abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"]);class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>crypto.getRandomValues(view)};var randomFill=view=>{(randomFill=initRandomFill())(view)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=""}throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{FS_preloadFile(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish).then(onload).catch(onerror)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,filesystems:null,syncFSRequests:0,readFiles:{},ErrnoError:class{name="ErrnoError";constructor(errno){this.errno=errno}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);setattr(arg,attr)},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},doTruncate(stream,node,len){if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}if(Module["logReadFiles"]&&!(flags&1)){if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){data=new Uint8Array(intArrayFromString(data,true))}if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},writeStat(buf,stat){HEAPU32[buf>>2]=stat.dev;HEAPU32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAPU32[buf+12>>2]=stat.uid;HEAPU32[buf+16>>2]=stat.gid;HEAPU32[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize;HEAPU32[buf+60>>2]=stats.bsize;HEAP64[buf+8>>3]=BigInt(stats.blocks);HEAP64[buf+16>>3]=BigInt(stats.bfree);HEAP64[buf+24>>3]=BigInt(stats.bavail);HEAP64[buf+32>>3]=BigInt(stats.files);HEAP64[buf+40>>3]=BigInt(stats.ffree);HEAPU32[buf+48>>2]=stats.fsid;HEAPU32[buf+64>>2]=stats.flags;HEAPU32[buf+56>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=()=>abort("");var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.language||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"]}Module["ccall"]=ccall;Module["cwrap"]=cwrap;var _ProcessAlgorithm,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current;function assignWasmExports(wasmExports){Module["_ProcessAlgorithm"]=_ProcessAlgorithm=wasmExports["p"];__emscripten_stack_restore=wasmExports["q"];__emscripten_stack_alloc=wasmExports["r"];_emscripten_stack_get_current=wasmExports["s"]}var wasmImports={a:___assert_fail,b:___cxa_throw,e:___syscall_fcntl64,i:___syscall_ioctl,j:___syscall_openat,k:__abort_js,l:_emscripten_resize_heap,f:_environ_get,g:_environ_sizes_get,c:_fd_close,h:_fd_read,m:_fd_seek,d:_fd_write};var wasmExports;createWasm();function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}function preInit(){if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}preInit();run(); +var Module=typeof Module!="undefined"?Module:{};var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=globalThis.document?.currentScript?.src;if(typeof __filename!="undefined"){_scriptName=__filename}else if(ENVIRONMENT_IS_WORKER){_scriptName=self.location.href}var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var isFileURI=filename=>filename.startsWith("file://");var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var HEAP64,HEAPU64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();wasmExports["o"]();FS.ignorePermissions=false}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var wasmBinaryFile;function findWasmBinary(){return locateFile("Graphoffline.Emscripten.wasm")}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={a:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var runDependencies=0;var dependenciesFulfilled=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)};var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var UTF8Decoder=globalThis.TextDecoder&&new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var ___assert_fail=(condition,filename,line,func)=>abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"]);class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>crypto.getRandomValues(view)};var randomFill=view=>{(randomFill=initRandomFill())(view)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack=""}throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var flagModes={r:0,"r+":2,w:512|64|1,"w+":512|64|2,a:1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{FS_preloadFile(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish).then(onload).catch(onerror)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,filesystems:null,syncFSRequests:0,readFiles:{},ErrnoError:class{name="ErrnoError";constructor(errno){this.errno=errno}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);setattr(arg,attr)},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},doTruncate(stream,node,len){if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}if(Module["logReadFiles"]&&!(flags&1)){if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){abort(`Invalid encoding type "${opts.encoding}"`)}var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){data=new Uint8Array(intArrayFromString(data,true))}if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{abort("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length,llseek:()=>0});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS}},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)abort("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)abort("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")abort("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return dir+"/"+path},writeStat(buf,stat){HEAPU32[buf>>2]=stat.dev;HEAPU32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAPU32[buf+12>>2]=stat.uid;HEAPU32[buf+16>>2]=stat.gid;HEAPU32[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize;HEAPU32[buf+60>>2]=stats.bsize;HEAP64[buf+8>>3]=BigInt(stats.blocks);HEAP64[buf+16>>3]=BigInt(stats.bfree);HEAP64[buf+24>>3]=BigInt(stats.bavail);HEAP64[buf+32>>3]=BigInt(stats.files);HEAP64[buf+40>>3]=BigInt(stats.ffree);HEAPU32[buf+48>>2]=stats.fsid;HEAPU32[buf+64>>2]=stats.flags;HEAPU32[buf+56>>2]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=()=>abort("");var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.language||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;var _ProcessAlgorithm,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,memory,__indirect_function_table,wasmMemory;function assignWasmExports(wasmExports){_ProcessAlgorithm=Module["_ProcessAlgorithm"]=wasmExports["p"];__emscripten_stack_restore=wasmExports["q"];__emscripten_stack_alloc=wasmExports["r"];_emscripten_stack_get_current=wasmExports["s"];memory=wasmMemory=wasmExports["n"];__indirect_function_table=wasmExports["__indirect_function_table"]}var wasmImports={a:___assert_fail,b:___cxa_throw,e:___syscall_fcntl64,i:___syscall_ioctl,j:___syscall_openat,k:__abort_js,l:_emscripten_resize_heap,f:_environ_get,g:_environ_sizes_get,c:_fd_close,h:_fd_read,m:_fd_seek,d:_fd_write};function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;createWasm();run(); diff --git a/script/features/graphoffline/Graphoffline.Emscripten.wasm b/script/features/graphoffline/Graphoffline.Emscripten.wasm index 9d2324605acabcffb6a5dbc017c6082fc18bb4f2..4b1249a6293694325f674d0aa0208da7857094c2 100644 GIT binary patch delta 121680 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∾hDKQ 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%0Ddf>^wH1#Qcoc2Zb}zNwD&HR2fN5Ga@8~go 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"model/plugins/"+plugin,modulDir)),onFinish);}} +function loadAsyncAlgorithms(onFinish){let modulDir="features/algorithms/";let pluginsList=["BFS.js","Coloring.js","ConnectedComponent.js","DFS.js","EulerianLoop.js","EulerianPath.js","FindAllPatches.js","FindLongestPath.js","FindShortPatchsFromOne.js","Floid.js","GraphReorder.js","HamiltonianLoop.js","HamiltonianPath.js","IsomorphismCheck.js","MaxClique.js","MaxFlow.js","MinimumSpanningTree.js","ModernGraphStyle.js","RadiusAndDiameter.js","ShortestPath.js","VerticesDegree.js","MaxIndependentSet.js","FindAllShortestPatches.js","SalesmanProblem.js","SalesmanProblemPath.js"];doIncludeAsync(pluginsList.map((plugin)=>include("model/plugins/"+plugin,modulDir)),onFinish);}} function getVertexToVertexArray(graph,ignoreDirection) {res={};for(var i=0;i=0;if(isMac) g_selectGroupText=document.getElementById("selectGroupMac").innerHTML;else -g_selectGroupText=document.getElementById("selectGroupWin").innerHTML;g_dragGroupText=document.getElementById("dragSelectedGroup").innerHTML;g_copyGroupeButton=document.getElementById("copySelectedGroup").innerHTML;g_removeGroupeButton=document.getElementById("removeSelectedGroup").innerHTML;g_BFSName=document.getElementById("BFSName").innerHTML;g_ColoringName=document.getElementById("ColoringName").innerHTML;g_findConnectedComponent=document.getElementById("findConnectedComponent").innerHTML;g_DFSName=document.getElementById("DFSName").innerHTML;g_EulerinLoopName=document.getElementById("EulerinLoopName").innerHTML;g_EulerinPath=document.getElementById("EulerinPath").innerHTML;g_FloidName=document.getElementById("FloidName").innerHTML;g_GraphReorder=document.getElementById("GraphReorder").innerHTML;g_HamiltoianCycleName=document.getElementById("HamiltoianCycleName").innerHTML;g_HamiltonianPath=document.getElementById("HamiltonianPath").innerHTML;g_MaxFlowName=document.getElementById("MaxFlowName").innerHTML;g_minimumSpanningTree=document.getElementById("minimumSpanningTree").innerHTML;g_modernGraphStyleName=document.getElementById("modernGraphStyleName").innerHTML;g_RadiusAndDiameter=document.getElementById("RadiusAndDiameter").innerHTML;g_findShortPathName=document.getElementById("findShortPathName").innerHTML;g_findShortPathBellmanFordName=document.getElementById("findShortPathBellmanFordName").innerHTML;g_VerticesDegreeName=document.getElementById("VerticesDegreeName").innerHTML;g_SpanningTreeResult=document.getElementById("MinSpanningTreeResult").innerHTML;g_SpanningTreeIgnoreDir=document.getElementById("MinSpanningIgnoreDir").innerHTML;g_SpanningTreeNotConnected=document.getElementById("MinSpanningNotConnected").innerHTML;g_selectFirstGraphIsomorphismCheck=document.getElementById("SelectFirstGraphIsomorphismCheck").innerHTML;g_selectSecondGraphIsomorphismCheck=document.getElementById("SelectSecondGraphIsomorphismCheck").innerHTML;g_selectFirstGraphPatternCheck=document.getElementById("SelectFirstGraphPatternCheck").innerHTML;g_selectSecondGraphForSearchSubgraph=document.getElementById("SelectSecondGraphForSearchSubgraph").innerHTML;g_graphsIsomorph=document.getElementById("GraphsIsomorph").innerHTML;g_graphsNotIsomorph=document.getElementById("GraphsNotIsomorph").innerHTML;g_numberOfIsomorphSubgraphIs=document.getElementById("NumberOfIsomorphSubgraphIs").innerHTML;g_graphHasNoIsomorphSubgraph=document.getElementById("GraphHasNoIsomorphSubgraph").innerHTML;g_searchIsomorphSubgraph=document.getElementById("SearchIsomorphSubgraph").innerHTML;g_subgraphNo=document.getElementById("SubgraphNo").innerHTML;g_graphHasNoAtleast2Graphs=document.getElementById("GraphHasNoAtleast2Graphs").innerHTML;g_IsomorphismCheck=document.getElementById("IsomorphismCheck").innerHTML;g_graphIsDisconnected=document.getElementById("GraphIsDisconnected").innerHTML;g_graphIsTrivial=document.getElementById("GraphIsTrivial").innerHTML;g_graphRadius=document.getElementById("GraphRadius").innerHTML;g_graphDiameter=document.getElementById("GraphDiameter").innerHTML;g_vertexCentral=document.getElementById("VertexCentral").innerHTML;g_vertexPeripheral=document.getElementById("VertexPeripheral").innerHTML;g_maximumDegreeOfGraph=document.getElementById("MaximumDegreeOfGraph").innerHTML;g_colorNumber=document.getElementById("ColorNumber").innerHTML;g_done=document.getElementById("Done").innerHTML;g_action=document.getElementById("ActionText").innerHTML;g_commonEdgeStyle=document.getElementById("CommonEdgeStyleText").innerHTML;g_selectedEdgeStyle=document.getElementById("SelectedEdgeStyleText").innerHTML;g_commonVertexStyle=document.getElementById("CommonVertexStyleText").innerHTML;g_selectedVertexStyle=document.getElementById("SelectedVertexStyleText").innerHTML;g_findAllPathes=document.getElementById("FindAllPathes").innerHTML;g_numberOfPathesFrom=document.getElementById("NumberOfPathesFrom").innerHTML;g_to=document.getElementById("To").innerHTML;g_are=document.getElementById("Are").innerHTML;g_pathN=document.getElementById("PathN").innerHTML;g_selectFinishVertex=document.getElementById("SelectFinishVertex").innerHTML;g_selectStartVertex=document.getElementById("SelectStartVertex").innerHTML;g_findAllPathesFromVertex=document.getElementById("findAllPathsFromVertex").innerHTML;g_distanceFrom=document.getElementById("distanceFrom").innerHTML;g_pathTo=document.getElementById("pathTo").innerHTML;g_useContextMenuText=document.getElementById("UseContextMenuText").innerHTML;g_findLongestPath=document.getElementById("findLongestPath").innerHTML;g_LengthOfLongestPathFrom=document.getElementById("LengthOfLongestPathFrom").innerHTML;g_additionalActions=document.getElementById("additionlActions").innerHTML;g_reverseAllEdges=document.getElementById("reverseAllEdges").innerHTML;g_makeAllUndirected=document.getElementById("makeAllUndirected").innerHTML;g_makeAllDirected=document.getElementById("makeAllDirected").innerHTML;g_pairWrongFormat=document.getElementById("pairWrongFormat").innerHTML;g_fix=document.getElementById("fixButton").innerHTML;g_reuseSavedEdge=document.getElementById("reuseSavedEdge").innerHTML;g_MaxClique=document.getElementById("maxClique").innerHTML;g_MaxCliqueNotFound=document.getElementById("maxCliqueNotFound").innerHTML;g_MaxCliqueSizeIs=document.getElementById("maxCliqueSizeIs").innerHTML;g_MaxCliqueContains=document.getElementById("maxCliqueContains").innerHTML;g_wrongImageFormatPNGAndJPEG=document.getElementById("wrongImageFormatPNGAndJPEG").innerHTML;g_wrongImageSizeP1=document.getElementById("wrongImageSizeP1").innerHTML;g_originalGraph=document.getElementById("originalGraph").innerHTML;g_autoSavedGraph=document.getElementById("autoSavedGraph").innerHTML;g_selectGraphToLoad=document.getElementById("selectGraphToLoad").innerHTML;g_vertexNamePlaceHolder=document.getElementById("vertexNamePlaceHolder").innerHTML;g_MaxIndependentSet=document.getElementById("maxIndependentSet").innerHTML;g_MaxIndependentSetNotFound=document.getElementById("maxIndependentSetNotFound").innerHTML;g_MaxIndependentSetSizeIs=document.getElementById("maxIndependentSetSizeIs").innerHTML;g_MaxIndependentSetContains=document.getElementById("maxIndependentSetContains").innerHTML;g_FindAllShortestPathes=document.getElementById("findAllShortestPathes").innerHTML;g_numberOfShortestPathesFrom=document.getElementById("numberOfShortestPathesFrom").innerHTML;g_length_is=document.getElementById("lengthIs").innerHTML;g_error=document.getElementById("error").innerHTML;} +g_selectGroupText=document.getElementById("selectGroupWin").innerHTML;g_dragGroupText=document.getElementById("dragSelectedGroup").innerHTML;g_copyGroupeButton=document.getElementById("copySelectedGroup").innerHTML;g_removeGroupeButton=document.getElementById("removeSelectedGroup").innerHTML;g_BFSName=document.getElementById("BFSName").innerHTML;g_ColoringName=document.getElementById("ColoringName").innerHTML;g_findConnectedComponent=document.getElementById("findConnectedComponent").innerHTML;g_DFSName=document.getElementById("DFSName").innerHTML;g_EulerinLoopName=document.getElementById("EulerinLoopName").innerHTML;g_EulerinPath=document.getElementById("EulerinPath").innerHTML;g_FloidName=document.getElementById("FloidName").innerHTML;g_GraphReorder=document.getElementById("GraphReorder").innerHTML;g_HamiltoianCycleName=document.getElementById("HamiltoianCycleName").innerHTML;g_HamiltonianPath=document.getElementById("HamiltonianPath").innerHTML;g_MaxFlowName=document.getElementById("MaxFlowName").innerHTML;g_minimumSpanningTree=document.getElementById("minimumSpanningTree").innerHTML;g_modernGraphStyleName=document.getElementById("modernGraphStyleName").innerHTML;g_RadiusAndDiameter=document.getElementById("RadiusAndDiameter").innerHTML;g_findShortPathName=document.getElementById("findShortPathName").innerHTML;g_findShortPathBellmanFordName=document.getElementById("findShortPathBellmanFordName").innerHTML;g_VerticesDegreeName=document.getElementById("VerticesDegreeName").innerHTML;g_SpanningTreeResult=document.getElementById("MinSpanningTreeResult").innerHTML;g_SpanningTreeIgnoreDir=document.getElementById("MinSpanningIgnoreDir").innerHTML;g_SpanningTreeNotConnected=document.getElementById("MinSpanningNotConnected").innerHTML;g_selectFirstGraphIsomorphismCheck=document.getElementById("SelectFirstGraphIsomorphismCheck").innerHTML;g_selectSecondGraphIsomorphismCheck=document.getElementById("SelectSecondGraphIsomorphismCheck").innerHTML;g_selectFirstGraphPatternCheck=document.getElementById("SelectFirstGraphPatternCheck").innerHTML;g_selectSecondGraphForSearchSubgraph=document.getElementById("SelectSecondGraphForSearchSubgraph").innerHTML;g_graphsIsomorph=document.getElementById("GraphsIsomorph").innerHTML;g_graphsNotIsomorph=document.getElementById("GraphsNotIsomorph").innerHTML;g_numberOfIsomorphSubgraphIs=document.getElementById("NumberOfIsomorphSubgraphIs").innerHTML;g_graphHasNoIsomorphSubgraph=document.getElementById("GraphHasNoIsomorphSubgraph").innerHTML;g_searchIsomorphSubgraph=document.getElementById("SearchIsomorphSubgraph").innerHTML;g_subgraphNo=document.getElementById("SubgraphNo").innerHTML;g_graphHasNoAtleast2Graphs=document.getElementById("GraphHasNoAtleast2Graphs").innerHTML;g_IsomorphismCheck=document.getElementById("IsomorphismCheck").innerHTML;g_graphIsDisconnected=document.getElementById("GraphIsDisconnected").innerHTML;g_graphIsTrivial=document.getElementById("GraphIsTrivial").innerHTML;g_graphRadius=document.getElementById("GraphRadius").innerHTML;g_graphDiameter=document.getElementById("GraphDiameter").innerHTML;g_vertexCentral=document.getElementById("VertexCentral").innerHTML;g_vertexPeripheral=document.getElementById("VertexPeripheral").innerHTML;g_maximumDegreeOfGraph=document.getElementById("MaximumDegreeOfGraph").innerHTML;g_colorNumber=document.getElementById("ColorNumber").innerHTML;g_done=document.getElementById("Done").innerHTML;g_action=document.getElementById("ActionText").innerHTML;g_commonEdgeStyle=document.getElementById("CommonEdgeStyleText").innerHTML;g_selectedEdgeStyle=document.getElementById("SelectedEdgeStyleText").innerHTML;g_commonVertexStyle=document.getElementById("CommonVertexStyleText").innerHTML;g_selectedVertexStyle=document.getElementById("SelectedVertexStyleText").innerHTML;g_findAllPathes=document.getElementById("FindAllPathes").innerHTML;g_numberOfPathesFrom=document.getElementById("NumberOfPathesFrom").innerHTML;g_to=document.getElementById("To").innerHTML;g_are=document.getElementById("Are").innerHTML;g_pathN=document.getElementById("PathN").innerHTML;g_selectFinishVertex=document.getElementById("SelectFinishVertex").innerHTML;g_selectStartVertex=document.getElementById("SelectStartVertex").innerHTML;g_findAllPathesFromVertex=document.getElementById("findAllPathsFromVertex").innerHTML;g_distanceFrom=document.getElementById("distanceFrom").innerHTML;g_pathTo=document.getElementById("pathTo").innerHTML;g_useContextMenuText=document.getElementById("UseContextMenuText").innerHTML;g_findLongestPath=document.getElementById("findLongestPath").innerHTML;g_LengthOfLongestPathFrom=document.getElementById("LengthOfLongestPathFrom").innerHTML;g_additionalActions=document.getElementById("additionlActions").innerHTML;g_reverseAllEdges=document.getElementById("reverseAllEdges").innerHTML;g_makeAllUndirected=document.getElementById("makeAllUndirected").innerHTML;g_makeAllDirected=document.getElementById("makeAllDirected").innerHTML;g_pairWrongFormat=document.getElementById("pairWrongFormat").innerHTML;g_fix=document.getElementById("fixButton").innerHTML;g_reuseSavedEdge=document.getElementById("reuseSavedEdge").innerHTML;g_MaxClique=document.getElementById("maxClique").innerHTML;g_MaxCliqueNotFound=document.getElementById("maxCliqueNotFound").innerHTML;g_MaxCliqueSizeIs=document.getElementById("maxCliqueSizeIs").innerHTML;g_MaxCliqueContains=document.getElementById("maxCliqueContains").innerHTML;g_wrongImageFormatPNGAndJPEG=document.getElementById("wrongImageFormatPNGAndJPEG").innerHTML;g_wrongImageSizeP1=document.getElementById("wrongImageSizeP1").innerHTML;g_originalGraph=document.getElementById("originalGraph").innerHTML;g_autoSavedGraph=document.getElementById("autoSavedGraph").innerHTML;g_selectGraphToLoad=document.getElementById("selectGraphToLoad").innerHTML;g_vertexNamePlaceHolder=document.getElementById("vertexNamePlaceHolder").innerHTML;g_MaxIndependentSet=document.getElementById("maxIndependentSet").innerHTML;g_MaxIndependentSetNotFound=document.getElementById("maxIndependentSetNotFound").innerHTML;g_MaxIndependentSetSizeIs=document.getElementById("maxIndependentSetSizeIs").innerHTML;g_MaxIndependentSetContains=document.getElementById("maxIndependentSetContains").innerHTML;g_FindAllShortestPathes=document.getElementById("findAllShortestPathes").innerHTML;g_numberOfShortestPathesFrom=document.getElementById("numberOfShortestPathesFrom").innerHTML;g_length_is=document.getElementById("lengthIs").innerHTML;g_error=document.getElementById("error").innerHTML;g_salesmanProblem=document.getElementById("salesmanProblem").innerHTML;g_noSolution=document.getElementById("noSolution").innerHTML;g_shortestLoopIs=document.getElementById("shortestLoopIs").innerHTML;g_salesmanProblemPath=document.getElementById("salesmanProblemPath").innerHTML;g_shortestPathIs=document.getElementById("shortestPathIs").innerHTML;} function UndoStack(maxUndoStackSize){this.undoStack=[];this.maxUndoStackSize=maxUndoStackSize;} UndoStack.prototype.PushToStack=function(actionName,dataToSave) {var object={};object.actionName=actionName;object.data=dataToSave;this.undoStack.push(object);while(this.undoStack.length>this.maxUndoStackSize) @@ -2244,7 +2244,7 @@ let is_edge_fits_to_limits=self.application.graph.edges.length<=algorithm.MaxEgd else {let warring_cond_begin="";let warring_cond_end="";$("#current_graph_size").html((is_vertex_fits_to_limits?"":warring_cond_begin)+self.application.graph.vertices.length +(is_vertex_fits_to_limits?"":warring_cond_end));$("#current_edge_number").html((is_edge_fits_to_limits?"":warring_cond_begin)+self.application.graph.edges.length -+(is_edge_fits_to_limits?"":warring_cond_end));$("#algorithm_max_limit").html(algorithm.MaxGraphSize());$("#algorithm_edge_limit").html(algorithm.MaxEgdeNumber());var dialogButtons={};dialogButtons[g_close]=function(){$(this).dialog("close");};$("#graphMaxVerexLimit").dialog({resizable:false,title:g_error,width:400,modal:true,dialogClass:'EdgeDialog',buttons:dialogButtons,});}} ++(is_edge_fits_to_limits?"":warring_cond_end));$("#algorithm_max_limit").html(algorithm.MaxGraphSize());$("#algorithm_edge_limit").html(algorithm.MaxEgdeNumber());var dialogButtons={};dialogButtons[g_close]=function(){$(this).dialog("close");};$("#graphMaxVerexLimit").dialog({resizable:false,title:g_error,width:400,modal:true,dialogClass:'EdgeDialog',buttons:dialogButtons,});userAction("graph_to_big/"+algorithm.getId()+"/"+self.application.graph.vertices.length+"+vertices/"+self.application.graph.edges.length+"+edges");}} var eventData={};eventData.index=i;eventData.object=clone;eventData.algorithm=algorithm;$("#openAlgorithmList").bind('click',eventData,function(_eventData){var data=_eventData.data;var algorithm=g_Algorithms[g_AlgorithmIds.indexOf(data.algorithm.id)](self.application.graph,self.application);if((self.application.graph.isMulti()&&!algorithm.IsSupportMultiGraph())||(self.application.graph.hasNegative()&&!algorithm.IsSupportNegativeWeight())) {$(data.object).hide();} else diff --git a/script/pages/editor/model/texts.js b/script/pages/editor/model/texts.js index 16559bd..5e23571 100644 --- a/script/pages/editor/model/texts.js +++ b/script/pages/editor/model/texts.js @@ -224,6 +224,12 @@ var g_length_is = "length is "; var g_error = "Error"; +var g_salesmanProblem = "Salesman Problem"; +var g_noSolution = "The solution doesn't exist"; +var g_shortestLoopIs = "The length of shortest possible loop is "; +var g_salesmanProblemPath = "Salesman Path Problem"; +var g_shortestPathIs = "The length of shortest path is "; + function loadTexts() { g_textsSelectAndMove = document.getElementById("SelectAndMoveObject").innerHTML; @@ -455,4 +461,10 @@ function loadTexts() g_length_is = document.getElementById("lengthIs").innerHTML; g_error = document.getElementById("error").innerHTML; + + g_salesmanProblem = document.getElementById("salesmanProblem").innerHTML; + g_noSolution = document.getElementById("noSolution").innerHTML; + g_shortestLoopIs = document.getElementById("shortestLoopIs").innerHTML; + g_salesmanProblemPath = document.getElementById("salesmanProblemPath").innerHTML; + g_shortestPathIs = document.getElementById("shortestPathIs").innerHTML; } \ No newline at end of file diff --git a/script/pages/editor/ui/editor.js b/script/pages/editor/ui/editor.js index 448168c..0dfd261 100644 --- a/script/pages/editor/ui/editor.js +++ b/script/pages/editor/ui/editor.js @@ -721,6 +721,8 @@ Editor.prototype.createAlgorithmMenu = function() dialogClass: 'EdgeDialog', buttons: dialogButtons, }); + userAction("graph_to_big/" + algorithm.getId() + "/" + self.application.graph.vertices.length + + "+vertices/" + self.application.graph.edges.length + "+edges"); } } diff --git a/tpl/home.php b/tpl/home.php index b3eabdc..3108012 100755 --- a/tpl/home.php +++ b/tpl/home.php @@ -997,6 +997,12 @@

+ +

+

+

+

+