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 BangPatterns #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NamedFieldPuns #-}
......@@ -13,22 +16,14 @@
-- cover some of the types and records that are available in the format. For
-- those you should read the TMX documentation at
-- http://doc.mapeditor.org/en/latest/reference/tmx-map-format/
module Tiled where
import Control.Exception (try)
import Control.Exception.Base (SomeException)
import Data.Aeson hiding (Object)
import qualified Data.Aeson as A
import Data.Aeson.Types (typeMismatch)
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as LB
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)
module Data.Tiled where
import Universum
import Data.Aeson hiding (Object)
import qualified Data.Aeson as A
import Data.Aeson.Types (typeMismatch)
import Data.Char (toLower)
-- | options for Aeson's generic encoding and parsing functions
......@@ -43,29 +38,29 @@ aesonOptions l = defaultOptions
-- | A globally indexed identifier.
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 i = GlobalId { unGlobalId = i }
-- | A locally indexed identifier.
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
-- | A custom tiled property, which just has a name and a value.
data Property = Property Text PropertyValue
deriving (Eq, Generic, Show)
deriving (Eq, Generic, Show, NFData)
-- | The value of a custom tiled property.
-- It is strongly typed via a tag in the json representation,
-- and needs a custom ToJSON and FromJSON instance because of that.
data PropertyValue = StrProp Text | BoolProp Bool | IntProp Int | FloatProp Float
deriving (Eq, Generic, Show)
deriving (Eq, Generic, Show, NFData)
instance IsString PropertyValue where
fromString s = StrProp (T.pack s)
fromString s = StrProp (toText s)
instance FromJSON Property where
parseJSON (A.Object o) = do
......@@ -111,7 +106,7 @@ instance ToJSON Property where
data Point = Point { pointX :: Double
, pointY :: Double
} deriving (Eq, Generic, Show)
} deriving (Eq, Generic, Show, NFData)
instance FromJSON Point where
parseJSON = genericParseJSON (aesonOptions 5)
......@@ -178,7 +173,7 @@ data Object = ObjectRectangle
, objectHeight :: Maybe Double
, objectEllipse :: Maybe Bool
, objectType :: Text
} deriving (Eq, Generic, Show)
} deriving (Eq, Generic, Show, NFData)
......@@ -226,7 +221,7 @@ data Layer = Layer { layerWidth :: Maybe Double
, layerStartX :: Maybe Int
, layerStartY :: Maybe Int
, layerColor :: Maybe Color
} deriving (Eq, Generic, Show)
} deriving (Eq, Generic, Show, NFData)
instance FromJSON Layer where
parseJSON = genericParseJSON (aesonOptions 5)
......@@ -238,7 +233,7 @@ data Terrain = Terrain { terrainName :: String
-- ^ Name of terrain
, terrainTile :: LocalId
-- ^ Local ID of tile representing terrain
} deriving (Eq, Generic, Show)
} deriving (Eq, Generic, Show, NFData)
instance FromJSON Terrain where
parseJSON (A.Object o) = Terrain <$> o .: "name"
......@@ -254,7 +249,7 @@ instance ToJSON Terrain where
data Frame = Frame { frameDuration :: Int
, frameTileId :: LocalId
} deriving (Eq, Generic, Show)
} deriving (Eq, Generic, Show, NFData)
instance FromJSON Frame where
parseJSON (A.Object o) = Frame <$> o .: "duration"
......@@ -277,7 +272,7 @@ data Tile = Tile { tileId :: Int
, tileProbability :: Maybe Float
, tileType :: Maybe Text
, tileTerrain :: Maybe [Int]
} deriving (Eq, Generic, Show)
} deriving (Eq, Generic, Show, NFData)
instance FromJSON Tile where
parseJSON = genericParseJSON (aesonOptions 4)
......@@ -331,10 +326,10 @@ data Tileset = Tileset { tilesetFirstgid :: GlobalId
, tilesetWangsets :: Maybe Value
, tilesetType :: Maybe Text
, tilesetFileName :: Maybe Text
} deriving (Eq, Generic, Show)
} deriving (Eq, Generic, Show, NFData)
newtype TransitiveTilesetMap = TransitiveTilesetMap (Map LocalId Value)
deriving (Show, Eq, Generic, FromJSON)
deriving newtype (Show, Eq, FromJSON)
instance FromJSON Tileset where
parseJSON = genericParseJSON (aesonOptions 7)
......@@ -378,21 +373,15 @@ data Tiledmap = Tiledmap { tiledmapVersion :: Value
, tiledmapStaggerindex :: Maybe String
, tiledmapType :: String
, tiledmapEditorsettings :: Maybe Value
} deriving (Eq, Generic, Show)
} deriving (Eq, Generic, Show, NFData)
instance FromJSON Tiledmap where
parseJSON = genericParseJSON (aesonOptions 8)
instance ToJSON Tiledmap where
toJSON = genericToJSON (aesonOptions 8)
data LoadResult = Loaded Tiledmap | IOErr String | DecodeErr String
-- | Load a Tiled map from the given 'FilePath'.
loadTiledmap :: FilePath -> IO LoadResult
loadTiledmap path = do
res <- try (BS.readFile path)
pure $ case res of
Right file -> case eitherDecode . LB.fromStrict $ file of
Left err -> DecodeErr err
Right tiledmap -> Loaded tiledmap
Left (err :: SomeException) -> IOErr $ show err
loadTiledmap :: FilePath -> IO (Either String Tiledmap)
loadTiledmap path = eitherDecodeFileStrict' path >>= \case
Left err -> pure $ Left err
Right !tiledmap -> evaluateNF tiledmap <&> Right
{-# LANGUAGE OverloadedStrings #-}
module TiledAbstract where
module Data.Tiled.Abstract where
import Data.Maybe (fromMaybe)
import Data.Proxy (Proxy)
import Data.Text (Text)
import Data.Vector (Vector)
import qualified Data.Vector as V
import Tiled (GlobalId, Layer (..), Object (..), Property (..),
import Universum
import Data.Tiled (GlobalId, Layer (..), Object (..), Property (..),
PropertyValue (..), Tile (..), Tiledmap (..),
Tileset (..), mkTiledId)
import Util (showText)
import qualified Data.Vector as V
class HasProperties a where
getProperties :: a -> [Property]
adjustProperties :: ([Property] -> Maybe [Property]) -> a -> a
instance HasProperties Layer where
getProperties = fromMaybe mempty . layerProperties
getProperties = maybeToMonoid . layerProperties
adjustProperties f layer = layer
{ layerProperties = f (getProperties layer) }
instance HasProperties Tileset where
getProperties = fromMaybe mempty . tilesetProperties
getProperties = maybeToMonoid . tilesetProperties
adjustProperties f tileset = tileset
{ tilesetProperties = f (getProperties tileset) }
instance HasProperties Tile where
getProperties = V.toList . fromMaybe mempty . tileProperties
getProperties = V.toList . maybeToMonoid . tileProperties
adjustProperties f tile = tile
{ tileProperties = (fmap V.fromList . f) (getProperties tile) }
instance HasProperties Object where
getProperties = V.toList . fromMaybe mempty . objectProperties
getProperties = V.toList . maybeToMonoid . objectProperties
adjustProperties f obj = obj
{ objectProperties = (fmap V.fromList . f) (getProperties obj) }
instance HasProperties Tiledmap where
getProperties = fromMaybe mempty . tiledmapProperties
getProperties = maybeToMonoid . tiledmapProperties
adjustProperties f tiledmap = tiledmap
{ tiledmapProperties = f (getProperties tiledmap) }
......@@ -68,7 +65,7 @@ instance HasName Tileset where
instance HasName Property where
getName (Property n _) = n
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
......
cabal-version: 2.4
name: walint
version: 0.1.0.0
cabal-version: 2.0
-- A short (one-line) description of the package.
-- synopsis:
-- This file has been generated from package.yaml by hpack version 0.34.5.
--
-- see: https://github.com/sol/hpack
-- A longer description of the package.
-- description:
name: walint
version: 0.1
homepage: https://stuebinm.eu/git/walint
author: stuebinm
maintainer: stuebinm@disroot.org
copyright: 2022 stuebinm
build-type: Simple
-- A URL where users can report bugs.
-- bug-reports:
-- The license under which the package is released.
-- license:
author: stuebinm
maintainer: stuebinm@disroot.org
library
exposed-modules:
CheckDir
CheckMap
WriteRepo
Util
Types
LintConfig
other-modules:
Badges
Dirgraph
LayerData
LintWriter
Paths
Properties
Uris
Paths_walint
hs-source-dirs:
lib
default-extensions:
NoImplicitPrelude
ghc-options: -Wall -Wno-name-shadowing -Wno-unticked-promoted-constructors
build-depends:
aeson
, base
, bytestring
, containers
, deepseq
, dotgen
, either
, extra
, filepath
, getopt-generics
, network-uri
, regex-tdfa
, text
, text-metrics
, tiled
, transformers
, universum
, uri-encode
, vector
default-language: Haskell2010
-- A copyright notice.
-- copyright:
-- category:
extra-source-files: CHANGELOG.md
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
library
default-language: Haskell2010
ghc-options: -Wall -Wno-name-shadowing
hs-source-dirs: lib
exposed-modules:
CheckMap
WriteRepo
CheckDir
LintWriter
Properties
Tiled
TiledAbstract
Util
Types
Paths
Uris
LintConfig
Badges
LayerData
Dirgraph
build-depends: base,
aeson,
bytestring,
containers,
text,
vector,
transformers,
mtl,
either,
filepath,
getopt-generics,
regex-tdfa,
extra,
witherable,
dotgen,
text-metrics,
uri-encode
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
main-is: Main.hs
ghc-options: -Wall
build-depends: base,
walint,
getopt-generics,
aeson,
aeson-pretty,
bytestring,
mtl,
text,
template-haskell,
process,
dotgen
hs-source-dirs: src
default-language: Haskell2010
other-modules: Version
main-is: Main.hs
other-modules:
Version
Paths_walint
hs-source-dirs:
src
default-extensions:
NoImplicitPrelude
ghc-options: -Wall -Wno-name-shadowing -Wno-unticked-promoted-constructors
build-depends:
aeson
, aeson-pretty
, base
, 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