Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
No results found
Select Git revision
Show changes
Source diff could not be displayed: it is too large. Options to address this: view the blob.
!function(r,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((r="undefined"!=typeof globalThis?globalThis:r||self)["@hpcc-js/wasm"]={})}(this,(function(r){"use strict";function t(r,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(e){if("default"!==e&&!(e in r)){var n=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(r,e,n.get?n:{enumerable:!0,get:function(){return t[e]}})}}))})),Object.freeze(r)}var e={exports:{}};!function(r,t){var e,n=(e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,function(r){var t,n,o=void 0!==(r=r||{})?r:{};o.ready=new Promise((function(r,e){t=r,n=e}));var i,a={};for(i in o)o.hasOwnProperty(i)&&(a[i]=o[i]);var s,u,c="./this.program",f="";"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=function(r){var t=new XMLHttpRequest;return t.open("GET",r,!1),t.send(null),t.responseText},u=function(r,t,e){var n=new XMLHttpRequest;n.open("GET",r,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?t(n.response):e()},n.onerror=e,n.send(null)};var d,l,p=o.print||console.log.bind(console),m=o.printErr||console.warn.bind(console);for(i in a)a.hasOwnProperty(i)&&(o[i]=a[i]);a=null,o.arguments,o.thisProgram&&(c=o.thisProgram),o.quit,o.wasmBinary&&(d=o.wasmBinary),o.noExitRuntime,"object"!=typeof WebAssembly&&I("no native wasm support detected");var h=!1;function v(r,t){r||I("Assertion failed: "+t)}var w,_,y,E,g,b,k="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function D(r,t,e){for(var n=t+e,o=t;r[o]&&!(o>=n);)++o;if(o-t>16&&r.subarray&&k)return k.decode(r.subarray(t,o));for(var i="";t<o;){var a=r[t++];if(128&a){var s=63&r[t++];if(192!=(224&a)){var u=63&r[t++];if((a=224==(240&a)?(15&a)<<12|s<<6|u:(7&a)<<18|s<<12|u<<6|63&r[t++])<65536)i+=String.fromCharCode(a);else{var c=a-65536;i+=String.fromCharCode(55296|c>>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function S(r,t){return r?D(y,r,t):""}function P(r,t,e,n){if(!(n>0))return 0;for(var o=e,i=e+n-1,a=0;a<r.length;++a){var s=r.charCodeAt(a);if(s>=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&r.charCodeAt(++a)),s<=127){if(e>=i)break;t[e++]=s}else if(s<=2047){if(e+1>=i)break;t[e++]=192|s>>6,t[e++]=128|63&s}else if(s<=65535){if(e+2>=i)break;t[e++]=224|s>>12,t[e++]=128|s>>6&63,t[e++]=128|63&s}else{if(e+3>=i)break;t[e++]=240|s>>18,t[e++]=128|s>>12&63,t[e++]=128|s>>6&63,t[e++]=128|63&s}}return t[e]=0,e-o}function A(r){for(var t=0,e=0;e<r.length;++e){var n=r.charCodeAt(e);n>=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&r.charCodeAt(++e)),n<=127?++t:t+=n<=2047?2:n<=65535?3:4}return t}function F(r){w=r,o.HEAP8=_=new Int8Array(r),o.HEAP16=new Int16Array(r),o.HEAP32=E=new Int32Array(r),o.HEAPU8=y=new Uint8Array(r),o.HEAPU16=new Uint16Array(r),o.HEAPU32=new Uint32Array(r),o.HEAPF32=new Float32Array(r),o.HEAPF64=g=new Float64Array(r)}o.INITIAL_MEMORY;var x,M,R,C,z=[],j=[],B=[],T=0,N=null;function O(r){T++,o.monitorRunDependencies&&o.monitorRunDependencies(T)}function L(r){if(T--,o.monitorRunDependencies&&o.monitorRunDependencies(T),0==T&&N){var t=N;N=null,t()}}function I(r){o.onAbort&&o.onAbort(r),m(r="Aborted("+r+")"),h=!0,r+=". Build with -s ASSERTIONS=1 for more info.";var t=new WebAssembly.RuntimeError(r);throw n(t),t}function H(r){return r.startsWith("data:application/octet-stream;base64,")}function U(r){try{if(r==x&&d)return new Uint8Array(d);throw"both async and sync fetching of the wasm failed"}catch(r){I(r)}}o.preloadedImages={},o.preloadedAudios={},H(x="expatlib.wasm")||(M=x,x=o.locateFile?o.locateFile(M,f):f+M);var G={11694:function(r){var t=o.getCache(o.CExpatJS)[r];if(!t.hasOwnProperty("startElement"))throw"a JSImplementation must implement all functions, you forgot CExpatJS::startElement.";t.startElement()},11912:function(r){var t=o.getCache(o.CExpatJS)[r];if(!t.hasOwnProperty("endElement"))throw"a JSImplementation must implement all functions, you forgot CExpatJS::endElement.";t.endElement()},12124:function(r){var t=o.getCache(o.CExpatJS)[r];if(!t.hasOwnProperty("characterData"))throw"a JSImplementation must implement all functions, you forgot CExpatJS::characterData.";t.characterData()}};function q(r){for(;r.length>0;){var t=r.shift();if("function"!=typeof t){var e=t.func;"number"==typeof e?void 0===t.arg?W(e)():W(e)(t.arg):e(void 0===t.arg?null:t.arg)}else t(o)}}function W(r){return b.get(r)}var J={splitPath:function(r){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(r).slice(1)},normalizeArray:function(r,t){for(var e=0,n=r.length-1;n>=0;n--){var o=r[n];"."===o?r.splice(n,1):".."===o?(r.splice(n,1),e++):e&&(r.splice(n,1),e--)}if(t)for(;e;e--)r.unshift("..");return r},normalize:function(r){var t="/"===r.charAt(0),e="/"===r.substr(-1);return(r=J.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||t||(r="."),r&&e&&(r+="/"),(t?"/":"")+r},dirname:function(r){var t=J.splitPath(r),e=t[0],n=t[1];return e||n?(n&&(n=n.substr(0,n.length-1)),e+n):"."},basename:function(r){if("/"===r)return"/";var t=(r=(r=J.normalize(r)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?r:r.substr(t+1)},extname:function(r){return J.splitPath(r)[3]},join:function(){var r=Array.prototype.slice.call(arguments,0);return J.normalize(r.join("/"))},join2:function(r,t){return J.normalize(r+"/"+t)}},V={resolve:function(){for(var r="",t=!1,e=arguments.length-1;e>=-1&&!t;e--){var n=e>=0?arguments[e]:Y.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";r=n+"/"+r,t="/"===n.charAt(0)}return(t?"/":"")+(r=J.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||"."},relative:function(r,t){function e(r){for(var t=0;t<r.length&&""===r[t];t++);for(var e=r.length-1;e>=0&&""===r[e];e--);return t>e?[]:r.slice(t,e-t+1)}r=V.resolve(r).substr(1),t=V.resolve(t).substr(1);for(var n=e(r.split("/")),o=e(t.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s<i;s++)if(n[s]!==o[s]){a=s;break}var u=[];for(s=a;s<n.length;s++)u.push("..");return(u=u.concat(o.slice(a))).join("/")}},X={ttys:[],init:function(){},shutdown:function(){},register:function(r,t){X.ttys[r]={input:[],output:[],ops:t},Y.registerDevice(r,X.stream_ops)},stream_ops:{open:function(r){var t=X.ttys[r.node.rdev];if(!t)throw new Y.ErrnoError(43);r.tty=t,r.seekable=!1},close:function(r){r.tty.ops.flush(r.tty)},flush:function(r){r.tty.ops.flush(r.tty)},read:function(r,t,e,n,o){if(!r.tty||!r.tty.ops.get_char)throw new Y.ErrnoError(60);for(var i=0,a=0;a<n;a++){var s;try{s=r.tty.ops.get_char(r.tty)}catch(r){throw new Y.ErrnoError(29)}if(void 0===s&&0===i)throw new Y.ErrnoError(6);if(null==s)break;i++,t[e+a]=s}return i&&(r.node.timestamp=Date.now()),i},write:function(r,t,e,n,o){if(!r.tty||!r.tty.ops.put_char)throw new Y.ErrnoError(60);try{for(var i=0;i<n;i++)r.tty.ops.put_char(r.tty,t[e+i])}catch(r){throw new Y.ErrnoError(29)}return n&&(r.node.timestamp=Date.now()),i}},default_tty_ops:{get_char:function(r){if(!r.input.length){var t=null;if("undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n"),!t)return null;r.input=ir(t,!0)}return r.input.shift()},put_char:function(r,t){null===t||10===t?(p(D(r.output,0)),r.output=[]):0!=t&&r.output.push(t)},flush:function(r){r.output&&r.output.length>0&&(p(D(r.output,0)),r.output=[])}},default_tty1_ops:{put_char:function(r,t){null===t||10===t?(m(D(r.output,0)),r.output=[]):0!=t&&r.output.push(t)},flush:function(r){r.output&&r.output.length>0&&(m(D(r.output,0)),r.output=[])}}},K={ops_table:null,mount:function(r){return K.createNode(null,"/",16895,0)},createNode:function(r,t,e,n){if(Y.isBlkdev(e)||Y.isFIFO(e))throw new Y.ErrnoError(63);K.ops_table||(K.ops_table={dir:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr,lookup:K.node_ops.lookup,mknod:K.node_ops.mknod,rename:K.node_ops.rename,unlink:K.node_ops.unlink,rmdir:K.node_ops.rmdir,readdir:K.node_ops.readdir,symlink:K.node_ops.symlink},stream:{llseek:K.stream_ops.llseek}},file:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr},stream:{llseek:K.stream_ops.llseek,read:K.stream_ops.read,write:K.stream_ops.write,allocate:K.stream_ops.allocate,mmap:K.stream_ops.mmap,msync:K.stream_ops.msync}},link:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr,readlink:K.node_ops.readlink},stream:{}},chrdev:{node:{getattr:K.node_ops.getattr,setattr:K.node_ops.setattr},stream:Y.chrdev_stream_ops}});var o=Y.createNode(r,t,e,n);return Y.isDir(o.mode)?(o.node_ops=K.ops_table.dir.node,o.stream_ops=K.ops_table.dir.stream,o.contents={}):Y.isFile(o.mode)?(o.node_ops=K.ops_table.file.node,o.stream_ops=K.ops_table.file.stream,o.usedBytes=0,o.contents=null):Y.isLink(o.mode)?(o.node_ops=K.ops_table.link.node,o.stream_ops=K.ops_table.link.stream):Y.isChrdev(o.mode)&&(o.node_ops=K.ops_table.chrdev.node,o.stream_ops=K.ops_table.chrdev.stream),o.timestamp=Date.now(),r&&(r.contents[t]=o,r.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(r){return r.contents?r.contents.subarray?r.contents.subarray(0,r.usedBytes):new Uint8Array(r.contents):new Uint8Array(0)},expandFileStorage:function(r,t){var e=r.contents?r.contents.length:0;if(!(e>=t)){t=Math.max(t,e*(e<1048576?2:1.125)>>>0),0!=e&&(t=Math.max(t,256));var n=r.contents;r.contents=new Uint8Array(t),r.usedBytes>0&&r.contents.set(n.subarray(0,r.usedBytes),0)}},resizeFileStorage:function(r,t){if(r.usedBytes!=t)if(0==t)r.contents=null,r.usedBytes=0;else{var e=r.contents;r.contents=new Uint8Array(t),e&&r.contents.set(e.subarray(0,Math.min(t,r.usedBytes))),r.usedBytes=t}},node_ops:{getattr:function(r){var t={};return t.dev=Y.isChrdev(r.mode)?r.id:1,t.ino=r.id,t.mode=r.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=r.rdev,Y.isDir(r.mode)?t.size=4096:Y.isFile(r.mode)?t.size=r.usedBytes:Y.isLink(r.mode)?t.size=r.link.length:t.size=0,t.atime=new Date(r.timestamp),t.mtime=new Date(r.timestamp),t.ctime=new Date(r.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(r,t){void 0!==t.mode&&(r.mode=t.mode),void 0!==t.timestamp&&(r.timestamp=t.timestamp),void 0!==t.size&&K.resizeFileStorage(r,t.size)},lookup:function(r,t){throw Y.genericErrors[44]},mknod:function(r,t,e,n){return K.createNode(r,t,e,n)},rename:function(r,t,e){if(Y.isDir(r.mode)){var n;try{n=Y.lookupNode(t,e)}catch(r){}if(n)for(var o in n.contents)throw new Y.ErrnoError(55)}delete r.parent.contents[r.name],r.parent.timestamp=Date.now(),r.name=e,t.contents[e]=r,t.timestamp=r.parent.timestamp,r.parent=t},unlink:function(r,t){delete r.contents[t],r.timestamp=Date.now()},rmdir:function(r,t){var e=Y.lookupNode(r,t);for(var n in e.contents)throw new Y.ErrnoError(55);delete r.contents[t],r.timestamp=Date.now()},readdir:function(r){var t=[".",".."];for(var e in r.contents)r.contents.hasOwnProperty(e)&&t.push(e);return t},symlink:function(r,t,e){var n=K.createNode(r,t,41471,0);return n.link=e,n},readlink:function(r){if(!Y.isLink(r.mode))throw new Y.ErrnoError(28);return r.link}},stream_ops:{read:function(r,t,e,n,o){var i=r.node.contents;if(o>=r.node.usedBytes)return 0;var a=Math.min(r.node.usedBytes-o,n);if(a>8&&i.subarray)t.set(i.subarray(o,o+a),e);else for(var s=0;s<a;s++)t[e+s]=i[o+s];return a},write:function(r,t,e,n,o,i){if(t.buffer===_.buffer&&(i=!1),!n)return 0;var a=r.node;if(a.timestamp=Date.now(),t.subarray&&(!a.contents||a.contents.subarray)){if(i)return a.contents=t.subarray(e,e+n),a.usedBytes=n,n;if(0===a.usedBytes&&0===o)return a.contents=t.slice(e,e+n),a.usedBytes=n,n;if(o+n<=a.usedBytes)return a.contents.set(t.subarray(e,e+n),o),n}if(K.expandFileStorage(a,o+n),a.contents.subarray&&t.subarray)a.contents.set(t.subarray(e,e+n),o);else for(var s=0;s<n;s++)a.contents[o+s]=t[e+s];return a.usedBytes=Math.max(a.usedBytes,o+n),n},llseek:function(r,t,e){var n=t;if(1===e?n+=r.position:2===e&&Y.isFile(r.node.mode)&&(n+=r.node.usedBytes),n<0)throw new Y.ErrnoError(28);return n},allocate:function(r,t,e){K.expandFileStorage(r.node,t+e),r.node.usedBytes=Math.max(r.node.usedBytes,t+e)},mmap:function(r,t,e,n,o,i){if(0!==t)throw new Y.ErrnoError(28);if(!Y.isFile(r.node.mode))throw new Y.ErrnoError(43);var a,s,u=r.node.contents;if(2&i||u.buffer!==w){if((n>0||n+e<u.length)&&(u=u.subarray?u.subarray(n,n+e):Array.prototype.slice.call(u,n,n+e)),s=!0,!(a=void I()))throw new Y.ErrnoError(48);_.set(u,a)}else s=!1,a=u.byteOffset;return{ptr:a,allocated:s}},msync:function(r,t,e,n,o){if(!Y.isFile(r.node.mode))throw new Y.ErrnoError(43);return 2&o||K.stream_ops.write(r,t,0,n,e,!1),0}}},Y={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(r,t){if(t=t||{},!(r=V.resolve(Y.cwd(),r)))return{path:"",node:null};var e={follow_mount:!0,recurse_count:0};for(var n in e)void 0===t[n]&&(t[n]=e[n]);if(t.recurse_count>8)throw new Y.ErrnoError(32);for(var o=J.normalizeArray(r.split("/").filter((function(r){return!!r})),!1),i=Y.root,a="/",s=0;s<o.length;s++){var u=s===o.length-1;if(u&&t.parent)break;if(i=Y.lookupNode(i,o[s]),a=J.join2(a,o[s]),Y.isMountpoint(i)&&(!u||u&&t.follow_mount)&&(i=i.mounted.root),!u||t.follow)for(var c=0;Y.isLink(i.mode);){var f=Y.readlink(a);if(a=V.resolve(J.dirname(a),f),i=Y.lookupPath(a,{recurse_count:t.recurse_count}).node,c++>40)throw new Y.ErrnoError(32)}}return{path:a,node:i}},getPath:function(r){for(var t;;){if(Y.isRoot(r)){var e=r.mount.mountpoint;return t?"/"!==e[e.length-1]?e+"/"+t:e+t:e}t=t?r.name+"/"+t:r.name,r=r.parent}},hashName:function(r,t){for(var e=0,n=0;n<t.length;n++)e=(e<<5)-e+t.charCodeAt(n)|0;return(r+e>>>0)%Y.nameTable.length},hashAddNode:function(r){var t=Y.hashName(r.parent.id,r.name);r.name_next=Y.nameTable[t],Y.nameTable[t]=r},hashRemoveNode:function(r){var t=Y.hashName(r.parent.id,r.name);if(Y.nameTable[t]===r)Y.nameTable[t]=r.name_next;else for(var e=Y.nameTable[t];e;){if(e.name_next===r){e.name_next=r.name_next;break}e=e.name_next}},lookupNode:function(r,t){var e=Y.mayLookup(r);if(e)throw new Y.ErrnoError(e,r);for(var n=Y.hashName(r.id,t),o=Y.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===r.id&&i===t)return o}return Y.lookup(r,t)},createNode:function(r,t,e,n){var o=new Y.FSNode(r,t,e,n);return Y.hashAddNode(o),o},destroyNode:function(r){Y.hashRemoveNode(r)},isRoot:function(r){return r===r.parent},isMountpoint:function(r){return!!r.mounted},isFile:function(r){return 32768==(61440&r)},isDir:function(r){return 16384==(61440&r)},isLink:function(r){return 40960==(61440&r)},isChrdev:function(r){return 8192==(61440&r)},isBlkdev:function(r){return 24576==(61440&r)},isFIFO:function(r){return 4096==(61440&r)},isSocket:function(r){return 49152==(49152&r)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(r){var t=Y.flagModes[r];if(void 0===t)throw new Error("Unknown file open mode: "+r);return t},flagsToPermissionString:function(r){var t=["r","w","rw"][3&r];return 512&r&&(t+="w"),t},nodePermissions:function(r,t){return Y.ignorePermissions||(!t.includes("r")||292&r.mode)&&(!t.includes("w")||146&r.mode)&&(!t.includes("x")||73&r.mode)?0:2},mayLookup:function(r){var t=Y.nodePermissions(r,"x");return t||(r.node_ops.lookup?0:2)},mayCreate:function(r,t){try{return Y.lookupNode(r,t),20}catch(r){}return Y.nodePermissions(r,"wx")},mayDelete:function(r,t,e){var n;try{n=Y.lookupNode(r,t)}catch(r){return r.errno}var o=Y.nodePermissions(r,"wx");if(o)return o;if(e){if(!Y.isDir(n.mode))return 54;if(Y.isRoot(n)||Y.getPath(n)===Y.cwd())return 10}else if(Y.isDir(n.mode))return 31;return 0},mayOpen:function(r,t){return r?Y.isLink(r.mode)?32:Y.isDir(r.mode)&&("r"!==Y.flagsToPermissionString(t)||512&t)?31:Y.nodePermissions(r,Y.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(r,t){r=r||0,t=t||Y.MAX_OPEN_FDS;for(var e=r;e<=t;e++)if(!Y.streams[e])return e;throw new Y.ErrnoError(33)},getStream:function(r){return Y.streams[r]},createStream:function(r,t,e){Y.FSStream||(Y.FSStream=function(){},Y.FSStream.prototype={object:{get:function(){return this.node},set:function(r){this.node=r}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}});var n=new Y.FSStream;for(var o in r)n[o]=r[o];r=n;var i=Y.nextfd(t,e);return r.fd=i,Y.streams[i]=r,r},closeStream:function(r){Y.streams[r]=null},chrdev_stream_ops:{open:function(r){var t=Y.getDevice(r.node.rdev);r.stream_ops=t.stream_ops,r.stream_ops.open&&r.stream_ops.open(r)},llseek:function(){throw new Y.ErrnoError(70)}},major:function(r){return r>>8},minor:function(r){return 255&r},makedev:function(r,t){return r<<8|t},registerDevice:function(r,t){Y.devices[r]={stream_ops:t}},getDevice:function(r){return Y.devices[r]},getMounts:function(r){for(var t=[],e=[r];e.length;){var n=e.pop();t.push(n),e.push.apply(e,n.mounts)}return t},syncfs:function(r,t){"function"==typeof r&&(t=r,r=!1),Y.syncFSRequests++,Y.syncFSRequests>1&&m("warning: "+Y.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var e=Y.getMounts(Y.root.mount),n=0;function o(r){return Y.syncFSRequests--,t(r)}function i(r){if(r)return i.errored?void 0:(i.errored=!0,o(r));++n>=e.length&&o(null)}e.forEach((function(t){if(!t.type.syncfs)return i(null);t.type.syncfs(t,r,i)}))},mount:function(r,t,e){var n,o="/"===e,i=!e;if(o&&Y.root)throw new Y.ErrnoError(10);if(!o&&!i){var a=Y.lookupPath(e,{follow_mount:!1});if(e=a.path,n=a.node,Y.isMountpoint(n))throw new Y.ErrnoError(10);if(!Y.isDir(n.mode))throw new Y.ErrnoError(54)}var s={type:r,opts:t,mountpoint:e,mounts:[]},u=r.mount(s);return u.mount=s,s.root=u,o?Y.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(r){var t=Y.lookupPath(r,{follow_mount:!1});if(!Y.isMountpoint(t.node))throw new Y.ErrnoError(28);var e=t.node,n=e.mounted,o=Y.getMounts(n);Object.keys(Y.nameTable).forEach((function(r){for(var t=Y.nameTable[r];t;){var e=t.name_next;o.includes(t.mount)&&Y.destroyNode(t),t=e}})),e.mounted=null;var i=e.mount.mounts.indexOf(n);e.mount.mounts.splice(i,1)},lookup:function(r,t){return r.node_ops.lookup(r,t)},mknod:function(r,t,e){var n=Y.lookupPath(r,{parent:!0}).node,o=J.basename(r);if(!o||"."===o||".."===o)throw new Y.ErrnoError(28);var i=Y.mayCreate(n,o);if(i)throw new Y.ErrnoError(i);if(!n.node_ops.mknod)throw new Y.ErrnoError(63);return n.node_ops.mknod(n,o,t,e)},create:function(r,t){return t=void 0!==t?t:438,t&=4095,t|=32768,Y.mknod(r,t,0)},mkdir:function(r,t){return t=void 0!==t?t:511,t&=1023,t|=16384,Y.mknod(r,t,0)},mkdirTree:function(r,t){for(var e=r.split("/"),n="",o=0;o<e.length;++o)if(e[o]){n+="/"+e[o];try{Y.mkdir(n,t)}catch(r){if(20!=r.errno)throw r}}},mkdev:function(r,t,e){return void 0===e&&(e=t,t=438),t|=8192,Y.mknod(r,t,e)},symlink:function(r,t){if(!V.resolve(r))throw new Y.ErrnoError(44);var e=Y.lookupPath(t,{parent:!0}).node;if(!e)throw new Y.ErrnoError(44);var n=J.basename(t),o=Y.mayCreate(e,n);if(o)throw new Y.ErrnoError(o);if(!e.node_ops.symlink)throw new Y.ErrnoError(63);return e.node_ops.symlink(e,n,r)},rename:function(r,t){var e,n,o=J.dirname(r),i=J.dirname(t),a=J.basename(r),s=J.basename(t);if(e=Y.lookupPath(r,{parent:!0}).node,n=Y.lookupPath(t,{parent:!0}).node,!e||!n)throw new Y.ErrnoError(44);if(e.mount!==n.mount)throw new Y.ErrnoError(75);var u,c=Y.lookupNode(e,a),f=V.relative(r,i);if("."!==f.charAt(0))throw new Y.ErrnoError(28);if("."!==(f=V.relative(t,o)).charAt(0))throw new Y.ErrnoError(55);try{u=Y.lookupNode(n,s)}catch(r){}if(c!==u){var d=Y.isDir(c.mode),l=Y.mayDelete(e,a,d);if(l)throw new Y.ErrnoError(l);if(l=u?Y.mayDelete(n,s,d):Y.mayCreate(n,s))throw new Y.ErrnoError(l);if(!e.node_ops.rename)throw new Y.ErrnoError(63);if(Y.isMountpoint(c)||u&&Y.isMountpoint(u))throw new Y.ErrnoError(10);if(n!==e&&(l=Y.nodePermissions(e,"w")))throw new Y.ErrnoError(l);Y.hashRemoveNode(c);try{e.node_ops.rename(c,n,s)}catch(r){throw r}finally{Y.hashAddNode(c)}}},rmdir:function(r){var t=Y.lookupPath(r,{parent:!0}).node,e=J.basename(r),n=Y.lookupNode(t,e),o=Y.mayDelete(t,e,!0);if(o)throw new Y.ErrnoError(o);if(!t.node_ops.rmdir)throw new Y.ErrnoError(63);if(Y.isMountpoint(n))throw new Y.ErrnoError(10);t.node_ops.rmdir(t,e),Y.destroyNode(n)},readdir:function(r){var t=Y.lookupPath(r,{follow:!0}).node;if(!t.node_ops.readdir)throw new Y.ErrnoError(54);return t.node_ops.readdir(t)},unlink:function(r){var t=Y.lookupPath(r,{parent:!0}).node,e=J.basename(r),n=Y.lookupNode(t,e),o=Y.mayDelete(t,e,!1);if(o)throw new Y.ErrnoError(o);if(!t.node_ops.unlink)throw new Y.ErrnoError(63);if(Y.isMountpoint(n))throw new Y.ErrnoError(10);t.node_ops.unlink(t,e),Y.destroyNode(n)},readlink:function(r){var t=Y.lookupPath(r).node;if(!t)throw new Y.ErrnoError(44);if(!t.node_ops.readlink)throw new Y.ErrnoError(28);return V.resolve(Y.getPath(t.parent),t.node_ops.readlink(t))},stat:function(r,t){var e=Y.lookupPath(r,{follow:!t}).node;if(!e)throw new Y.ErrnoError(44);if(!e.node_ops.getattr)throw new Y.ErrnoError(63);return e.node_ops.getattr(e)},lstat:function(r){return Y.stat(r,!0)},chmod:function(r,t,e){var n;if(!(n="string"==typeof r?Y.lookupPath(r,{follow:!e}).node:r).node_ops.setattr)throw new Y.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&t|-4096&n.mode,timestamp:Date.now()})},lchmod:function(r,t){Y.chmod(r,t,!0)},fchmod:function(r,t){var e=Y.getStream(r);if(!e)throw new Y.ErrnoError(8);Y.chmod(e.node,t)},chown:function(r,t,e,n){var o;if(!(o="string"==typeof r?Y.lookupPath(r,{follow:!n}).node:r).node_ops.setattr)throw new Y.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:function(r,t,e){Y.chown(r,t,e,!0)},fchown:function(r,t,e){var n=Y.getStream(r);if(!n)throw new Y.ErrnoError(8);Y.chown(n.node,t,e)},truncate:function(r,t){if(t<0)throw new Y.ErrnoError(28);var e;if(!(e="string"==typeof r?Y.lookupPath(r,{follow:!0}).node:r).node_ops.setattr)throw new Y.ErrnoError(63);if(Y.isDir(e.mode))throw new Y.ErrnoError(31);if(!Y.isFile(e.mode))throw new Y.ErrnoError(28);var n=Y.nodePermissions(e,"w");if(n)throw new Y.ErrnoError(n);e.node_ops.setattr(e,{size:t,timestamp:Date.now()})},ftruncate:function(r,t){var e=Y.getStream(r);if(!e)throw new Y.ErrnoError(8);if(0==(2097155&e.flags))throw new Y.ErrnoError(28);Y.truncate(e.node,t)},utime:function(r,t,e){var n=Y.lookupPath(r,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(t,e)})},open:function(r,t,e,n,i){if(""===r)throw new Y.ErrnoError(44);var a;if(e=void 0===e?438:e,e=64&(t="string"==typeof t?Y.modeStringToFlags(t):t)?4095&e|32768:0,"object"==typeof r)a=r;else{r=J.normalize(r);try{a=Y.lookupPath(r,{follow:!(131072&t)}).node}catch(r){}}var s=!1;if(64&t)if(a){if(128&t)throw new Y.ErrnoError(20)}else a=Y.mknod(r,e,0),s=!0;if(!a)throw new Y.ErrnoError(44);if(Y.isChrdev(a.mode)&&(t&=-513),65536&t&&!Y.isDir(a.mode))throw new Y.ErrnoError(54);if(!s){var u=Y.mayOpen(a,t);if(u)throw new Y.ErrnoError(u)}512&t&&Y.truncate(a,0),t&=-131713;var c=Y.createStream({node:a,path:Y.getPath(a),id:a.id,flags:t,mode:a.mode,seekable:!0,position:0,stream_ops:a.stream_ops,node_ops:a.node_ops,ungotten:[],error:!1},n,i);return c.stream_ops.open&&c.stream_ops.open(c),!o.logReadFiles||1&t||(Y.readFiles||(Y.readFiles={}),r in Y.readFiles||(Y.readFiles[r]=1)),c},close:function(r){if(Y.isClosed(r))throw new Y.ErrnoError(8);r.getdents&&(r.getdents=null);try{r.stream_ops.close&&r.stream_ops.close(r)}catch(r){throw r}finally{Y.closeStream(r.fd)}r.fd=null},isClosed:function(r){return null===r.fd},llseek:function(r,t,e){if(Y.isClosed(r))throw new Y.ErrnoError(8);if(!r.seekable||!r.stream_ops.llseek)throw new Y.ErrnoError(70);if(0!=e&&1!=e&&2!=e)throw new Y.ErrnoError(28);return r.position=r.stream_ops.llseek(r,t,e),r.ungotten=[],r.position},read:function(r,t,e,n,o){if(n<0||o<0)throw new Y.ErrnoError(28);if(Y.isClosed(r))throw new Y.ErrnoError(8);if(1==(2097155&r.flags))throw new Y.ErrnoError(8);if(Y.isDir(r.node.mode))throw new Y.ErrnoError(31);if(!r.stream_ops.read)throw new Y.ErrnoError(28);var i=void 0!==o;if(i){if(!r.seekable)throw new Y.ErrnoError(70)}else o=r.position;var a=r.stream_ops.read(r,t,e,n,o);return i||(r.position+=a),a},write:function(r,t,e,n,o,i){if(n<0||o<0)throw new Y.ErrnoError(28);if(Y.isClosed(r))throw new Y.ErrnoError(8);if(0==(2097155&r.flags))throw new Y.ErrnoError(8);if(Y.isDir(r.node.mode))throw new Y.ErrnoError(31);if(!r.stream_ops.write)throw new Y.ErrnoError(28);r.seekable&&1024&r.flags&&Y.llseek(r,0,2);var a=void 0!==o;if(a){if(!r.seekable)throw new Y.ErrnoError(70)}else o=r.position;var s=r.stream_ops.write(r,t,e,n,o,i);return a||(r.position+=s),s},allocate:function(r,t,e){if(Y.isClosed(r))throw new Y.ErrnoError(8);if(t<0||e<=0)throw new Y.ErrnoError(28);if(0==(2097155&r.flags))throw new Y.ErrnoError(8);if(!Y.isFile(r.node.mode)&&!Y.isDir(r.node.mode))throw new Y.ErrnoError(43);if(!r.stream_ops.allocate)throw new Y.ErrnoError(138);r.stream_ops.allocate(r,t,e)},mmap:function(r,t,e,n,o,i){if(0!=(2&o)&&0==(2&i)&&2!=(2097155&r.flags))throw new Y.ErrnoError(2);if(1==(2097155&r.flags))throw new Y.ErrnoError(2);if(!r.stream_ops.mmap)throw new Y.ErrnoError(43);return r.stream_ops.mmap(r,t,e,n,o,i)},msync:function(r,t,e,n,o){return r&&r.stream_ops.msync?r.stream_ops.msync(r,t,e,n,o):0},munmap:function(r){return 0},ioctl:function(r,t,e){if(!r.stream_ops.ioctl)throw new Y.ErrnoError(59);return r.stream_ops.ioctl(r,t,e)},readFile:function(r,t){if((t=t||{}).flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var e,n=Y.open(r,t.flags),o=Y.stat(r).size,i=new Uint8Array(o);return Y.read(n,i,0,o,0),"utf8"===t.encoding?e=D(i,0):"binary"===t.encoding&&(e=i),Y.close(n),e},writeFile:function(r,t,e){(e=e||{}).flags=e.flags||577;var n=Y.open(r,e.flags,e.mode);if("string"==typeof t){var o=new Uint8Array(A(t)+1),i=P(t,o,0,o.length);Y.write(n,o,0,i,void 0,e.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Y.write(n,t,0,t.byteLength,void 0,e.canOwn)}Y.close(n)},cwd:function(){return Y.currentPath},chdir:function(r){var t=Y.lookupPath(r,{follow:!0});if(null===t.node)throw new Y.ErrnoError(44);if(!Y.isDir(t.node.mode))throw new Y.ErrnoError(54);var e=Y.nodePermissions(t.node,"x");if(e)throw new Y.ErrnoError(e);Y.currentPath=t.path},createDefaultDirectories:function(){Y.mkdir("/tmp"),Y.mkdir("/home"),Y.mkdir("/home/web_user")},createDefaultDevices:function(){Y.mkdir("/dev"),Y.registerDevice(Y.makedev(1,3),{read:function(){return 0},write:function(r,t,e,n,o){return n}}),Y.mkdev("/dev/null",Y.makedev(1,3)),X.register(Y.makedev(5,0),X.default_tty_ops),X.register(Y.makedev(6,0),X.default_tty1_ops),Y.mkdev("/dev/tty",Y.makedev(5,0)),Y.mkdev("/dev/tty1",Y.makedev(6,0));var r=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var r=new Uint8Array(1);return function(){return crypto.getRandomValues(r),r[0]}}return function(){I("randomDevice")}}();Y.createDevice("/dev","random",r),Y.createDevice("/dev","urandom",r),Y.mkdir("/dev/shm"),Y.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){Y.mkdir("/proc");var r=Y.mkdir("/proc/self");Y.mkdir("/proc/self/fd"),Y.mount({mount:function(){var t=Y.createNode(r,"fd",16895,73);return t.node_ops={lookup:function(r,t){var e=+t,n=Y.getStream(e);if(!n)throw new Y.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return n.path}}};return o.parent=o,o}},t}},{},"/proc/self/fd")},createStandardStreams:function(){o.stdin?Y.createDevice("/dev","stdin",o.stdin):Y.symlink("/dev/tty","/dev/stdin"),o.stdout?Y.createDevice("/dev","stdout",null,o.stdout):Y.symlink("/dev/tty","/dev/stdout"),o.stderr?Y.createDevice("/dev","stderr",null,o.stderr):Y.symlink("/dev/tty1","/dev/stderr"),Y.open("/dev/stdin",0),Y.open("/dev/stdout",1),Y.open("/dev/stderr",1)},ensureErrnoError:function(){Y.ErrnoError||(Y.ErrnoError=function(r,t){this.node=t,this.setErrno=function(r){this.errno=r},this.setErrno(r),this.message="FS error"},Y.ErrnoError.prototype=new Error,Y.ErrnoError.prototype.constructor=Y.ErrnoError,[44].forEach((function(r){Y.genericErrors[r]=new Y.ErrnoError(r),Y.genericErrors[r].stack="<generic error, no stack>"})))},staticInit:function(){Y.ensureErrnoError(),Y.nameTable=new Array(4096),Y.mount(K,{},"/"),Y.createDefaultDirectories(),Y.createDefaultDevices(),Y.createSpecialDirectories(),Y.filesystems={MEMFS:K}},init:function(r,t,e){Y.init.initialized=!0,Y.ensureErrnoError(),o.stdin=r||o.stdin,o.stdout=t||o.stdout,o.stderr=e||o.stderr,Y.createStandardStreams()},quit:function(){Y.init.initialized=!1;var r=o._fflush;r&&r(0);for(var t=0;t<Y.streams.length;t++){var e=Y.streams[t];e&&Y.close(e)}},getMode:function(r,t){var e=0;return r&&(e|=365),t&&(e|=146),e},findObject:function(r,t){var e=Y.analyzePath(r,t);return e.exists?e.object:null},analyzePath:function(r,t){try{r=(n=Y.lookupPath(r,{follow:!t})).path}catch(r){}var e={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=Y.lookupPath(r,{parent:!0});e.parentExists=!0,e.parentPath=n.path,e.parentObject=n.node,e.name=J.basename(r),n=Y.lookupPath(r,{follow:!t}),e.exists=!0,e.path=n.path,e.object=n.node,e.name=n.node.name,e.isRoot="/"===n.path}catch(r){e.error=r.errno}return e},createPath:function(r,t,e,n){r="string"==typeof r?r:Y.getPath(r);for(var o=t.split("/").reverse();o.length;){var i=o.pop();if(i){var a=J.join2(r,i);try{Y.mkdir(a)}catch(r){}r=a}}return a},createFile:function(r,t,e,n,o){var i=J.join2("string"==typeof r?r:Y.getPath(r),t),a=Y.getMode(n,o);return Y.create(i,a)},createDataFile:function(r,t,e,n,o,i){var a=t?J.join2("string"==typeof r?r:Y.getPath(r),t):r,s=Y.getMode(n,o),u=Y.create(a,s);if(e){if("string"==typeof e){for(var c=new Array(e.length),f=0,d=e.length;f<d;++f)c[f]=e.charCodeAt(f);e=c}Y.chmod(u,146|s);var l=Y.open(u,577);Y.write(l,e,0,e.length,0,i),Y.close(l),Y.chmod(u,s)}return u},createDevice:function(r,t,e,n){var o=J.join2("string"==typeof r?r:Y.getPath(r),t),i=Y.getMode(!!e,!!n);Y.createDevice.major||(Y.createDevice.major=64);var a=Y.makedev(Y.createDevice.major++,0);return Y.registerDevice(a,{open:function(r){r.seekable=!1},close:function(r){n&&n.buffer&&n.buffer.length&&n(10)},read:function(r,t,n,o,i){for(var a=0,s=0;s<o;s++){var u;try{u=e()}catch(r){throw new Y.ErrnoError(29)}if(void 0===u&&0===a)throw new Y.ErrnoError(6);if(null==u)break;a++,t[n+s]=u}return a&&(r.node.timestamp=Date.now()),a},write:function(r,t,e,o,i){for(var a=0;a<o;a++)try{n(t[e+a])}catch(r){throw new Y.ErrnoError(29)}return o&&(r.node.timestamp=Date.now()),a}}),Y.mkdev(o,i,a)},forceLoadFile:function(r){if(r.isDevice||r.isFolder||r.link||r.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!s)throw new Error("Cannot load without read() or XMLHttpRequest.");try{r.contents=ir(s(r.url),!0),r.usedBytes=r.contents.length}catch(r){throw new Y.ErrnoError(29)}},createLazyFile:function(r,t,e,n,o){function i(){this.lengthKnown=!1,this.chunks=[]}if(i.prototype.get=function(r){if(!(r>this.length-1||r<0)){var t=r%this.chunkSize,e=r/this.chunkSize|0;return this.getter(e)[t]}},i.prototype.setDataGetter=function(r){this.getter=r},i.prototype.cacheLength=function(){var r=new XMLHttpRequest;if(r.open("HEAD",e,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw new Error("Couldn't load "+e+". Status: "+r.status);var t,n=Number(r.getResponseHeader("Content-length")),o=(t=r.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=r.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(r){var t=r*a,o=(r+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[r]&&(s.chunks[r]=function(r,t){if(r>t)throw new Error("invalid range ("+r+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",e,!1),n!==a&&o.setRequestHeader("Range","bytes="+r+"-"+t),"undefined"!=typeof Uint8Array&&(o.responseType="arraybuffer"),o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+e+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):ir(o.responseText||"",!0)}(t,o)),void 0===s.chunks[r])throw new Error("doXHR failed!");return s.chunks[r]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,p("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a={isDevice:!1,url:e},s=Y.createFile(r,t,a,n,o);a.contents?s.contents=a.contents:a.url&&(s.contents=null,s.url=a.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};return Object.keys(s.stream_ops).forEach((function(r){var t=s.stream_ops[r];u[r]=function(){return Y.forceLoadFile(s),t.apply(null,arguments)}})),u.read=function(r,t,e,n,o){Y.forceLoadFile(s);var i=r.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var u=0;u<a;u++)t[e+u]=i[o+u];else for(u=0;u<a;u++)t[e+u]=i.get(o+u);return a},s.stream_ops=u,s},createPreloadedFile:function(r,t,e,n,i,a,s,c,f,d){Browser.init();var l=t?V.resolve(J.join2(r,t)):r;function p(e){function u(e){d&&d(),c||Y.createDataFile(r,t,e,n,i,f),a&&a(),L()}var p=!1;o.preloadPlugins.forEach((function(r){p||r.canHandle(l)&&(r.handle(e,l,u,(function(){s&&s(),L()})),p=!0)})),p||u(e)}O(),"string"==typeof e?function(r,t,e,n){var o=n?"":"al "+r;u(r,(function(e){v(e,'Loading data file "'+r+'" failed (no arrayBuffer).'),t(new Uint8Array(e)),o&&L()}),(function(t){if(!e)throw'Loading data file "'+r+'" failed.';e()})),o&&O()}(e,(function(r){p(r)}),s):p(e)},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(r,t,e){t=t||function(){},e=e||function(){};var n=Y.indexedDB();try{var o=n.open(Y.DB_NAME(),Y.DB_VERSION)}catch(r){return e(r)}o.onupgradeneeded=function(){p("creating db"),o.result.createObjectStore(Y.DB_STORE_NAME)},o.onsuccess=function(){var n=o.result.transaction([Y.DB_STORE_NAME],"readwrite"),i=n.objectStore(Y.DB_STORE_NAME),a=0,s=0,u=r.length;function c(){0==s?t():e()}r.forEach((function(r){var t=i.put(Y.analyzePath(r).object.contents,r);t.onsuccess=function(){++a+s==u&&c()},t.onerror=function(){s++,a+s==u&&c()}})),n.onerror=e},o.onerror=e},loadFilesFromDB:function(r,t,e){t=t||function(){},e=e||function(){};var n=Y.indexedDB();try{var o=n.open(Y.DB_NAME(),Y.DB_VERSION)}catch(r){return e(r)}o.onupgradeneeded=e,o.onsuccess=function(){var n=o.result;try{var i=n.transaction([Y.DB_STORE_NAME],"readonly")}catch(r){return void e(r)}var a=i.objectStore(Y.DB_STORE_NAME),s=0,u=0,c=r.length;function f(){0==u?t():e()}r.forEach((function(r){var t=a.get(r);t.onsuccess=function(){Y.analyzePath(r).exists&&Y.unlink(r),Y.createDataFile(J.dirname(r),J.basename(r),t.result,!0,!0,!0),++s+u==c&&f()},t.onerror=function(){u++,s+u==c&&f()}})),i.onerror=e},o.onerror=e}},$={mappings:{},DEFAULT_POLLMASK:5,calculateAt:function(r,t,e){if("/"===t[0])return t;var n;if(-100===r)n=Y.cwd();else{var o=Y.getStream(r);if(!o)throw new Y.ErrnoError(8);n=o.path}if(0==t.length){if(!e)throw new Y.ErrnoError(44);return n}return J.join2(n,t)},doStat:function(r,t,e){try{var n=r(t)}catch(r){if(r&&r.node&&J.normalize(t)!==J.normalize(Y.getPath(r.node)))return-54;throw r}return E[e>>2]=n.dev,E[e+4>>2]=0,E[e+8>>2]=n.ino,E[e+12>>2]=n.mode,E[e+16>>2]=n.nlink,E[e+20>>2]=n.uid,E[e+24>>2]=n.gid,E[e+28>>2]=n.rdev,E[e+32>>2]=0,C=[n.size>>>0,(R=n.size,+Math.abs(R)>=1?R>0?(0|Math.min(+Math.floor(R/4294967296),4294967295))>>>0:~~+Math.ceil((R-+(~~R>>>0))/4294967296)>>>0:0)],E[e+40>>2]=C[0],E[e+44>>2]=C[1],E[e+48>>2]=4096,E[e+52>>2]=n.blocks,E[e+56>>2]=n.atime.getTime()/1e3|0,E[e+60>>2]=0,E[e+64>>2]=n.mtime.getTime()/1e3|0,E[e+68>>2]=0,E[e+72>>2]=n.ctime.getTime()/1e3|0,E[e+76>>2]=0,C=[n.ino>>>0,(R=n.ino,+Math.abs(R)>=1?R>0?(0|Math.min(+Math.floor(R/4294967296),4294967295))>>>0:~~+Math.ceil((R-+(~~R>>>0))/4294967296)>>>0:0)],E[e+80>>2]=C[0],E[e+84>>2]=C[1],0},doMsync:function(r,t,e,n,o){var i=y.slice(r,r+e);Y.msync(t,i,o,e,n)},doMkdir:function(r,t){return"/"===(r=J.normalize(r))[r.length-1]&&(r=r.substr(0,r.length-1)),Y.mkdir(r,t,0),0},doMknod:function(r,t,e){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return Y.mknod(r,t,e),0},doReadlink:function(r,t,e){if(e<=0)return-28;var n=Y.readlink(r),o=Math.min(e,A(n)),i=_[t+o];return P(n,y,t,e+1),_[t+o]=i,o},doAccess:function(r,t){if(-8&t)return-28;var e=Y.lookupPath(r,{follow:!0}).node;if(!e)return-44;var n="";return 4&t&&(n+="r"),2&t&&(n+="w"),1&t&&(n+="x"),n&&Y.nodePermissions(e,n)?-2:0},doDup:function(r,t,e){var n=Y.getStream(e);return n&&Y.close(n),Y.open(r,t,0,e,e).fd},doReadv:function(r,t,e,n){for(var o=0,i=0;i<e;i++){var a=E[t+8*i>>2],s=E[t+(8*i+4)>>2],u=Y.read(r,_,a,s,n);if(u<0)return-1;if(o+=u,u<s)break}return o},doWritev:function(r,t,e,n){for(var o=0,i=0;i<e;i++){var a=E[t+8*i>>2],s=E[t+(8*i+4)>>2],u=Y.write(r,_,a,s,n);if(u<0)return-1;o+=u}return o},varargs:void 0,get:function(){return $.varargs+=4,E[$.varargs-4>>2]},getStr:function(r){return S(r)},getStreamFromFD:function(r){var t=Y.getStream(r);if(!t)throw new Y.ErrnoError(8);return t},get64:function(r,t){return r}},Q=[];function Z(r){try{return l.grow(r-w.byteLength+65535>>>16),F(l.buffer),1}catch(r){}}var rr={};function tr(){if(!tr.strings){var r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in rr)void 0===rr[t]?delete r[t]:r[t]=rr[t];var e=[];for(var t in r)e.push(t+"="+r[t]);tr.strings=e}return tr.strings}var er=function(r,t,e,n){r||(r=this),this.parent=r,this.mount=r.mount,this.mounted=null,this.id=Y.nextInode++,this.name=t,this.mode=e,this.node_ops={},this.stream_ops={},this.rdev=n},nr=365,or=146;function ir(r,t,e){var n=e>0?e:A(r)+1,o=new Array(n),i=P(r,o,0,o.length);return t&&(o.length=i),o}Object.defineProperties(er.prototype,{read:{get:function(){return(this.mode&nr)===nr},set:function(r){r?this.mode|=nr:this.mode&=-366}},write:{get:function(){return(this.mode&or)===or},set:function(r){r?this.mode|=or:this.mode&=-147}},isFolder:{get:function(){return Y.isDir(this.mode)}},isDevice:{get:function(){return Y.isChrdev(this.mode)}}}),Y.FSNode=er,Y.staticInit();var ar={h:function(r,t,e){$.varargs=e;try{var n=$.getStr(r),o=e?$.get():0;return Y.open(n,t,o).fd}catch(r){if(void 0===Y||!(r instanceof Y.ErrnoError))throw r;return-r.errno}},b:function(){I("")},a:function(r,t,e){var n=function(r,t){var e;for(Q.length=0,t>>=2;e=y[r++];){var n=e<105;n&&1&t&&t++,Q.push(n?g[t++>>1]:E[t]),++t}return Q}(t,e);return G[r].apply(null,n)},k:function(r,t,e){y.copyWithin(r,t,t+e)},e:function(r){var t,e,n=y.length,o=2147483648;if((r>>>=0)>o)return!1;for(var i=1;i<=4;i*=2){var a=n*(1+.2/i);if(a=Math.min(a,r+100663296),Z(Math.min(o,((t=Math.max(r,a))%(e=65536)>0&&(t+=e-t%e),t))))return!0}return!1},f:function(r,t){var e=0;return tr().forEach((function(n,o){var i=t+e;E[r+4*o>>2]=i,function(r,t,e){for(var n=0;n<r.length;++n)_[t++>>0]=r.charCodeAt(n);e||(_[t>>0]=0)}(n,i),e+=n.length+1})),0},g:function(r,t){var e=tr();E[r>>2]=e.length;var n=0;return e.forEach((function(r){n+=r.length+1})),E[t>>2]=n,0},d:function(r){try{var t=$.getStreamFromFD(r);return Y.close(t),0}catch(r){if(void 0===Y||!(r instanceof Y.ErrnoError))throw r;return r.errno}},i:function(r,t,e,n){try{var o=$.getStreamFromFD(r),i=$.doReadv(o,t,e);return E[n>>2]=i,0}catch(r){if(void 0===Y||!(r instanceof Y.ErrnoError))throw r;return r.errno}},j:function(r,t,e,n,o){try{var i=$.getStreamFromFD(r),a=4294967296*e+(t>>>0),s=9007199254740992;return a<=-s||a>=s?-61:(Y.llseek(i,a,n),C=[i.position>>>0,(R=i.position,+Math.abs(R)>=1?R>0?(0|Math.min(+Math.floor(R/4294967296),4294967295))>>>0:~~+Math.ceil((R-+(~~R>>>0))/4294967296)>>>0:0)],E[o>>2]=C[0],E[o+4>>2]=C[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0)}catch(r){if(void 0===Y||!(r instanceof Y.ErrnoError))throw r;return r.errno}},c:function(r,t,e,n){try{var o=$.getStreamFromFD(r),i=$.doWritev(o,t,e);return E[n>>2]=i,0}catch(r){if(void 0===Y||!(r instanceof Y.ErrnoError))throw r;return r.errno}},l:function(r){var t=Date.now();return E[r>>2]=t/1e3|0,E[r+4>>2]=t%1e3*1e3|0,0}};!function(){var r={a:ar};function t(r,t){var e,n=r.exports;o.asm=n,F((l=o.asm.m).buffer),b=o.asm.G,e=o.asm.n,j.unshift(e),L()}function e(r){t(r.instance)}function i(t){return(d||"function"!=typeof fetch?Promise.resolve().then((function(){return U(x)})):fetch(x,{credentials:"same-origin"}).then((function(r){if(!r.ok)throw"failed to load wasm binary file at '"+x+"'";return r.arrayBuffer()})).catch((function(){return U(x)}))).then((function(t){return WebAssembly.instantiate(t,r)})).then((function(r){return r})).then(t,(function(r){m("failed to asynchronously prepare wasm: "+r),I(r)}))}if(O(),o.instantiateWasm)try{return o.instantiateWasm(r,t)}catch(r){return m("Module.instantiateWasm callback failed with error: "+r),!1}(d||"function"!=typeof WebAssembly.instantiateStreaming||H(x)||"function"!=typeof fetch?i(e):fetch(x,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,r).then(e,(function(r){return m("wasm streaming compile failed: "+r),m("falling back to ArrayBuffer instantiation"),i(e)}))}))).catch(n)}(),o.___wasm_call_ctors=function(){return(o.___wasm_call_ctors=o.asm.n).apply(null,arguments)};var sr,ur=o._emscripten_bind_CExpat_CExpat_0=function(){return(ur=o._emscripten_bind_CExpat_CExpat_0=o.asm.o).apply(null,arguments)},cr=o._emscripten_bind_CExpat_version_0=function(){return(cr=o._emscripten_bind_CExpat_version_0=o.asm.p).apply(null,arguments)},fr=o._emscripten_bind_CExpat_create_0=function(){return(fr=o._emscripten_bind_CExpat_create_0=o.asm.q).apply(null,arguments)},dr=o._emscripten_bind_CExpat_destroy_0=function(){return(dr=o._emscripten_bind_CExpat_destroy_0=o.asm.r).apply(null,arguments)},lr=o._emscripten_bind_CExpat_parse_1=function(){return(lr=o._emscripten_bind_CExpat_parse_1=o.asm.s).apply(null,arguments)},pr=o._emscripten_bind_CExpat_tag_0=function(){return(pr=o._emscripten_bind_CExpat_tag_0=o.asm.t).apply(null,arguments)},mr=o._emscripten_bind_CExpat_attrs_0=function(){return(mr=o._emscripten_bind_CExpat_attrs_0=o.asm.u).apply(null,arguments)},hr=o._emscripten_bind_CExpat_content_0=function(){return(hr=o._emscripten_bind_CExpat_content_0=o.asm.v).apply(null,arguments)},vr=o._emscripten_bind_CExpat_startElement_0=function(){return(vr=o._emscripten_bind_CExpat_startElement_0=o.asm.w).apply(null,arguments)},wr=o._emscripten_bind_CExpat_endElement_0=function(){return(wr=o._emscripten_bind_CExpat_endElement_0=o.asm.x).apply(null,arguments)},_r=o._emscripten_bind_CExpat_characterData_0=function(){return(_r=o._emscripten_bind_CExpat_characterData_0=o.asm.y).apply(null,arguments)},yr=o._emscripten_bind_CExpat___destroy___0=function(){return(yr=o._emscripten_bind_CExpat___destroy___0=o.asm.z).apply(null,arguments)},Er=o._emscripten_bind_VoidPtr___destroy___0=function(){return(Er=o._emscripten_bind_VoidPtr___destroy___0=o.asm.A).apply(null,arguments)},gr=o._emscripten_bind_CExpatJS_CExpatJS_0=function(){return(gr=o._emscripten_bind_CExpatJS_CExpatJS_0=o.asm.B).apply(null,arguments)},br=o._emscripten_bind_CExpatJS_startElement_0=function(){return(br=o._emscripten_bind_CExpatJS_startElement_0=o.asm.C).apply(null,arguments)},kr=o._emscripten_bind_CExpatJS_endElement_0=function(){return(kr=o._emscripten_bind_CExpatJS_endElement_0=o.asm.D).apply(null,arguments)},Dr=o._emscripten_bind_CExpatJS_characterData_0=function(){return(Dr=o._emscripten_bind_CExpatJS_characterData_0=o.asm.E).apply(null,arguments)},Sr=o._emscripten_bind_CExpatJS___destroy___0=function(){return(Sr=o._emscripten_bind_CExpatJS___destroy___0=o.asm.F).apply(null,arguments)};function Pr(r){function e(){sr||(sr=!0,o.calledRun=!0,h||(o.noFSInit||Y.init.initialized||Y.init(),Y.ignorePermissions=!1,q(j),t(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)r=o.postRun.shift(),B.unshift(r);var r;q(B)}()))}T>0||(function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)r=o.preRun.shift(),z.unshift(r);var r;q(z)}(),T>0||(o.setStatus?(o.setStatus("Running..."),setTimeout((function(){setTimeout((function(){o.setStatus("")}),1),e()}),1)):e()))}if(o._malloc=function(){return(o._malloc=o.asm.H).apply(null,arguments)},N=function r(){sr||Pr(),sr||(N=r)},o.run=Pr,o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();function Ar(){}function Fr(r){return(r||Ar).__cache__}function xr(r,t){var e=Fr(t),n=e[r];return n||((n=Object.create((t||Ar).prototype)).ptr=r,e[r]=n)}Pr(),Ar.prototype=Object.create(Ar.prototype),Ar.prototype.constructor=Ar,Ar.prototype.__class__=Ar,Ar.__cache__={},o.WrapperObject=Ar,o.getCache=Fr,o.wrapPointer=xr,o.castObject=function(r,t){return xr(r.ptr,t)},o.NULL=xr(0),o.destroy=function(r){if(!r.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";r.__destroy__(),delete Fr(r.__class__)[r.ptr]},o.compare=function(r,t){return r.ptr===t.ptr},o.getPointer=function(r){return r.ptr},o.getClass=function(r){return r.__class__};var Mr={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(Mr.needed){for(var r=0;r<Mr.temps.length;r++)o._free(Mr.temps[r]);Mr.temps.length=0,o._free(Mr.buffer),Mr.buffer=0,Mr.size+=Mr.needed,Mr.needed=0}Mr.buffer||(Mr.size+=128,Mr.buffer=o._malloc(Mr.size),v(Mr.buffer)),Mr.pos=0},alloc:function(r,t){v(Mr.buffer);var e,n=t.BYTES_PER_ELEMENT,i=r.length*n;return i=i+7&-8,Mr.pos+i>=Mr.size?(v(i>0),Mr.needed+=i,e=o._malloc(i),Mr.temps.push(e)):(e=Mr.buffer+Mr.pos,Mr.pos+=i),e},copy:function(r,t,e){switch(e>>>=0,t.BYTES_PER_ELEMENT){case 2:e>>>=1;break;case 4:e>>>=2;break;case 8:e>>>=3}for(var n=0;n<r.length;n++)t[e+n]=r[n]}};function Rr(){this.ptr=ur(),Fr(Rr)[this.ptr]=this}function Cr(){throw"cannot construct a VoidPtr, no constructor in IDL"}function zr(){this.ptr=gr(),Fr(zr)[this.ptr]=this}return Rr.prototype=Object.create(Ar.prototype),Rr.prototype.constructor=Rr,Rr.prototype.__class__=Rr,Rr.__cache__={},o.CExpat=Rr,Rr.prototype.version=Rr.prototype.version=function(){var r=this.ptr;return S(cr(r))},Rr.prototype.create=Rr.prototype.create=function(){var r=this.ptr;return!!fr(r)},Rr.prototype.destroy=Rr.prototype.destroy=function(){var r=this.ptr;dr(r)},Rr.prototype.parse=Rr.prototype.parse=function(r){var t=this.ptr;return Mr.prepare(),r=r&&"object"==typeof r?r.ptr:function(r){if("string"==typeof r){var t=ir(r),e=Mr.alloc(t,_);return Mr.copy(t,_,e),e}return r}(r),!!lr(t,r)},Rr.prototype.tag=Rr.prototype.tag=function(){var r=this.ptr;return S(pr(r))},Rr.prototype.attrs=Rr.prototype.attrs=function(){var r=this.ptr;return S(mr(r))},Rr.prototype.content=Rr.prototype.content=function(){var r=this.ptr;return S(hr(r))},Rr.prototype.startElement=Rr.prototype.startElement=function(){var r=this.ptr;vr(r)},Rr.prototype.endElement=Rr.prototype.endElement=function(){var r=this.ptr;wr(r)},Rr.prototype.characterData=Rr.prototype.characterData=function(){var r=this.ptr;_r(r)},Rr.prototype.__destroy__=Rr.prototype.__destroy__=function(){var r=this.ptr;yr(r)},Cr.prototype=Object.create(Ar.prototype),Cr.prototype.constructor=Cr,Cr.prototype.__class__=Cr,Cr.__cache__={},o.VoidPtr=Cr,Cr.prototype.__destroy__=Cr.prototype.__destroy__=function(){var r=this.ptr;Er(r)},zr.prototype=Object.create(Rr.prototype),zr.prototype.constructor=zr,zr.prototype.__class__=zr,zr.__cache__={},o.CExpatJS=zr,zr.prototype.startElement=zr.prototype.startElement=function(){var r=this.ptr;br(r)},zr.prototype.endElement=zr.prototype.endElement=function(){var r=this.ptr;kr(r)},zr.prototype.characterData=zr.prototype.characterData=function(){var r=this.ptr;Dr(r)},zr.prototype.__destroy__=zr.prototype.__destroy__=function(){var r=this.ptr;Sr(r)},r.ready});r.exports=n}(e);var n=e.exports,o=Object.freeze(t({__proto__:null,default:n},[e.exports]));var i=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")}().__hpcc_wasmFolder||void 0;function a(r){if(!arguments.length)return i;var t=i;return i=r,t}function s(r,t,e){var n=r.default||r;return n.__hpcc_promise||(n.__hpcc_promise=n({wasmBinary:e,locateFile:function(r,e){return"".concat(function(r,t){for(;r.charAt(r.length-1)===t;)r=r.substring(0,r.length-1);return r}(t||a()||e||".","/"),"/").concat(function(r,t){for(;r.charAt(0)===t;)r=r.substring(1);return r}(r,"/"))}})),n.__hpcc_promise}var u=function(){function r(r,t){this.tag=r,this.attrs=t,this._content=""}return Object.defineProperty(r.prototype,"content",{get:function(){return this._content},enumerable:!1,configurable:!0}),r.prototype.appendContent=function(r){this._content+=r},r}(),c=function(){function r(){this._stack=[]}return r.prototype.parse=function(r,t,e){return f(r,this,t,e)},r.prototype.top=function(){return this._stack[this._stack.length-1]},r.prototype.startElement=function(r,t){var e=new u(r,t);return this._stack.push(e),e},r.prototype.endElement=function(r){return this._stack.pop()},r.prototype.characterData=function(r){this.top().appendContent(r)},r}();function f(r,t,e,n){return s(o,e,n).then((function(e){var n=new e.CExpatJS;n.startElement=function(){t.startElement(this.tag(),function(r){var t={},e=r,n="".concat(String.fromCharCode(1)),o="".concat(n).concat(n);return e.split(o).filter((function(r){return!!r})).forEach((function(r){var e=r.split(n);t[e[0]]=e[1]})),t}(this.attrs()))},n.endElement=function(){t.endElement(this.tag())},n.characterData=function(){t.characterData(this.content())},n.create();var o=n.parse(r);return n.destroy(),e.destroy(n),o}))}var d={exports:{}};!function(r,t){var e,n=(e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,function(r){var t,n,o=void 0!==(r=r||{})?r:{};o.ready=new Promise((function(r,e){t=r,n=e}));var i,a={};for(i in o)o.hasOwnProperty(i)&&(a[i]=o[i]);var s,u,c="./this.program",f=function(r,t){throw t},d="";"undefined"!=typeof document&&document.currentScript&&(d=document.currentScript.src),e&&(d=e),d=0!==d.indexOf("blob:")?d.substr(0,d.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=function(r){var t=new XMLHttpRequest;return t.open("GET",r,!1),t.send(null),t.responseText},u=function(r,t,e){var n=new XMLHttpRequest;n.open("GET",r,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?t(n.response):e()},n.onerror=e,n.send(null)};var l=o.print||console.log.bind(console),p=o.printErr||console.warn.bind(console);for(i in a)a.hasOwnProperty(i)&&(o[i]=a[i]);a=null,o.arguments,o.thisProgram&&(c=o.thisProgram),o.quit&&(f=o.quit);var m,h=0;o.wasmBinary&&(m=o.wasmBinary);var v,w=o.noExitRuntime||!0;"object"!=typeof WebAssembly&&q("no native wasm support detected");var _=!1;function y(r,t){r||q("Assertion failed: "+t)}var E,g,b,k,D,S,P,A="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function F(r,t,e){for(var n=t+e,o=t;r[o]&&!(o>=n);)++o;if(o-t>16&&r.subarray&&A)return A.decode(r.subarray(t,o));for(var i="";t<o;){var a=r[t++];if(128&a){var s=63&r[t++];if(192!=(224&a)){var u=63&r[t++];if((a=224==(240&a)?(15&a)<<12|s<<6|u:(7&a)<<18|s<<12|u<<6|63&r[t++])<65536)i+=String.fromCharCode(a);else{var c=a-65536;i+=String.fromCharCode(55296|c>>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function x(r,t){return r?F(b,r,t):""}function M(r,t,e,n){if(!(n>0))return 0;for(var o=e,i=e+n-1,a=0;a<r.length;++a){var s=r.charCodeAt(a);if(s>=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&r.charCodeAt(++a)),s<=127){if(e>=i)break;t[e++]=s}else if(s<=2047){if(e+1>=i)break;t[e++]=192|s>>6,t[e++]=128|63&s}else if(s<=65535){if(e+2>=i)break;t[e++]=224|s>>12,t[e++]=128|s>>6&63,t[e++]=128|63&s}else{if(e+3>=i)break;t[e++]=240|s>>18,t[e++]=128|s>>12&63,t[e++]=128|s>>6&63,t[e++]=128|63&s}}return t[e]=0,e-o}function R(r){for(var t=0,e=0;e<r.length;++e){var n=r.charCodeAt(e);n>=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&r.charCodeAt(++e)),n<=127?++t:t+=n<=2047?2:n<=65535?3:4}return t}function C(r){E=r,o.HEAP8=g=new Int8Array(r),o.HEAP16=k=new Int16Array(r),o.HEAP32=D=new Int32Array(r),o.HEAPU8=b=new Uint8Array(r),o.HEAPU16=new Uint16Array(r),o.HEAPU32=new Uint32Array(r),o.HEAPF32=new Float32Array(r),o.HEAPF64=S=new Float64Array(r)}o.INITIAL_MEMORY;var z,j,B,T,N=[],O=[],L=[],I=0,H=null;function U(r){I++,o.monitorRunDependencies&&o.monitorRunDependencies(I)}function G(r){if(I--,o.monitorRunDependencies&&o.monitorRunDependencies(I),0==I&&H){var t=H;H=null,t()}}function q(r){o.onAbort&&o.onAbort(r),p(r="Aborted("+r+")"),_=!0,r+=". Build with -s ASSERTIONS=1 for more info.";var t=new WebAssembly.RuntimeError(r);throw n(t),t}function W(r){return r.startsWith("data:application/octet-stream;base64,")}function J(r){try{if(r==z&&m)return new Uint8Array(m);throw"both async and sync fetching of the wasm failed"}catch(r){q(r)}}o.preloadedImages={},o.preloadedAudios={},W(z="graphvizlib.wasm")||(j=z,z=o.locateFile?o.locateFile(j,d):d+j);var V,X={161580:function(r,t){var e=x(r),n=x(t);nr.createPath("/",Q.dirname(e)),nr.writeFile(Q.join("/",e),n)}};function K(r){for(;r.length>0;){var t=r.shift();if("function"!=typeof t){var e=t.func;"number"==typeof e?void 0===t.arg?Y(e)():Y(e)(t.arg):e(void 0===t.arg?null:t.arg)}else t(o)}}function Y(r){return P.get(r)}function $(r){return D[kr()>>2]=r,r}V=function(){return performance.now()};var Q={splitPath:function(r){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(r).slice(1)},normalizeArray:function(r,t){for(var e=0,n=r.length-1;n>=0;n--){var o=r[n];"."===o?r.splice(n,1):".."===o?(r.splice(n,1),e++):e&&(r.splice(n,1),e--)}if(t)for(;e;e--)r.unshift("..");return r},normalize:function(r){var t="/"===r.charAt(0),e="/"===r.substr(-1);return(r=Q.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||t||(r="."),r&&e&&(r+="/"),(t?"/":"")+r},dirname:function(r){var t=Q.splitPath(r),e=t[0],n=t[1];return e||n?(n&&(n=n.substr(0,n.length-1)),e+n):"."},basename:function(r){if("/"===r)return"/";var t=(r=(r=Q.normalize(r)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?r:r.substr(t+1)},extname:function(r){return Q.splitPath(r)[3]},join:function(){var r=Array.prototype.slice.call(arguments,0);return Q.normalize(r.join("/"))},join2:function(r,t){return Q.normalize(r+"/"+t)}},Z={resolve:function(){for(var r="",t=!1,e=arguments.length-1;e>=-1&&!t;e--){var n=e>=0?arguments[e]:nr.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";r=n+"/"+r,t="/"===n.charAt(0)}return(t?"/":"")+(r=Q.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||"."},relative:function(r,t){function e(r){for(var t=0;t<r.length&&""===r[t];t++);for(var e=r.length-1;e>=0&&""===r[e];e--);return t>e?[]:r.slice(t,e-t+1)}r=Z.resolve(r).substr(1),t=Z.resolve(t).substr(1);for(var n=e(r.split("/")),o=e(t.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s<i;s++)if(n[s]!==o[s]){a=s;break}var u=[];for(s=a;s<n.length;s++)u.push("..");return(u=u.concat(o.slice(a))).join("/")}},rr={ttys:[],init:function(){},shutdown:function(){},register:function(r,t){rr.ttys[r]={input:[],output:[],ops:t},nr.registerDevice(r,rr.stream_ops)},stream_ops:{open:function(r){var t=rr.ttys[r.node.rdev];if(!t)throw new nr.ErrnoError(43);r.tty=t,r.seekable=!1},close:function(r){r.tty.ops.flush(r.tty)},flush:function(r){r.tty.ops.flush(r.tty)},read:function(r,t,e,n,o){if(!r.tty||!r.tty.ops.get_char)throw new nr.ErrnoError(60);for(var i=0,a=0;a<n;a++){var s;try{s=r.tty.ops.get_char(r.tty)}catch(r){throw new nr.ErrnoError(29)}if(void 0===s&&0===i)throw new nr.ErrnoError(6);if(null==s)break;i++,t[e+a]=s}return i&&(r.node.timestamp=Date.now()),i},write:function(r,t,e,n,o){if(!r.tty||!r.tty.ops.put_char)throw new nr.ErrnoError(60);try{for(var i=0;i<n;i++)r.tty.ops.put_char(r.tty,t[e+i])}catch(r){throw new nr.ErrnoError(29)}return n&&(r.node.timestamp=Date.now()),i}},default_tty_ops:{get_char:function(r){if(!r.input.length){var t=null;if("undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n"),!t)return null;r.input=lr(t,!0)}return r.input.shift()},put_char:function(r,t){null===t||10===t?(l(F(r.output,0)),r.output=[]):0!=t&&r.output.push(t)},flush:function(r){r.output&&r.output.length>0&&(l(F(r.output,0)),r.output=[])}},default_tty1_ops:{put_char:function(r,t){null===t||10===t?(p(F(r.output,0)),r.output=[]):0!=t&&r.output.push(t)},flush:function(r){r.output&&r.output.length>0&&(p(F(r.output,0)),r.output=[])}}};function tr(r){r=function(r,t){return Math.ceil(r/t)*t}(r,65536);var t=Ar(65536,r);return t?(function(r,t){b.fill(0,r,r+t)}(t,r),t):0}var er={ops_table:null,mount:function(r){return er.createNode(null,"/",16895,0)},createNode:function(r,t,e,n){if(nr.isBlkdev(e)||nr.isFIFO(e))throw new nr.ErrnoError(63);er.ops_table||(er.ops_table={dir:{node:{getattr:er.node_ops.getattr,setattr:er.node_ops.setattr,lookup:er.node_ops.lookup,mknod:er.node_ops.mknod,rename:er.node_ops.rename,unlink:er.node_ops.unlink,rmdir:er.node_ops.rmdir,readdir:er.node_ops.readdir,symlink:er.node_ops.symlink},stream:{llseek:er.stream_ops.llseek}},file:{node:{getattr:er.node_ops.getattr,setattr:er.node_ops.setattr},stream:{llseek:er.stream_ops.llseek,read:er.stream_ops.read,write:er.stream_ops.write,allocate:er.stream_ops.allocate,mmap:er.stream_ops.mmap,msync:er.stream_ops.msync}},link:{node:{getattr:er.node_ops.getattr,setattr:er.node_ops.setattr,readlink:er.node_ops.readlink},stream:{}},chrdev:{node:{getattr:er.node_ops.getattr,setattr:er.node_ops.setattr},stream:nr.chrdev_stream_ops}});var o=nr.createNode(r,t,e,n);return nr.isDir(o.mode)?(o.node_ops=er.ops_table.dir.node,o.stream_ops=er.ops_table.dir.stream,o.contents={}):nr.isFile(o.mode)?(o.node_ops=er.ops_table.file.node,o.stream_ops=er.ops_table.file.stream,o.usedBytes=0,o.contents=null):nr.isLink(o.mode)?(o.node_ops=er.ops_table.link.node,o.stream_ops=er.ops_table.link.stream):nr.isChrdev(o.mode)&&(o.node_ops=er.ops_table.chrdev.node,o.stream_ops=er.ops_table.chrdev.stream),o.timestamp=Date.now(),r&&(r.contents[t]=o,r.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(r){return r.contents?r.contents.subarray?r.contents.subarray(0,r.usedBytes):new Uint8Array(r.contents):new Uint8Array(0)},expandFileStorage:function(r,t){var e=r.contents?r.contents.length:0;if(!(e>=t)){t=Math.max(t,e*(e<1048576?2:1.125)>>>0),0!=e&&(t=Math.max(t,256));var n=r.contents;r.contents=new Uint8Array(t),r.usedBytes>0&&r.contents.set(n.subarray(0,r.usedBytes),0)}},resizeFileStorage:function(r,t){if(r.usedBytes!=t)if(0==t)r.contents=null,r.usedBytes=0;else{var e=r.contents;r.contents=new Uint8Array(t),e&&r.contents.set(e.subarray(0,Math.min(t,r.usedBytes))),r.usedBytes=t}},node_ops:{getattr:function(r){var t={};return t.dev=nr.isChrdev(r.mode)?r.id:1,t.ino=r.id,t.mode=r.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=r.rdev,nr.isDir(r.mode)?t.size=4096:nr.isFile(r.mode)?t.size=r.usedBytes:nr.isLink(r.mode)?t.size=r.link.length:t.size=0,t.atime=new Date(r.timestamp),t.mtime=new Date(r.timestamp),t.ctime=new Date(r.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(r,t){void 0!==t.mode&&(r.mode=t.mode),void 0!==t.timestamp&&(r.timestamp=t.timestamp),void 0!==t.size&&er.resizeFileStorage(r,t.size)},lookup:function(r,t){throw nr.genericErrors[44]},mknod:function(r,t,e,n){return er.createNode(r,t,e,n)},rename:function(r,t,e){if(nr.isDir(r.mode)){var n;try{n=nr.lookupNode(t,e)}catch(r){}if(n)for(var o in n.contents)throw new nr.ErrnoError(55)}delete r.parent.contents[r.name],r.parent.timestamp=Date.now(),r.name=e,t.contents[e]=r,t.timestamp=r.parent.timestamp,r.parent=t},unlink:function(r,t){delete r.contents[t],r.timestamp=Date.now()},rmdir:function(r,t){var e=nr.lookupNode(r,t);for(var n in e.contents)throw new nr.ErrnoError(55);delete r.contents[t],r.timestamp=Date.now()},readdir:function(r){var t=[".",".."];for(var e in r.contents)r.contents.hasOwnProperty(e)&&t.push(e);return t},symlink:function(r,t,e){var n=er.createNode(r,t,41471,0);return n.link=e,n},readlink:function(r){if(!nr.isLink(r.mode))throw new nr.ErrnoError(28);return r.link}},stream_ops:{read:function(r,t,e,n,o){var i=r.node.contents;if(o>=r.node.usedBytes)return 0;var a=Math.min(r.node.usedBytes-o,n);if(a>8&&i.subarray)t.set(i.subarray(o,o+a),e);else for(var s=0;s<a;s++)t[e+s]=i[o+s];return a},write:function(r,t,e,n,o,i){if(t.buffer===g.buffer&&(i=!1),!n)return 0;var a=r.node;if(a.timestamp=Date.now(),t.subarray&&(!a.contents||a.contents.subarray)){if(i)return a.contents=t.subarray(e,e+n),a.usedBytes=n,n;if(0===a.usedBytes&&0===o)return a.contents=t.slice(e,e+n),a.usedBytes=n,n;if(o+n<=a.usedBytes)return a.contents.set(t.subarray(e,e+n),o),n}if(er.expandFileStorage(a,o+n),a.contents.subarray&&t.subarray)a.contents.set(t.subarray(e,e+n),o);else for(var s=0;s<n;s++)a.contents[o+s]=t[e+s];return a.usedBytes=Math.max(a.usedBytes,o+n),n},llseek:function(r,t,e){var n=t;if(1===e?n+=r.position:2===e&&nr.isFile(r.node.mode)&&(n+=r.node.usedBytes),n<0)throw new nr.ErrnoError(28);return n},allocate:function(r,t,e){er.expandFileStorage(r.node,t+e),r.node.usedBytes=Math.max(r.node.usedBytes,t+e)},mmap:function(r,t,e,n,o,i){if(0!==t)throw new nr.ErrnoError(28);if(!nr.isFile(r.node.mode))throw new nr.ErrnoError(43);var a,s,u=r.node.contents;if(2&i||u.buffer!==E){if((n>0||n+e<u.length)&&(u=u.subarray?u.subarray(n,n+e):Array.prototype.slice.call(u,n,n+e)),s=!0,!(a=tr(e)))throw new nr.ErrnoError(48);g.set(u,a)}else s=!1,a=u.byteOffset;return{ptr:a,allocated:s}},msync:function(r,t,e,n,o){if(!nr.isFile(r.node.mode))throw new nr.ErrnoError(43);return 2&o||er.stream_ops.write(r,t,0,n,e,!1),0}}},nr={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(r,t){if(t=t||{},!(r=Z.resolve(nr.cwd(),r)))return{path:"",node:null};var e={follow_mount:!0,recurse_count:0};for(var n in e)void 0===t[n]&&(t[n]=e[n]);if(t.recurse_count>8)throw new nr.ErrnoError(32);for(var o=Q.normalizeArray(r.split("/").filter((function(r){return!!r})),!1),i=nr.root,a="/",s=0;s<o.length;s++){var u=s===o.length-1;if(u&&t.parent)break;if(i=nr.lookupNode(i,o[s]),a=Q.join2(a,o[s]),nr.isMountpoint(i)&&(!u||u&&t.follow_mount)&&(i=i.mounted.root),!u||t.follow)for(var c=0;nr.isLink(i.mode);){var f=nr.readlink(a);if(a=Z.resolve(Q.dirname(a),f),i=nr.lookupPath(a,{recurse_count:t.recurse_count}).node,c++>40)throw new nr.ErrnoError(32)}}return{path:a,node:i}},getPath:function(r){for(var t;;){if(nr.isRoot(r)){var e=r.mount.mountpoint;return t?"/"!==e[e.length-1]?e+"/"+t:e+t:e}t=t?r.name+"/"+t:r.name,r=r.parent}},hashName:function(r,t){for(var e=0,n=0;n<t.length;n++)e=(e<<5)-e+t.charCodeAt(n)|0;return(r+e>>>0)%nr.nameTable.length},hashAddNode:function(r){var t=nr.hashName(r.parent.id,r.name);r.name_next=nr.nameTable[t],nr.nameTable[t]=r},hashRemoveNode:function(r){var t=nr.hashName(r.parent.id,r.name);if(nr.nameTable[t]===r)nr.nameTable[t]=r.name_next;else for(var e=nr.nameTable[t];e;){if(e.name_next===r){e.name_next=r.name_next;break}e=e.name_next}},lookupNode:function(r,t){var e=nr.mayLookup(r);if(e)throw new nr.ErrnoError(e,r);for(var n=nr.hashName(r.id,t),o=nr.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===r.id&&i===t)return o}return nr.lookup(r,t)},createNode:function(r,t,e,n){var o=new nr.FSNode(r,t,e,n);return nr.hashAddNode(o),o},destroyNode:function(r){nr.hashRemoveNode(r)},isRoot:function(r){return r===r.parent},isMountpoint:function(r){return!!r.mounted},isFile:function(r){return 32768==(61440&r)},isDir:function(r){return 16384==(61440&r)},isLink:function(r){return 40960==(61440&r)},isChrdev:function(r){return 8192==(61440&r)},isBlkdev:function(r){return 24576==(61440&r)},isFIFO:function(r){return 4096==(61440&r)},isSocket:function(r){return 49152==(49152&r)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(r){var t=nr.flagModes[r];if(void 0===t)throw new Error("Unknown file open mode: "+r);return t},flagsToPermissionString:function(r){var t=["r","w","rw"][3&r];return 512&r&&(t+="w"),t},nodePermissions:function(r,t){return nr.ignorePermissions||(!t.includes("r")||292&r.mode)&&(!t.includes("w")||146&r.mode)&&(!t.includes("x")||73&r.mode)?0:2},mayLookup:function(r){var t=nr.nodePermissions(r,"x");return t||(r.node_ops.lookup?0:2)},mayCreate:function(r,t){try{return nr.lookupNode(r,t),20}catch(r){}return nr.nodePermissions(r,"wx")},mayDelete:function(r,t,e){var n;try{n=nr.lookupNode(r,t)}catch(r){return r.errno}var o=nr.nodePermissions(r,"wx");if(o)return o;if(e){if(!nr.isDir(n.mode))return 54;if(nr.isRoot(n)||nr.getPath(n)===nr.cwd())return 10}else if(nr.isDir(n.mode))return 31;return 0},mayOpen:function(r,t){return r?nr.isLink(r.mode)?32:nr.isDir(r.mode)&&("r"!==nr.flagsToPermissionString(t)||512&t)?31:nr.nodePermissions(r,nr.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(r,t){r=r||0,t=t||nr.MAX_OPEN_FDS;for(var e=r;e<=t;e++)if(!nr.streams[e])return e;throw new nr.ErrnoError(33)},getStream:function(r){return nr.streams[r]},createStream:function(r,t,e){nr.FSStream||(nr.FSStream=function(){},nr.FSStream.prototype={object:{get:function(){return this.node},set:function(r){this.node=r}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}});var n=new nr.FSStream;for(var o in r)n[o]=r[o];r=n;var i=nr.nextfd(t,e);return r.fd=i,nr.streams[i]=r,r},closeStream:function(r){nr.streams[r]=null},chrdev_stream_ops:{open:function(r){var t=nr.getDevice(r.node.rdev);r.stream_ops=t.stream_ops,r.stream_ops.open&&r.stream_ops.open(r)},llseek:function(){throw new nr.ErrnoError(70)}},major:function(r){return r>>8},minor:function(r){return 255&r},makedev:function(r,t){return r<<8|t},registerDevice:function(r,t){nr.devices[r]={stream_ops:t}},getDevice:function(r){return nr.devices[r]},getMounts:function(r){for(var t=[],e=[r];e.length;){var n=e.pop();t.push(n),e.push.apply(e,n.mounts)}return t},syncfs:function(r,t){"function"==typeof r&&(t=r,r=!1),nr.syncFSRequests++,nr.syncFSRequests>1&&p("warning: "+nr.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var e=nr.getMounts(nr.root.mount),n=0;function o(r){return nr.syncFSRequests--,t(r)}function i(r){if(r)return i.errored?void 0:(i.errored=!0,o(r));++n>=e.length&&o(null)}e.forEach((function(t){if(!t.type.syncfs)return i(null);t.type.syncfs(t,r,i)}))},mount:function(r,t,e){var n,o="/"===e,i=!e;if(o&&nr.root)throw new nr.ErrnoError(10);if(!o&&!i){var a=nr.lookupPath(e,{follow_mount:!1});if(e=a.path,n=a.node,nr.isMountpoint(n))throw new nr.ErrnoError(10);if(!nr.isDir(n.mode))throw new nr.ErrnoError(54)}var s={type:r,opts:t,mountpoint:e,mounts:[]},u=r.mount(s);return u.mount=s,s.root=u,o?nr.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(r){var t=nr.lookupPath(r,{follow_mount:!1});if(!nr.isMountpoint(t.node))throw new nr.ErrnoError(28);var e=t.node,n=e.mounted,o=nr.getMounts(n);Object.keys(nr.nameTable).forEach((function(r){for(var t=nr.nameTable[r];t;){var e=t.name_next;o.includes(t.mount)&&nr.destroyNode(t),t=e}})),e.mounted=null;var i=e.mount.mounts.indexOf(n);e.mount.mounts.splice(i,1)},lookup:function(r,t){return r.node_ops.lookup(r,t)},mknod:function(r,t,e){var n=nr.lookupPath(r,{parent:!0}).node,o=Q.basename(r);if(!o||"."===o||".."===o)throw new nr.ErrnoError(28);var i=nr.mayCreate(n,o);if(i)throw new nr.ErrnoError(i);if(!n.node_ops.mknod)throw new nr.ErrnoError(63);return n.node_ops.mknod(n,o,t,e)},create:function(r,t){return t=void 0!==t?t:438,t&=4095,t|=32768,nr.mknod(r,t,0)},mkdir:function(r,t){return t=void 0!==t?t:511,t&=1023,t|=16384,nr.mknod(r,t,0)},mkdirTree:function(r,t){for(var e=r.split("/"),n="",o=0;o<e.length;++o)if(e[o]){n+="/"+e[o];try{nr.mkdir(n,t)}catch(r){if(20!=r.errno)throw r}}},mkdev:function(r,t,e){return void 0===e&&(e=t,t=438),t|=8192,nr.mknod(r,t,e)},symlink:function(r,t){if(!Z.resolve(r))throw new nr.ErrnoError(44);var e=nr.lookupPath(t,{parent:!0}).node;if(!e)throw new nr.ErrnoError(44);var n=Q.basename(t),o=nr.mayCreate(e,n);if(o)throw new nr.ErrnoError(o);if(!e.node_ops.symlink)throw new nr.ErrnoError(63);return e.node_ops.symlink(e,n,r)},rename:function(r,t){var e,n,o=Q.dirname(r),i=Q.dirname(t),a=Q.basename(r),s=Q.basename(t);if(e=nr.lookupPath(r,{parent:!0}).node,n=nr.lookupPath(t,{parent:!0}).node,!e||!n)throw new nr.ErrnoError(44);if(e.mount!==n.mount)throw new nr.ErrnoError(75);var u,c=nr.lookupNode(e,a),f=Z.relative(r,i);if("."!==f.charAt(0))throw new nr.ErrnoError(28);if("."!==(f=Z.relative(t,o)).charAt(0))throw new nr.ErrnoError(55);try{u=nr.lookupNode(n,s)}catch(r){}if(c!==u){var d=nr.isDir(c.mode),l=nr.mayDelete(e,a,d);if(l)throw new nr.ErrnoError(l);if(l=u?nr.mayDelete(n,s,d):nr.mayCreate(n,s))throw new nr.ErrnoError(l);if(!e.node_ops.rename)throw new nr.ErrnoError(63);if(nr.isMountpoint(c)||u&&nr.isMountpoint(u))throw new nr.ErrnoError(10);if(n!==e&&(l=nr.nodePermissions(e,"w")))throw new nr.ErrnoError(l);nr.hashRemoveNode(c);try{e.node_ops.rename(c,n,s)}catch(r){throw r}finally{nr.hashAddNode(c)}}},rmdir:function(r){var t=nr.lookupPath(r,{parent:!0}).node,e=Q.basename(r),n=nr.lookupNode(t,e),o=nr.mayDelete(t,e,!0);if(o)throw new nr.ErrnoError(o);if(!t.node_ops.rmdir)throw new nr.ErrnoError(63);if(nr.isMountpoint(n))throw new nr.ErrnoError(10);t.node_ops.rmdir(t,e),nr.destroyNode(n)},readdir:function(r){var t=nr.lookupPath(r,{follow:!0}).node;if(!t.node_ops.readdir)throw new nr.ErrnoError(54);return t.node_ops.readdir(t)},unlink:function(r){var t=nr.lookupPath(r,{parent:!0}).node,e=Q.basename(r),n=nr.lookupNode(t,e),o=nr.mayDelete(t,e,!1);if(o)throw new nr.ErrnoError(o);if(!t.node_ops.unlink)throw new nr.ErrnoError(63);if(nr.isMountpoint(n))throw new nr.ErrnoError(10);t.node_ops.unlink(t,e),nr.destroyNode(n)},readlink:function(r){var t=nr.lookupPath(r).node;if(!t)throw new nr.ErrnoError(44);if(!t.node_ops.readlink)throw new nr.ErrnoError(28);return Z.resolve(nr.getPath(t.parent),t.node_ops.readlink(t))},stat:function(r,t){var e=nr.lookupPath(r,{follow:!t}).node;if(!e)throw new nr.ErrnoError(44);if(!e.node_ops.getattr)throw new nr.ErrnoError(63);return e.node_ops.getattr(e)},lstat:function(r){return nr.stat(r,!0)},chmod:function(r,t,e){var n;if(!(n="string"==typeof r?nr.lookupPath(r,{follow:!e}).node:r).node_ops.setattr)throw new nr.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&t|-4096&n.mode,timestamp:Date.now()})},lchmod:function(r,t){nr.chmod(r,t,!0)},fchmod:function(r,t){var e=nr.getStream(r);if(!e)throw new nr.ErrnoError(8);nr.chmod(e.node,t)},chown:function(r,t,e,n){var o;if(!(o="string"==typeof r?nr.lookupPath(r,{follow:!n}).node:r).node_ops.setattr)throw new nr.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:function(r,t,e){nr.chown(r,t,e,!0)},fchown:function(r,t,e){var n=nr.getStream(r);if(!n)throw new nr.ErrnoError(8);nr.chown(n.node,t,e)},truncate:function(r,t){if(t<0)throw new nr.ErrnoError(28);var e;if(!(e="string"==typeof r?nr.lookupPath(r,{follow:!0}).node:r).node_ops.setattr)throw new nr.ErrnoError(63);if(nr.isDir(e.mode))throw new nr.ErrnoError(31);if(!nr.isFile(e.mode))throw new nr.ErrnoError(28);var n=nr.nodePermissions(e,"w");if(n)throw new nr.ErrnoError(n);e.node_ops.setattr(e,{size:t,timestamp:Date.now()})},ftruncate:function(r,t){var e=nr.getStream(r);if(!e)throw new nr.ErrnoError(8);if(0==(2097155&e.flags))throw new nr.ErrnoError(28);nr.truncate(e.node,t)},utime:function(r,t,e){var n=nr.lookupPath(r,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(t,e)})},open:function(r,t,e,n,i){if(""===r)throw new nr.ErrnoError(44);var a;if(e=void 0===e?438:e,e=64&(t="string"==typeof t?nr.modeStringToFlags(t):t)?4095&e|32768:0,"object"==typeof r)a=r;else{r=Q.normalize(r);try{a=nr.lookupPath(r,{follow:!(131072&t)}).node}catch(r){}}var s=!1;if(64&t)if(a){if(128&t)throw new nr.ErrnoError(20)}else a=nr.mknod(r,e,0),s=!0;if(!a)throw new nr.ErrnoError(44);if(nr.isChrdev(a.mode)&&(t&=-513),65536&t&&!nr.isDir(a.mode))throw new nr.ErrnoError(54);if(!s){var u=nr.mayOpen(a,t);if(u)throw new nr.ErrnoError(u)}512&t&&nr.truncate(a,0),t&=-131713;var c=nr.createStream({node:a,path:nr.getPath(a),id:a.id,flags:t,mode:a.mode,seekable:!0,position:0,stream_ops:a.stream_ops,node_ops:a.node_ops,ungotten:[],error:!1},n,i);return c.stream_ops.open&&c.stream_ops.open(c),!o.logReadFiles||1&t||(nr.readFiles||(nr.readFiles={}),r in nr.readFiles||(nr.readFiles[r]=1)),c},close:function(r){if(nr.isClosed(r))throw new nr.ErrnoError(8);r.getdents&&(r.getdents=null);try{r.stream_ops.close&&r.stream_ops.close(r)}catch(r){throw r}finally{nr.closeStream(r.fd)}r.fd=null},isClosed:function(r){return null===r.fd},llseek:function(r,t,e){if(nr.isClosed(r))throw new nr.ErrnoError(8);if(!r.seekable||!r.stream_ops.llseek)throw new nr.ErrnoError(70);if(0!=e&&1!=e&&2!=e)throw new nr.ErrnoError(28);return r.position=r.stream_ops.llseek(r,t,e),r.ungotten=[],r.position},read:function(r,t,e,n,o){if(n<0||o<0)throw new nr.ErrnoError(28);if(nr.isClosed(r))throw new nr.ErrnoError(8);if(1==(2097155&r.flags))throw new nr.ErrnoError(8);if(nr.isDir(r.node.mode))throw new nr.ErrnoError(31);if(!r.stream_ops.read)throw new nr.ErrnoError(28);var i=void 0!==o;if(i){if(!r.seekable)throw new nr.ErrnoError(70)}else o=r.position;var a=r.stream_ops.read(r,t,e,n,o);return i||(r.position+=a),a},write:function(r,t,e,n,o,i){if(n<0||o<0)throw new nr.ErrnoError(28);if(nr.isClosed(r))throw new nr.ErrnoError(8);if(0==(2097155&r.flags))throw new nr.ErrnoError(8);if(nr.isDir(r.node.mode))throw new nr.ErrnoError(31);if(!r.stream_ops.write)throw new nr.ErrnoError(28);r.seekable&&1024&r.flags&&nr.llseek(r,0,2);var a=void 0!==o;if(a){if(!r.seekable)throw new nr.ErrnoError(70)}else o=r.position;var s=r.stream_ops.write(r,t,e,n,o,i);return a||(r.position+=s),s},allocate:function(r,t,e){if(nr.isClosed(r))throw new nr.ErrnoError(8);if(t<0||e<=0)throw new nr.ErrnoError(28);if(0==(2097155&r.flags))throw new nr.ErrnoError(8);if(!nr.isFile(r.node.mode)&&!nr.isDir(r.node.mode))throw new nr.ErrnoError(43);if(!r.stream_ops.allocate)throw new nr.ErrnoError(138);r.stream_ops.allocate(r,t,e)},mmap:function(r,t,e,n,o,i){if(0!=(2&o)&&0==(2&i)&&2!=(2097155&r.flags))throw new nr.ErrnoError(2);if(1==(2097155&r.flags))throw new nr.ErrnoError(2);if(!r.stream_ops.mmap)throw new nr.ErrnoError(43);return r.stream_ops.mmap(r,t,e,n,o,i)},msync:function(r,t,e,n,o){return r&&r.stream_ops.msync?r.stream_ops.msync(r,t,e,n,o):0},munmap:function(r){return 0},ioctl:function(r,t,e){if(!r.stream_ops.ioctl)throw new nr.ErrnoError(59);return r.stream_ops.ioctl(r,t,e)},readFile:function(r,t){if((t=t||{}).flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var e,n=nr.open(r,t.flags),o=nr.stat(r).size,i=new Uint8Array(o);return nr.read(n,i,0,o,0),"utf8"===t.encoding?e=F(i,0):"binary"===t.encoding&&(e=i),nr.close(n),e},writeFile:function(r,t,e){(e=e||{}).flags=e.flags||577;var n=nr.open(r,e.flags,e.mode);if("string"==typeof t){var o=new Uint8Array(R(t)+1),i=M(t,o,0,o.length);nr.write(n,o,0,i,void 0,e.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");nr.write(n,t,0,t.byteLength,void 0,e.canOwn)}nr.close(n)},cwd:function(){return nr.currentPath},chdir:function(r){var t=nr.lookupPath(r,{follow:!0});if(null===t.node)throw new nr.ErrnoError(44);if(!nr.isDir(t.node.mode))throw new nr.ErrnoError(54);var e=nr.nodePermissions(t.node,"x");if(e)throw new nr.ErrnoError(e);nr.currentPath=t.path},createDefaultDirectories:function(){nr.mkdir("/tmp"),nr.mkdir("/home"),nr.mkdir("/home/web_user")},createDefaultDevices:function(){nr.mkdir("/dev"),nr.registerDevice(nr.makedev(1,3),{read:function(){return 0},write:function(r,t,e,n,o){return n}}),nr.mkdev("/dev/null",nr.makedev(1,3)),rr.register(nr.makedev(5,0),rr.default_tty_ops),rr.register(nr.makedev(6,0),rr.default_tty1_ops),nr.mkdev("/dev/tty",nr.makedev(5,0)),nr.mkdev("/dev/tty1",nr.makedev(6,0));var r=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var r=new Uint8Array(1);return function(){return crypto.getRandomValues(r),r[0]}}return function(){q("randomDevice")}}();nr.createDevice("/dev","random",r),nr.createDevice("/dev","urandom",r),nr.mkdir("/dev/shm"),nr.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){nr.mkdir("/proc");var r=nr.mkdir("/proc/self");nr.mkdir("/proc/self/fd"),nr.mount({mount:function(){var t=nr.createNode(r,"fd",16895,73);return t.node_ops={lookup:function(r,t){var e=+t,n=nr.getStream(e);if(!n)throw new nr.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return n.path}}};return o.parent=o,o}},t}},{},"/proc/self/fd")},createStandardStreams:function(){o.stdin?nr.createDevice("/dev","stdin",o.stdin):nr.symlink("/dev/tty","/dev/stdin"),o.stdout?nr.createDevice("/dev","stdout",null,o.stdout):nr.symlink("/dev/tty","/dev/stdout"),o.stderr?nr.createDevice("/dev","stderr",null,o.stderr):nr.symlink("/dev/tty1","/dev/stderr"),nr.open("/dev/stdin",0),nr.open("/dev/stdout",1),nr.open("/dev/stderr",1)},ensureErrnoError:function(){nr.ErrnoError||(nr.ErrnoError=function(r,t){this.node=t,this.setErrno=function(r){this.errno=r},this.setErrno(r),this.message="FS error"},nr.ErrnoError.prototype=new Error,nr.ErrnoError.prototype.constructor=nr.ErrnoError,[44].forEach((function(r){nr.genericErrors[r]=new nr.ErrnoError(r),nr.genericErrors[r].stack="<generic error, no stack>"})))},staticInit:function(){nr.ensureErrnoError(),nr.nameTable=new Array(4096),nr.mount(er,{},"/"),nr.createDefaultDirectories(),nr.createDefaultDevices(),nr.createSpecialDirectories(),nr.filesystems={MEMFS:er}},init:function(r,t,e){nr.init.initialized=!0,nr.ensureErrnoError(),o.stdin=r||o.stdin,o.stdout=t||o.stdout,o.stderr=e||o.stderr,nr.createStandardStreams()},quit:function(){nr.init.initialized=!1;var r=o._fflush;r&&r(0);for(var t=0;t<nr.streams.length;t++){var e=nr.streams[t];e&&nr.close(e)}},getMode:function(r,t){var e=0;return r&&(e|=365),t&&(e|=146),e},findObject:function(r,t){var e=nr.analyzePath(r,t);return e.exists?e.object:null},analyzePath:function(r,t){try{r=(n=nr.lookupPath(r,{follow:!t})).path}catch(r){}var e={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=nr.lookupPath(r,{parent:!0});e.parentExists=!0,e.parentPath=n.path,e.parentObject=n.node,e.name=Q.basename(r),n=nr.lookupPath(r,{follow:!t}),e.exists=!0,e.path=n.path,e.object=n.node,e.name=n.node.name,e.isRoot="/"===n.path}catch(r){e.error=r.errno}return e},createPath:function(r,t,e,n){r="string"==typeof r?r:nr.getPath(r);for(var o=t.split("/").reverse();o.length;){var i=o.pop();if(i){var a=Q.join2(r,i);try{nr.mkdir(a)}catch(r){}r=a}}return a},createFile:function(r,t,e,n,o){var i=Q.join2("string"==typeof r?r:nr.getPath(r),t),a=nr.getMode(n,o);return nr.create(i,a)},createDataFile:function(r,t,e,n,o,i){var a=t?Q.join2("string"==typeof r?r:nr.getPath(r),t):r,s=nr.getMode(n,o),u=nr.create(a,s);if(e){if("string"==typeof e){for(var c=new Array(e.length),f=0,d=e.length;f<d;++f)c[f]=e.charCodeAt(f);e=c}nr.chmod(u,146|s);var l=nr.open(u,577);nr.write(l,e,0,e.length,0,i),nr.close(l),nr.chmod(u,s)}return u},createDevice:function(r,t,e,n){var o=Q.join2("string"==typeof r?r:nr.getPath(r),t),i=nr.getMode(!!e,!!n);nr.createDevice.major||(nr.createDevice.major=64);var a=nr.makedev(nr.createDevice.major++,0);return nr.registerDevice(a,{open:function(r){r.seekable=!1},close:function(r){n&&n.buffer&&n.buffer.length&&n(10)},read:function(r,t,n,o,i){for(var a=0,s=0;s<o;s++){var u;try{u=e()}catch(r){throw new nr.ErrnoError(29)}if(void 0===u&&0===a)throw new nr.ErrnoError(6);if(null==u)break;a++,t[n+s]=u}return a&&(r.node.timestamp=Date.now()),a},write:function(r,t,e,o,i){for(var a=0;a<o;a++)try{n(t[e+a])}catch(r){throw new nr.ErrnoError(29)}return o&&(r.node.timestamp=Date.now()),a}}),nr.mkdev(o,i,a)},forceLoadFile:function(r){if(r.isDevice||r.isFolder||r.link||r.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!s)throw new Error("Cannot load without read() or XMLHttpRequest.");try{r.contents=lr(s(r.url),!0),r.usedBytes=r.contents.length}catch(r){throw new nr.ErrnoError(29)}},createLazyFile:function(r,t,e,n,o){function i(){this.lengthKnown=!1,this.chunks=[]}if(i.prototype.get=function(r){if(!(r>this.length-1||r<0)){var t=r%this.chunkSize,e=r/this.chunkSize|0;return this.getter(e)[t]}},i.prototype.setDataGetter=function(r){this.getter=r},i.prototype.cacheLength=function(){var r=new XMLHttpRequest;if(r.open("HEAD",e,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw new Error("Couldn't load "+e+". Status: "+r.status);var t,n=Number(r.getResponseHeader("Content-length")),o=(t=r.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=r.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(r){var t=r*a,o=(r+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[r]&&(s.chunks[r]=function(r,t){if(r>t)throw new Error("invalid range ("+r+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",e,!1),n!==a&&o.setRequestHeader("Range","bytes="+r+"-"+t),"undefined"!=typeof Uint8Array&&(o.responseType="arraybuffer"),o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+e+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):lr(o.responseText||"",!0)}(t,o)),void 0===s.chunks[r])throw new Error("doXHR failed!");return s.chunks[r]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,l("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a={isDevice:!1,url:e},s=nr.createFile(r,t,a,n,o);a.contents?s.contents=a.contents:a.url&&(s.contents=null,s.url=a.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};return Object.keys(s.stream_ops).forEach((function(r){var t=s.stream_ops[r];u[r]=function(){return nr.forceLoadFile(s),t.apply(null,arguments)}})),u.read=function(r,t,e,n,o){nr.forceLoadFile(s);var i=r.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var u=0;u<a;u++)t[e+u]=i[o+u];else for(u=0;u<a;u++)t[e+u]=i.get(o+u);return a},s.stream_ops=u,s},createPreloadedFile:function(r,t,e,n,i,a,s,c,f,d){Browser.init();var l=t?Z.resolve(Q.join2(r,t)):r;function p(e){function u(e){d&&d(),c||nr.createDataFile(r,t,e,n,i,f),a&&a(),G()}var p=!1;o.preloadPlugins.forEach((function(r){p||r.canHandle(l)&&(r.handle(e,l,u,(function(){s&&s(),G()})),p=!0)})),p||u(e)}U(),"string"==typeof e?function(r,t,e,n){var o=n?"":"al "+r;u(r,(function(e){y(e,'Loading data file "'+r+'" failed (no arrayBuffer).'),t(new Uint8Array(e)),o&&G()}),(function(t){if(!e)throw'Loading data file "'+r+'" failed.';e()})),o&&U()}(e,(function(r){p(r)}),s):p(e)},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(r,t,e){t=t||function(){},e=e||function(){};var n=nr.indexedDB();try{var o=n.open(nr.DB_NAME(),nr.DB_VERSION)}catch(r){return e(r)}o.onupgradeneeded=function(){l("creating db"),o.result.createObjectStore(nr.DB_STORE_NAME)},o.onsuccess=function(){var n=o.result.transaction([nr.DB_STORE_NAME],"readwrite"),i=n.objectStore(nr.DB_STORE_NAME),a=0,s=0,u=r.length;function c(){0==s?t():e()}r.forEach((function(r){var t=i.put(nr.analyzePath(r).object.contents,r);t.onsuccess=function(){++a+s==u&&c()},t.onerror=function(){s++,a+s==u&&c()}})),n.onerror=e},o.onerror=e},loadFilesFromDB:function(r,t,e){t=t||function(){},e=e||function(){};var n=nr.indexedDB();try{var o=n.open(nr.DB_NAME(),nr.DB_VERSION)}catch(r){return e(r)}o.onupgradeneeded=e,o.onsuccess=function(){var n=o.result;try{var i=n.transaction([nr.DB_STORE_NAME],"readonly")}catch(r){return void e(r)}var a=i.objectStore(nr.DB_STORE_NAME),s=0,u=0,c=r.length;function f(){0==u?t():e()}r.forEach((function(r){var t=a.get(r);t.onsuccess=function(){nr.analyzePath(r).exists&&nr.unlink(r),nr.createDataFile(Q.dirname(r),Q.basename(r),t.result,!0,!0,!0),++s+u==c&&f()},t.onerror=function(){u++,s+u==c&&f()}})),i.onerror=e},o.onerror=e}},or={mappings:{},DEFAULT_POLLMASK:5,calculateAt:function(r,t,e){if("/"===t[0])return t;var n;if(-100===r)n=nr.cwd();else{var o=nr.getStream(r);if(!o)throw new nr.ErrnoError(8);n=o.path}if(0==t.length){if(!e)throw new nr.ErrnoError(44);return n}return Q.join2(n,t)},doStat:function(r,t,e){try{var n=r(t)}catch(r){if(r&&r.node&&Q.normalize(t)!==Q.normalize(nr.getPath(r.node)))return-54;throw r}return D[e>>2]=n.dev,D[e+4>>2]=0,D[e+8>>2]=n.ino,D[e+12>>2]=n.mode,D[e+16>>2]=n.nlink,D[e+20>>2]=n.uid,D[e+24>>2]=n.gid,D[e+28>>2]=n.rdev,D[e+32>>2]=0,T=[n.size>>>0,(B=n.size,+Math.abs(B)>=1?B>0?(0|Math.min(+Math.floor(B/4294967296),4294967295))>>>0:~~+Math.ceil((B-+(~~B>>>0))/4294967296)>>>0:0)],D[e+40>>2]=T[0],D[e+44>>2]=T[1],D[e+48>>2]=4096,D[e+52>>2]=n.blocks,D[e+56>>2]=n.atime.getTime()/1e3|0,D[e+60>>2]=0,D[e+64>>2]=n.mtime.getTime()/1e3|0,D[e+68>>2]=0,D[e+72>>2]=n.ctime.getTime()/1e3|0,D[e+76>>2]=0,T=[n.ino>>>0,(B=n.ino,+Math.abs(B)>=1?B>0?(0|Math.min(+Math.floor(B/4294967296),4294967295))>>>0:~~+Math.ceil((B-+(~~B>>>0))/4294967296)>>>0:0)],D[e+80>>2]=T[0],D[e+84>>2]=T[1],0},doMsync:function(r,t,e,n,o){var i=b.slice(r,r+e);nr.msync(t,i,o,e,n)},doMkdir:function(r,t){return"/"===(r=Q.normalize(r))[r.length-1]&&(r=r.substr(0,r.length-1)),nr.mkdir(r,t,0),0},doMknod:function(r,t,e){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return nr.mknod(r,t,e),0},doReadlink:function(r,t,e){if(e<=0)return-28;var n=nr.readlink(r),o=Math.min(e,R(n)),i=g[t+o];return M(n,b,t,e+1),g[t+o]=i,o},doAccess:function(r,t){if(-8&t)return-28;var e=nr.lookupPath(r,{follow:!0}).node;if(!e)return-44;var n="";return 4&t&&(n+="r"),2&t&&(n+="w"),1&t&&(n+="x"),n&&nr.nodePermissions(e,n)?-2:0},doDup:function(r,t,e){var n=nr.getStream(e);return n&&nr.close(n),nr.open(r,t,0,e,e).fd},doReadv:function(r,t,e,n){for(var o=0,i=0;i<e;i++){var a=D[t+8*i>>2],s=D[t+(8*i+4)>>2],u=nr.read(r,g,a,s,n);if(u<0)return-1;if(o+=u,u<s)break}return o},doWritev:function(r,t,e,n){for(var o=0,i=0;i<e;i++){var a=D[t+8*i>>2],s=D[t+(8*i+4)>>2],u=nr.write(r,g,a,s,n);if(u<0)return-1;o+=u}return o},varargs:void 0,get:function(){return or.varargs+=4,D[or.varargs-4>>2]},getStr:function(r){return x(r)},getStreamFromFD:function(r){var t=nr.getStream(r);if(!t)throw new nr.ErrnoError(8);return t},get64:function(r,t){return r}},ir=[];function ar(r){try{return v.grow(r-E.byteLength+65535>>>16),C(v.buffer),1}catch(r){}}var sr={};function ur(){if(!ur.strings){var r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in sr)void 0===sr[t]?delete r[t]:r[t]=sr[t];var e=[];for(var t in r)e.push(t+"="+r[t]);ur.strings=e}return ur.strings}var cr=function(r,t,e,n){r||(r=this),this.parent=r,this.mount=r.mount,this.mounted=null,this.id=nr.nextInode++,this.name=t,this.mode=e,this.node_ops={},this.stream_ops={},this.rdev=n},fr=365,dr=146;function lr(r,t,e){var n=e>0?e:R(r)+1,o=new Array(n),i=M(r,o,0,o.length);return t&&(o.length=i),o}Object.defineProperties(cr.prototype,{read:{get:function(){return(this.mode&fr)===fr},set:function(r){r?this.mode|=fr:this.mode&=-366}},write:{get:function(){return(this.mode&dr)===dr},set:function(r){r?this.mode|=dr:this.mode&=-147}},isFolder:{get:function(){return nr.isDir(this.mode)}},isDevice:{get:function(){return nr.isChrdev(this.mode)}}}),nr.FSNode=cr,nr.staticInit();var pr={A:function(r,t){return function(r,t){var e;if(0===r)e=Date.now();else{if(1!==r&&4!==r)return $(28),-1;e=V()}return D[t>>2]=e/1e3|0,D[t+4>>2]=e%1e3*1e3*1e3|0,0}(r,t)},B:function(r,t){try{return r=or.getStr(r),or.doAccess(r,t)}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},h:function(r,t,e){or.varargs=e;try{var n=or.getStreamFromFD(r);switch(t){case 0:return(o=or.get())<0?-28:nr.open(n.path,n.flags,0,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=or.get();return n.flags|=o,0;case 5:return o=or.get(),k[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return $(28),-1}}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},x:function(r,t){try{var e=or.getStreamFromFD(r);return or.doStat(nr.stat,e.path,t)}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},u:function(r,t,e,n){try{t=or.getStr(t);var o=256&n,i=4096&n;return n&=-4353,t=or.calculateAt(r,t,i),or.doStat(o?nr.lstat:nr.stat,t,e)}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},y:function(r,t,e){or.varargs=e;try{var n=or.getStreamFromFD(r);switch(t){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return n.tty?0:-59;case 21519:if(!n.tty)return-59;var o=or.get();return D[o>>2]=0,0;case 21520:return n.tty?-28:-59;case 21531:return o=or.get(),nr.ioctl(n,t,o);default:q("bad ioctl syscall "+t)}}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},k:function(r,t,e,n,o,i){try{return function(r,t,e,n,o,i){var a;i<<=12;var s=!1;if(0!=(16&n)&&r%65536!=0)return-28;if(0!=(32&n)){if(!(a=tr(t)))return-48;s=!0}else{var u=nr.getStream(o);if(!u)return-8;var c=nr.mmap(u,r,t,i,e,n);a=c.ptr,s=c.allocated}return or.mappings[a]={malloc:a,len:t,allocated:s,fd:o,prot:e,flags:n,offset:i},a}(r,t,e,n,o,i)}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},j:function(r,t){try{return function(r,t){var e=or.mappings[r];if(0===t||!e)return-28;if(t===e.len){var n=nr.getStream(e.fd);n&&2&e.prot&&or.doMsync(r,n,t,e.flags,e.offset),or.mappings[r]=null,e.allocated&&br(e.malloc)}return 0}(r,t)}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},e:function(r,t,e){or.varargs=e;try{var n=or.getStr(r),o=e?or.get():0;return nr.open(n,t,o).fd}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},v:function(r,t){try{return r=or.getStr(r),or.doStat(nr.stat,r,t)}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},z:function(r){try{return r=or.getStr(r),nr.unlink(r),0}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return-r.errno}},r:function(){throw"longjmp"},q:function(){q("")},C:function(r,t,e){var n=function(r,t){var e;for(ir.length=0,t>>=2;e=b[r++];){var n=e<105;n&&1&t&&t++,ir.push(n?S[t++>>1]:D[t]),++t}return ir}(t,e);return X[r].apply(null,n)},o:function(r,t,e){b.copyWithin(r,t,t+e)},p:function(r){var t,e,n=b.length,o=2147483648;if((r>>>=0)>o)return!1;for(var i=1;i<=4;i*=2){var a=n*(1+.2/i);if(a=Math.min(a,r+100663296),ar(Math.min(o,((t=Math.max(r,a))%(e=65536)>0&&(t+=e-t%e),t))))return!0}return!1},s:function(r,t){var e=0;return ur().forEach((function(n,o){var i=t+e;D[r+4*o>>2]=i,function(r,t,e){for(var n=0;n<r.length;++n)g[t++>>0]=r.charCodeAt(n);e||(g[t>>0]=0)}(n,i),e+=n.length+1})),0},t:function(r,t){var e=ur();D[r>>2]=e.length;var n=0;return e.forEach((function(r){n+=r.length+1})),D[t>>2]=n,0},a:function(r){!function(r,t){var e;e=r,w||(o.onExit&&o.onExit(e),_=!0),f(e,new Fr(e))}(r)},d:function(r){try{var t=or.getStreamFromFD(r);return nr.close(t),0}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return r.errno}},i:function(r,t,e,n){try{var o=or.getStreamFromFD(r),i=or.doReadv(o,t,e);return D[n>>2]=i,0}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return r.errno}},n:function(r,t,e,n,o){try{var i=or.getStreamFromFD(r),a=4294967296*e+(t>>>0),s=9007199254740992;return a<=-s||a>=s?-61:(nr.llseek(i,a,n),T=[i.position>>>0,(B=i.position,+Math.abs(B)>=1?B>0?(0|Math.min(+Math.floor(B/4294967296),4294967295))>>>0:~~+Math.ceil((B-+(~~B>>>0))/4294967296)>>>0:0)],D[o>>2]=T[0],D[o+4>>2]=T[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0)}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return r.errno}},g:function(r,t,e,n){try{var o=or.getStreamFromFD(r),i=or.doWritev(o,t,e);return D[n>>2]=i,0}catch(r){if(void 0===nr||!(r instanceof nr.ErrnoError))throw r;return r.errno}},c:function(){return h},w:function(r){var t=Date.now();return D[r>>2]=t/1e3|0,D[r+4>>2]=t%1e3*1e3|0,0},l:function(r,t,e,n,o,i,a){var s=Dr();try{return Y(r)(t,e,n,o,i,a)}catch(r){if(Sr(s),r!==r+0&&"longjmp"!==r)throw r;Pr(1,0)}},m:function(r,t){var e=Dr();try{Y(r)(t)}catch(r){if(Sr(e),r!==r+0&&"longjmp"!==r)throw r;Pr(1,0)}},b:function(r){h=r},f:function(r){var t=Date.now()/1e3|0;return r&&(D[r>>2]=t),t}};!function(){var r={a:pr};function t(r,t){var e,n=r.exports;o.asm=n,C((v=o.asm.D).buffer),P=o.asm.M,e=o.asm.E,O.unshift(e),G()}function e(r){t(r.instance)}function i(t){return(m||"function"!=typeof fetch?Promise.resolve().then((function(){return J(z)})):fetch(z,{credentials:"same-origin"}).then((function(r){if(!r.ok)throw"failed to load wasm binary file at '"+z+"'";return r.arrayBuffer()})).catch((function(){return J(z)}))).then((function(t){return WebAssembly.instantiate(t,r)})).then((function(r){return r})).then(t,(function(r){p("failed to asynchronously prepare wasm: "+r),q(r)}))}if(U(),o.instantiateWasm)try{return o.instantiateWasm(r,t)}catch(r){return p("Module.instantiateWasm callback failed with error: "+r),!1}(m||"function"!=typeof WebAssembly.instantiateStreaming||W(z)||"function"!=typeof fetch?i(e):fetch(z,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,r).then(e,(function(r){return p("wasm streaming compile failed: "+r),p("falling back to ArrayBuffer instantiation"),i(e)}))}))).catch(n)}(),o.___wasm_call_ctors=function(){return(o.___wasm_call_ctors=o.asm.E).apply(null,arguments)};var mr=o._emscripten_bind_VoidPtr___destroy___0=function(){return(mr=o._emscripten_bind_VoidPtr___destroy___0=o.asm.F).apply(null,arguments)},hr=o._emscripten_bind_Graphviz_Graphviz_2=function(){return(hr=o._emscripten_bind_Graphviz_Graphviz_2=o.asm.G).apply(null,arguments)},vr=o._emscripten_bind_Graphviz_version_0=function(){return(vr=o._emscripten_bind_Graphviz_version_0=o.asm.H).apply(null,arguments)},wr=o._emscripten_bind_Graphviz_lastError_0=function(){return(wr=o._emscripten_bind_Graphviz_lastError_0=o.asm.I).apply(null,arguments)},_r=o._emscripten_bind_Graphviz_layout_3=function(){return(_r=o._emscripten_bind_Graphviz_layout_3=o.asm.J).apply(null,arguments)},yr=o._emscripten_bind_Graphviz_createFile_2=function(){return(yr=o._emscripten_bind_Graphviz_createFile_2=o.asm.K).apply(null,arguments)},Er=o._emscripten_bind_Graphviz___destroy___0=function(){return(Er=o._emscripten_bind_Graphviz___destroy___0=o.asm.L).apply(null,arguments)};o._malloc=function(){return(o._malloc=o.asm.N).apply(null,arguments)};var gr,br=o._free=function(){return(br=o._free=o.asm.O).apply(null,arguments)},kr=o.___errno_location=function(){return(kr=o.___errno_location=o.asm.P).apply(null,arguments)},Dr=o.stackSave=function(){return(Dr=o.stackSave=o.asm.Q).apply(null,arguments)},Sr=o.stackRestore=function(){return(Sr=o.stackRestore=o.asm.R).apply(null,arguments)},Pr=o._setThrew=function(){return(Pr=o._setThrew=o.asm.S).apply(null,arguments)},Ar=o._memalign=function(){return(Ar=o._memalign=o.asm.T).apply(null,arguments)};function Fr(r){this.name="ExitStatus",this.message="Program terminated with exit("+r+")",this.status=r}function xr(r){function e(){gr||(gr=!0,o.calledRun=!0,_||(o.noFSInit||nr.init.initialized||nr.init(),nr.ignorePermissions=!1,K(O),t(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)r=o.postRun.shift(),L.unshift(r);var r;K(L)}()))}I>0||(function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)r=o.preRun.shift(),N.unshift(r);var r;K(N)}(),I>0||(o.setStatus?(o.setStatus("Running..."),setTimeout((function(){setTimeout((function(){o.setStatus("")}),1),e()}),1)):e()))}if(H=function r(){gr||xr(),gr||(H=r)},o.run=xr,o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();function Mr(){}function Rr(r){return(r||Mr).__cache__}function Cr(r,t){var e=Rr(t),n=e[r];return n||((n=Object.create((t||Mr).prototype)).ptr=r,e[r]=n)}xr(),Mr.prototype=Object.create(Mr.prototype),Mr.prototype.constructor=Mr,Mr.prototype.__class__=Mr,Mr.__cache__={},o.WrapperObject=Mr,o.getCache=Rr,o.wrapPointer=Cr,o.castObject=function(r,t){return Cr(r.ptr,t)},o.NULL=Cr(0),o.destroy=function(r){if(!r.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";r.__destroy__(),delete Rr(r.__class__)[r.ptr]},o.compare=function(r,t){return r.ptr===t.ptr},o.getPointer=function(r){return r.ptr},o.getClass=function(r){return r.__class__};var zr={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(zr.needed){for(var r=0;r<zr.temps.length;r++)o._free(zr.temps[r]);zr.temps.length=0,o._free(zr.buffer),zr.buffer=0,zr.size+=zr.needed,zr.needed=0}zr.buffer||(zr.size+=128,zr.buffer=o._malloc(zr.size),y(zr.buffer)),zr.pos=0},alloc:function(r,t){y(zr.buffer);var e,n=t.BYTES_PER_ELEMENT,i=r.length*n;return i=i+7&-8,zr.pos+i>=zr.size?(y(i>0),zr.needed+=i,e=o._malloc(i),zr.temps.push(e)):(e=zr.buffer+zr.pos,zr.pos+=i),e},copy:function(r,t,e){switch(e>>>=0,t.BYTES_PER_ELEMENT){case 2:e>>>=1;break;case 4:e>>>=2;break;case 8:e>>>=3}for(var n=0;n<r.length;n++)t[e+n]=r[n]}};function jr(r){if("string"==typeof r){var t=lr(r),e=zr.alloc(t,g);return zr.copy(t,g,e),e}return r}function Br(){throw"cannot construct a VoidPtr, no constructor in IDL"}function Tr(r,t){r&&"object"==typeof r&&(r=r.ptr),t&&"object"==typeof t&&(t=t.ptr),this.ptr=hr(r,t),Rr(Tr)[this.ptr]=this}return Br.prototype=Object.create(Mr.prototype),Br.prototype.constructor=Br,Br.prototype.__class__=Br,Br.__cache__={},o.VoidPtr=Br,Br.prototype.__destroy__=Br.prototype.__destroy__=function(){var r=this.ptr;mr(r)},Tr.prototype=Object.create(Mr.prototype),Tr.prototype.constructor=Tr,Tr.prototype.__class__=Tr,Tr.__cache__={},o.Graphviz=Tr,Tr.prototype.version=Tr.prototype.version=function(){var r=this.ptr;return x(vr(r))},Tr.prototype.lastError=Tr.prototype.lastError=function(){var r=this.ptr;return x(wr(r))},Tr.prototype.layout=Tr.prototype.layout=function(r,t,e){var n=this.ptr;return zr.prepare(),r=r&&"object"==typeof r?r.ptr:jr(r),t=t&&"object"==typeof t?t.ptr:jr(t),e=e&&"object"==typeof e?e.ptr:jr(e),x(_r(n,r,t,e))},Tr.prototype.createFile=Tr.prototype.createFile=function(r,t){var e=this.ptr;zr.prepare(),r=r&&"object"==typeof r?r.ptr:jr(r),t=t&&"object"==typeof t?t.ptr:jr(t),yr(e,r,t)},Tr.prototype.__destroy__=Tr.prototype.__destroy__=function(){var r=this.ptr;Er(r)},r.ready});r.exports=n}(d);var l=d.exports,p=Object.freeze(t({__proto__:null,default:l},[d.exports])),m=function(){return m=Object.assign||function(r){for(var t,e=1,n=arguments.length;e<n;e++)for(var o in t=arguments[e])Object.prototype.hasOwnProperty.call(t,o)&&(r[o]=t[o]);return r},m.apply(this,arguments)},h=function(r,t,e){if(e||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return r.concat(n||Array.prototype.slice.call(t))};function v(r){return{path:r.path,data:'<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n<svg width="'.concat(r.width,'" height="').concat(r.height,'"></svg>')}}function w(r,t){var e,n=m({images:[],files:[]},t);h(h([],n.files,!0),(e=n.images,e.map(v)),!0).forEach((function(t){return r.createFile(t.path,t.data)}))}var _={layout:function(r,t,e,n){return void 0===t&&(t="svg"),void 0===e&&(e="dot"),r?s(p,null==n?void 0:n.wasmFolder,null==n?void 0:n.wasmBinary).then((function(o){var i=new o.Graphviz(void 0!==(null==n?void 0:n.yInvert)&&(null==n?void 0:n.yInvert),void 0!==(null==n?void 0:n.nop)?null==n?void 0:n.nop:0);w(i,n);var a=i.layout(r,t,e);if(o.destroy(i),!a)throw new Error(o.Graphviz.prototype.lastError());return a})):Promise.resolve("")},circo:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"circo",e)},dot:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"dot",e)},fdp:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"fdp",e)},sfdp:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"sfdp",e)},neato:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"neato",e)},osage:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"osage",e)},patchwork:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"patchwork",e)},twopi:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"twopi",e)}},y=function(){function r(r){this._wasm=r}return r.prototype.layout=function(r,t,e,n){if(void 0===t&&(t="svg"),void 0===e&&(e="dot"),!r)return"";var o=new this._wasm.Graphviz((null==n?void 0:n.yInvert)?1:0,(null==n?void 0:n.nop)?null==n?void 0:n.nop:0);w(o,n);var i=o.layout(r,t,e);if(this._wasm.destroy(o),!i)throw new Error(this._wasm.Graphviz.prototype.lastError());return i},r.prototype.circo=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"circo",e)},r.prototype.dot=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"dot",e)},r.prototype.fdp=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"fdp",e)},r.prototype.sfdp=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"sfdp",e)},r.prototype.neato=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"neato",e)},r.prototype.osage=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"osage",e)},r.prototype.patchwork=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"patchwork",e)},r.prototype.twopi=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"twopi",e)},r}();r.GraphvizSync=y,r.StackElement=u,r.StackParser=c,r.expatVersion=function(r,t){return s(o,r,t).then((function(r){return r.CExpat.prototype.version()}))},r.graphviz=_,r.graphvizSync=function(r,t){return s(p,r,t).then((function(r){return new y(r)}))},r.graphvizVersion=function(r,t){return s(p,r,t).then((function(r){return r.Graphviz.prototype.version()}))},r.parse=f,r.wasmFolder=a,Object.defineProperty(r,"__esModule",{value:!0})}));
\ No newline at end of file
File added
@font-face {
font-family: Ubuntu;
src: url(/Ubuntu-R.ttf);
}
@font-face {
font-family: Genos-divoc;
src: url(/Genos-VariableFont_wght.ttf);
}
body {
background-color: #57c0a2;
font-family: Ubuntu, sans-serif;
}
.btn {
margin-left: 1em;
font-family: Ubuntu;
}
.main-content {
padding: 2em;
border-radius: 1em;
margin: auto;
margin-top: 10em;
margin-bottom: 5em;
max-width: 50em;
background-color: #ffebd8;
}
a {
color: black;
}
#exitGraph {
width: 100%;
height: 20em;
overflow: hidden;
background-color: white;
border-radius: 0.5em;
margin-bottom: 0.5em;
}
svg {
overflow: visible !important;
fill: black;
}
svg > g > polygon {
stroke: none !important;
}
ellipse, polygon, path {
stroke: black;
}
ellipse {
fill: white;
}
@media (prefers-color-scheme: dark) {
svg {
overflow: visible !important;
fill: white;
}
svg > g > polygon {
stroke: none !important;
fill: black
}
ellipse {
fill: black;
}
ellipse, polygon, path {
stroke: #a74db7;
}
polygon {
fill: #a74db7;
}
#exitGraph {
background-color: black;
}
}
h1,h2,h3 {
font-family: Genos-divoc, sans-serif;
font-weight: 600;
}
h1 {
font-size: 5rem;
}
h2 {
font-size: 3.7rem;
}
h3 {
font-size: 2rem;
}
h4{
color: #9945c5;
}
.badge-info {
background-color: #62c1a6;
color: black;
}
.badge-warning {
background-color: #fdbe4b;
color: black;
}
.badge-danger {
background-color: #ea4a72;
color: black;
}
.text-muted {
color: #9945c5 !important;
}
@media (prefers-color-scheme: dark) {
body {
background-color: #0e0e0f;
}
.main-content {
background-color: #241b2b;
color: #ffebd8;
}
.text-muted {
color: #fdbe4b !important;
}
h4 {
color: #ffebd8;
}
}
{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-} {-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE NamedFieldPuns #-}
...@@ -13,22 +16,14 @@ ...@@ -13,22 +16,14 @@
-- cover some of the types and records that are available in the format. For -- cover some of the types and records that are available in the format. For
-- those you should read the TMX documentation at -- those you should read the TMX documentation at
-- http://doc.mapeditor.org/en/latest/reference/tmx-map-format/ -- http://doc.mapeditor.org/en/latest/reference/tmx-map-format/
module Tiled where module Data.Tiled where
import Universum
import Control.Exception (try)
import Control.Exception.Base (SomeException)
import Data.Aeson hiding (Object) import Data.Aeson hiding (Object)
import qualified Data.Aeson as A import qualified Data.Aeson as A
import Data.Aeson.Types (typeMismatch) import Data.Aeson.Types (typeMismatch)
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as LB
import Data.Char (toLower) import Data.Char (toLower)
import Data.Map (Map)
import Data.String (IsString (fromString))
import Data.Text (Text)
import qualified Data.Text as T
import Data.Vector (Vector)
import GHC.Generics (Generic)
-- | options for Aeson's generic encoding and parsing functions -- | options for Aeson's generic encoding and parsing functions
...@@ -43,29 +38,29 @@ aesonOptions l = defaultOptions ...@@ -43,29 +38,29 @@ aesonOptions l = defaultOptions
-- | A globally indexed identifier. -- | A globally indexed identifier.
newtype GlobalId = GlobalId { unGlobalId :: Int } newtype GlobalId = GlobalId { unGlobalId :: Int }
deriving (Ord, Eq, Enum, Num, Generic, Show, FromJSON, ToJSON, FromJSONKey, ToJSONKey) deriving newtype (Ord, Eq, Enum, Num, Show, FromJSON, ToJSON, FromJSONKey, ToJSONKey, NFData)
mkTiledId :: Int -> GlobalId mkTiledId :: Int -> GlobalId
mkTiledId i = GlobalId { unGlobalId = i } mkTiledId i = GlobalId { unGlobalId = i }
-- | A locally indexed identifier. -- | A locally indexed identifier.
newtype LocalId = LocalId { unLocalId :: Int } newtype LocalId = LocalId { unLocalId :: Int }
deriving (Ord, Eq, Enum, Num, Generic, Show, FromJSON, ToJSON, FromJSONKey, ToJSONKey) deriving newtype (Ord, Eq, Enum, Num, Show, FromJSON, ToJSON, FromJSONKey, ToJSONKey, NFData)
type Color = Text type Color = Text
-- | A custom tiled property, which just has a name and a value. -- | A custom tiled property, which just has a name and a value.
data Property = Property Text PropertyValue data Property = Property Text PropertyValue
deriving (Eq, Generic, Show) deriving (Eq, Generic, Show, NFData)
-- | The value of a custom tiled property. -- | The value of a custom tiled property.
-- It is strongly typed via a tag in the json representation, -- It is strongly typed via a tag in the json representation,
-- and needs a custom ToJSON and FromJSON instance because of that. -- and needs a custom ToJSON and FromJSON instance because of that.
data PropertyValue = StrProp Text | BoolProp Bool | IntProp Int | FloatProp Float data PropertyValue = StrProp Text | BoolProp Bool | IntProp Int | FloatProp Float
deriving (Eq, Generic, Show) deriving (Eq, Generic, Show, NFData)
instance IsString PropertyValue where instance IsString PropertyValue where
fromString s = StrProp (T.pack s) fromString s = StrProp (toText s)
instance FromJSON Property where instance FromJSON Property where
parseJSON (A.Object o) = do parseJSON (A.Object o) = do
...@@ -111,7 +106,7 @@ instance ToJSON Property where ...@@ -111,7 +106,7 @@ instance ToJSON Property where
data Point = Point { pointX :: Double data Point = Point { pointX :: Double
, pointY :: Double , pointY :: Double
} deriving (Eq, Generic, Show) } deriving (Eq, Generic, Show, NFData)
instance FromJSON Point where instance FromJSON Point where
parseJSON = genericParseJSON (aesonOptions 5) parseJSON = genericParseJSON (aesonOptions 5)
...@@ -178,7 +173,7 @@ data Object = ObjectRectangle ...@@ -178,7 +173,7 @@ data Object = ObjectRectangle
, objectHeight :: Maybe Double , objectHeight :: Maybe Double
, objectEllipse :: Maybe Bool , objectEllipse :: Maybe Bool
, objectType :: Text , objectType :: Text
} deriving (Eq, Generic, Show) } deriving (Eq, Generic, Show, NFData)
...@@ -226,7 +221,7 @@ data Layer = Layer { layerWidth :: Maybe Double ...@@ -226,7 +221,7 @@ data Layer = Layer { layerWidth :: Maybe Double
, layerStartX :: Maybe Int , layerStartX :: Maybe Int
, layerStartY :: Maybe Int , layerStartY :: Maybe Int
, layerColor :: Maybe Color , layerColor :: Maybe Color
} deriving (Eq, Generic, Show) } deriving (Eq, Generic, Show, NFData)
instance FromJSON Layer where instance FromJSON Layer where
parseJSON = genericParseJSON (aesonOptions 5) parseJSON = genericParseJSON (aesonOptions 5)
...@@ -238,7 +233,7 @@ data Terrain = Terrain { terrainName :: String ...@@ -238,7 +233,7 @@ data Terrain = Terrain { terrainName :: String
-- ^ Name of terrain -- ^ Name of terrain
, terrainTile :: LocalId , terrainTile :: LocalId
-- ^ Local ID of tile representing terrain -- ^ Local ID of tile representing terrain
} deriving (Eq, Generic, Show) } deriving (Eq, Generic, Show, NFData)
instance FromJSON Terrain where instance FromJSON Terrain where
parseJSON (A.Object o) = Terrain <$> o .: "name" parseJSON (A.Object o) = Terrain <$> o .: "name"
...@@ -254,7 +249,7 @@ instance ToJSON Terrain where ...@@ -254,7 +249,7 @@ instance ToJSON Terrain where
data Frame = Frame { frameDuration :: Int data Frame = Frame { frameDuration :: Int
, frameTileId :: LocalId , frameTileId :: LocalId
} deriving (Eq, Generic, Show) } deriving (Eq, Generic, Show, NFData)
instance FromJSON Frame where instance FromJSON Frame where
parseJSON (A.Object o) = Frame <$> o .: "duration" parseJSON (A.Object o) = Frame <$> o .: "duration"
...@@ -277,7 +272,7 @@ data Tile = Tile { tileId :: Int ...@@ -277,7 +272,7 @@ data Tile = Tile { tileId :: Int
, tileProbability :: Maybe Float , tileProbability :: Maybe Float
, tileType :: Maybe Text , tileType :: Maybe Text
, tileTerrain :: Maybe [Int] , tileTerrain :: Maybe [Int]
} deriving (Eq, Generic, Show) } deriving (Eq, Generic, Show, NFData)
instance FromJSON Tile where instance FromJSON Tile where
parseJSON = genericParseJSON (aesonOptions 4) parseJSON = genericParseJSON (aesonOptions 4)
...@@ -331,10 +326,10 @@ data Tileset = Tileset { tilesetFirstgid :: GlobalId ...@@ -331,10 +326,10 @@ data Tileset = Tileset { tilesetFirstgid :: GlobalId
, tilesetWangsets :: Maybe Value , tilesetWangsets :: Maybe Value
, tilesetType :: Maybe Text , tilesetType :: Maybe Text
, tilesetFileName :: Maybe Text , tilesetFileName :: Maybe Text
} deriving (Eq, Generic, Show) } deriving (Eq, Generic, Show, NFData)
newtype TransitiveTilesetMap = TransitiveTilesetMap (Map LocalId Value) newtype TransitiveTilesetMap = TransitiveTilesetMap (Map LocalId Value)
deriving (Show, Eq, Generic, FromJSON) deriving newtype (Show, Eq, FromJSON)
instance FromJSON Tileset where instance FromJSON Tileset where
parseJSON = genericParseJSON (aesonOptions 7) parseJSON = genericParseJSON (aesonOptions 7)
...@@ -378,21 +373,15 @@ data Tiledmap = Tiledmap { tiledmapVersion :: Value ...@@ -378,21 +373,15 @@ data Tiledmap = Tiledmap { tiledmapVersion :: Value
, tiledmapStaggerindex :: Maybe String , tiledmapStaggerindex :: Maybe String
, tiledmapType :: String , tiledmapType :: String
, tiledmapEditorsettings :: Maybe Value , tiledmapEditorsettings :: Maybe Value
} deriving (Eq, Generic, Show) } deriving (Eq, Generic, Show, NFData)
instance FromJSON Tiledmap where instance FromJSON Tiledmap where
parseJSON = genericParseJSON (aesonOptions 8) parseJSON = genericParseJSON (aesonOptions 8)
instance ToJSON Tiledmap where instance ToJSON Tiledmap where
toJSON = genericToJSON (aesonOptions 8) toJSON = genericToJSON (aesonOptions 8)
data LoadResult = Loaded Tiledmap | IOErr String | DecodeErr String
-- | Load a Tiled map from the given 'FilePath'. -- | Load a Tiled map from the given 'FilePath'.
loadTiledmap :: FilePath -> IO LoadResult loadTiledmap :: FilePath -> IO (Either String Tiledmap)
loadTiledmap path = do loadTiledmap path = eitherDecodeFileStrict' path >>= \case
res <- try (BS.readFile path) Left err -> pure $ Left err
pure $ case res of Right !tiledmap -> evaluateNF tiledmap <&> Right
Right file -> case eitherDecode . LB.fromStrict $ file of
Left err -> DecodeErr err
Right tiledmap -> Loaded tiledmap
Left (err :: SomeException) -> IOErr $ show err
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE OverloadedStrings #-}
module TiledAbstract where module Data.Tiled.Abstract where
import Data.Maybe (fromMaybe) import Universum
import Data.Proxy (Proxy)
import Data.Text (Text) import Data.Tiled (GlobalId, Layer (..), Object (..), Property (..),
import Data.Vector (Vector)
import qualified Data.Vector as V
import Tiled (GlobalId, Layer (..), Object (..), Property (..),
PropertyValue (..), Tile (..), Tiledmap (..), PropertyValue (..), Tile (..), Tiledmap (..),
Tileset (..), mkTiledId) Tileset (..), mkTiledId)
import Util (showText) import qualified Data.Vector as V
class HasProperties a where class HasProperties a where
getProperties :: a -> [Property] getProperties :: a -> [Property]
adjustProperties :: ([Property] -> Maybe [Property]) -> a -> a adjustProperties :: ([Property] -> Maybe [Property]) -> a -> a
instance HasProperties Layer where instance HasProperties Layer where
getProperties = fromMaybe mempty . layerProperties getProperties = maybeToMonoid . layerProperties
adjustProperties f layer = layer adjustProperties f layer = layer
{ layerProperties = f (getProperties layer) } { layerProperties = f (getProperties layer) }
instance HasProperties Tileset where instance HasProperties Tileset where
getProperties = fromMaybe mempty . tilesetProperties getProperties = maybeToMonoid . tilesetProperties
adjustProperties f tileset = tileset adjustProperties f tileset = tileset
{ tilesetProperties = f (getProperties tileset) } { tilesetProperties = f (getProperties tileset) }
instance HasProperties Tile where instance HasProperties Tile where
getProperties = V.toList . fromMaybe mempty . tileProperties getProperties = V.toList . maybeToMonoid . tileProperties
adjustProperties f tile = tile adjustProperties f tile = tile
{ tileProperties = (fmap V.fromList . f) (getProperties tile) } { tileProperties = (fmap V.fromList . f) (getProperties tile) }
instance HasProperties Object where instance HasProperties Object where
getProperties = V.toList . fromMaybe mempty . objectProperties getProperties = V.toList . maybeToMonoid . objectProperties
adjustProperties f obj = obj adjustProperties f obj = obj
{ objectProperties = (fmap V.fromList . f) (getProperties obj) } { objectProperties = (fmap V.fromList . f) (getProperties obj) }
instance HasProperties Tiledmap where instance HasProperties Tiledmap where
getProperties = fromMaybe mempty . tiledmapProperties getProperties = maybeToMonoid . tiledmapProperties
adjustProperties f tiledmap = tiledmap adjustProperties f tiledmap = tiledmap
{ tiledmapProperties = f (getProperties tiledmap) } { tiledmapProperties = f (getProperties tiledmap) }
...@@ -68,7 +65,7 @@ instance HasName Tileset where ...@@ -68,7 +65,7 @@ instance HasName Tileset where
instance HasName Property where instance HasName Property where
getName (Property n _) = n getName (Property n _) = n
instance HasName Tile where instance HasName Tile where
getName tile = "[tile with global id " <> showText (tileId tile) <> "]" getName tile = "[tile with global id " <> show (tileId tile) <> "]"
class IsProperty a where class IsProperty a where
......
cabal-version: 2.4 cabal-version: 2.0
name: walint
version: 0.1.0.0
-- A short (one-line) description of the package.
-- synopsis:
-- A longer description of the package. -- This file has been generated from package.yaml by hpack version 0.34.5.
-- description: --
-- see: https://github.com/sol/hpack
-- A URL where users can report bugs. name: walint
-- bug-reports: version: 0.1
homepage: https://stuebinm.eu/git/walint
-- The license under which the package is released.
-- license:
author: stuebinm author: stuebinm
maintainer: stuebinm@disroot.org maintainer: stuebinm@disroot.org
copyright: 2022 stuebinm
-- A copyright notice. build-type: Simple
-- copyright:
-- category:
extra-source-files: CHANGELOG.md
library library
default-language: Haskell2010
ghc-options: -Wall -Wno-name-shadowing
hs-source-dirs: lib
exposed-modules: exposed-modules:
CheckDir
CheckMap CheckMap
WriteRepo WriteRepo
CheckDir
LintWriter
Properties
Tiled
TiledAbstract
Util Util
Types Types
Paths
Uris
LintConfig LintConfig
other-modules:
Badges Badges
LayerData
Dirgraph Dirgraph
build-depends: base, LayerData
aeson, LintWriter
bytestring, Paths
containers, Properties
text, Uris
vector, Paths_walint
transformers, hs-source-dirs:
mtl, lib
either, default-extensions:
filepath, NoImplicitPrelude
getopt-generics, ghc-options: -Wall -Wno-name-shadowing -Wno-unticked-promoted-constructors
regex-tdfa, build-depends:
extra, aeson
witherable, , base
dotgen, , bytestring
text-metrics, , containers
uri-encode , deepseq
, dotgen
, either
, extra
, filepath
, getopt-generics
, network-uri
, regex-tdfa
, text
, text-metrics
, tiled
, transformers
, universum
, uri-encode
, vector
default-language: Haskell2010
library tiled
exposed-modules:
Data.Tiled
Data.Tiled.Abstract
other-modules:
Paths_walint
hs-source-dirs:
tiled
default-extensions:
NoImplicitPrelude
ghc-options: -Wall -Wno-name-shadowing -Wno-unticked-promoted-constructors
build-depends:
aeson
, base
, bytestring
, text
, universum
, vector
default-language: Haskell2010
executable cwality-maps
main-is: Main.hs
other-modules:
Config
Substitute
Paths_walint
hs-source-dirs:
cwality-maps
default-extensions:
NoImplicitPrelude
ghc-options: -Wall -Wno-name-shadowing -Wno-unticked-promoted-constructors -rtsopts -threaded
build-depends:
aeson
, base
, base64
, bytestring
, containers
, directory
, filepath
, fmt
, microlens-platform
, monad-logger
, mustache
, parsec
, servant
, servant-server
, text
, tiled
, tomland
, universum
, wai
, wai-extra
, warp
default-language: Haskell2010
-- TODO: move more stuff into lib, these dependencies are silly
executable walint executable walint
main-is: Main.hs main-is: Main.hs
ghc-options: -Wall other-modules:
build-depends: base, Version
walint, Paths_walint
getopt-generics, hs-source-dirs:
aeson, src
aeson-pretty, default-extensions:
bytestring, NoImplicitPrelude
mtl, ghc-options: -Wall -Wno-name-shadowing -Wno-unticked-promoted-constructors
text, build-depends:
template-haskell, aeson
process, , aeson-pretty
dotgen , base
hs-source-dirs: src , bytestring
, getopt-generics
, process
, template-haskell
, text
, universum
, walint
default-language: Haskell2010
executable walint-mapserver
main-is: Main.hs
other-modules:
Handlers
HtmlOrphans
Server
Worker
Paths_walint
hs-source-dirs:
server
default-extensions:
NoImplicitPrelude
ghc-options: -Wall -Wno-name-shadowing -Wno-unticked-promoted-constructors -rtsopts -threaded
build-depends:
aeson
, async
, base
, base-compat
, base64-bytestring
, bytestring
, containers
, cryptohash-sha1
, directory
, extra
, filepath
, fmt
, getopt-generics
, http-client
, http-types
, lucid
, microlens-platform
, monad-logger
, process
, servant
, servant-client
, servant-lucid
, servant-server
, servant-websockets
, stm
, text
, time
, tomland
, universum
, uuid
, wai
, wai-extra
, walint
, warp
, websockets
default-language: Haskell2010 default-language: Haskell2010
other-modules: Version