git.s-ol.nu fedidag / 31159dd
Merge server and client repositories s-ol 1 year, 8 months ago
25 changed file(s) with 6848 addition(s) and 1 deletion(s). Raw diff Collapse all Expand all
00 node_modules
1 *.js
1 *-error.log
2 dist
0 FROM node AS build-env
1 WORKDIR /build
2 COPY package.json /build/
3 RUN npm i
4 COPY . /build/
5 RUN npm run build
6
7 FROM nginx:alpine
8 COPY nginx.conf.template /etc/nginx/templates/default.conf.template
9 COPY --from=build-env /build/dist /usr/share/nginx/html
10 RUN chmod 555 -R /usr/share/nginx/html
0 fedidag/client
1 ==============
2
3 Fedidag is a wip DAG-based discussion platform and client for the Fediverse.
4 This repository contains the front-end and a sample data.
5
6 # Running locally (development)
7 To load Mastodon threads, a CORS proxy is needed. You can run it like this:
8
9 $ yarn cors
10
11 Then the dev server can be started:
12
13 $ yarn start
14
15 # Running using docker
16 The `Dockerfile` sets up NGINX with its own CORS proxy at `/remote/...`.
0 var host = process.env.HOST || '0.0.0.0';
1 var port = process.env.PORT || 8088;
2
3 var cors_proxy = require('cors-anywhere');
4 cors_proxy.createServer({
5 originWhitelist: [], // Allow all origins
6 }).listen(port, host, function() {
7 console.log('Running CORS Anywhere on ' + host + ':' + port);
8 });
0 /*
1 Viz.js 2.1.2 (Graphviz 2.40.1, Emscripten 1.37.36)
2 */
3 (function(global) {
4 var Module = function(Module) {
5 Module = Module || {};
6 var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var getTempRet0=function(){return tempRet0};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);ret=convertReturnValue(ret);if(stack!==0)stackRestore(stack);return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}if(!Math.imul||Math.imul(4294967295,5)!==-5)Math.imul=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};if(!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(x){froundBuffer[0]=x;return froundBuffer[0]}}if(!Math.clz32)Math.clz32=function(x){var n=32;var y=x>>16;if(y){n-=16;x=y}y=x>>8;if(y){n-=8;x=y}y=x>>4;if(y){n-=4;x=y}y=x>>2;if(y){n-=2;x=y}y=x>>1;if(y)return n-2;return n-x};if(!Math.trunc)Math.trunc=function(x){return x<0?Math.ceil(x):Math.floor(x)};var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="module.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["M"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["N"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={1024:function($0,$1){var path=UTF8ToString($0);var data=UTF8ToString($1);FS.createPath("/",PATH.dirname(path));FS.writeFile(PATH.join("/",path),data)}};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else if(typeof performance!=="undefined"&&performance.now){_emscripten_get_now=function(){return performance.now()}}else{_emscripten_get_now=Date.now}var _emscripten_get_now_is_monotonic=typeof performance==="object"&&performance&&typeof performance["now"]==="function"||ENVIRONMENT_IS_NODE||typeof dateNow!=="undefined";function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now()}else{setErrNo(28);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function ___clock_gettime(a0,a1){return _clock_gettime(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i<node.usedBytes;++i)arr.push(node.contents[i]);return arr}return node.contents},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize)node.contents.push(0);node.usedBytes=newSize},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){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.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},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(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path){if(path[0]!=="/"){var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}path=PATH.join2(dir,path)}return path},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_access(path,amode){try{path=SYSCALLS.getStr(path);return SYSCALLS.doAccess(path,amode)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function syscallMmap2(addr,len,prot,flags,fd,off){off<<=12;var ptr;var allocated=false;if((flags&16)!==0&&addr%16384!==0){return-28}if((flags&32)!==0){ptr=_memalign(16384,len);if(!ptr)return-48;_memset(ptr,0,len);allocated=true}else{var info=FS.getStream(fd);if(!info)return-8;var res=FS.mmap(info,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,prot:prot,flags:flags,offset:off};return ptr}function ___sys_mmap2(addr,len,prot,flags,fd,off){try{return syscallMmap2(addr,len,prot,flags,fd,off)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function syscallMunmap(addr,len){if((addr|0)===-1||len===0){return-28}var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);if(stream){if(info.prot&2){SYSCALLS.doMsync(addr,stream,len,info.flags,info.offset)}FS.munmap(stream)}SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}function ___sys_munmap(addr,len){try{return syscallMunmap(addr,len)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_unlink(path){try{path=SYSCALLS.getStr(path);FS.unlink(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _longjmp(env,value){_setThrew(env,value||1);throw"longjmp"}function _emscripten_longjmp(a0,a1){return _longjmp(a0,a1)}var _emscripten_memcpy_big=Uint8Array.prototype.copyWithin?function(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}:function(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest)};function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){try{var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _environ_sizes_get(penviron_count,penviron_buf_size){try{var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _getTempRet0(){return getTempRet0()|0}function _setTempRet0($i){setTempRet0($i|0)}function _times(buffer){if(buffer!==0){_memset(buffer,0,16)}return 0}var readAsmConstArgsArray=[];function readAsmConstArgs(sigPtr,buf){readAsmConstArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"a":___assert_fail,"B":___clock_gettime,"F":___sys_access,"p":___sys_fcntl64,"H":___sys_fstat64,"C":___sys_ioctl,"E":___sys_mmap2,"D":___sys_munmap,"r":___sys_open,"G":___sys_stat64,"A":___sys_unlink,"L":_emscripten_asm_const_int,"d":_emscripten_longjmp,"u":_emscripten_memcpy_big,"v":_emscripten_resize_heap,"x":_environ_get,"y":_environ_sizes_get,"i":_exit,"m":_fd_close,"w":_fd_fdstat_get,"z":_fd_read,"t":_fd_seek,"q":_fd_write,"b":_getTempRet0,"J":invoke_d,"K":invoke_i,"h":invoke_ii,"g":invoke_iii,"f":invoke_iiii,"I":invoke_iiiiiii,"k":invoke_v,"e":invoke_vi,"j":invoke_vii,"o":invoke_viii,"n":invoke_viiii,"l":invoke_viiiii,"c":_setTempRet0,"s":_times};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["O"]).apply(null,arguments)};var _vizLastErrorMessage=Module["_vizLastErrorMessage"]=function(){return(_vizLastErrorMessage=Module["_vizLastErrorMessage"]=Module["asm"]["P"]).apply(null,arguments)};var _vizCreateFile=Module["_vizCreateFile"]=function(){return(_vizCreateFile=Module["_vizCreateFile"]=Module["asm"]["Q"]).apply(null,arguments)};var _vizSetY_invert=Module["_vizSetY_invert"]=function(){return(_vizSetY_invert=Module["_vizSetY_invert"]=Module["asm"]["R"]).apply(null,arguments)};var _vizSetNop=Module["_vizSetNop"]=function(){return(_vizSetNop=Module["_vizSetNop"]=Module["asm"]["S"]).apply(null,arguments)};var _vizRenderFromString=Module["_vizRenderFromString"]=function(){return(_vizRenderFromString=Module["_vizRenderFromString"]=Module["asm"]["T"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["U"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["V"]).apply(null,arguments)};var _dtopen=Module["_dtopen"]=function(){return(_dtopen=Module["_dtopen"]=Module["asm"]["W"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["X"]).apply(null,arguments)};var _memset=Module["_memset"]=function(){return(_memset=Module["_memset"]=Module["asm"]["Y"]).apply(null,arguments)};var _dtdisc=Module["_dtdisc"]=function(){return(_dtdisc=Module["_dtdisc"]=Module["asm"]["Z"]).apply(null,arguments)};var _dtextract=Module["_dtextract"]=function(){return(_dtextract=Module["_dtextract"]=Module["asm"]["_"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["$"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["aa"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ba"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["ca"]).apply(null,arguments)};var _memalign=Module["_memalign"]=function(){return(_memalign=Module["_memalign"]=Module["asm"]["da"]).apply(null,arguments)};var _Dtoset=Module["_Dtoset"]=120916;var _Dtqueue=Module["_Dtqueue"]=151992;var _Dtobag=Module["_Dtobag"]=120928;var _Dttree=Module["_Dttree"]=120940;function invoke_ii(index,a1){var sp=stackSave();try{return wasmTable.get(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return wasmTable.get(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{wasmTable.get(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{wasmTable.get(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return wasmTable.get(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{wasmTable.get(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{wasmTable.get(index)()}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return wasmTable.get(index)()}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{wasmTable.get(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_d(index){var sp=stackSave();try{return wasmTable.get(index)()}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{wasmTable.get(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return wasmTable.get(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}Module["ccall"]=ccall;Module["UTF8ToString"]=UTF8ToString;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run();
7 return Module;
8 };
9
10 function render(instance, src, options) {
11 var i;
12 for (i = 0; i < options.files.length; i++) {
13 instance['ccall']('vizCreateFile', 'number', ['string', 'string'], [options.files[i].path, options.files[i].data]);
14 }
15
16 instance['ccall']('vizSetY_invert', 'number', ['number'], [options.yInvert ? 1 : 0]);
17 instance['ccall']('vizSetNop', 'number', ['number'], [options.nop ? options.nop : 0]);
18 var resultPointer = instance['ccall']('vizRenderFromString', 'number', ['string', 'string', 'string'], [src, options.format, options.engine]);
19 var errorMessagePointer = instance['ccall']('vizLastErrorMessage', 'number', [], []);
20
21 if (errorMessagePointer !== 0) {
22 var errorMessageString = instance['UTF8ToString'](errorMessagePointer);
23 instance['ccall']('free', 'number', ['number'], [errorMessagePointer]);
24 throw new Error(errorMessageString);
25 }
26 if (!resultPointer) {
27 throw new Error('unknown graphviz error');
28 }
29
30 var resultString = instance['UTF8ToString'](resultPointer);
31 instance['ccall']('free', 'number', ['number'], [resultPointer]);
32 return resultString;
33 }
34
35 if (typeof importScripts === "function") {
36 var instance = Module();
37
38 onmessage = function(event) {
39 var id = event.data.id;
40 var src = event.data.src;
41 var options = event.data.options;
42
43 try {
44 var result = render(instance, src, options);
45 postMessage({ id: id, result: result });
46 } catch (e) {
47 var error;
48 if (e instanceof Error) {
49 error = { message: e.message, fileName: e.fileName, lineNumber: e.lineNumber };
50 } else {
51 error = { message: e.toString() };
52 }
53 postMessage({ id: id, error: error });
54 }
55 }
56 }
57
58 if (typeof exports === 'object' && typeof module !== 'undefined') {
59 module.exports = { render: render, Module: Module };
60 } else if (typeof define === 'function' && define.amd) {
61 define(function() { return { render: render, Module: Module }; });
62 }
63
64 if (typeof global.Viz !== 'undefined') {
65 global.Viz.render = render;
66 global.Viz.Module = Module;
67 }
68
69 })(typeof self !== 'undefined' ? self : this);
Binary diff not shown
0 {
1 "name": "fedidag-client",
2 "version": "0.0.1",
3 "scripts": {
4 "start": "API_PREFIX=http://localhost:3000 webpack serve -w --host 0.0.0.0",
5 "cors": "node cors.js",
6 "build": "webpack --config ./webpack.config.js --mode production --progress"
7 },
8 "babel": {
9 "presets": [
10 "@babel/env"
11 ],
12 "plugins": [
13 [
14 "@babel/plugin-proposal-decorators",
15 { "decoratorsBeforeExport": false }
16 ],
17 "@babel/plugin-proposal-class-properties",
18 [
19 "@babel/plugin-transform-react-jsx",
20 {
21 "pragma": "h",
22 "pragmaFrag": "Fragment"
23 }
24 ]
25 ]
26 },
27 "dependencies": {
28 "classnames": "^2.2.6",
29 "color-hash": "^1.0.3",
30 "core-js": "^3.8.3",
31 "date-fns": "^2.16.1",
32 "jsonld": "^3.3.0",
33 "preact": "^10.5.12",
34 "regenerator-runtime": "^0.13.7"
35 },
36 "devDependencies": {
37 "@babel/core": "^7.11.6",
38 "@babel/plugin-proposal-class-properties": "^7.10.4",
39 "@babel/plugin-proposal-decorators": "^7.12.13",
40 "@babel/plugin-transform-react-jsx": "^7.12.12",
41 "@babel/preset-env": "^7.11.5",
42 "babel-loader": "^8.2.2",
43 "copy-webpack-plugin": "^7.0.0",
44 "html-webpack-plugin": "^4.5.0",
45 "webpack": "^5.17.0",
46 "webpack-cli": "^4.4.0",
47 "cors-anywhere": "^0.4.3",
48 "webpack-dev-server": "^3.11.2"
49 }
50 }
0 export const PUBLIC_URL = process.env.PUBLIC_URL || `${location.origin}`;
1 export const API_PREFIX = process.env.API_PREFIX || `${location.origin}`;
2 export const CORS_PREFIX = process.env.CORS_PREFIX || `${API_PREFIX}/remote`;
0 import { Component } from 'preact';
1 import * as jsonld from 'jsonld';
2 import { CORS_PREFIX } from './config';
3
4 const cors = (url) => `${CORS_PREFIX}/${url}`;
5
6 function wrapCache(target) {
7 const orig = target.descriptor.value;
8
9 target.descriptor.value = function (id, ...args) {
10 this.cache[id] ||= orig.call(this, id, ...args);
11 return this.cache[id];
12 };
13
14 return target;
15 };
16
17 const context = [
18 'https://www.w3.org/ns/activitystreams',
19 {
20 replies: { '@id': 'as:replies', '@container': '@set' },
21 inReplyTo: { '@id': 'as:inReplyTo', '@container': '@set' },
22 items: { '@id': 'as:items', '@type': '@id', '@container': '@set' },
23 },
24 ];
25
26 export class GraphContainer extends Component {
27 state = {
28 loading: true,
29 name: "loading…",
30 items: {},
31 error: null,
32 };
33
34 cache = {};
35
36 componentDidMount() {
37 this.componentDidUpdate({});
38 }
39
40 componentDidUpdate(prevProps) {
41 if (prevProps.url === this.props.url) return;
42
43 this.loadData(this.props.url)
44 .catch(error => {
45 console.error(`Error loading ${this.props.url}:`, error);
46 this.setState({
47 loading: false,
48 error,
49 });
50 });
51 }
52
53 @wrapCache
54 async loadUser(id) {
55 if (id === "https://dag.s-ol.nu/users/unknown") {
56 return {
57 '@context': context,
58 id,
59 type: 'Person',
60 name: 'unknown',
61 summary: 'unknown user',
62 };
63 }
64
65 try {
66 const user = await jsonld.compact(id, context);
67 user.id = id;
68 return user;
69 } catch (error) {
70 console.error(`Error loading user '${id}':`, error);
71 return {
72 '@context': context,
73 id,
74 type: 'Person',
75 name: id,
76 summary: 'failed to load user information',
77 };
78 }
79 }
80
81 render() {
82 window.state = this.state;
83 return this.props.render(this.state);
84 }
85 }
86
87 export class GraphContainerMastodon extends GraphContainer {
88 @wrapCache
89 async loadCollection(id, ...args) {
90 const collection = await jsonld.compact(cors(id), context);
91 let items = [];
92
93 const addItems = (i) => {
94 if (Array.isArray(i))
95 items = items.concat(i);
96 else if (i)
97 items.push(i);
98 };
99
100 // discover items
101 if (collection.items) {
102 addItems(collection.items);
103 } else {
104 let page = collection.first;
105 const seen = [];
106 while (page && seen.indexOf(page.id) < 0) {
107 seen.push(page.id);
108 addItems(page.items);
109
110 page = page.next && await jsonld.compact(cors(page.next), context);
111 }
112 }
113
114 // dereference items
115 return await Promise.all(items.map(item => this.loadNote(item.id ?? item, ...args)));
116 }
117
118 @wrapCache
119 async loadNote(id, items, inReplyTo) {
120 let item;
121 try {
122 item = await jsonld.frame(
123 cors(id),
124 {
125 '@context': context,
126 type: 'Note',
127 context: { '@embed': '@never' },
128 replies: { '@embed': '@always' },
129 inReplyTo: { '@embed': '@never' },
130 },
131 { omitGraph: true }
132 );
133
134 if (item.replies.length)
135 item.replies = await this.loadCollection(item.replies[0].id, items, [id]);
136 } catch (error) {
137 console.error(`Error loading note '${id}':`, error);
138 item = {
139 '@context': context,
140 id,
141 type: 'Tombstone',
142 formerType: 'Note',
143 attributedTo: 'https://dag.s-ol.nu/users/unknown',
144 published: '1970-01-01T00:00:00Z',
145 content: `Error loading note: ${error.toString()}`,
146 replies: [],
147 inReplyTo,
148 };
149 }
150
151 item.attributedTo = await this.loadUser(item.attributedTo);
152 items[item.id] = item;
153 return item;
154 }
155
156 async loadData(url) {
157 const items = {};
158 const root = await this.loadNote(url, items, []);
159
160 this.setState({
161 name: root.name || root.content,
162 items,
163 loading: false,
164 });
165 }
166 }
167
168 export class GraphContainerJSONLD extends GraphContainer {
169 async loadData(url) {
170 const response = await fetch(url, {
171 headers: { 'Accept': 'application/ld+json, application/json' },
172 credentials: 'include',
173 });
174
175 const discussion = await jsonld.frame(
176 await response.json(),
177 {
178 '@context': context,
179 type: 'Document',
180 first: { '@embed': '@never' },
181 items: {
182 context: { '@embed': '@never' },
183 replies: { '@embed': '@never' },
184 inReplyTo: { '@embed': '@never' },
185 attributedTo: { '@embed': '@always' },
186 },
187 },
188 { omitGraph: true }
189 );
190
191 const indexedItems = {};
192 await Promise.all(discussion.items.map(async (item) => {
193 item.attributedTo = await this.loadUser(item.attributedTo);
194 indexedItems[item.id] = item;
195 }));
196
197 discussion.items = indexedItems;
198
199 this.setState({
200 ...discussion,
201 loading: false,
202 });
203 }
204 }
0 import 'preact/debug';
1 import 'core-js/stable';
2 import 'regenerator-runtime/runtime';
3 import { h, Fragment, Component, render } from 'preact';
4 import { GraphContainerJSONLD, GraphContainerMastodon } from './graph';
5 import { Menu, Discussion, Selection } from './ui';
6
7 class SelectionContainer extends Component {
8 state = {
9 selection: [],
10 };
11
12 toggle = (id) => {
13 const { selection } = this.state;
14 if (selection.indexOf(id) < 0)
15 this.setState({ selection: [ ...selection, id ] });
16 else
17 this.setState({ selection: selection.filter(i => i !== id) });
18 }
19
20 render() {
21 return this.props.render({
22 ...this.state,
23 toggleSelected: this.toggle,
24 });
25 }
26 }
27
28 class CollapseContainer extends Component {
29 /**
30 * Contains the collapse-state for each node.
31 *
32 * - `false`: visible
33 * - `true`: implicitly hidden
34 * - `'explicit'`: explicitly hidden
35 */
36 state = {};
37
38 /**
39 * Toggle a node's collapse-state.
40 * - `false` → `'explicit'`
41 * - `true`, `'explicit'` → `false`
42 */
43 toggle = (id) => {
44 const { items } = this.props;
45
46 const state = Object.assign({}, this.state);
47 state[id] = state[id] ? false : 'explicit';
48
49 this.setState(this.update(items[id], state));
50 }
51
52 /**
53 * Recursively update child node's collapse-state.
54 *
55 * If a node has parents and they are all collapsed,
56 * mark that node as implicitly hidden (`true`).
57 *
58 * Then update all of that node's children.
59 */
60 update(node, state) {
61 const { items } = this.props;
62
63 if (state[node.id] !== 'explicit') {
64 state[node.id] =
65 node.inReplyTo.length
66 && node.inReplyTo.every(p => state[p.id]);
67 }
68
69 for (const child of node.replies)
70 this.update(items[child.id], state);
71
72 return state;
73 }
74
75 render() {
76 return this.props.render({
77 collapsed: this.state,
78 toggleCollapsed: this.toggle,
79 });
80 }
81 }
82
83 const graphRender = ({ loading, error, name, items }) => {
84 if (loading) {
85 return (
86 <article>
87 <div>loading...</div>
88 </article>
89 );
90 }
91
92 if (error) {
93 return (
94 <article>
95 <h1>error loading</h1>
96 <div>
97 <p>{error.toString()}</p>
98 <pre>
99 <code>
100 {error.stack}
101 </code>
102 </pre>
103 </div>
104 </article>
105 );
106 }
107
108 return (
109 <SelectionContainer render={({ selection, toggleSelected }) => (
110 <>
111 <CollapseContainer
112 items={items}
113 render={({ collapsed, toggleCollapsed }) => (
114 <Discussion
115 name={name}
116 items={items}
117 collapsed={collapsed}
118 toggleCollapsed={toggleCollapsed}
119 toggleSelected={toggleSelected}
120 />
121 )}
122 />
123 <Selection
124 items={selection.map(id => items[id])}
125 toggleSelected={toggleSelected}
126 />
127 </>
128 )} />
129 );
130 };
131
132 const search = new URLSearchParams(window.location.search);
133 const graph = search.has('graph') ? search.get('graph') : 'lib/graph.json';
134
135 let app;
136 if (search.has('document')) {
137 app = (
138 <GraphContainerJSONLD
139 url={search.get('document')}
140 render={graphRender}
141 />
142 );
143 } else if (search.has('note')) {
144 app = (
145 <GraphContainerMastodon
146 url={search.get('note')}
147 render={graphRender}
148 />
149 );
150 } else if (search.has('graph')) {
151 app = (
152 <GraphContainerMastodon
153 url={search.get('graph')}
154 render={graphRender}
155 />
156 );
157 } else {
158 app = <Menu />;
159 }
160
161 render(app, document.body);
0 import Viz from './viz.es';
1
2 const toNumber = (i) => Number(i);
3 const gv = new Viz({ workerURL: 'lib/lite.render.js' });
4
5 export default class Layout {
6 constructor() {
7 this.src = 'digraph { node [shape="rectangle"];\n';
8 }
9
10 addNode(id, width, height) {
11 this.src += ` "${id}" [fixedsize=true; width=${width / 72}; height=${height / 72}];\n`;
12 }
13
14 addLink(from, to) {
15 this.src += ` "${from}" -> "${to}";\n`;
16 }
17
18 async render() {
19 this.src += '}';
20
21 const info = await gv.renderJSONObject(this.src, { format: 'json0' });
22 info.objects ||= [];
23 info.edges ||= [];
24 const [width, height] = info.bb.split(',').map(toNumber).slice(2);
25
26 const positions = {};
27 for (const object of info.objects) {
28 const [x, y] = object.pos.split(',').map(toNumber);
29 positions[object.name] = [ x, height - y ];
30 }
31
32 const links = info.edges.map((edge) => {
33 const pos = edge.pos.slice(2);
34 return pos.split(' ').map(p => {
35 const [x, y] = p.split(',');
36 return [toNumber(x), height - toNumber(y)];
37 });
38
39 });
40
41 return {
42 width, height,
43 positions,
44 links,
45 };
46 }
47 }
0 import { h } from 'preact';
1 import css from './css';
2
3 css`
4 .attachment {
5 margin: 1rem;
6
7 height: 7rem;
8 object-fit: contain;
9 }
10
11 .attachment + .attachment {
12 margin-top: 0;
13 }
14 `;
15
16 export const Attachment = ({ type, mediaType, url, style }) => {
17 let content;
18 if (mediaType.startsWith('video/')) {
19 content = <video class="attachment" src={url} controls />;
20 } else if (mediaType.startsWith('image/')) {
21 content = <img class="attachment" src={url} />;
22 }
23
24 return content;
25 }
0 import { h } from 'preact';
1 import { useState, useEffect } from 'preact/hooks';
2 import Layout from '../layout';
3 import css from './css';
4 import { Links } from './Links';
5 import { Note } from './Note';
6
7 css`
8 article {
9 position: absolute;
10 inset: 0;
11
12 overflow: auto;
13 }
14
15 article > h1 {
16 display: flex;
17 align-items: baseline;
18
19 position: sticky;
20 inset: 0;
21 bottom: auto;
22 z-index: 200;
23
24 margin: 0;
25 padding: 0.75rem 1.5rem;
26 background: var(--theme-title-bg);
27 color: var(--theme-title-fg);
28 }
29
30 article > h1 > span {
31 overflow: hidden;
32 white-space: nowrap;
33 text-overflow: ellipsis;
34 }
35
36 article > h1 .back {
37 font-size: 0.8em;
38 color: inherit;
39 opacity: 0.5;
40
41 margin-left: 1em;
42 }
43
44 article > div {
45 position: relative;
46 margin: 2rem 2rem 6rem;
47 }
48 `;
49
50 const tmp = document.createElement('span');
51
52 export const Discussion = ({
53 name, items, collapsed,
54 toggleCollapsed, toggleSelected,
55 }) => {
56 const [{ width, height, positions, links }, setState] = useState({
57 width: 0,
58 height: 0,
59 positions: {},
60 links: [],
61 });
62
63 const layout = new Layout();
64 const setNodeSize = layout.addNode.bind(layout);
65
66 useEffect(() => {
67 layout.render().then(setState);
68 }, [ items, collapsed ]);
69
70 tmp.innerHTML = name;
71 name = tmp.innerText;
72
73 return (
74 <article>
75 <h1>
76 <span>{name}</span>
77 <a class="back" href="?">back</a>
78 </h1>
79 <div>
80 <Links width={width} height={height} links={links} />
81 <div>
82 {Object.values(items).map((item) => {
83 const isCollapsed = collapsed[item.id];
84 const hidden =
85 item.inReplyTo.every(p => collapsed[p.id])
86 && item.replies.every(c => collapsed[c.id])
87 && item.inReplyTo.length !== 0;
88 if (hidden)
89 return;
90
91 const onlyParent = item.inReplyTo.length === 1 && items[item.inReplyTo[0].id];
92
93 for (const reply of item.replies) {
94 if (isCollapsed && collapsed[reply.id])
95 continue;
96
97 layout.addLink(item.id, reply.id);
98 }
99
100 return (
101 <Note
102 {...item}
103 smallHeader={
104 onlyParent // only one parent post
105 && onlyParent.attributedTo === item.attributedTo // posted by same user
106 && onlyParent.published === item.published // in the same second
107 }
108 collapsed={isCollapsed}
109 position={positions[item.id]}
110 onCollapse={toggleCollapsed}
111 onSelect={toggleSelected}
112 onSize={setNodeSize}
113 />
114 );
115 })}
116 </div>
117 </div>
118 </article>
119 );
120 };
121
0 import { h } from 'preact';
1 import { useRef, useLayoutEffect } from 'preact/hooks';
2
3 export const Links = ({ links, ...props }) => {
4 const canvas = useRef(null);
5
6 useLayoutEffect(() => {
7 const ctx = canvas.current.getContext('2d');
8 ctx.lineWidth = 4;
9 ctx.lineCap = 'round';
10 ctx.lineJoin = 'round';
11 ctx.strokeStyle = '#696969';
12 ctx.fillStyle = '#696969';
13 ctx.shadowBlur = 2;
14 ctx.shadowOffsetX = 2;
15 ctx.shadowOffsetY = 4;
16
17 ctx.clearRect(0, 0, canvas.current.width, canvas.current.height);
18
19 for (const points of links) {
20 ctx.shadowColor = 'rgba(0,0,0, 0.7)';
21 ctx.beginPath();
22 ctx.moveTo(...points[1]);
23 for (let i = 4; i < points.length; i += 3) {
24 const [ax, ay] = points[i - 2];
25 const [bx, by] = points[i - 1];
26 const [x, y] = points[i];
27 ctx.bezierCurveTo(ax, ay, bx, by, x, y);
28 }
29 ctx.stroke();
30
31 const [lx, ly] = points[points.length - 1];
32 const [tx, ty] = points[0];
33 const [dx, dy] = [tx - lx, ty - ly];
34 const [hx, hy] = [dy*0.7, dx*-0.7];
35
36 ctx.shadowColor = 'transparent';
37 ctx.beginPath();
38 ctx.moveTo(lx + dx*0.8, ly + dy*0.8);
39 ctx.lineTo(lx - dx*0.5 + hx, ly - dy*0.5 + hy);
40 ctx.lineTo(lx - dx*0.5 - hx, ly - dy*0.5 - hy);
41 ctx.fill();
42 }
43 });
44
45 return (
46 <canvas {...props} ref={canvas} />
47 );
48 };
49
0 import { h, Fragment } from 'preact';
1 import { useState, useEffect } from 'preact/hooks';
2 import cn from 'classnames';
3 import { API_PREFIX } from '../config';
4 import css from './css';
5
6 const fetchJSON = async (url) => {
7 const res = await fetch(API_PREFIX + url, { credentials: 'include' });
8 if (res.status !== 200)
9 throw new Error("wrong status");
10
11 return res.json();
12 };
13
14 css`
15 a.discussion {
16 display: flex;
17
18 padding: 0.25rem 0.5rem;
19 text-size: 2rem;
20 line-height: 2rem;
21 text-decoration: none;
22
23 border-radius: 0.3rem;
24
25 color: var(--theme-note-fg);
26 background: var(--theme-note-bg);
27 }
28
29 a.discussion .access {
30 opacity: 0.5;
31 margin-right: 0.75rem;
32 }
33
34 a.discussion .name {
35 flex: 1 1 auto;
36 white-space: nowrap;
37 overflow: hidden;
38 text-overflow: ellipsis;
39 }
40
41 a.discussion > a {
42 margin-left: 0.75rem;
43 text-decoration: underline;
44 color: inherit;
45 opacity: 0.5;
46
47 transition: opacity 0.3s;
48 }
49 a.discussion > a:hover {
50 opacity: 1;
51 }
52 `;
53
54 const DiscussionLink = ({ id, name, url, attributedTo, user }) => {
55 const writable = attributedTo && attributedTo.indexOf(user) > -1;
56
57 return (
58 <a class="discussion" href={`?document=${id}`}>
59 <span class="access">{writable ? 'W' : 'R'}</span>
60 <span class="name">{name}</span>
61 {url && (
62 <a href={url.href}>ext</a>
63 )}
64 </a>
65 );
66 };
67
68 css`
69 ul.discussions {
70 list-style: none;
71 padding: 0;
72
73 width: 26rem;
74 }
75
76 ul.discussions > li {
77 margin: 0.2rem 0;
78 }
79 `;
80
81 const DiscussionList = ({ discussions, user }) => {
82 return (
83 <ul class="discussions">
84 {discussions.map((discussion) => (
85 <li>
86 <DiscussionLink {...discussion} user={user} />
87 </li>
88 ))}
89 </ul>
90 );
91 };
92
93 css`
94 div.menu {
95 margin: 1rem 2rem;
96 }
97 `;
98 export const Menu = () => {
99 const [user, setUser] = useState(null);
100 const [discussions, setDiscussions] = useState([]);
101
102 useEffect(() => {
103 fetchJSON('/discdag/list')
104 .then(({ user, discussions }) => {
105 setUser(user ?? null);
106 setDiscussions(discussions);
107 });
108 }, []);
109
110 if (user === null) {
111 return (
112 <div class="menu">
113 <h2>Discussions</h2>
114 loading...
115 </div>
116 );
117 }
118
119 return (
120 <div class="menu">
121 <h2>Discussions</h2>
122 {/*user && user.name !== 'Guest'
123 ? (
124 <>
125 <span>logged in as {user.name}</span>
126 <button>log out</button>
127 </>
128 )
129 : (
130 <>
131 <span>not logged in</span>
132 <button>log in</button>
133 </>
134 )*/}
135 <DiscussionList discussions={discussions} user={user?.id} />
136 </div>
137 );
138 };
0 import { h } from 'preact';
1 import { useRef, useLayoutEffect } from 'preact/hooks';
2 import ColorHash from 'color-hash';
3 import { formatRelative } from 'date-fns';
4 import cn from 'classnames';
5 import css from './css';
6 import { Attachment } from './Attachment';
7
8 const now = new Date();
9 const Time = ({ time }) => {
10 const dt = new Date(time);
11 return formatRelative(dt, now);
12 };
13
14 css`
15 .flex-space {
16 flex: 1;
17 margin: 0;
18 }
19 `;
20 const Space = (props) => <div class="flex-space" {...props} />;
21
22 css`
23 section > header {
24 display: flex;
25 flex-direction: row;
26
27 height: 1.75rem;
28
29 color: var(--theme-header-fg);
30 background: var(--theme-header-bg);
31 }
32
33 section > header.small {
34 height: 0.5rem;
35 }
36
37 section > header > * {
38 margin: 0 0.35rem;
39 white-space: nowrap;
40 overflow: hidden;
41 text-overflow: ellipsis;
42 line-height: 1.75rem;
43 }
44
45 section > header > .avatar {
46 height: 1.25rem;
47 width: 1.25rem;
48 flex: 0 0 auto;
49 margin: 0.25rem;
50 border-radius: 0.2rem;
51
52 font-size: 1.25rem;
53 font-weight: bold;
54 line-height: 1.25rem;
55 text-align: center;
56 text-decoration: none;
57 background: white;
58 color: black;
59 }
60 section > header > .avatar img {
61 width: inherit;
62 height: inherit;
63 }
64 section > header > .collapse {
65 height: 1rem;
66 width: 1rem;
67 flex: 0 0 auto;
68 margin: 0.3rem;
69 border-radius: 0.2rem;
70 border: 0.05rem solid var(--theme-header-fg);
71
72 line-height: 0.8rem;
73 text-align: center;
74 text-decoration: none;
75 text-weight: bold;
76
77 transition: background 0.3s;
78 }
79 section > header > .collapse:hover {
80 background: var(--theme-note-bg);
81 }
82
83 section > header > .user {
84 flex: 0 0.5 auto;
85 }
86
87 section > header > .time {
88 flex: 0 0 auto;
89 font-size: 0.8em;
90 color: #363636;
91 }
92 `;
93 const Header = ({ id, user, published, collapsed, onCollapse }) => {
94 const username = user.name || user.preferredUsername;
95
96 const onClick = onCollapse && ((e) => {
97 e.preventDefault();
98 onCollapse(id);
99 });
100
101 return (
102 <header>
103 <a class="avatar" href={user.id}>
104 {user.icon
105 ? <img src={new URL(user.icon.url, user.id)} />
106 : "?"}
107 </a>
108 <span class="user">{username}</span>
109 <Space />
110 <a class="time" href={id}>
111 <Time time={published} />
112 </a>
113 <a class="collapse" href="#" onClick={onClick}>
114 {collapsed ? '+' : '-'}
115 </a>
116 </header>
117 );
118 };
119
120 css`
121 section {
122 display: flex;
123 flex-direction: column;
124 justify-content: space-between;
125
126 width: 15rem;
127
128 overflow: hidden;
129 color: var(--theme-note-fg);
130 background: var(--theme-note-bg);
131 box-shadow: rgba(0,0,0, 0.7) 2px 4px 5px;
132
133 border-radius: 0.3rem;
134 }
135
136 section.type-Tombstone {
137 color: var(--theme-note-bg);
138 background: var(--theme-note-fg);
139 }
140
141 section > main {
142 position: relative;
143 padding: 0.5rem;
144 overflow: hidden;
145 font-family: serif;
146 }
147
148 section > main > p:first-child {
149 margin-top: 0;
150 }
151 section > main > p:last-child {
152 margin-bottom: 0;
153 }
154
155 section.tombstone > main {
156 font-family: inherit;
157 }
158
159 section.hidden {
160 display: none;
161 }
162
163 section.ellipsis > main {
164 max-height: 7em;
165 }
166 section.ellipsis > .attachment {
167 display: none;
168 }
169 section.ellipsis > main::after {
170 position: absolute;
171 display: block;
172 content: '';
173
174 pointer-events: none;
175
176 left: 0;
177 right: 0;
178 bottom: 0;
179 height: 1.25em;
180 background: linear-gradient(0deg, var(--theme-note-bg) 5%, var(--theme-note-bg-trans) 100%);
181 }
182 section.type-Tombstone.ellipsis > main::after {
183 background: linear-gradient(0deg, var(--theme-note-fg) 5%, var(--theme-note-fg-trans) 100%);
184 }
185
186 section.collapsed > main {
187 max-height: 2em;
188 }
189 `;
190
191 const colors = new ColorHash({ lightness: 0.8 });
192 export const Note = ({
193 id, type, attributedTo, published, content, attachment,
194 smallHeader = false, collapsed = false, ellipsis = false, position,
195 onCollapse, onSelect, onSize,
196 }) => {
197 ellipsis ||= collapsed;
198 attachment ||= [];
199 if (!Array.isArray(attachment))
200 attachment = [attachment];
201
202 const backgroundColor = attributedTo.color || colors.hex(attributedTo.id);
203
204 const onClick = onSelect && ((e) => {
205 e.preventDefault();
206 onSelect(id);
207 });
208
209 const root = useRef(null);
210 onSize && useLayoutEffect(() => {
211 onSize(id, root.current.offsetWidth, root.current.offsetHeight);
212 });
213
214 return (
215 <section
216 style={{
217 '--theme-header-bg': backgroundColor,
218 'position': position && 'absolute',
219 'left': position && `${position[0] - root.current.offsetWidth / 2}px`,
220 'top': position && `${position[1] - root.current.offsetHeight / 2}px`,
221 'visibility': onSize && !position ? 'hidden' : 'visible',
222 }}
223 class={cn(
224 `type-${type}`,
225 collapsed && 'collapsed',
226 ellipsis && 'ellipsis',
227 )}
228 data-id={id}
229 ref={root}
230 >
231 {smallHeader
232 ? <header className="small" onClick={onCollapse} />
233 : <Header
234 id={id}
235 user={attributedTo}
236 published={published}
237 collapsed={collapsed}
238 onCollapse={onCollapse}
239 />
240 }
241 <main
242 innerHTML={content}
243 onClick={onClick}
244 />
245 {attachment.map(a => <Attachment {...a} />)}
246 </section>
247 );
248 };
0 import { h } from 'preact';
1 import { useState, useEffect } from 'preact/hooks';
2 import cn from 'classnames';
3 import css from './css';
4 import { Note } from './Note';
5
6 css`
7 .drawer {
8 position: fixed;
9 inset: 0;
10 top: auto;
11
12 z-index: 200;
13 background: var(--theme-note-fg);
14
15 /* wtf webkit */
16 -webkit-backface-visibility: hidden;
17 }
18
19 .drawer .handle {
20 height: 1.5rem;
21 margin-bottom: 1rem;
22 }
23
24 .drawer .handle button {
25 display: block;
26
27 height: 1rem;
28 line-height: 1rem;
29 margin: -1rem auto 0;
30 padding: 0.25rem;
31 background: var(--theme-note-bg);
32 border-radius: 0.2rem;
33 }
34
35 .drawer .scroller {
36 display: flex;
37 overflow: auto;
38 width: 100%;
39
40 transition: max-height 0.3s;
41 }
42
43 .drawer .contents {
44 display: flex;
45
46 align-items: flex-start;
47
48 gap: 1rem;
49 padding: 0 1.5rem;
50 }
51
52 .drawer .contents > * {
53 flex: 0 0 auto;
54 }
55 `;
56
57 export const Drawer = ({ height, children }) => {
58 const [ hidden, setHidden ] = useState(true);
59
60 return (
61 <div class="drawer">
62 <div class="handle">
63 <button onClick={() => setHidden(!hidden)}>
64 ###
65 </button>
66 </div>
67 <div
68 class="scroller"
69 style={{
70 height,
71 'max-height': hidden ? '1rem' : height,
72 }}
73 >
74 <div class="contents">
75 {children}
76 </div>
77 </div>
78 </div>
79 );
80 };
81
82 export const Selection = ({ items, toggleSelected }) => (
83 <Drawer height="8.55rem" >
84 {items.map((item) => (
85 <Note
86 {...item}
87 ellipsis
88 onSelect={toggleSelected}
89 />
90 ))}
91 </Drawer>
92 );
0 export default ([ code ]) => {
1 const style = document.createElement('style');
2 document.head.appendChild(style);
3 style.appendChild(document.createTextNode(''));
4
5 let i = 0;
6 for (const v of code.split('}')) {
7 if (v.indexOf('{') < 0) continue;
8 style.sheet.insertRule(v + '}', i++);
9 }
10
11 return style;
12 };
0 import './theme';
1 import { Discussion } from './Discussion';
2 import { Selection } from './Selection';
3 import { Menu } from './Menu';
4
5 export {
6 Discussion,
7 Selection,
8 Menu,
9 };
0 import css from './css';
1
2 css`
3 html {
4 margin: 0;
5 padding: 0;
6 }
7
8 body {
9 --theme-backdrop: #1e1e1e;
10 --theme-fg: #eeeeee;
11 --theme-note-bg: #eeeeee;
12 --theme-note-fg: #363636;
13 --theme-note-bg-trans: rgba(238,238,238,0);
14 --theme-note-fg-trans: rgba(54,54,54,0);
15 --theme-header-fg: #121212;
16
17 --theme-title-fg: #eeeeee;
18 --theme-title-bg: #363636;
19 }
20
21 body.darktheme {
22 --theme-backdrop: #1e1e1e;
23 --theme-note-bg: #363636;
24 --theme-note-fg: #eeeeee;
25 --theme-note-bg-trans: rgba(54,54,54,0);
26 --theme-note-fg-trans: rgba(238,238,238,0);
27 --theme-header-fg: #121212;
28 }
29
30 body {
31 color: var(--theme-fg);
32 background: var(--theme-backdrop);
33 font-family: sans-serif;
34
35 margin: 0;
36 padding: 0;
37 }
38 `;
0 /*
1 Viz.js 2.1.2 (Graphviz 2.40.1, Expat {{EXPAT_VERSION}}, Emscripten 1.37.36)
2 Copyright (c) 2014-2018 Michael Daines
3 Licensed under MIT license
4
5 This distribution contains other software in object code form:
6
7 Graphviz
8 Licensed under Eclipse Public License - v 1.0
9 http://www.graphviz.org
10
11 Expat
12 Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper
13 Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.
14 Licensed under MIT license
15 http://www.libexpat.org
16
17 zlib
18 Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
19 http://www.zlib.net/zlib_license.html
20 */
21 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
22 return typeof obj;
23 } : function (obj) {
24 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
25 };
26
27 var classCallCheck = function (instance, Constructor) {
28 if (!(instance instanceof Constructor)) {
29 throw new TypeError("Cannot call a class as a function");
30 }
31 };
32
33 var createClass = function () {
34 function defineProperties(target, props) {
35 for (var i = 0; i < props.length; i++) {
36 var descriptor = props[i];
37 descriptor.enumerable = descriptor.enumerable || false;
38 descriptor.configurable = true;
39 if ("value" in descriptor) descriptor.writable = true;
40 Object.defineProperty(target, descriptor.key, descriptor);
41 }
42 }
43
44 return function (Constructor, protoProps, staticProps) {
45 if (protoProps) defineProperties(Constructor.prototype, protoProps);
46 if (staticProps) defineProperties(Constructor, staticProps);
47 return Constructor;
48 };
49 }();
50
51 var _extends = Object.assign || function (target) {
52 for (var i = 1; i < arguments.length; i++) {
53 var source = arguments[i];
54
55 for (var key in source) {
56 if (Object.prototype.hasOwnProperty.call(source, key)) {
57 target[key] = source[key];
58 }
59 }
60 }
61
62 return target;
63 };
64
65 var WorkerWrapper = function () {
66 function WorkerWrapper(worker) {
67 var _this = this;
68
69 classCallCheck(this, WorkerWrapper);
70
71 this.worker = worker;
72 this.listeners = [];
73 this.nextId = 0;
74
75 this.worker.addEventListener('message', function (event) {
76 var id = event.data.id;
77 var error = event.data.error;
78 var result = event.data.result;
79
80 _this.listeners[id](error, result);
81 delete _this.listeners[id];
82 });
83 }
84
85 createClass(WorkerWrapper, [{
86 key: 'render',
87 value: function render(src, options) {
88 var _this2 = this;
89
90 return new Promise(function (resolve, reject) {
91 var id = _this2.nextId++;
92
93 _this2.listeners[id] = function (error, result) {
94 if (error) {
95 reject(new Error(error.message, error.fileName, error.lineNumber));
96 return;
97 }
98 resolve(result);
99 };
100
101 _this2.worker.postMessage({ id: id, src: src, options: options });
102 });
103 }
104 }]);
105 return WorkerWrapper;
106 }();
107
108 var ModuleWrapper = function ModuleWrapper(module, render) {
109 classCallCheck(this, ModuleWrapper);
110
111 var instance = module();
112 this.render = function (src, options) {
113 return new Promise(function (resolve, reject) {
114 try {
115 resolve(render(instance, src, options));
116 } catch (error) {
117 reject(error);
118 }
119 });
120 };
121 };
122
123 // https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
124
125 var Viz = function () {
126 function Viz() {
127 var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
128 workerURL = _ref3.workerURL,
129 worker = _ref3.worker,
130 Module = _ref3.Module,
131 render = _ref3.render;
132
133 classCallCheck(this, Viz);
134
135 if (typeof workerURL !== 'undefined') {
136 this.wrapper = new WorkerWrapper(new Worker(workerURL));
137 } else if (typeof worker !== 'undefined') {
138 this.wrapper = new WorkerWrapper(worker);
139 } else if (typeof Module !== 'undefined' && typeof render !== 'undefined') {
140 this.wrapper = new ModuleWrapper(Module, render);
141 } else if (typeof Viz.Module !== 'undefined' && typeof Viz.render !== 'undefined') {
142 this.wrapper = new ModuleWrapper(Viz.Module, Viz.render);
143 } else {
144 throw new Error('Must specify workerURL or worker option, Module and render options, or include one of full.render.js or lite.render.js after viz.js.');
145 }
146 }
147
148 createClass(Viz, [{
149 key: 'renderString',
150 value: function renderString(src) {
151 var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
152 _ref4$format = _ref4.format,
153 format = _ref4$format === undefined ? 'svg' : _ref4$format,
154 _ref4$engine = _ref4.engine,
155 engine = _ref4$engine === undefined ? 'dot' : _ref4$engine,
156 _ref4$files = _ref4.files,
157 files = _ref4$files === undefined ? [] : _ref4$files,
158 _ref4$images = _ref4.images,
159 images = _ref4$images === undefined ? [] : _ref4$images,
160 _ref4$yInvert = _ref4.yInvert,
161 yInvert = _ref4$yInvert === undefined ? false : _ref4$yInvert,
162 _ref4$nop = _ref4.nop,
163 nop = _ref4$nop === undefined ? 0 : _ref4$nop;
164
165 for (var i = 0; i < images.length; i++) {
166 files.push({
167 path: images[i].path,
168 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="' + images[i].width + '" height="' + images[i].height + '"></svg>'
169 });
170 }
171
172 return this.wrapper.render(src, { format: format, engine: engine, files: files, images: images, yInvert: yInvert, nop: nop });
173 }
174 }, {
175 key: 'renderJSONObject',
176 value: function renderJSONObject(src) {
177 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
178 var format = options.format;
179
180
181 if (format !== 'json' || format !== 'json0') {
182 format = 'json';
183 }
184
185 return this.renderString(src, _extends({}, options, { format: format })).then(function (str) {
186 return JSON.parse(str);
187 });
188 }
189 }]);
190 return Viz;
191 }();
192
193 export default Viz;
0 const path = require('path');
1 const webpack = require('webpack');
2 const HtmlWebpackPlugin = require('html-webpack-plugin');
3 const CopyWebpackPlugin = require('copy-webpack-plugin');
4 const package = require('./package.json');
5
6 module.exports = {
7 entry: './src/index.js',
8 module: {
9 rules: [
10 {
11 test: /\.jsx?$/,
12 exclude: /node_modules/,
13 use: {
14 loader: 'babel-loader',
15 options: package.babel,
16 },
17 },
18 ],
19 },
20 mode: 'development',
21 devtool: 'eval-source-map',
22 devServer: {
23 contentBase: './dist',
24 },
25 plugins: [
26 new webpack.EnvironmentPlugin({
27 NODE_ENV: 'production',
28 DEBUG: false,
29 PUBLIC_URL: null,
30 API_PREFIX: null,
31 CORS_PREFIX: null,
32 }),
33 new HtmlWebpackPlugin({
34 title: 'FediDag'
35 }),
36 new CopyWebpackPlugin({ patterns: [ 'lib/*' ] }),
37 ],
38 output: {
39 filename: '[name].bundle.js',
40 path: path.resolve(__dirname, 'dist'),
41 },
42 }
0 # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
1 # yarn lockfile v1
2
3
4 "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11":
5 version "7.12.11"
6 resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
7 integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
8 dependencies:
9 "@babel/highlight" "^7.10.4"
10
11 "@babel/code-frame@^7.12.13":
12 version "7.12.13"
13 resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
14 integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
15 dependencies:
16 "@babel/highlight" "^7.12.13"
17
18 "@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7":
19 version "7.12.7"
20 resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41"
21 integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==
22
23 "@babel/core@^7.11.6":
24 version "7.12.10"
25 resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
26 integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
27 dependencies:
28 "@babel/code-frame" "^7.10.4"
29 "@babel/generator" "^7.12.10"
30 "@babel/helper-module-transforms" "^7.12.1"
31 "@babel/helpers" "^7.12.5"
32 "@babel/parser" "^7.12.10"
33 "@babel/template" "^7.12.7"
34 "@babel/traverse" "^7.12.10"
35 "@babel/types" "^7.12.10"
36 convert-source-map "^1.7.0"
37 debug "^4.1.0"
38 gensync "^1.0.0-beta.1"
39 json5 "^2.1.2"
40 lodash "^4.17.19"
41 semver "^5.4.1"
42 source-map "^0.5.0"
43
44 "@babel/generator@^7.12.10", "@babel/generator@^7.12.11":
45 version "7.12.11"
46 resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af"
47 integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==
48 dependencies:
49 "@babel/types" "^7.12.11"
50 jsesc "^2.5.1"
51 source-map "^0.5.0"
52
53 "@babel/generator@^7.12.13":
54 version "7.12.15"
55 resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.15.tgz#4617b5d0b25cc572474cc1aafee1edeaf9b5368f"
56 integrity sha512-6F2xHxBiFXWNSGb7vyCUTBF8RCLY66rS0zEPcP8t/nQyXjha5EuK4z7H5o7fWG8B4M7y6mqVWq1J+1PuwRhecQ==
57 dependencies:
58 "@babel/types" "^7.12.13"
59 jsesc "^2.5.1"
60 source-map "^0.5.0"
61
62 "@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.10":
63 version "7.12.10"
64 resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d"
65 integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==
66 dependencies:
67 "@babel/types" "^7.12.10"
68
69 "@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4":
70 version "7.10.4"
71 resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3"
72 integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==
73 dependencies:
74 "@babel/helper-explode-assignable-expression" "^7.10.4"
75 "@babel/types" "^7.10.4"
76
77 "@babel/helper-compilation-targets@^7.12.5":
78 version "7.12.5"
79 resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831"
80 integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==
81 dependencies:
82 "@babel/compat-data" "^7.12.5"
83 "@babel/helper-validator-option" "^7.12.1"
84 browserslist "^4.14.5"
85 semver "^5.5.0"
86
87 "@babel/helper-create-class-features-plugin@^7.12.1":
88 version "7.12.1"
89 resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e"
90 integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==
91 dependencies:
92 "@babel/helper-function-name" "^7.10.4"
93 "@babel/helper-member-expression-to-functions" "^7.12.1"
94 "@babel/helper-optimise-call-expression" "^7.10.4"
95 "@babel/helper-replace-supers" "^7.12.1"
96 "@babel/helper-split-export-declaration" "^7.10.4"
97
98 "@babel/helper-create-class-features-plugin@^7.12.13":
99 version "7.12.13"
100 resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.13.tgz#0f1707c2eec1a4604f2a22a6fb209854ef2a399a"
101 integrity sha512-Vs/e9wv7rakKYeywsmEBSRC9KtmE7Px+YBlESekLeJOF0zbGUicGfXSNi3o+tfXSNS48U/7K9mIOOCR79Cl3+Q==
102 dependencies:
103 "@babel/helper-function-name" "^7.12.13"
104 "@babel/helper-member-expression-to-functions" "^7.12.13"
105 "@babel/helper-optimise-call-expression" "^7.12.13"
106 "@babel/helper-replace-supers" "^7.12.13"
107 "@babel/helper-split-export-declaration" "^7.12.13"
108
109 "@babel/helper-create-regexp-features-plugin@^7.12.1":
110 version "7.12.7"
111 resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f"
112 integrity sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==
113 dependencies:
114 "@babel/helper-annotate-as-pure" "^7.10.4"
115 regexpu-core "^4.7.1"
116
117 "@babel/helper-define-map@^7.10.4":
118 version "7.10.5"
119 resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30"
120 integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==
121 dependencies:
122 "@babel/helper-function-name" "^7.10.4"
123 "@babel/types" "^7.10.5"
124 lodash "^4.17.19"
125
126 "@babel/helper-explode-assignable-expression@^7.10.4":
127 version "7.12.1"
128 resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633"
129 integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==
130 dependencies:
131 "@babel/types" "^7.12.1"
132
133 "@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.12.11":
134 version "7.12.11"
135 resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42"
136 integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==
137 dependencies:
138 "@babel/helper-get-function-arity" "^7.12.10"
139 "@babel/template" "^7.12.7"
140 "@babel/types" "^7.12.11"
141
142 "@babel/helper-function-name@^7.12.13":
143 version "7.12.13"
144 resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a"
145 integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==
146 dependencies:
147 "@babel/helper-get-function-arity" "^7.12.13"
148 "@babel/template" "^7.12.13"
149 "@babel/types" "^7.12.13"
150
151 "@babel/helper-get-function-arity@^7.12.10":
152 version "7.12.10"
153 resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf"
154 integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==
155 dependencies:
156 "@babel/types" "^7.12.10"
157
158 "@babel/helper-get-function-arity@^7.12.13":
159 version "7.12.13"
160 resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583"
161 integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==
162 dependencies:
163 "@babel/types" "^7.12.13"
164
165 "@babel/helper-hoist-variables@^7.10.4":
166 version "7.10.4"
167 resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e"
168 integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==
169 dependencies:
170 "@babel/types" "^7.10.4"
171
172 "@babel/helper-member-expression-to-functions@^7.12.1", "@babel/helper-member-expression-to-functions@^7.12.7":
173 version "7.12.7"
174 resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855"
175 integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==
176 dependencies:
177 "@babel/types" "^7.12.7"
178
179 "@babel/helper-member-expression-to-functions@^7.12.13":
180 version "7.12.13"
181 resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.13.tgz#c5715695b4f8bab32660dbdcdc2341dec7e3df40"
182 integrity sha512-B+7nN0gIL8FZ8SvMcF+EPyB21KnCcZHQZFczCxbiNGV/O0rsrSBlWGLzmtBJ3GMjSVMIm4lpFhR+VdVBuIsUcQ==
183 dependencies:
184 "@babel/types" "^7.12.13"
185
186 "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5":
187 version "7.12.5"
188 resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb"
189 integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==
190 dependencies:
191 "@babel/types" "^7.12.5"
192
193 "@babel/helper-module-transforms@^7.12.1":
194 version "7.12.1"
195 resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c"
196 integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==
197 dependencies:
198 "@babel/helper-module-imports" "^7.12.1"
199 "@babel/helper-replace-supers" "^7.12.1"
200 "@babel/helper-simple-access" "^7.12.1"
201 "@babel/helper-split-export-declaration" "^7.11.0"
202 "@babel/helper-validator-identifier" "^7.10.4"
203 "@babel/template" "^7.10.4"
204 "@babel/traverse" "^7.12.1"
205 "@babel/types" "^7.12.1"
206 lodash "^4.17.19"
207
208 "@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.12.10":
209 version "7.12.10"
210 resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d"
211 integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==
212 dependencies:
213 "@babel/types" "^7.12.10"
214
215 "@babel/helper-optimise-call-expression@^7.12.13":
216 version "7.12.13"
217 resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea"
218 integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==
219 dependencies:
220 "@babel/types" "^7.12.13"
221
222 "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
223 version "7.10.4"
224 resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375"
225 integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
226
227 "@babel/helper-plugin-utils@^7.12.13":
228 version "7.12.13"
229 resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz#174254d0f2424d8aefb4dd48057511247b0a9eeb"
230 integrity sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA==
231
232 "@babel/helper-remap-async-to-generator@^7.12.1":
233 version "7.12.1"
234 resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd"
235 integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==
236 dependencies:
237 "@babel/helper-annotate-as-pure" "^7.10.4"
238 "@babel/helper-wrap-function" "^7.10.4"
239 "@babel/types" "^7.12.1"
240
241 "@babel/helper-replace-supers@^7.12.1":
242 version "7.12.11"
243 resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d"
244 integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==
245 dependencies:
246 "@babel/helper-member-expression-to-functions" "^7.12.7"
247 "@babel/helper-optimise-call-expression" "^7.12.10"
248 "@babel/traverse" "^7.12.10"
249 "@babel/types" "^7.12.11"
250
251 "@babel/helper-replace-supers@^7.12.13":
252 version "7.12.13"
253 resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz#00ec4fb6862546bd3d0aff9aac56074277173121"
254 integrity sha512-pctAOIAMVStI2TMLhozPKbf5yTEXc0OJa0eENheb4w09SrgOWEs+P4nTOZYJQCqs8JlErGLDPDJTiGIp3ygbLg==
255 dependencies:
256 "@babel/helper-member-expression-to-functions" "^7.12.13"
257 "@babel/helper-optimise-call-expression" "^7.12.13"
258 "@babel/traverse" "^7.12.13"
259 "@babel/types" "^7.12.13"
260
261 "@babel/helper-simple-access@^7.12.1":
262 version "7.12.1"
263 resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136"
264 integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==
265 dependencies:
266 "@babel/types" "^7.12.1"
267
268 "@babel/helper-skip-transparent-expression-wrappers@^7.12.1":
269 version "7.12.1"
270 resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf"
271 integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==
272 dependencies:
273 "@babel/types" "^7.12.1"
274
275 "@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11":
276 version "7.12.11"
277 resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a"
278 integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==
279 dependencies:
280 "@babel/types" "^7.12.11"
281
282 "@babel/helper-split-export-declaration@^7.12.13":
283 version "7.12.13"
284 resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05"
285 integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==
286 dependencies:
287 "@babel/types" "^7.12.13"
288
289 "@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11":
290 version "7.12.11"
291 resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
292 integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
293
294 "@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.11":
295 version "7.12.11"
296 resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f"
297 integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==
298
299 "@babel/helper-wrap-function@^7.10.4":
300 version "7.12.3"
301 resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9"
302 integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==
303 dependencies:
304 "@babel/helper-function-name" "^7.10.4"
305 "@babel/template" "^7.10.4"
306 "@babel/traverse" "^7.10.4"
307 "@babel/types" "^7.10.4"
308
309 "@babel/helpers@^7.12.5":
310 version "7.12.5"
311 resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e"
312 integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==
313 dependencies:
314 "@babel/template" "^7.10.4"
315 "@babel/traverse" "^7.12.5"
316 "@babel/types" "^7.12.5"
317
318 "@babel/highlight@^7.10.4":
319 version "7.10.4"
320 resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143"
321 integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==
322 dependencies:
323 "@babel/helper-validator-identifier" "^7.10.4"
324 chalk "^2.0.0"
325 js-tokens "^4.0.0"
326
327 "@babel/highlight@^7.12.13":
328 version "7.12.13"
329 resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c"
330 integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==
331 dependencies:
332 "@babel/helper-validator-identifier" "^7.12.11"
333 chalk "^2.0.0"
334 js-tokens "^4.0.0"
335
336 "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7":
337 version "7.12.11"
338 resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79"
339 integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==
340
341 "@babel/parser@^7.12.13":
342 version "7.12.15"
343 resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.15.tgz#2b20de7f0b4b332d9b119dd9c33409c538b8aacf"
344 integrity sha512-AQBOU2Z9kWwSZMd6lNjCX0GUgFonL1wAM1db8L8PMk9UDaGsRCArBkU4Sc+UCM3AE4hjbXx+h58Lb3QT4oRmrA==
345
346 "@babel/plugin-proposal-async-generator-functions@^7.12.1":
347 version "7.12.12"
348 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz#04b8f24fd4532008ab4e79f788468fd5a8476566"
349 integrity sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==
350 dependencies:
351 "@babel/helper-plugin-utils" "^7.10.4"
352 "@babel/helper-remap-async-to-generator" "^7.12.1"
353 "@babel/plugin-syntax-async-generators" "^7.8.0"
354
355 "@babel/plugin-proposal-class-properties@^7.10.4", "@babel/plugin-proposal-class-properties@^7.12.1":
356 version "7.12.1"
357 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de"
358 integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==
359 dependencies:
360 "@babel/helper-create-class-features-plugin" "^7.12.1"
361 "@babel/helper-plugin-utils" "^7.10.4"
362
363 "@babel/plugin-proposal-decorators@^7.12.13":
364 version "7.12.13"
365 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.13.tgz#d4c89b40c2b7a526b0d394de4f4def36191e413e"
366 integrity sha512-x2aOr5w4ARJoYHFKoG2iEUL/Xe99JAJXjAasHijXp3/KgaetJXGE62SmHgsW3Tia/XUT5AxF2YC0F+JyhPY/0Q==
367 dependencies:
368 "@babel/helper-create-class-features-plugin" "^7.12.13"
369 "@babel/helper-plugin-utils" "^7.12.13"
370 "@babel/plugin-syntax-decorators" "^7.12.13"
371
372 "@babel/plugin-proposal-dynamic-import@^7.12.1":
373 version "7.12.1"
374 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc"
375 integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==
376 dependencies:
377 "@babel/helper-plugin-utils" "^7.10.4"
378 "@babel/plugin-syntax-dynamic-import" "^7.8.0"
379
380 "@babel/plugin-proposal-export-namespace-from@^7.12.1":
381 version "7.12.1"
382 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4"
383 integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==
384 dependencies:
385 "@babel/helper-plugin-utils" "^7.10.4"
386 "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
387
388 "@babel/plugin-proposal-json-strings@^7.12.1":
389 version "7.12.1"
390 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c"
391 integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==
392 dependencies:
393 "@babel/helper-plugin-utils" "^7.10.4"
394 "@babel/plugin-syntax-json-strings" "^7.8.0"
395
396 "@babel/plugin-proposal-logical-assignment-operators@^7.12.1":
397 version "7.12.1"
398 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751"
399 integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==
400 dependencies:
401 "@babel/helper-plugin-utils" "^7.10.4"
402 "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
403
404 "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1":
405 version "7.12.1"
406 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c"
407 integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==
408 dependencies:
409 "@babel/helper-plugin-utils" "^7.10.4"
410 "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
411
412 "@babel/plugin-proposal-numeric-separator@^7.12.7":
413 version "7.12.7"
414 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b"
415 integrity sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==
416 dependencies:
417 "@babel/helper-plugin-utils" "^7.10.4"
418 "@babel/plugin-syntax-numeric-separator" "^7.10.4"
419
420 "@babel/plugin-proposal-object-rest-spread@^7.12.1":
421 version "7.12.1"
422 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069"
423 integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==
424 dependencies:
425 "@babel/helper-plugin-utils" "^7.10.4"
426 "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
427 "@babel/plugin-transform-parameters" "^7.12.1"
428
429 "@babel/plugin-proposal-optional-catch-binding@^7.12.1":
430 version "7.12.1"
431 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942"
432 integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==
433 dependencies:
434 "@babel/helper-plugin-utils" "^7.10.4"
435 "@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
436
437 "@babel/plugin-proposal-optional-chaining@^7.12.7":
438 version "7.12.7"
439 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c"
440 integrity sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==
441 dependencies:
442 "@babel/helper-plugin-utils" "^7.10.4"
443 "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
444 "@babel/plugin-syntax-optional-chaining" "^7.8.0"
445
446 "@babel/plugin-proposal-private-methods@^7.12.1":
447 version "7.12.1"
448 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389"
449 integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==
450 dependencies:
451 "@babel/helper-create-class-features-plugin" "^7.12.1"
452 "@babel/helper-plugin-utils" "^7.10.4"
453
454 "@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
455 version "7.12.1"
456 resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072"
457 integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==
458 dependencies:
459 "@babel/helper-create-regexp-features-plugin" "^7.12.1"
460 "@babel/helper-plugin-utils" "^7.10.4"
461
462 "@babel/plugin-syntax-async-generators@^7.8.0":
463 version "7.8.4"
464 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
465 integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
466 dependencies:
467 "@babel/helper-plugin-utils" "^7.8.0"
468
469 "@babel/plugin-syntax-class-properties@^7.12.1":
470 version "7.12.1"
471 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978"
472 integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==
473 dependencies:
474 "@babel/helper-plugin-utils" "^7.10.4"
475
476 "@babel/plugin-syntax-decorators@^7.12.13":
477 version "7.12.13"
478 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648"
479 integrity sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA==
480 dependencies:
481 "@babel/helper-plugin-utils" "^7.12.13"
482
483 "@babel/plugin-syntax-dynamic-import@^7.8.0":
484 version "7.8.3"
485 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
486 integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
487 dependencies:
488 "@babel/helper-plugin-utils" "^7.8.0"
489
490 "@babel/plugin-syntax-export-namespace-from@^7.8.3":
491 version "7.8.3"
492 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
493 integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
494 dependencies:
495 "@babel/helper-plugin-utils" "^7.8.3"
496
497 "@babel/plugin-syntax-json-strings@^7.8.0":
498 version "7.8.3"
499 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
500 integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
501 dependencies:
502 "@babel/helper-plugin-utils" "^7.8.0"
503
504 "@babel/plugin-syntax-jsx@^7.12.1":
505 version "7.12.1"
506 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926"
507 integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==
508 dependencies:
509 "@babel/helper-plugin-utils" "^7.10.4"
510
511 "@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
512 version "7.10.4"
513 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
514 integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
515 dependencies:
516 "@babel/helper-plugin-utils" "^7.10.4"
517
518 "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0":
519 version "7.8.3"
520 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
521 integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
522 dependencies:
523 "@babel/helper-plugin-utils" "^7.8.0"
524
525 "@babel/plugin-syntax-numeric-separator@^7.10.4":
526 version "7.10.4"
527 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
528 integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
529 dependencies:
530 "@babel/helper-plugin-utils" "^7.10.4"
531
532 "@babel/plugin-syntax-object-rest-spread@^7.8.0":
533 version "7.8.3"
534 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
535 integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
536 dependencies:
537 "@babel/helper-plugin-utils" "^7.8.0"
538
539 "@babel/plugin-syntax-optional-catch-binding@^7.8.0":
540 version "7.8.3"
541 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
542 integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
543 dependencies:
544 "@babel/helper-plugin-utils" "^7.8.0"
545
546 "@babel/plugin-syntax-optional-chaining@^7.8.0":
547 version "7.8.3"
548 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
549 integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
550 dependencies:
551 "@babel/helper-plugin-utils" "^7.8.0"
552
553 "@babel/plugin-syntax-top-level-await@^7.12.1":
554 version "7.12.1"
555 resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0"
556 integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==
557 dependencies:
558 "@babel/helper-plugin-utils" "^7.10.4"
559
560 "@babel/plugin-transform-arrow-functions@^7.12.1":
561 version "7.12.1"
562 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3"
563 integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==
564 dependencies:
565 "@babel/helper-plugin-utils" "^7.10.4"
566
567 "@babel/plugin-transform-async-to-generator@^7.12.1":
568 version "7.12.1"
569 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1"
570 integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==
571 dependencies:
572 "@babel/helper-module-imports" "^7.12.1"
573 "@babel/helper-plugin-utils" "^7.10.4"
574 "@babel/helper-remap-async-to-generator" "^7.12.1"
575
576 "@babel/plugin-transform-block-scoped-functions@^7.12.1":
577 version "7.12.1"
578 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9"
579 integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==
580 dependencies:
581 "@babel/helper-plugin-utils" "^7.10.4"
582
583 "@babel/plugin-transform-block-scoping@^7.12.11":
584 version "7.12.12"
585 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz#d93a567a152c22aea3b1929bb118d1d0a175cdca"
586 integrity sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==
587 dependencies:
588 "@babel/helper-plugin-utils" "^7.10.4"
589
590 "@babel/plugin-transform-classes@^7.12.1":
591 version "7.12.1"
592 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6"
593 integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==
594 dependencies:
595 "@babel/helper-annotate-as-pure" "^7.10.4"
596 "@babel/helper-define-map" "^7.10.4"
597 "@babel/helper-function-name" "^7.10.4"
598 "@babel/helper-optimise-call-expression" "^7.10.4"
599 "@babel/helper-plugin-utils" "^7.10.4"
600 "@babel/helper-replace-supers" "^7.12.1"
601 "@babel/helper-split-export-declaration" "^7.10.4"
602 globals "^11.1.0"
603
604 "@babel/plugin-transform-computed-properties@^7.12.1":
605 version "7.12.1"
606 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852"
607 integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==
608 dependencies:
609 "@babel/helper-plugin-utils" "^7.10.4"
610
611 "@babel/plugin-transform-destructuring@^7.12.1":
612 version "7.12.1"
613 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847"
614 integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==
615 dependencies:
616 "@babel/helper-plugin-utils" "^7.10.4"
617
618 "@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4":
619 version "7.12.1"
620 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975"
621 integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==
622 dependencies:
623 "@babel/helper-create-regexp-features-plugin" "^7.12.1"
624 "@babel/helper-plugin-utils" "^7.10.4"
625
626 "@babel/plugin-transform-duplicate-keys@^7.12.1":
627 version "7.12.1"
628 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228"
629 integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==
630 dependencies:
631 "@babel/helper-plugin-utils" "^7.10.4"
632
633 "@babel/plugin-transform-exponentiation-operator@^7.12.1":
634 version "7.12.1"
635 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0"
636 integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==
637 dependencies:
638 "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4"
639 "@babel/helper-plugin-utils" "^7.10.4"
640
641 "@babel/plugin-transform-for-of@^7.12.1":
642 version "7.12.1"
643 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa"
644 integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==
645 dependencies:
646 "@babel/helper-plugin-utils" "^7.10.4"
647
648 "@babel/plugin-transform-function-name@^7.12.1":
649 version "7.12.1"
650 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667"
651 integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==
652 dependencies:
653 "@babel/helper-function-name" "^7.10.4"
654 "@babel/helper-plugin-utils" "^7.10.4"
655
656 "@babel/plugin-transform-literals@^7.12.1":
657 version "7.12.1"
658 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57"
659 integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==
660 dependencies:
661 "@babel/helper-plugin-utils" "^7.10.4"
662
663 "@babel/plugin-transform-member-expression-literals@^7.12.1":
664 version "7.12.1"
665 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad"
666 integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==
667 dependencies:
668 "@babel/helper-plugin-utils" "^7.10.4"
669
670 "@babel/plugin-transform-modules-amd@^7.12.1":
671 version "7.12.1"
672 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9"
673 integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==
674 dependencies:
675 "@babel/helper-module-transforms" "^7.12.1"
676 "@babel/helper-plugin-utils" "^7.10.4"
677 babel-plugin-dynamic-import-node "^2.3.3"
678
679 "@babel/plugin-transform-modules-commonjs@^7.12.1":
680 version "7.12.1"
681 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648"
682 integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==
683 dependencies:
684 "@babel/helper-module-transforms" "^7.12.1"
685 "@babel/helper-plugin-utils" "^7.10.4"
686 "@babel/helper-simple-access" "^7.12.1"
687 babel-plugin-dynamic-import-node "^2.3.3"
688
689 "@babel/plugin-transform-modules-systemjs@^7.12.1":
690 version "7.12.1"
691 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086"
692 integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==
693 dependencies:
694 "@babel/helper-hoist-variables" "^7.10.4"
695 "@babel/helper-module-transforms" "^7.12.1"
696 "@babel/helper-plugin-utils" "^7.10.4"
697 "@babel/helper-validator-identifier" "^7.10.4"
698 babel-plugin-dynamic-import-node "^2.3.3"
699
700 "@babel/plugin-transform-modules-umd@^7.12.1":
701 version "7.12.1"
702 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902"
703 integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==
704 dependencies:
705 "@babel/helper-module-transforms" "^7.12.1"
706 "@babel/helper-plugin-utils" "^7.10.4"
707
708 "@babel/plugin-transform-named-capturing-groups-regex@^7.12.1":
709 version "7.12.1"
710 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753"
711 integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==
712 dependencies:
713 "@babel/helper-create-regexp-features-plugin" "^7.12.1"
714
715 "@babel/plugin-transform-new-target@^7.12.1":
716 version "7.12.1"
717 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0"
718 integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==
719 dependencies:
720 "@babel/helper-plugin-utils" "^7.10.4"
721
722 "@babel/plugin-transform-object-super@^7.12.1":
723 version "7.12.1"
724 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e"
725 integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==
726 dependencies:
727 "@babel/helper-plugin-utils" "^7.10.4"
728 "@babel/helper-replace-supers" "^7.12.1"
729
730 "@babel/plugin-transform-parameters@^7.12.1":
731 version "7.12.1"
732 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d"
733 integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==
734 dependencies:
735 "@babel/helper-plugin-utils" "^7.10.4"
736
737 "@babel/plugin-transform-property-literals@^7.12.1":
738 version "7.12.1"
739 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd"
740 integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==
741 dependencies:
742 "@babel/helper-plugin-utils" "^7.10.4"
743
744 "@babel/plugin-transform-react-jsx@^7.12.12":
745 version "7.12.12"
746 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.12.tgz#b0da51ffe5f34b9a900e9f1f5fb814f9e512d25e"
747 integrity sha512-JDWGuzGNWscYcq8oJVCtSE61a5+XAOos+V0HrxnDieUus4UMnBEosDnY1VJqU5iZ4pA04QY7l0+JvHL1hZEfsw==
748 dependencies:
749 "@babel/helper-annotate-as-pure" "^7.12.10"
750 "@babel/helper-module-imports" "^7.12.5"
751 "@babel/helper-plugin-utils" "^7.10.4"
752 "@babel/plugin-syntax-jsx" "^7.12.1"
753 "@babel/types" "^7.12.12"
754
755 "@babel/plugin-transform-regenerator@^7.12.1":
756 version "7.12.1"
757 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753"
758 integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==
759 dependencies:
760 regenerator-transform "^0.14.2"
761
762 "@babel/plugin-transform-reserved-words@^7.12.1":
763 version "7.12.1"
764 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8"
765 integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==
766 dependencies:
767 "@babel/helper-plugin-utils" "^7.10.4"
768
769 "@babel/plugin-transform-shorthand-properties@^7.12.1":
770 version "7.12.1"
771 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3"
772 integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==
773 dependencies:
774 "@babel/helper-plugin-utils" "^7.10.4"
775
776 "@babel/plugin-transform-spread@^7.12.1":
777 version "7.12.1"
778 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e"
779 integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==
780 dependencies:
781 "@babel/helper-plugin-utils" "^7.10.4"
782 "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
783
784 "@babel/plugin-transform-sticky-regex@^7.12.7":
785 version "7.12.7"
786 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad"
787 integrity sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==
788 dependencies:
789 "@babel/helper-plugin-utils" "^7.10.4"
790
791 "@babel/plugin-transform-template-literals@^7.12.1":
792 version "7.12.1"
793 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843"
794 integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==
795 dependencies:
796 "@babel/helper-plugin-utils" "^7.10.4"
797
798 "@babel/plugin-transform-typeof-symbol@^7.12.10":
799 version "7.12.10"
800 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b"
801 integrity sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==
802 dependencies:
803 "@babel/helper-plugin-utils" "^7.10.4"
804
805 "@babel/plugin-transform-unicode-escapes@^7.12.1":
806 version "7.12.1"
807 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709"
808 integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==
809 dependencies:
810 "@babel/helper-plugin-utils" "^7.10.4"
811
812 "@babel/plugin-transform-unicode-regex@^7.12.1":
813 version "7.12.1"
814 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb"
815 integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==
816 dependencies:
817 "@babel/helper-create-regexp-features-plugin" "^7.12.1"
818 "@babel/helper-plugin-utils" "^7.10.4"
819
820 "@babel/preset-env@^7.11.5":
821 version "7.12.11"
822 resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9"
823 integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==
824 dependencies:
825 "@babel/compat-data" "^7.12.7"
826 "@babel/helper-compilation-targets" "^7.12.5"
827 "@babel/helper-module-imports" "^7.12.5"
828 "@babel/helper-plugin-utils" "^7.10.4"
829 "@babel/helper-validator-option" "^7.12.11"
830 "@babel/plugin-proposal-async-generator-functions" "^7.12.1"
831 "@babel/plugin-proposal-class-properties" "^7.12.1"
832 "@babel/plugin-proposal-dynamic-import" "^7.12.1"
833 "@babel/plugin-proposal-export-namespace-from" "^7.12.1"
834 "@babel/plugin-proposal-json-strings" "^7.12.1"
835 "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1"
836 "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1"
837 "@babel/plugin-proposal-numeric-separator" "^7.12.7"
838 "@babel/plugin-proposal-object-rest-spread" "^7.12.1"
839 "@babel/plugin-proposal-optional-catch-binding" "^7.12.1"
840 "@babel/plugin-proposal-optional-chaining" "^7.12.7"
841 "@babel/plugin-proposal-private-methods" "^7.12.1"
842 "@babel/plugin-proposal-unicode-property-regex" "^7.12.1"
843 "@babel/plugin-syntax-async-generators" "^7.8.0"
844 "@babel/plugin-syntax-class-properties" "^7.12.1"
845 "@babel/plugin-syntax-dynamic-import" "^7.8.0"
846 "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
847 "@babel/plugin-syntax-json-strings" "^7.8.0"
848 "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
849 "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
850 "@babel/plugin-syntax-numeric-separator" "^7.10.4"
851 "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
852 "@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
853 "@babel/plugin-syntax-optional-chaining" "^7.8.0"
854 "@babel/plugin-syntax-top-level-await" "^7.12.1"
855 "@babel/plugin-transform-arrow-functions" "^7.12.1"
856 "@babel/plugin-transform-async-to-generator" "^7.12.1"
857 "@babel/plugin-transform-block-scoped-functions" "^7.12.1"
858 "@babel/plugin-transform-block-scoping" "^7.12.11"
859 "@babel/plugin-transform-classes" "^7.12.1"
860 "@babel/plugin-transform-computed-properties" "^7.12.1"
861 "@babel/plugin-transform-destructuring" "^7.12.1"
862 "@babel/plugin-transform-dotall-regex" "^7.12.1"
863 "@babel/plugin-transform-duplicate-keys" "^7.12.1"
864 "@babel/plugin-transform-exponentiation-operator" "^7.12.1"
865 "@babel/plugin-transform-for-of" "^7.12.1"
866 "@babel/plugin-transform-function-name" "^7.12.1"
867 "@babel/plugin-transform-literals" "^7.12.1"
868 "@babel/plugin-transform-member-expression-literals" "^7.12.1"
869 "@babel/plugin-transform-modules-amd" "^7.12.1"
870 "@babel/plugin-transform-modules-commonjs" "^7.12.1"
871 "@babel/plugin-transform-modules-systemjs" "^7.12.1"
872 "@babel/plugin-transform-modules-umd" "^7.12.1"
873 "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1"
874 "@babel/plugin-transform-new-target" "^7.12.1"
875 "@babel/plugin-transform-object-super" "^7.12.1"
876 "@babel/plugin-transform-parameters" "^7.12.1"
877 "@babel/plugin-transform-property-literals" "^7.12.1"
878 "@babel/plugin-transform-regenerator" "^7.12.1"
879 "@babel/plugin-transform-reserved-words" "^7.12.1"
880 "@babel/plugin-transform-shorthand-properties" "^7.12.1"
881 "@babel/plugin-transform-spread" "^7.12.1"
882 "@babel/plugin-transform-sticky-regex" "^7.12.7"
883 "@babel/plugin-transform-template-literals" "^7.12.1"
884 "@babel/plugin-transform-typeof-symbol" "^7.12.10"
885 "@babel/plugin-transform-unicode-escapes" "^7.12.1"
886 "@babel/plugin-transform-unicode-regex" "^7.12.1"
887 "@babel/preset-modules" "^0.1.3"
888 "@babel/types" "^7.12.11"
889 core-js-compat "^3.8.0"
890 semver "^5.5.0"
891
892 "@babel/preset-modules@^0.1.3":
893 version "0.1.4"
894 resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e"
895 integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==
896 dependencies:
897 "@babel/helper-plugin-utils" "^7.0.0"
898 "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
899 "@babel/plugin-transform-dotall-regex" "^7.4.4"
900 "@babel/types" "^7.4.4"
901 esutils "^2.0.2"
902
903 "@babel/runtime@^7.8.4":
904 version "7.12.5"
905 resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
906 integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
907 dependencies:
908 regenerator-runtime "^0.13.4"
909
910 "@babel/template@^7.10.4", "@babel/template@^7.12.7":
911 version "7.12.7"
912 resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc"
913 integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==
914 dependencies:
915 "@babel/code-frame" "^7.10.4"
916 "@babel/parser" "^7.12.7"
917 "@babel/types" "^7.12.7"
918
919 "@babel/template@^7.12.13":
920 version "7.12.13"
921 resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
922 integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==
923 dependencies:
924 "@babel/code-frame" "^7.12.13"
925 "@babel/parser" "^7.12.13"
926 "@babel/types" "^7.12.13"
927
928 "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5":
929 version "7.12.12"
930 resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376"
931 integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==
932 dependencies:
933 "@babel/code-frame" "^7.12.11"
934 "@babel/generator" "^7.12.11"
935 "@babel/helper-function-name" "^7.12.11"
936 "@babel/helper-split-export-declaration" "^7.12.11"
937 "@babel/parser" "^7.12.11"
938 "@babel/types" "^7.12.12"
939 debug "^4.1.0"
940 globals "^11.1.0"
941 lodash "^4.17.19"
942
943 "@babel/traverse@^7.12.13":
944 version "7.12.13"
945 resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.13.tgz#689f0e4b4c08587ad26622832632735fb8c4e0c0"
946 integrity sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA==
947 dependencies:
948 "@babel/code-frame" "^7.12.13"
949 "@babel/generator" "^7.12.13"
950 "@babel/helper-function-name" "^7.12.13"
951 "@babel/helper-split-export-declaration" "^7.12.13"
952 "@babel/parser" "^7.12.13"
953 "@babel/types" "^7.12.13"
954 debug "^4.1.0"
955 globals "^11.1.0"
956 lodash "^4.17.19"
957
958 "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.4.4":
959 version "7.12.12"
960 resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299"
961 integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==
962 dependencies:
963 "@babel/helper-validator-identifier" "^7.12.11"
964 lodash "^4.17.19"
965 to-fast-properties "^2.0.0"
966
967 "@babel/types@^7.12.13":
968 version "7.12.13"
969 resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.13.tgz#8be1aa8f2c876da11a9cf650c0ecf656913ad611"
970 integrity sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==
971 dependencies:
972 "@babel/helper-validator-identifier" "^7.12.11"
973 lodash "^4.17.19"
974 to-fast-properties "^2.0.0"
975
976 "@discoveryjs/json-ext@^0.5.0":
977 version "0.5.2"
978 resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752"
979 integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==
980
981 "@nodelib/fs.scandir@2.1.4":
982 version "2.1.4"
983 resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69"
984 integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==
985 dependencies:
986 "@nodelib/fs.stat" "2.0.4"
987 run-parallel "^1.1.9"
988
989 "@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2":
990 version "2.0.4"
991 resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655"
992 integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==
993
994 "@nodelib/fs.walk@^1.2.3":
995 version "1.2.6"
996 resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063"
997 integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==
998 dependencies:
999 "@nodelib/fs.scandir" "2.1.4"
1000 fastq "^1.6.0"
1001
1002 "@types/anymatch@*":
1003 version "1.3.1"
1004 resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
1005 integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==
1006
1007 "@types/eslint-scope@^3.7.0":
1008 version "3.7.0"
1009 resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86"
1010 integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==
1011 dependencies:
1012 "@types/eslint" "*"
1013 "@types/estree" "*"
1014
1015 "@types/eslint@*":
1016 version "7.2.6"
1017 resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.6.tgz#5e9aff555a975596c03a98b59ecd103decc70c3c"
1018 integrity sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw==
1019 dependencies:
1020 "@types/estree" "*"
1021 "@types/json-schema" "*"
1022
1023 "@types/estree@*", "@types/estree@^0.0.46":
1024 version "0.0.46"
1025 resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe"
1026 integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==
1027
1028 "@types/glob@^7.1.1":
1029 version "7.1.3"
1030 resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
1031 integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==
1032 dependencies:
1033 "@types/minimatch" "*"
1034 "@types/node" "*"
1035
1036 "@types/html-minifier-terser@^5.0.0":
1037 version "5.1.1"
1038 resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50"
1039 integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==
1040
1041 "@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6":
1042 version "7.0.7"
1043 resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
1044 integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
1045
1046 "@types/minimatch@*":
1047 version "3.0.3"
1048 resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
1049 integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
1050
1051 "@types/node@*":
1052 version "14.14.22"
1053 resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18"
1054 integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==
1055
1056 "@types/source-list-map@*":
1057 version "0.1.2"
1058 resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9"
1059 integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==
1060
1061 "@types/tapable@*", "@types/tapable@^1.0.5":
1062 version "1.0.6"
1063 resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74"
1064 integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==
1065
1066 "@types/uglify-js@*":
1067 version "3.11.1"
1068 resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.11.1.tgz#97ff30e61a0aa6876c270b5f538737e2d6ab8ceb"
1069 integrity sha512-7npvPKV+jINLu1SpSYVWG8KvyJBhBa8tmzMMdDoVc2pWUYHN8KIXlPJhjJ4LT97c4dXJA2SHL/q6ADbDriZN+Q==
1070 dependencies:
1071 source-map "^0.6.1"
1072
1073 "@types/webpack-sources@*":
1074 version "2.1.0"
1075 resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10"
1076 integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==
1077 dependencies:
1078 "@types/node" "*"
1079 "@types/source-list-map" "*"
1080 source-map "^0.7.3"
1081
1082 "@types/webpack@^4.41.8":
1083 version "4.41.26"
1084 resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.26.tgz#27a30d7d531e16489f9c7607c747be6bc1a459ef"
1085 integrity sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==
1086 dependencies:
1087 "@types/anymatch" "*"
1088 "@types/node" "*"
1089 "@types/tapable" "*"
1090 "@types/uglify-js" "*"
1091 "@types/webpack-sources" "*"
1092 source-map "^0.6.0"
1093
1094 "@webassemblyjs/ast@1.11.0":
1095 version "1.11.0"
1096 resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f"
1097 integrity sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==
1098 dependencies:
1099 "@webassemblyjs/helper-numbers" "1.11.0"
1100 "@webassemblyjs/helper-wasm-bytecode" "1.11.0"
1101
1102 "@webassemblyjs/floating-point-hex-parser@1.11.0":
1103 version "1.11.0"
1104 resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c"
1105 integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==
1106
1107 "@webassemblyjs/helper-api-error@1.11.0":
1108 version "1.11.0"
1109 resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4"
1110 integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==
1111
1112 "@webassemblyjs/helper-buffer@1.11.0":
1113 version "1.11.0"
1114 resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642"
1115 integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==
1116
1117 "@webassemblyjs/helper-numbers@1.11.0":
1118 version "1.11.0"
1119 resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz#7ab04172d54e312cc6ea4286d7d9fa27c88cd4f9"
1120 integrity sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==
1121 dependencies:
1122 "@webassemblyjs/floating-point-hex-parser" "1.11.0"
1123 "@webassemblyjs/helper-api-error" "1.11.0"
1124 "@xtuc/long" "4.2.2"
1125
1126 "@webassemblyjs/helper-wasm-bytecode@1.11.0":
1127 version "1.11.0"
1128 resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1"
1129 integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==
1130
1131 "@webassemblyjs/helper-wasm-section@1.11.0":
1132 version "1.11.0"
1133 resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz#9ce2cc89300262509c801b4af113d1ca25c1a75b"
1134 integrity sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==
1135 dependencies:
1136 "@webassemblyjs/ast" "1.11.0"
1137 "@webassemblyjs/helper-buffer" "1.11.0"
1138 "@webassemblyjs/helper-wasm-bytecode" "1.11.0"
1139 "@webassemblyjs/wasm-gen" "1.11.0"
1140
1141 "@webassemblyjs/ieee754@1.11.0":
1142 version "1.11.0"
1143 resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz#46975d583f9828f5d094ac210e219441c4e6f5cf"
1144 integrity sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==
1145 dependencies:
1146 "@xtuc/ieee754" "^1.2.0"
1147
1148 "@webassemblyjs/leb128@1.11.0":
1149 version "1.11.0"
1150 resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.0.tgz#f7353de1df38aa201cba9fb88b43f41f75ff403b"
1151 integrity sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==
1152 dependencies:
1153 "@xtuc/long" "4.2.2"
1154
1155 "@webassemblyjs/utf8@1.11.0":
1156 version "1.11.0"
1157 resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf"
1158 integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==
1159
1160 "@webassemblyjs/wasm-edit@1.11.0":
1161 version "1.11.0"
1162 resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz#ee4a5c9f677046a210542ae63897094c2027cb78"
1163 integrity sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==
1164 dependencies:
1165 "@webassemblyjs/ast" "1.11.0"
1166 "@webassemblyjs/helper-buffer" "1.11.0"
1167 "@webassemblyjs/helper-wasm-bytecode" "1.11.0"
1168 "@webassemblyjs/helper-wasm-section" "1.11.0"
1169 "@webassemblyjs/wasm-gen" "1.11.0"
1170 "@webassemblyjs/wasm-opt" "1.11.0"
1171 "@webassemblyjs/wasm-parser" "1.11.0"
1172 "@webassemblyjs/wast-printer" "1.11.0"
1173
1174 "@webassemblyjs/wasm-gen@1.11.0":
1175 version "1.11.0"
1176 resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz#3cdb35e70082d42a35166988dda64f24ceb97abe"
1177 integrity sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==
1178 dependencies:
1179 "@webassemblyjs/ast" "1.11.0"
1180 "@webassemblyjs/helper-wasm-bytecode" "1.11.0"
1181 "@webassemblyjs/ieee754" "1.11.0"
1182 "@webassemblyjs/leb128" "1.11.0"
1183 "@webassemblyjs/utf8" "1.11.0"
1184
1185 "@webassemblyjs/wasm-opt@1.11.0":
1186 version "1.11.0"
1187 resolved "https://registry.yarnpkg.com/@webassemblyjs/wa