@jscad/web 2.6.0 → 2.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@
7
7
  },{}],3:[function(require,module,exports){
8
8
  module.exports={
9
9
  "name": "@jscad/core",
10
- "version": "2.6.3",
10
+ "version": "2.6.5",
11
11
  "description": "Core functionality for JSCAD Applications",
12
12
  "homepage": "https://openjscad.xyz/",
13
13
  "repository": "https://github.com/jscad/OpenJSCAD.org",
@@ -43,9 +43,9 @@ module.exports={
43
43
  "license": "MIT",
44
44
  "dependencies": {
45
45
  "@jscad/array-utils": "2.1.4",
46
- "@jscad/io": "2.4.2",
47
- "@jscad/io-utils": "2.0.22",
48
- "@jscad/modeling": "2.10.0",
46
+ "@jscad/io": "2.4.4",
47
+ "@jscad/io-utils": "2.0.23",
48
+ "@jscad/modeling": "2.11.0",
49
49
  "json5": "2.2.0",
50
50
  "strip-bom": "4.0.0"
51
51
  },
@@ -69,13 +69,13 @@ module.exports={rebuildGeometry:require("./rebuildGeometry"),rebuildGeometryCli:
69
69
  },{"./rebuildGeometry":6,"./rebuildGeometryCli":7,"./rebuildGeometryWorker":8,"./serializeSolids":9}],5:[function(require,module,exports){
70
70
  const isGeom2=require("@jscad/modeling").geometries.geom2.isA,isGeom3=require("@jscad/modeling").geometries.geom3.isA,isPath2=require("@jscad/modeling").geometries.path2.isA,{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),serializeSolids=require("./serializeSolids"),isResultGeometry=e=>!!(Array.isArray(e)&&e.length>0)&&e.reduce((e,i)=>e||isGeom3(i)||isGeom2(i)||isPath2(i),!1),instanciateDesign=(e,i,r)=>{const{serialize:s}=r;let t;const o=flatten(toArray(e.main(i)));if(isResultGeometry(o))return{solids:t=s?serializeSolids(o):o};throw new Error("bad output from script: expected geom3/geom2/path2 objects")};module.exports=instanciateDesign;
71
71
 
72
- },{"./serializeSolids":9,"@jscad/array-utils":520,"@jscad/modeling":207}],6:[function(require,module,exports){
72
+ },{"./serializeSolids":9,"@jscad/array-utils":521,"@jscad/modeling":207}],6:[function(require,module,exports){
73
73
  const loadDesign=require("../code-loading/loadDesign"),instanciateDesign=require("./instanciateDesign"),applyParameterDefinitions=require("../parameters/applyParameterDefinitions"),rebuildSolids=(e,a)=>{let{mainPath:i,apiMainPath:n,serialize:s,lookup:o,lookupCounts:r,parameterValues:l}=Object.assign({},{mainPath:"",apiMainPath:"@jscad/modeling",serialize:!1,lookup:null,lookupCounts:null,parameterValues:{}},e);try{const t=e.filesAndFolders,u=loadDesign(i,n,t,l);a(null,{type:"params",parameterDefaults:u.parameterValues,parameterDefinitions:u.parameterDefinitions}),l=applyParameterDefinitions(l,u.parameterDefinitions),l=Object.assign({},u.parameterValues,l);const m={lookup:o,lookupCounts:r,serialize:s},p=instanciateDesign(u.rootModule,l,m);a(null,{type:"solids",solids:p.solids,lookup:p.lookup,lookupCounts:p.lookupCounts})}catch(e){a({type:"errors",name:e.name?e.name:"Error",message:e.message?e.message:e.toString(),description:e.description?e.description:"",number:e.number?e.number:"",fileName:e.fileName?e.fileName:"",lineNumber:e.lineNumber?e.lineNumber:"",columnNumber:e.columnNumber?e.columnNumber:"",stack:e.stack?e.stack:""},null)}};module.exports=rebuildSolids;
74
74
 
75
75
  },{"../code-loading/loadDesign":11,"../parameters/applyParameterDefinitions":22,"./instanciateDesign":5}],7:[function(require,module,exports){
76
76
  const path=require("path"),{toArray:toArray}=require("@jscad/array-utils"),requireDesignFromModule=require("../code-loading/requireDesignFromModule"),getAllParameterDefintionsAndValues=require("../parameters/getParameterDefinitionsAndValues"),makeWebRequire=require("../code-loading/webRequire"),rebuildSolids=e=>{let{apiMainPath:r,mainPath:a,parameterValues:i,useFakeFs:t}=Object.assign({},{apiMainPath:"@jscad/modeling"},e),s=require;if(t){const i=path.parse(a),t=`${i.name}.js`,u=`/${i.name}.js`,n=[{ext:"js",fullPath:u,name:t,source:e.source}];s=makeWebRequire(n,{apiMainPath:r}),a=u}const u=requireDesignFromModule(a,s),n=getAllParameterDefintionsAndValues(u,i);return toArray(u.main(n.parameterValues))};module.exports=rebuildSolids;
77
77
 
78
- },{"../code-loading/requireDesignFromModule":14,"../code-loading/webRequire":18,"../parameters/getParameterDefinitionsAndValues":23,"@jscad/array-utils":520,"path":684}],8:[function(require,module,exports){
78
+ },{"../code-loading/requireDesignFromModule":14,"../code-loading/webRequire":18,"../parameters/getParameterDefinitionsAndValues":23,"@jscad/array-utils":521,"path":685}],8:[function(require,module,exports){
79
79
  const rebuildGeometryWorker=e=>{const o=require("./rebuildGeometry");e.onmessage=function(t){if(t.data instanceof Object){const{data:r}=t;"generate"===r.cmd&&o(r,(o,t)=>{t&&e.postMessage(t),o&&e.postMessage(o)})}}};module.exports=rebuildGeometryWorker;
80
80
 
81
81
  },{"./rebuildGeometry":6}],9:[function(require,module,exports){
@@ -99,7 +99,7 @@ const validateDesignModule=require("./validateDesignModule"),normalizeDesignModu
99
99
  },{"./normalizeDesignModule":13,"./validateDesignModule":17}],15:[function(require,module,exports){
100
100
  const path=require("path"),{toArray:toArray}=require("@jscad/array-utils"),splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/,splitPath=e=>splitPathRe.exec(e).slice(1),parsePath=e=>{assertPath(e);const t=splitPath(e);if(!t||4!==t.length)throw new TypeError("Invalid path '"+e+"'");return t[1]=t[1]||"",t[2]=t[2]||"",t[3]=t[3]||"",{root:t[0],dir:t[0]+t[1].slice(0,t[1].length-1),base:t[2],ext:t[3],name:t[2].slice(0,t[2].length-t[3].length)}},assertPath=e=>{if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+e)},getDesignEntryPoint=(e,t)=>{if(!t)return;const a=toArray(t)[0];let r;const n=e.statSync(a);if(n.isFile())return a;if(n.isDirectory()){const t=path.join(a,"package.json");if(e.existsSync(t)){const r=JSON.parse(e.readFileSync(t)).main;if(r)return path.join(a,r)}const n=e.readdirSync(a),i=["main","index",parsePath(path.basename(a)).name],s=i.map(e=>e+".js"),o=i.map(e=>e+".jscad"),c=n.filter(e=>s.concat(o).includes(e));return c.length>0&&(r=path.join(a,c[0])),r}return a},packageNameFromDir=(e,t,a)=>{const r=path.join(t,"package.json");if(e.existsSync(r)){const t=JSON.parse(e.readFileSync(r)).name;if(t)return t}return a?parsePath(path.basename(a)).name:path.basename(t)},getDesignName=(e,t)=>{if(!t)return"undefined";const a=toArray(t)[0],r=e.statSync(a);if(r.isFile()){const t=path.dirname(a);return packageNameFromDir(e,t,a)}return r.isDirectory()?packageNameFromDir(e,a):void 0};module.exports={getDesignEntryPoint:getDesignEntryPoint,getDesignName:getDesignName};
101
101
 
102
- },{"@jscad/array-utils":520,"path":684}],16:[function(require,module,exports){
102
+ },{"@jscad/array-utils":521,"path":685}],16:[function(require,module,exports){
103
103
  const{deserializers:deserializers}=require("@jscad/io"),modulifyTransform=(e,r)=>Object.assign({},r,{source:r.source}),createJscadEntry=(e,r)=>{const s=e.name.substring(0,e.name.lastIndexOf(".")+1)+"jscad",t="/"+s;return Object.assign({},e,{ext:"jscad",name:s,fullPath:t,source:r})},transformSources=(e,r)=>{if(r&&r.length>1)return r;const s={js:[modulifyTransform],jscad:[modulifyTransform]};return r&&(r=r.map(r=>(r=>{if(r.source&&r.ext){const t=Object.assign({},e,{filename:r.name,output:"script"});if(r.ext in deserializers){const e=(0,deserializers[r.ext])(t,r.source);return createJscadEntry(r,e)}if(r.ext in s)return s[r.ext].reduce((e,r)=>r(t,e),r)}return r})(r))),r};module.exports=transformSources;
104
104
 
105
105
  },{"@jscad/io":69}],17:[function(require,module,exports){
@@ -108,7 +108,7 @@ const validateDesignModule=n=>{if(!n)throw new Error("undefined root module pass
108
108
  },{}],18:[function(require,module,exports){
109
109
  const path=require("path"),posix=path.posix?path.posix:path,getFileExtensionFromString=require("../utils/getFileExtensionFromString"),{combineParameterDefinitions:combineParameterDefinitions,getParameterDefinitionsFromSource:getParameterDefinitionsFromSource}=require("../parameters/getParameterDefinitionsFromSource"),findMatch=(e,t)=>{for(let r=0;r<t.length;r++){const n=t[r];if(e===n.fullPath||"/"+e===n.fullPath)return n;if(n.children){const t=findMatch(e,n.children);if(void 0!==t)return t}}},registerJsExtension=(e,t)=>{const r=require("strip-bom");t.extensions[".js"]=((t,n)=>{const i=e.readFileSync(n,"utf8");t._compile(r(i),n)})},registerJsonExtension=(e,t)=>{t.extensions[".json"]=((t,r)=>{const n=e.readFileSync(r,"utf8");t.exports=JSON.parse(n)})},makeWebRequire=(e,t)=>{const r={apiMainPath:"@jscad/modeling",fakeFs:require("./makeFakeFs")(e)},{apiMainPath:n,fakeFs:i}=Object.assign({},r,t),s="@jscad/modeling"===n?require("@jscad/modeling"):require(n),o={"@jscad/io":{exports:require("@jscad/io")},"@jscad/array-utils":{exports:require("@jscad/array-utils")},"@jscad/modeling":{exports:s},fs:{exports:i}},a={},l={},u=(t,r)=>{const n=o[r];if(n)return n.exports;t&&!r.startsWith("/")||(t="/");const i=t=>{let r=getFileExtensionFromString(t);r||(r="js",t+=".js"),r="."+r;const n=findMatch(t,e);if(!n)return null;if(n.children)return null;if(a[r]){if(l[t])return l[t];const e={exports:{},_compile:(t,r)=>{try{new Function("require","module",t)(u.bind(null,n.fullPath),e)}catch(e){const t=e.message;r=r.replace("/","");const n=e.lineNumber?e.lineNumber-2:0,i=e.columnNumber?e.columnNumber:0;throw e.stack.startsWith("Object")?e.stack=`${e.stack}\nObject.<anonymous> (${r}:${n}:${i})`:((e=new SyntaxError(t,r,n)).columnNumber=i,e.stack=`Object.<anonymous> (${r}:${n}:${i})`),e}const i=t.includes("@jscad-params")?getParameterDefinitionsFromSource(t,r):[],s=e.exports.getParameterDefinitions;e.exports.getParameterDefinitions=(()=>combineParameterDefinitions(i,s&&s()||[]))}};return a[r](e,n.fullPath),l[t]=e.exports,l[t]}return null},s=t=>{if(!findMatch(t,e))return null;"/"===t&&(t="");let r=t+"/index.js",n=i(r);return n||((n=i(r=t+"/index.json"))||null)},c=t=>{let r,n=findMatch(t,e);if(!n)return null;if(!n.children)return null;if(n=findMatch(t+"/package.json",e)){const e=JSON.parse(n.source).main;if(e){const n=posix.normalize(t+"/"+e);return(r=i(n))?r:(r=s(n))||null}}return(r=s(t))||null};if(r.startsWith("./")||r.startsWith("/")||r.startsWith("../")){r=posix.normalize(posix.dirname(t)+posix.sep+r);let e=i(r);if(e)return e;if(e=c(r))return e;throw new Error(`Cannot find relative path to module ${r}`)}const m=((e,t)=>{const r=(e=>{const t=e.split("/"),r=[];for(let e=t.length-1;e>0;e--){if("node_modules"===t[e])continue;const n=posix.sep+posix.join(...t.slice(1,e+1),"node_modules");r.push(n)}return r})(t);for(let t=0;t<r.length;t++){const n=r[t],s=posix.join(n,e);let o=i(s);if(o)return o;if(o=c(s))return o}return null})(r,posix.dirname(t));if(m)return m;throw new Error(`Cannot find module ${r}`)},c=u.bind(null,"/");return c.extensions=a,c.resolve=(()=>{}),registerJsExtension(i,c),registerJsonExtension(i,c),c};module.exports=makeWebRequire;
110
110
 
111
- },{"../parameters/getParameterDefinitionsFromSource":24,"../utils/getFileExtensionFromString":28,"./makeFakeFs":12,"@jscad/array-utils":520,"@jscad/io":69,"@jscad/modeling":207,"path":684,"strip-bom":2}],19:[function(require,module,exports){
111
+ },{"../parameters/getParameterDefinitionsFromSource":24,"../utils/getFileExtensionFromString":28,"./makeFakeFs":12,"@jscad/array-utils":521,"@jscad/io":69,"@jscad/modeling":207,"path":685,"strip-bom":2}],19:[function(require,module,exports){
112
112
  module.exports={evaluation:require("./code-evaluation"),io:require("./io"),loading:require("./code-loading"),parameters:require("./parameters"),utils:require("./utils"),web:require("./web")};
113
113
 
114
114
  },{"./code-evaluation":4,"./code-loading":10,"./io":20,"./parameters":27,"./utils":29,"./web":31}],20:[function(require,module,exports){
@@ -150,7 +150,7 @@ module.exports={walkFileTree:require("./walkFileTree")};
150
150
  },{"./walkFileTree":32}],32:[function(require,module,exports){
151
151
  const{flatten:flatten}=require("@jscad/array-utils"),{formats:formats}=require("@jscad/io/formats"),getFileExtensionFromString=require("../utils/getFileExtensionFromString"),binaryMimetypes={bmp:"image/bmp",gif:"image/gif",jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",tif:"image/tiff",tiff:"image/tiff",otc:"font/otf",otf:"font/otf",ttc:"font/ttf",ttf:"font/ttf",woff:"font/woff",woff2:"font/woff",stl:"application/sla"},readFileAsync=(e,t)=>{const r=e.fullPath?e.fullPath:t.fullPath?t.fullPath:"",i=getFileExtensionFromString(e.name),n=e.mimetype;return new Promise((t,s)=>{const o=new FileReader;o.onload=(s=>{const o=s.target.result;o.byteLength?t({name:e.name,ext:i,fullPath:r,mimetype:n,source:o}):"string"==typeof o&&t({name:e.name,ext:i,fullPath:r,mimetype:n,source:o})}),o.onerror=(e=>{s(new Error(`Failed to load file: ${r} [${o.error}]`))}),binaryMimetypes[i]?o.readAsArrayBuffer(e):o.readAsText(e)})},isSupportedFormat=e=>{const t=getFileExtensionFromString(e.name),r=formats[t]?formats[t].mimetype:binaryMimetypes[t];return e.mimetype=e.type&&e.type.length?e.type:r,e.mimetype&&e.mimetype.length},pseudoArraytoArray=e=>{const t=[];for(let r=0;r<e.length;r++){const i=e[r];i&&t.push(i.webkitGetAsEntry?i.webkitGetAsEntry():i)}return t},isEmpty=e=>null!=e,processEntries=e=>{const t=pseudoArraytoArray(e.filter(isEmpty)).filter(isEmpty).reduce((e,t)=>{if(t.name.startsWith("."))return e;if(t.isFile)e.push(processFile(t));else if(t.isDirectory)e.push(processDirectory(t));else if(t instanceof File){const r=t.webkitRelativePath?t.webkitRelativePath:void 0,i=isSupportedFormat(t)?readFileAsync(t,{fullPath:r}):void 0;if(!i)throw new Error("Unsuported format (or folder in Safari)!");e.push(i)}return e},[]);return Promise.all(t).then(e=>e.filter(e=>null!=e))},processFile=e=>{return new Promise((t,r)=>{e.file(r=>{isSupportedFormat(r)?t(readFileAsync(r,e)):t(void 0)},t=>{const i=`${t.message} (${t.code})`;r(new Error(`Failed to load file: ${e.fullPath} [${i}]`))})})},processDirectory=e=>{return new Promise((t,r)=>{if(e.entries)e.entries.length?processEntries(e.entries).then(t):t([]);else{e.createReader().readEntries(e=>{e.length?processEntries(e).then(t):t([])},r)}}).then(flatten).then(t=>({children:t=t.map(t=>(t.fullPath.startsWith("/")||(t.fullPath=e.fullPath+"/"+t.name),t)),fullPath:e.fullPath,name:e.name}))},transformFileList=e=>{const t=require("path");if(1===e.length){const r=e[0],i=r.webkitRelativePath?r.webkitRelativePath:r.name;if(i.split(t.sep).length<2){const e=t.sep,n={fullPath:e,name:e,isDirectory:!0,entries:[]};return r.fullPath=t.normalize(e+i),n.entries.push(r),[n]}}let r;const i=new Map,n=(e,n)=>{if(!i.has(e)){const s={fullPath:e,name:n,isDirectory:!0,entries:[]};r||(r=s),i.set(e,s);const o=e.split(t.sep);if(o.length>1){const e=t.sep+t.join(...o.slice(0,-1)),r=i.get(e);r&&r.entries.push(s)}}};for(let r=0;r<e.length;r++){const s=e[r],o=(s.webkitRelativePath?s.webkitRelativePath:s.name).split(t.sep);if(o.reduce((e,t)=>e||t.startsWith("."),!1))continue;if(!isSupportedFormat(s))continue;const l=o.slice(0,-1);for(let e=0;e<l.length;e++){n(t.sep+t.join(...l.slice(0,e+1)),l[e])}const a=t.sep+t.join(...l),f=i.get(a);f&&f.entries.push(s)}return i.clear(),[r]},walkFileTree=e=>{let t=e;return e.length&&e[0]instanceof File&&(t=transformFileList(e)),processEntries(t)};module.exports=walkFileTree;
152
152
 
153
- },{"../utils/getFileExtensionFromString":28,"@jscad/array-utils":520,"@jscad/io/formats":68,"path":684}],33:[function(require,module,exports){
153
+ },{"../utils/getFileExtensionFromString":28,"@jscad/array-utils":521,"@jscad/io/formats":68,"path":685}],33:[function(require,module,exports){
154
154
  "use strict";var node_worker_1=require("./node-worker.cjs"),u8=Uint8Array,u16=Uint16Array,u32=Uint32Array,fleb=new u8([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),fdeb=new u8([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),clim=new u8([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),freb=function(t,n){for(var e=new u16(31),r=0;r<31;++r)e[r]=n+=1<<t[r-1];var i=new u32(e[30]);for(r=1;r<30;++r)for(var s=e[r];s<e[r+1];++s)i[s]=s-e[r]<<5|r;return[e,i]},_a=freb(fleb,2),fl=_a[0],revfl=_a[1];fl[28]=258,revfl[258]=28;for(var _b=freb(fdeb,0),fd=_b[0],revfd=_b[1],rev=new u16(32768),i=0;i<32768;++i){var x=(43690&i)>>>1|(21845&i)<<1;x=(61680&(x=(52428&x)>>>2|(13107&x)<<2))>>>4|(3855&x)<<4,rev[i]=((65280&x)>>>8|(255&x)<<8)>>>1}var hMap=function(t,n,e){for(var r=t.length,i=0,s=new u16(n);i<r;++i)t[i]&&++s[t[i]-1];var o,a=new u16(n);for(i=0;i<n;++i)a[i]=a[i-1]+s[i-1]<<1;if(e){o=new u16(1<<n);var f=15-n;for(i=0;i<r;++i)if(t[i])for(var u=i<<4|t[i],l=n-t[i],c=a[t[i]-1]++<<l,h=c|(1<<l)-1;c<=h;++c)o[rev[c]>>>f]=u}else for(o=new u16(r),i=0;i<r;++i)t[i]&&(o[i]=rev[a[t[i]-1]++]>>>15-t[i]);return o},flt=new u8(288);for(i=0;i<144;++i)flt[i]=8;for(i=144;i<256;++i)flt[i]=9;for(i=256;i<280;++i)flt[i]=7;for(i=280;i<288;++i)flt[i]=8;var fdt=new u8(32);for(i=0;i<32;++i)fdt[i]=5;var flm=hMap(flt,9,0),flrm=hMap(flt,9,1),fdm=hMap(fdt,5,0),fdrm=hMap(fdt,5,1),max=function(t){for(var n=t[0],e=1;e<t.length;++e)t[e]>n&&(n=t[e]);return n},bits=function(t,n,e){var r=n/8|0;return(t[r]|t[r+1]<<8)>>(7&n)&e},bits16=function(t,n){var e=n/8|0;return(t[e]|t[e+1]<<8|t[e+2]<<16)>>(7&n)},shft=function(t){return(t+7)/8|0},slc=function(t,n,e){(null==n||n<0)&&(n=0),(null==e||e>t.length)&&(e=t.length);var r=new(2==t.BYTES_PER_ELEMENT?u16:4==t.BYTES_PER_ELEMENT?u32:u8)(e-n);return r.set(t.subarray(n,e)),r};exports.FlateErrorCode={UnexpectedEOF:0,InvalidBlockType:1,InvalidLengthLiteral:2,InvalidDistance:3,StreamFinished:4,NoStreamHandler:5,InvalidHeader:6,NoCallback:7,InvalidUTF8:8,ExtraFieldTooLong:9,InvalidDate:10,FilenameTooLong:11,StreamFinishing:12,InvalidZipData:13,UnknownCompressionMethod:14};var ec=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],err=function(t,n,e){var r=new Error(n||ec[t]);if(r.code=t,Error.captureStackTrace&&Error.captureStackTrace(r,err),!e)throw r;return r},inflt=function(t,n,e){var r=t.length;if(!r||e&&e.f&&!e.l)return n||new u8(0);var i=!n||e,s=!e||e.i;e||(e={}),n||(n=new u8(3*r));var o=function(t){var e=n.length;if(t>e){var r=new u8(Math.max(2*e,t));r.set(n),n=r}},a=e.f||0,f=e.p||0,u=e.b||0,l=e.l,c=e.d,h=e.m,p=e.n,v=8*r;do{if(!l){a=bits(t,f,1);var d=bits(t,f+1,3);if(f+=3,!d){var b=t[(A=shft(f)+4)-4]|t[A-3]<<8,y=A+b;if(y>r){s&&err(0);break}i&&o(u+b),n.set(t.subarray(A,y),u),e.b=u+=b,e.p=f=8*y,e.f=a;continue}if(1==d)l=flrm,c=fdrm,h=9,p=5;else if(2==d){var g=bits(t,f,31)+257,m=bits(t,f+10,15)+4,z=g+bits(t,f+5,31)+1;f+=14;for(var w=new u8(z),x=new u8(19),S=0;S<m;++S)x[clim[S]]=bits(t,f+3*S,7);f+=3*m;var U=max(x),D=(1<<U)-1,T=hMap(x,U,1);for(S=0;S<z;){var A,k=T[bits(t,f,D)];if(f+=15&k,(A=k>>>4)<16)w[S++]=A;else{var I=0,M=0;for(16==A?(M=3+bits(t,f,3),f+=2,I=w[S-1]):17==A?(M=3+bits(t,f,7),f+=3):18==A&&(M=11+bits(t,f,127),f+=7);M--;)w[S++]=I}}var Z=w.subarray(0,g),C=w.subarray(g);h=max(Z),p=max(C),l=hMap(Z,h,1),c=hMap(C,p,1)}else err(1);if(f>v){s&&err(0);break}}i&&o(u+131072);for(var G=(1<<h)-1,E=(1<<p)-1,F=f;;F=f){var _=(I=l[bits16(t,f)&G])>>>4;if((f+=15&I)>v){s&&err(0);break}if(I||err(2),_<256)n[u++]=_;else{if(256==_){F=f,l=null;break}var P=_-254;if(_>264){var O=fleb[S=_-257];P=bits(t,f,(1<<O)-1)+fl[S],f+=O}var L=c[bits16(t,f)&E],N=L>>>4;L||err(3),f+=15&L;C=fd[N];if(N>3){O=fdeb[N];C+=bits16(t,f)&(1<<O)-1,f+=O}if(f>v){s&&err(0);break}i&&o(u+131072);for(var q=u+P;u<q;u+=4)n[u]=n[u-C],n[u+1]=n[u+1-C],n[u+2]=n[u+2-C],n[u+3]=n[u+3-C];u=q}}e.l=l,e.p=F,e.b=u,e.f=a,l&&(a=1,e.m=h,e.d=c,e.n=p)}while(!a);return u==n.length?n:slc(n,0,u)},wbits=function(t,n,e){e<<=7&n;var r=n/8|0;t[r]|=e,t[r+1]|=e>>>8},wbits16=function(t,n,e){e<<=7&n;var r=n/8|0;t[r]|=e,t[r+1]|=e>>>8,t[r+2]|=e>>>16},hTree=function(t,n){for(var e=[],r=0;r<t.length;++r)t[r]&&e.push({s:r,f:t[r]});var i=e.length,s=e.slice();if(!i)return[et,0];if(1==i){var o=new u8(e[0].s+1);return o[e[0].s]=1,[o,1]}e.sort(function(t,n){return t.f-n.f}),e.push({s:-1,f:25001});var a=e[0],f=e[1],u=0,l=1,c=2;for(e[0]={s:-1,f:a.f+f.f,l:a,r:f};l!=i-1;)a=e[e[u].f<e[c].f?u++:c++],f=e[u!=l&&e[u].f<e[c].f?u++:c++],e[l++]={s:-1,f:a.f+f.f,l:a,r:f};var h=s[0].s;for(r=1;r<i;++r)s[r].s>h&&(h=s[r].s);var p=new u16(h+1),v=ln(e[l-1],p,0);if(v>n){r=0;var d=0,b=v-n,y=1<<b;for(s.sort(function(t,n){return p[n.s]-p[t.s]||t.f-n.f});r<i;++r){var g=s[r].s;if(!(p[g]>n))break;d+=y-(1<<v-p[g]),p[g]=n}for(d>>>=b;d>0;){var m=s[r].s;p[m]<n?d-=1<<n-p[m]++-1:++r}for(;r>=0&&d;--r){var z=s[r].s;p[z]==n&&(--p[z],++d)}v=n}return[new u8(p),v]},ln=function(t,n,e){return-1==t.s?Math.max(ln(t.l,n,e+1),ln(t.r,n,e+1)):n[t.s]=e},lc=function(t){for(var n=t.length;n&&!t[--n];);for(var e=new u16(++n),r=0,i=t[0],s=1,o=function(t){e[r++]=t},a=1;a<=n;++a)if(t[a]==i&&a!=n)++s;else{if(!i&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(i),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(i);s=1,i=t[a]}return[e.subarray(0,r),n]},clen=function(t,n){for(var e=0,r=0;r<n.length;++r)e+=t[r]*n[r];return e},wfblk=function(t,n,e){var r=e.length,i=shft(n+2);t[i]=255&r,t[i+1]=r>>>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var s=0;s<r;++s)t[i+s+4]=e[s];return 8*(i+4+r)},wblk=function(t,n,e,r,i,s,o,a,f,u,l){wbits(n,l++,e),++i[256];for(var c=hTree(i,15),h=c[0],p=c[1],v=hTree(s,15),d=v[0],b=v[1],y=lc(h),g=y[0],m=y[1],z=lc(d),w=z[0],x=z[1],S=new u16(19),U=0;U<g.length;++U)S[31&g[U]]++;for(U=0;U<w.length;++U)S[31&w[U]]++;for(var D=hTree(S,7),T=D[0],A=D[1],k=19;k>4&&!T[clim[k-1]];--k);var I,M,Z,C,G=u+5<<3,E=clen(i,flt)+clen(s,fdt)+o,F=clen(i,h)+clen(s,d)+o+14+3*k+clen(S,T)+(2*S[16]+3*S[17]+7*S[18]);if(G<=E&&G<=F)return wfblk(n,l,t.subarray(f,f+u));if(wbits(n,l,1+(F<E)),l+=2,F<E){I=hMap(h,p,0),M=h,Z=hMap(d,b,0),C=d;var _=hMap(T,A,0);wbits(n,l,m-257),wbits(n,l+5,x-1),wbits(n,l+10,k-4),l+=14;for(U=0;U<k;++U)wbits(n,l+3*U,T[clim[U]]);l+=3*k;for(var P=[g,w],O=0;O<2;++O){var L=P[O];for(U=0;U<L.length;++U){var N=31&L[U];wbits(n,l,_[N]),l+=T[N],N>15&&(wbits(n,l,L[U]>>>5&127),l+=L[U]>>>12)}}}else I=flm,M=flt,Z=fdm,C=fdt;for(U=0;U<a;++U)if(r[U]>255){N=r[U]>>>18&31;wbits16(n,l,I[N+257]),l+=M[N+257],N>7&&(wbits(n,l,r[U]>>>23&31),l+=fleb[N]);var q=31&r[U];wbits16(n,l,Z[q]),l+=C[q],q>3&&(wbits16(n,l,r[U]>>>5&8191),l+=fdeb[q])}else wbits16(n,l,I[r[U]]),l+=M[r[U]];return wbits16(n,l,I[256]),l+M[256]},deo=new u32([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),et=new u8(0),dflt=function(t,n,e,r,i,s){var o=t.length,a=new u8(r+o+5*(1+Math.ceil(o/7e3))+i),f=a.subarray(r,a.length-i),u=0;if(!n||o<8)for(var l=0;l<=o;l+=65535){var c=l+65535;c>=o&&(f[u>>3]=s),u=wfblk(f,u+1,t.subarray(l,c))}else{for(var h=deo[n-1],p=h>>>13,v=8191&h,d=(1<<e)-1,b=new u16(32768),y=new u16(d+1),g=Math.ceil(e/3),m=2*g,z=function(n){return(t[n]^t[n+1]<<g^t[n+2]<<m)&d},w=new u32(25e3),x=new u16(288),S=new u16(32),U=0,D=0,T=(l=0,0),A=0,k=0;l<o;++l){var I=z(l),M=32767&l,Z=y[I];if(b[M]=Z,y[I]=M,A<=l){var C=o-l;if((U>7e3||T>24576)&&C>423){u=wblk(t,f,0,w,x,S,D,T,k,l-k,u),T=U=D=0,k=l;for(var G=0;G<286;++G)x[G]=0;for(G=0;G<30;++G)S[G]=0}var E=2,F=0,_=v,P=M-Z&32767;if(C>2&&I==z(l-P))for(var O=Math.min(p,C)-1,L=Math.min(32767,l),N=Math.min(258,C);P<=L&&--_&&M!=Z;){if(t[l+E]==t[l+E-P]){for(var q=0;q<N&&t[l+q]==t[l+q-P];++q);if(q>E){if(E=q,F=P,q>O)break;var B=Math.min(P,q-2),H=0;for(G=0;G<B;++G){var Y=l-P+G+32768&32767,j=Y-b[Y]+32768&32767;j>H&&(H=j,Z=Y)}}}P+=(M=Z)-(Z=b[M])+32768&32767}if(F){w[T++]=268435456|revfl[E]<<18|revfd[F];var R=31&revfl[E],J=31&revfd[F];D+=fleb[R]+fdeb[J],++x[257+R],++S[J],A=l+E,++U}else w[T++]=t[l],++x[t[l]]}}u=wblk(t,f,s,w,x,S,D,T,k,l-k,u),!s&&7&u&&(u=wfblk(f,u+1,et))}return slc(a,0,r+shft(u)+i)},crct=function(){for(var t=new Int32Array(256),n=0;n<256;++n){for(var e=n,r=9;--r;)e=(1&e&&-306674912)^e>>>1;t[n]=e}return t}(),crc=function(){var t=-1;return{p:function(n){for(var e=t,r=0;r<n.length;++r)e=crct[255&e^n[r]]^e>>>8;t=e},d:function(){return~t}}},adler=function(){var t=1,n=0;return{p:function(e){for(var r=t,i=n,s=0|e.length,o=0;o!=s;){for(var a=Math.min(o+2655,s);o<a;++o)i+=r+=e[o];r=(65535&r)+15*(r>>16),i=(65535&i)+15*(i>>16)}t=r,n=i},d:function(){return(255&(t%=65521))<<24|t>>>8<<16|(255&(n%=65521))<<8|n>>>8}}},dopt=function(t,n,e,r,i){return dflt(t,null==n.level?6:n.level,null==n.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(t.length)))):12+n.mem,e,r,!i)},mrg=function(t,n){var e={};for(var r in t)e[r]=t[r];for(var r in n)e[r]=n[r];return e},wcln=function(t,n,e){for(var r=t(),i=t.toString(),s=i.slice(i.indexOf("[")+1,i.lastIndexOf("]")).replace(/\s+/g,"").split(","),o=0;o<r.length;++o){var a=r[o],f=s[o];if("function"==typeof a){n+=";"+f+"=";var u=a.toString();if(a.prototype)if(-1!=u.indexOf("[native code]")){var l=u.indexOf(" ",8)+1;n+=u.slice(l,u.indexOf("(",l))}else for(var c in n+=u,a.prototype)n+=";"+f+".prototype."+c+"="+a.prototype[c].toString();else n+=u}else e[f]=a}return[n,e]},ch=[],cbfs=function(t){var n=[];for(var e in t)t[e].buffer&&n.push((t[e]=new t[e].constructor(t[e])).buffer);return n},wrkr=function(t,n,e,r){var i;if(!ch[e]){for(var s="",o={},a=t.length-1,f=0;f<a;++f)s=(i=wcln(t[f],s,o))[0],o=i[1];ch[e]=wcln(t[a],s,o)}var u=mrg({},ch[e][1]);return node_worker_1.default(ch[e][0]+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+n.toString()+"}",e,u,cbfs(u),r)},bInflt=function(){return[u8,u16,u32,fleb,fdeb,clim,fl,fd,flrm,fdrm,rev,ec,hMap,max,bits,bits16,shft,slc,err,inflt,inflateSync,pbf,gu8]},bDflt=function(){return[u8,u16,u32,fleb,fdeb,clim,revfl,revfd,flm,flt,fdm,fdt,rev,deo,et,hMap,wbits,wbits16,hTree,ln,lc,clen,wfblk,wblk,shft,slc,dflt,dopt,deflateSync,pbf]},gze=function(){return[gzh,gzhl,wbytes,crc,crct]},guze=function(){return[gzs,gzl]},zle=function(){return[zlh,wbytes,adler]},zule=function(){return[zlv]},pbf=function(t){return postMessage(t,[t.buffer])},gu8=function(t){return t&&t.size&&new u8(t.size)},cbify=function(t,n,e,r,i,s){var o=wrkr(e,r,i,function(t,n){o.terminate(),s(t,n)});return o.postMessage([t,n],n.consume?[t.buffer]:[]),function(){o.terminate()}},astrm=function(t){return t.ondata=function(t,n){return postMessage([t,n],[t.buffer])},function(n){return t.push(n.data[0],n.data[1])}},astrmify=function(t,n,e,r,i){var s,o=wrkr(t,r,i,function(t,e){t?(o.terminate(),n.ondata.call(n,t)):(e[1]&&o.terminate(),n.ondata.call(n,t,e[0],e[1]))});o.postMessage(e),n.push=function(t,e){n.ondata||err(5),s&&n.ondata(err(4,0,1),null,!!e),o.postMessage([t,s=e],[t.buffer])},n.terminate=function(){o.terminate()}},b2=function(t,n){return t[n]|t[n+1]<<8},b4=function(t,n){return(t[n]|t[n+1]<<8|t[n+2]<<16|t[n+3]<<24)>>>0},b8=function(t,n){return b4(t,n)+4294967296*b4(t,n+4)},wbytes=function(t,n,e){for(;e;++n)t[n]=e,e>>>=8},gzh=function(t,n){var e=n.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=n.level<2?4:9==n.level?2:0,t[9]=3,0!=n.mtime&&wbytes(t,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),e){t[3]=8;for(var r=0;r<=e.length;++r)t[r+10]=e.charCodeAt(r)}},gzs=function(t){31==t[0]&&139==t[1]&&8==t[2]||err(6,"invalid gzip data");var n=t[3],e=10;4&n&&(e+=t[10]|2+(t[11]<<8));for(var r=(n>>3&1)+(n>>4&1);r>0;r-=!t[e++]);return e+(2&n)},gzl=function(t){var n=t.length;return(t[n-4]|t[n-3]<<8|t[n-2]<<16|t[n-1]<<24)>>>0},gzhl=function(t){return 10+(t.filename&&t.filename.length+1||0)},zlh=function(t,n){var e=n.level,r=0==e?0:e<6?1:9==e?3:2;t[0]=120,t[1]=r<<6|(r?32-2*r:1)},zlv=function(t){(8!=(15&t[0])||t[0]>>>4>7||(t[0]<<8|t[1])%31)&&err(6,"invalid zlib data"),32&t[1]&&err(6,"invalid zlib data: preset dictionaries not supported")};function AsyncCmpStrm(t,n){return n||"function"!=typeof t||(n=t,t={}),this.ondata=n,t}var Deflate=function(){function t(t,n){n||"function"!=typeof t||(n=t,t={}),this.ondata=n,this.o=t||{}}return t.prototype.p=function(t,n){this.ondata(dopt(t,this.o,0,0,!n),n)},t.prototype.push=function(t,n){this.ondata||err(5),this.d&&err(4),this.d=n,this.p(t,n||!1)},t}();exports.Deflate=Deflate;var AsyncDeflate=function(){return function(t,n){astrmify([bDflt,function(){return[astrm,Deflate]}],this,AsyncCmpStrm.call(this,t,n),function(t){var n=new Deflate(t.data);onmessage=astrm(n)},6)}}();function deflate(t,n,e){return e||(e=n,n={}),"function"!=typeof e&&err(7),cbify(t,n,[bDflt],function(t){return pbf(deflateSync(t.data[0],t.data[1]))},0,e)}function deflateSync(t,n){return dopt(t,n||{},0,0)}exports.AsyncDeflate=AsyncDeflate,exports.deflate=deflate,exports.deflateSync=deflateSync;var Inflate=function(){function t(t){this.s={},this.p=new u8(0),this.ondata=t}return t.prototype.e=function(t){this.ondata||err(5),this.d&&err(4);var n=this.p.length,e=new u8(n+t.length);e.set(this.p),e.set(t,n),this.p=e},t.prototype.c=function(t){this.d=this.s.i=t||!1;var n=this.s.b,e=inflt(this.p,this.o,this.s);this.ondata(slc(e,n,this.s.b),this.d),this.o=slc(e,this.s.b-32768),this.s.b=this.o.length,this.p=slc(this.p,this.s.p/8|0),this.s.p&=7},t.prototype.push=function(t,n){this.e(t),this.c(n)},t}();exports.Inflate=Inflate;var AsyncInflate=function(){return function(t){this.ondata=t,astrmify([bInflt,function(){return[astrm,Inflate]}],this,0,function(){var t=new Inflate;onmessage=astrm(t)},7)}}();function inflate(t,n,e){return e||(e=n,n={}),"function"!=typeof e&&err(7),cbify(t,n,[bInflt],function(t){return pbf(inflateSync(t.data[0],gu8(t.data[1])))},1,e)}function inflateSync(t,n){return inflt(t,n)}exports.AsyncInflate=AsyncInflate,exports.inflate=inflate,exports.inflateSync=inflateSync;var Gzip=function(){function t(t,n){this.c=crc(),this.l=0,this.v=1,Deflate.call(this,t,n)}return t.prototype.push=function(t,n){Deflate.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){this.c.p(t),this.l+=t.length;var e=dopt(t,this.o,this.v&&gzhl(this.o),n&&8,!n);this.v&&(gzh(e,this.o),this.v=0),n&&(wbytes(e,e.length-8,this.c.d()),wbytes(e,e.length-4,this.l)),this.ondata(e,n)},t}();exports.Gzip=Gzip,exports.Compress=Gzip;var AsyncGzip=function(){return function(t,n){astrmify([bDflt,gze,function(){return[astrm,Deflate,Gzip]}],this,AsyncCmpStrm.call(this,t,n),function(t){var n=new Gzip(t.data);onmessage=astrm(n)},8)}}();function gzip(t,n,e){return e||(e=n,n={}),"function"!=typeof e&&err(7),cbify(t,n,[bDflt,gze,function(){return[gzipSync]}],function(t){return pbf(gzipSync(t.data[0],t.data[1]))},2,e)}function gzipSync(t,n){n||(n={});var e=crc(),r=t.length;e.p(t);var i=dopt(t,n,gzhl(n),8),s=i.length;return gzh(i,n),wbytes(i,s-8,e.d()),wbytes(i,s-4,r),i}exports.AsyncGzip=AsyncGzip,exports.AsyncCompress=AsyncGzip,exports.gzip=gzip,exports.compress=gzip,exports.gzipSync=gzipSync,exports.compressSync=gzipSync;var Gunzip=function(){function t(t){this.v=1,Inflate.call(this,t)}return t.prototype.push=function(t,n){if(Inflate.prototype.e.call(this,t),this.v){var e=this.p.length>3?gzs(this.p):4;if(e>=this.p.length&&!n)return;this.p=this.p.subarray(e),this.v=0}n&&(this.p.length<8&&err(6,"invalid gzip data"),this.p=this.p.subarray(0,-8)),Inflate.prototype.c.call(this,n)},t}();exports.Gunzip=Gunzip;var AsyncGunzip=function(){return function(t){this.ondata=t,astrmify([bInflt,guze,function(){return[astrm,Inflate,Gunzip]}],this,0,function(){var t=new Gunzip;onmessage=astrm(t)},9)}}();function gunzip(t,n,e){return e||(e=n,n={}),"function"!=typeof e&&err(7),cbify(t,n,[bInflt,guze,function(){return[gunzipSync]}],function(t){return pbf(gunzipSync(t.data[0]))},3,e)}function gunzipSync(t,n){return inflt(t.subarray(gzs(t),-8),n||new u8(gzl(t)))}exports.AsyncGunzip=AsyncGunzip,exports.gunzip=gunzip,exports.gunzipSync=gunzipSync;var Zlib=function(){function t(t,n){this.c=adler(),this.v=1,Deflate.call(this,t,n)}return t.prototype.push=function(t,n){Deflate.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){this.c.p(t);var e=dopt(t,this.o,this.v&&2,n&&4,!n);this.v&&(zlh(e,this.o),this.v=0),n&&wbytes(e,e.length-4,this.c.d()),this.ondata(e,n)},t}();exports.Zlib=Zlib;var AsyncZlib=function(){return function(t,n){astrmify([bDflt,zle,function(){return[astrm,Deflate,Zlib]}],this,AsyncCmpStrm.call(this,t,n),function(t){var n=new Zlib(t.data);onmessage=astrm(n)},10)}}();function zlib(t,n,e){return e||(e=n,n={}),"function"!=typeof e&&err(7),cbify(t,n,[bDflt,zle,function(){return[zlibSync]}],function(t){return pbf(zlibSync(t.data[0],t.data[1]))},4,e)}function zlibSync(t,n){n||(n={});var e=adler();e.p(t);var r=dopt(t,n,2,4);return zlh(r,n),wbytes(r,r.length-4,e.d()),r}exports.AsyncZlib=AsyncZlib,exports.zlib=zlib,exports.zlibSync=zlibSync;var Unzlib=function(){function t(t){this.v=1,Inflate.call(this,t)}return t.prototype.push=function(t,n){if(Inflate.prototype.e.call(this,t),this.v){if(this.p.length<2&&!n)return;this.p=this.p.subarray(2),this.v=0}n&&(this.p.length<4&&err(6,"invalid zlib data"),this.p=this.p.subarray(0,-4)),Inflate.prototype.c.call(this,n)},t}();exports.Unzlib=Unzlib;var AsyncUnzlib=function(){return function(t){this.ondata=t,astrmify([bInflt,zule,function(){return[astrm,Inflate,Unzlib]}],this,0,function(){var t=new Unzlib;onmessage=astrm(t)},11)}}();function unzlib(t,n,e){return e||(e=n,n={}),"function"!=typeof e&&err(7),cbify(t,n,[bInflt,zule,function(){return[unzlibSync]}],function(t){return pbf(unzlibSync(t.data[0],gu8(t.data[1])))},5,e)}function unzlibSync(t,n){return inflt((zlv(t),t.subarray(2,-4)),n)}exports.AsyncUnzlib=AsyncUnzlib,exports.unzlib=unzlib,exports.unzlibSync=unzlibSync;var Decompress=function(){function t(t){this.G=Gunzip,this.I=Inflate,this.Z=Unzlib,this.ondata=t}return t.prototype.push=function(t,n){if(this.ondata||err(5),this.s)this.s.push(t,n);else{if(this.p&&this.p.length){var e=new u8(this.p.length+t.length);e.set(this.p),e.set(t,this.p.length)}else this.p=t;if(this.p.length>2){var r=this,i=function(){r.ondata.apply(r,arguments)};this.s=31==this.p[0]&&139==this.p[1]&&8==this.p[2]?new this.G(i):8!=(15&this.p[0])||this.p[0]>>4>7||(this.p[0]<<8|this.p[1])%31?new this.I(i):new this.Z(i),this.s.push(this.p,n),this.p=null}}},t}();exports.Decompress=Decompress;var AsyncDecompress=function(){function t(t){this.G=AsyncGunzip,this.I=AsyncInflate,this.Z=AsyncUnzlib,this.ondata=t}return t.prototype.push=function(t,n){Decompress.prototype.push.call(this,t,n)},t}();function decompress(t,n,e){return e||(e=n,n={}),"function"!=typeof e&&err(7),31==t[0]&&139==t[1]&&8==t[2]?gunzip(t,n,e):8!=(15&t[0])||t[0]>>4>7||(t[0]<<8|t[1])%31?inflate(t,n,e):unzlib(t,n,e)}function decompressSync(t,n){return 31==t[0]&&139==t[1]&&8==t[2]?gunzipSync(t,n):8!=(15&t[0])||t[0]>>4>7||(t[0]<<8|t[1])%31?inflateSync(t,n):unzlibSync(t,n)}exports.AsyncDecompress=AsyncDecompress,exports.decompress=decompress,exports.decompressSync=decompressSync;var fltn=function(t,n,e,r){for(var i in t){var s=t[i],o=n+i,a=r;Array.isArray(s)&&(a=mrg(r,s[1]),s=s[0]),s instanceof u8?e[o]=[s,a]:(e[o+="/"]=[new u8(0),a],fltn(s,o,e,r))}},te="undefined"!=typeof TextEncoder&&new TextEncoder,td="undefined"!=typeof TextDecoder&&new TextDecoder,tds=0;try{td.decode(et,{stream:!0}),tds=1}catch(t){}var dutf8=function(t){for(var n="",e=0;;){var r=t[e++],i=(r>127)+(r>223)+(r>239);if(e+i>t.length)return[n,slc(t,e-1)];i?3==i?(r=((15&r)<<18|(63&t[e++])<<12|(63&t[e++])<<6|63&t[e++])-65536,n+=String.fromCharCode(55296|r>>10,56320|1023&r)):n+=1&i?String.fromCharCode((31&r)<<6|63&t[e++]):String.fromCharCode((15&r)<<12|(63&t[e++])<<6|63&t[e++]):n+=String.fromCharCode(r)}},DecodeUTF8=function(){function t(t){this.ondata=t,tds?this.t=new TextDecoder:this.p=et}return t.prototype.push=function(t,n){if(this.ondata||err(5),n=!!n,this.t)return this.ondata(this.t.decode(t,{stream:!0}),n),void(n&&(this.t.decode().length&&err(8),this.t=null));this.p||err(4);var e=new u8(this.p.length+t.length);e.set(this.p),e.set(t,this.p.length);var r=dutf8(e),i=r[0],s=r[1];n?(s.length&&err(8),this.p=null):this.p=s,this.ondata(i,n)},t}();exports.DecodeUTF8=DecodeUTF8;var EncodeUTF8=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||err(5),this.d&&err(4),this.ondata(strToU8(t),this.d=n||!1)},t}();function strToU8(t,n){if(n){for(var e=new u8(t.length),r=0;r<t.length;++r)e[r]=t.charCodeAt(r);return e}if(te)return te.encode(t);var i=t.length,s=new u8(t.length+(t.length>>1)),o=0,a=function(t){s[o++]=t};for(r=0;r<i;++r){if(o+5>s.length){var f=new u8(o+8+(i-r<<1));f.set(s),s=f}var u=t.charCodeAt(r);u<128||n?a(u):u<2048?(a(192|u>>6),a(128|63&u)):u>55295&&u<57344?(a(240|(u=65536+(1047552&u)|1023&t.charCodeAt(++r))>>18),a(128|u>>12&63),a(128|u>>6&63),a(128|63&u)):(a(224|u>>12),a(128|u>>6&63),a(128|63&u))}return slc(s,0,o)}function strFromU8(t,n){if(n){for(var e="",r=0;r<t.length;r+=16384)e+=String.fromCharCode.apply(null,t.subarray(r,r+16384));return e}if(td)return td.decode(t);var i=dutf8(t),s=i[0];return i[1].length&&err(8),s}exports.EncodeUTF8=EncodeUTF8,exports.strToU8=strToU8,exports.strFromU8=strFromU8;var dbf=function(t){return 1==t?3:t<6?2:9==t?1:0},slzh=function(t,n){return n+30+b2(t,n+26)+b2(t,n+28)},zh=function(t,n,e){var r=b2(t,n+28),i=strFromU8(t.subarray(n+46,n+46+r),!(2048&b2(t,n+8))),s=n+46+r,o=b4(t,n+20),a=e&&4294967295==o?z64e(t,s):[o,b4(t,n+24),b4(t,n+42)],f=a[0],u=a[1],l=a[2];return[b2(t,n+10),f,u,i,s+b2(t,n+30)+b2(t,n+32),l]},z64e=function(t,n){for(;1!=b2(t,n);n+=4+b2(t,n+2));return[b8(t,n+12),b8(t,n+4),b8(t,n+20)]},exfl=function(t){var n=0;if(t)for(var e in t){var r=t[e].length;r>65535&&err(9),n+=r+4}return n},wzh=function(t,n,e,r,i,s,o,a){var f=r.length,u=e.extra,l=a&&a.length,c=exfl(u);wbytes(t,n,null!=o?33639248:67324752),n+=4,null!=o&&(t[n++]=20,t[n++]=e.os),t[n]=20,n+=2,t[n++]=e.flag<<1|(null==s&&8),t[n++]=i&&8,t[n++]=255&e.compression,t[n++]=e.compression>>8;var h=new Date(null==e.mtime?Date.now():e.mtime),p=h.getFullYear()-1980;if((p<0||p>119)&&err(10),wbytes(t,n,p<<25|h.getMonth()+1<<21|h.getDate()<<16|h.getHours()<<11|h.getMinutes()<<5|h.getSeconds()>>>1),n+=4,null!=s&&(wbytes(t,n,e.crc),wbytes(t,n+4,s),wbytes(t,n+8,e.size)),wbytes(t,n+12,f),wbytes(t,n+14,c),n+=16,null!=o&&(wbytes(t,n,l),wbytes(t,n+6,e.attrs),wbytes(t,n+10,o),n+=14),t.set(r,n),n+=f,c)for(var v in u){var d=u[v],b=d.length;wbytes(t,n,+v),wbytes(t,n+2,b),t.set(d,n+4),n+=4+b}return l&&(t.set(a,n),n+=l),n},wzf=function(t,n,e,r,i){wbytes(t,n,101010256),wbytes(t,n+8,e),wbytes(t,n+10,e),wbytes(t,n+12,r),wbytes(t,n+16,i)},ZipPassThrough=function(){function t(t){this.filename=t,this.c=crc(),this.size=0,this.compression=0}return t.prototype.process=function(t,n){this.ondata(null,t,n)},t.prototype.push=function(t,n){this.ondata||err(5),this.c.p(t),this.size+=t.length,n&&(this.crc=this.c.d()),this.process(t,n||!1)},t}();exports.ZipPassThrough=ZipPassThrough;var ZipDeflate=function(){function t(t,n){var e=this;n||(n={}),ZipPassThrough.call(this,t),this.d=new Deflate(n,function(t,n){e.ondata(null,t,n)}),this.compression=8,this.flag=dbf(n.level)}return t.prototype.process=function(t,n){try{this.d.push(t,n)}catch(t){this.ondata(t,null,n)}},t.prototype.push=function(t,n){ZipPassThrough.prototype.push.call(this,t,n)},t}();exports.ZipDeflate=ZipDeflate;var AsyncZipDeflate=function(){function t(t,n){var e=this;n||(n={}),ZipPassThrough.call(this,t),this.d=new AsyncDeflate(n,function(t,n,r){e.ondata(t,n,r)}),this.compression=8,this.flag=dbf(n.level),this.terminate=this.d.terminate}return t.prototype.process=function(t,n){this.d.push(t,n)},t.prototype.push=function(t,n){ZipPassThrough.prototype.push.call(this,t,n)},t}();exports.AsyncZipDeflate=AsyncZipDeflate;var Zip=function(){function t(t){this.ondata=t,this.u=[],this.d=1}return t.prototype.add=function(t){var n=this;if(this.ondata||err(5),2&this.d)this.ondata(err(4+8*(1&this.d),0,1),null,!1);else{var e=strToU8(t.filename),r=e.length,i=t.comment,s=i&&strToU8(i),o=r!=t.filename.length||s&&i.length!=s.length,a=r+exfl(t.extra)+30;r>65535&&this.ondata(err(11,0,1),null,!1);var f=new u8(a);wzh(f,0,t,e,o);var u=[f],l=function(){for(var t=0,e=u;t<e.length;t++){var r=e[t];n.ondata(null,r,!1)}u=[]},c=this.d;this.d=0;var h=this.u.length,p=mrg(t,{f:e,u:o,o:s,t:function(){t.terminate&&t.terminate()},r:function(){if(l(),c){var t=n.u[h+1];t?t.r():n.d=1}c=1}}),v=0;t.ondata=function(e,r,i){if(e)n.ondata(e,r,i),n.terminate();else if(v+=r.length,u.push(r),i){var s=new u8(16);wbytes(s,0,134695760),wbytes(s,4,t.crc),wbytes(s,8,v),wbytes(s,12,t.size),u.push(s),p.c=v,p.b=a+v+16,p.crc=t.crc,p.size=t.size,c&&p.r(),c=1}else c&&l()},this.u.push(p)}},t.prototype.end=function(){var t=this;2&this.d?this.ondata(err(4+8*(1&this.d),0,1),null,!0):(this.d?this.e():this.u.push({r:function(){1&t.d&&(t.u.splice(-1,1),t.e())},t:function(){}}),this.d=3)},t.prototype.e=function(){for(var t=0,n=0,e=0,r=0,i=this.u;r<i.length;r++){e+=46+(f=i[r]).f.length+exfl(f.extra)+(f.o?f.o.length:0)}for(var s=new u8(e+22),o=0,a=this.u;o<a.length;o++){var f=a[o];wzh(s,t,f,f.f,f.u,f.c,n,f.o),t+=46+f.f.length+exfl(f.extra)+(f.o?f.o.length:0),n+=f.b}wzf(s,t,this.u.length,e,n),this.ondata(null,s,!0),this.d=2},t.prototype.terminate=function(){for(var t=0,n=this.u;t<n.length;t++){n[t].t()}this.d=2},t}();function zip(t,n,e){e||(e=n,n={}),"function"!=typeof e&&err(7);var r={};fltn(t,"",r,n);var i=Object.keys(r),s=i.length,o=0,a=0,f=s,u=new Array(s),l=[],c=function(){for(var t=0;t<l.length;++t)l[t]()},h=function(t,n){mt(function(){e(t,n)})};mt(function(){h=e});var p=function(){var t=new u8(a+22),n=o,e=a-o;a=0;for(var r=0;r<f;++r){var i=u[r];try{var s=i.c.length;wzh(t,a,i,i.f,i.u,s);var l=30+i.f.length+exfl(i.extra),c=a+l;t.set(i.c,c),wzh(t,o,i,i.f,i.u,s,a,i.m),o+=16+l+(i.m?i.m.length:0),a=c+s}catch(t){return h(t,null)}}wzf(t,o,u.length,e,n),h(null,t)};s||p();for(var v=function(t){var n=i[t],e=r[n],f=e[0],v=e[1],d=crc(),b=f.length;d.p(f);var y=strToU8(n),g=y.length,m=v.comment,z=m&&strToU8(m),w=z&&z.length,x=exfl(v.extra),S=0==v.level?0:8,U=function(e,r){if(e)c(),h(e,null);else{var i=r.length;u[t]=mrg(v,{size:b,crc:d.d(),c:r,f:y,m:z,u:g!=n.length||z&&m.length!=w,compression:S}),o+=30+g+x+i,a+=76+2*(g+x)+(w||0)+i,--s||p()}};if(g>65535&&U(err(11,0,1),null),S)if(b<16e4)try{U(null,deflateSync(f,v))}catch(t){U(t,null)}else l.push(deflate(f,v,U));else U(null,f)},d=0;d<f;++d)v(d);return c}function zipSync(t,n){n||(n={});var e={},r=[];fltn(t,"",e,n);var i=0,s=0;for(var o in e){var a=e[o],f=a[0],u=a[1],l=0==u.level?0:8,c=(S=strToU8(o)).length,h=u.comment,p=h&&strToU8(h),v=p&&p.length,d=exfl(u.extra);c>65535&&err(11);var b=l?deflateSync(f,u):f,y=b.length,g=crc();g.p(f),r.push(mrg(u,{size:f.length,crc:g.d(),c:b,f:S,m:p,u:c!=o.length||p&&h.length!=v,o:i,compression:l})),i+=30+c+d+y,s+=76+2*(c+d)+(v||0)+y}for(var m=new u8(s+22),z=i,w=s-i,x=0;x<r.length;++x){var S=r[x];wzh(m,S.o,S,S.f,S.u,S.c.length);var U=30+S.f.length+exfl(S.extra);m.set(S.c,S.o+U),wzh(m,i,S,S.f,S.u,S.c.length,S.o,S.m),i+=16+U+(S.m?S.m.length:0)}return wzf(m,i,r.length,w,z),m}exports.Zip=Zip,exports.zip=zip,exports.zipSync=zipSync;var UnzipPassThrough=function(){function t(){}return t.prototype.push=function(t,n){this.ondata(null,t,n)},t.compression=0,t}();exports.UnzipPassThrough=UnzipPassThrough;var UnzipInflate=function(){function t(){var t=this;this.i=new Inflate(function(n,e){t.ondata(null,n,e)})}return t.prototype.push=function(t,n){try{this.i.push(t,n)}catch(t){this.ondata(t,null,n)}},t.compression=8,t}();exports.UnzipInflate=UnzipInflate;var AsyncUnzipInflate=function(){function t(t,n){var e=this;n<32e4?this.i=new Inflate(function(t,n){e.ondata(null,t,n)}):(this.i=new AsyncInflate(function(t,n,r){e.ondata(t,n,r)}),this.terminate=this.i.terminate)}return t.prototype.push=function(t,n){this.i.terminate&&(t=slc(t,0)),this.i.push(t,n)},t.compression=8,t}();exports.AsyncUnzipInflate=AsyncUnzipInflate;var Unzip=function(){function t(t){this.onfile=t,this.k=[],this.o={0:UnzipPassThrough},this.p=et}return t.prototype.push=function(t,n){var e=this;if(this.onfile||err(5),this.p||err(4),this.c>0){var r=Math.min(this.c,t.length),i=t.subarray(0,r);if(this.c-=r,this.d?this.d.push(i,!this.c):this.k[0].push(i),(t=t.subarray(r)).length)return this.push(t,n)}else{var s=0,o=0,a=void 0,f=void 0;this.p.length?t.length?((f=new u8(this.p.length+t.length)).set(this.p),f.set(t,this.p.length)):f=this.p:f=t;for(var u=f.length,l=this.c,c=l&&this.d,h=function(){var t,n=b4(f,o);if(67324752==n){s=1,a=o,p.d=null,p.c=0;var r=b2(f,o+6),i=b2(f,o+8),c=2048&r,h=8&r,v=b2(f,o+26),d=b2(f,o+28);if(u>o+30+v+d){var b=[];p.k.unshift(b),s=2;var y,g=b4(f,o+18),m=b4(f,o+22),z=strFromU8(f.subarray(o+30,o+=30+v),!c);4294967295==g?(t=h?[-2]:z64e(f,o),g=t[0],m=t[1]):h&&(g=-1),o+=d,p.c=g;var w={name:z,compression:i,start:function(){if(w.ondata||err(5),g){var t=e.o[i];t||w.ondata(err(14,"unknown compression type "+i,1),null,!1),(y=g<0?new t(z):new t(z,g,m)).ondata=function(t,n,e){w.ondata(t,n,e)};for(var n=0,r=b;n<r.length;n++){var s=r[n];y.push(s,!1)}e.k[0]==b&&e.c?e.d=y:y.push(et,!0)}else w.ondata(null,et,!0)},terminate:function(){y&&y.terminate&&y.terminate()}};g>=0&&(w.size=g,w.originalSize=m),p.onfile(w)}return"break"}if(l){if(134695760==n)return a=o+=12+(-2==l&&8),s=3,p.c=0,"break";if(33639248==n)return a=o-=4,s=3,p.c=0,"break"}},p=this;o<u-4;++o){if("break"===h())break}if(this.p=et,l<0){var v=s?f.subarray(0,a-12-(-2==l&&8)-(134695760==b4(f,a-16)&&4)):f.subarray(0,o);c?c.push(v,!!s):this.k[+(2==s)].push(v)}if(2&s)return this.push(f.subarray(o),n);this.p=f.subarray(o)}n&&(this.c&&err(13),this.p=null)},t.prototype.register=function(t){this.o[t.compression]=t},t}();exports.Unzip=Unzip;var mt="function"==typeof queueMicrotask?queueMicrotask:"function"==typeof setTimeout?setTimeout:function(t){t()};function unzip(t,n,e){e||(e=n,n={}),"function"!=typeof e&&err(7);var r=[],i=function(){for(var t=0;t<r.length;++t)r[t]()},s={},o=function(t,n){mt(function(){e(t,n)})};mt(function(){o=e});for(var a=t.length-22;101010256!=b4(t,a);--a)if(!a||t.length-a>65558)return o(err(13,0,1),null),i;var f=b2(t,a+8);if(f){var u=f,l=b4(t,a+16),c=4294967295==l;if(c){if(a=b4(t,a-12),101075792!=b4(t,a))return o(err(13,0,1),null),i;u=f=b4(t,a+32),l=b4(t,a+48)}for(var h=n&&n.filter,p=function(n){var e=zh(t,l,c),a=e[0],u=e[1],p=e[2],v=e[3],d=e[4],b=e[5],y=slzh(t,b);l=d;var g=function(t,n){t?(i(),o(t,null)):(n&&(s[v]=n),--f||o(null,s))};if(!h||h({name:v,size:u,originalSize:p,compression:a}))if(a)if(8==a){var m=t.subarray(y,y+u);if(u<32e4)try{g(null,inflateSync(m,new u8(p)))}catch(t){g(t,null)}else r.push(inflate(m,{size:p},g))}else g(err(14,"unknown compression type "+a,1),null);else g(null,slc(t,y,y+u));else g(null,null)},v=0;v<u;++v)p()}else o(null,{});return i}function unzipSync(t,n){for(var e={},r=t.length-22;101010256!=b4(t,r);--r)(!r||t.length-r>65558)&&err(13);var i=b2(t,r+8);if(!i)return{};var s=b4(t,r+16),o=4294967295==s;o&&(r=b4(t,r-12),101075792!=b4(t,r)&&err(13),i=b4(t,r+32),s=b4(t,r+48));for(var a=n&&n.filter,f=0;f<i;++f){var u=zh(t,s,o),l=u[0],c=u[1],h=u[2],p=u[3],v=u[4],d=u[5],b=slzh(t,d);s=v,a&&!a({name:p,size:c,originalSize:h,compression:l})||(l?8==l?e[p]=inflateSync(t.subarray(b,b+c),new u8(h)):err(14,"unknown compression type "+l):e[p]=slc(t,b,b+c))}return e}exports.unzip=unzip,exports.unzipSync=unzipSync;
155
155
 
156
156
  },{"./node-worker.cjs":34}],34:[function(require,module,exports){
@@ -162,7 +162,7 @@ const{flatten:flatten}=require("@jscad/array-utils"),{formats:formats}=require("
162
162
  },{}],36:[function(require,module,exports){
163
163
  const zipSync=require("fflate").zipSync,strToU8=require("fflate").strToU8,stringify=require("onml/lib/stringify"),{colors:colors,geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),mimeType="model/3mf",fileExtension="3mf",serialize=(e,...t)=>{e=Object.assign({},{unit:"millimeter",metadata:!0,defaultcolor:[1,160/255,0,1],compress:!0},e);let o=(t=flatten(t)).filter(e=>geometries.geom3.isA(e));if(0===o.length)throw new Error("only 3D geometries can be serialized to 3MF");t.length!==o.length&&console.warn("some objects could not be serialized to 3MF"),t=toArray(modifiers.generalize({snap:!0,triangulate:!0},o));const r=["model",{unit:e.unit,"xml:lang":"und"},["metadata",{name:"Application"},"JSCAD"]];e.metadata&&r.push(["metadata",{name:"CreationDate"},(new Date).toISOString()]),r.push(translateResources(t,e)),r.push(translateBuild(t,e));const n=`<?xml version="1.0" encoding="UTF-8"?>\n${stringify(r,2)}`;if(e.compress){const e={"3D":{"3dmodel.model":strToU8(n)},_rels:{".rels":strToU8(rels)},"[Content_Types].xml":strToU8(contenttype)};return[zipSync(e,{comment:"created by JSCAD"}).buffer]}return[n]},contenttype='<?xml version="1.0" encoding="UTF-8" ?>\n<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">\n <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml">\n </Default>\n <Default Extension="model" ContentType="application/vnd.ms-package.3dmanufacturing-3dmodel+xml">\n </Default>\n</Types>',rels='<?xml version="1.0" encoding="UTF-8" ?>\n<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\n <Relationship Target="/3D/3dmodel.model" Id="rel0" Type="http://schemas.microsoft.com/3dmanufacturing/2013/01/3dmodel">\n </Relationship>\n</Relationships>',translateResources=(e,t)=>{let o=["resources",{},translateMaterials(e,t)];return o=o.concat(translateObjects(e,t))},translateMaterials=(e,t)=>{let o=["basematerials",{id:"0"}];const r=[];return e.forEach((e,o)=>{let n=colors.rgbToHex(t.defaultcolor).toUpperCase();e.color&&(n=colors.rgbToHex(e.color).toUpperCase()),r.push(["base",{name:`mat${o}`,displaycolor:n}])}),o=o.concat(r)},translateObjects=(e,t)=>{const o=[];return e.forEach((e,r)=>{if(geometries.geom3.isA(e)){geometries.geom3.toPolygons(e).length>0&&(t.id=r,o.push(convertToObject(e,t)))}}),o},translateBuild=(e,t)=>{let o=["build",{}];const r=[];return e.forEach((e,t)=>{r.push(["item",{objectid:`${t+1}`}])}),o=o.concat(r)},convertToObject=(e,t)=>{const o=e.name?e.name:`Part ${t.id}`;return["object",{id:`${t.id+1}`,type:"model",pid:"0",pindex:`${t.id}`,name:o},convertToMesh(e,t)]},convertToMesh=(e,t)=>{return["mesh",{},convertToVertices(e,t),convertToVolumes(e,t)]},convertToVertices=(e,t)=>{const o=[];return geometries.geom3.toPolygons(e).forEach(e=>{for(let r=0;r<e.vertices.length;r++)o.push(convertToVertex(e.vertices[r],t))}),["vertices",{}].concat(o)},convertToVertex=(e,t)=>{return["vertex",{x:e[0],y:e[1],z:e[2]}]},convertToVolumes=(e,t)=>{let o=0;const r=geometries.geom3.toPolygons(e);let n=["triangles",{}];return r.forEach(e=>{if(e.vertices.length<3)return;const t=convertToTriangles(e,o);n=n.concat(t),o+=e.vertices.length}),n},convertToTriangles=(e,t)=>{const o=[];for(let r=0;r<e.vertices.length-2;r++){const e=["triangle",{v1:t,v2:t+r+1,v3:t+r+2}];o.push(e)}return o};module.exports={serialize:serialize,mimeType:mimeType,fileExtension:"3mf"};
164
164
 
165
- },{"@jscad/array-utils":520,"@jscad/modeling":207,"fflate":33,"onml/lib/stringify":35}],37:[function(require,module,exports){
165
+ },{"@jscad/array-utils":521,"@jscad/modeling":207,"fflate":33,"onml/lib/stringify":35}],37:[function(require,module,exports){
166
166
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CHAR="\t\n\r -퟿-�𐀀-􏿿",exports.S=" \t\r\n",exports.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",exports.NAME_CHAR="-"+exports.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",exports.CHAR_RE=new RegExp("^["+exports.CHAR+"]$","u"),exports.S_RE=new RegExp("^["+exports.S+"]+$","u"),exports.NAME_START_CHAR_RE=new RegExp("^["+exports.NAME_START_CHAR+"]$","u"),exports.NAME_CHAR_RE=new RegExp("^["+exports.NAME_CHAR+"]$","u"),exports.NAME_RE=new RegExp("^["+exports.NAME_START_CHAR+"]["+exports.NAME_CHAR+"]*$","u"),exports.NMTOKEN_RE=new RegExp("^["+exports.NAME_CHAR+"]+$","u");var TAB=9,NL=10,CR=13,SPACE=32;function isChar(e){return e>=SPACE&&e<=55295||e===NL||e===CR||e===TAB||e>=57344&&e<=65533||e>=65536&&e<=1114111}function isS(e){return e===SPACE||e===NL||e===CR||e===TAB}function isNameStartChar(e){return e>=65&&e<=90||e>=97&&e<=122||58===e||95===e||8204===e||8205===e||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}function isNameChar(e){return isNameStartChar(e)||e>=48&&e<=57||45===e||46===e||183===e||e>=768&&e<=879||e>=8255&&e<=8256}exports.S_LIST=[SPACE,NL,CR,TAB],exports.isChar=isChar,exports.isS=isS,exports.isNameStartChar=isNameStartChar,exports.isNameChar=isNameChar;
167
167
 
168
168
  },{}],38:[function(require,module,exports){
@@ -177,7 +177,7 @@ const zipSync=require("fflate").zipSync,strToU8=require("fflate").strToU8,string
177
177
  },{"xmlchars/xml/1.0/ed5":37,"xmlchars/xml/1.1/ed2":38,"xmlchars/xmlns/1.0/ed3":39}],41:[function(require,module,exports){
178
178
  module.exports={
179
179
  "name": "@jscad/amf-deserializer",
180
- "version": "2.3.2",
180
+ "version": "2.3.3",
181
181
  "description": "AMF Deserializer for JSCAD",
182
182
  "repository": "https://github.com/jscad/OpenJSCAD.org/",
183
183
  "main": "src/index.js",
@@ -208,7 +208,7 @@ module.exports={
208
208
  ],
209
209
  "license": "MIT",
210
210
  "dependencies": {
211
- "@jscad/modeling": "2.10.0",
211
+ "@jscad/modeling": "2.11.0",
212
212
  "saxes": "5.0.1"
213
213
  },
214
214
  "devDependencies": {
@@ -242,7 +242,7 @@ const createObject=require("./objectBuilder"),parse=require("./parse"),translate
242
242
  },{"./constants":42,"./objectBuilder":46,"./parse":47}],49:[function(require,module,exports){
243
243
  const stringify=require("onml/lib/stringify"),{geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),mimeType="application/amf+xml",serialize=(e,...t)=>{e=Object.assign({},{statusCallback:null,unit:"millimeter"},e);let o=(t=flatten(t)).filter(e=>geometries.geom3.isA(e));if(0===o.length)throw new Error("only 3D geometries can be serialized to AMF");t.length!==o.length&&console.warn("some objects could not be serialized to AMF"),o=toArray(modifiers.generalize({snap:!0,triangulate:!0},o)),e.statusCallback&&e.statusCallback({progress:0});let r=["amf",{unit:e.unit,version:"1.1"},["metadata",{type:"author"},"Created by JSCAD"]];r=r.concat(translateObjects(o,e));const n=`<?xml version="1.0" encoding="UTF-8"?>\n${stringify(r,2)}`;return e&&e.statusCallback&&e.statusCallback({progress:100}),[n]},translateObjects=(e,t)=>{const o=[];return e.forEach((e,r)=>{geometries.geom3.toPolygons(e).length>0&&(t.id=r,o.push(convertToObject(e,t)))}),o},convertToObject=(e,t)=>{return["object",{id:t.id},convertToMesh(e,t)]},convertToMesh=(e,t)=>{let o=["mesh",{},convertToVertices(e,t)];return o=o.concat(convertToVolumes(e,t))},convertToVertices=(e,t)=>{const o=[];return geometries.geom3.toPolygons(e).forEach(e=>{for(let r=0;r<e.vertices.length;r++)o.push(convertToVertex(e.vertices[r],t))}),["vertices",{}].concat(o)},convertToVertex=(e,t)=>{return["vertex",{},convertToCoordinates(e,t)]},convertToCoordinates=(e,t)=>{return["coordinates",{},["x",{},e[0]],["y",{},e[1]],["z",{},e[2]]]},convertToVolumes=(e,t)=>{const o=convertColor(e.color),r=geometries.geom3.toPolygons(e),n=[];let s=["volume",{}];o&&s.push(o);let l=0;return r.forEach(e=>{if(e.vertices.length<3)return;const o=convertToTriangles(e,l,t);s=s.concat(o),l+=e.vertices.length}),n.push(s),n},convertColor=e=>e?(e.length<4&&e.push(1),["color",{},["r",{},e[0]],["g",{},e[1]],["b",{},e[2]],["a",{},e[3]]]):null,convertToColor=(e,t)=>{const o=e.color;return convertColor(o)},convertToTriangles=(e,t,o)=>{const r=convertToColor(e),n=[];for(let o=0;o<e.vertices.length-2;o++)r?n.push(["triangle",{},r,["v1",{},t],["v2",{},t+o+1],["v3",{},t+o+2]]):n.push(["triangle",{},["v1",{},t],["v2",{},t+o+1],["v3",{},t+o+2]]);return n};module.exports={serialize:serialize,mimeType:mimeType};
244
244
 
245
- },{"@jscad/array-utils":520,"@jscad/modeling":207,"onml/lib/stringify":50}],50:[function(require,module,exports){
245
+ },{"@jscad/array-utils":521,"@jscad/modeling":207,"onml/lib/stringify":50}],50:[function(require,module,exports){
246
246
  "use strict";const isObject=t=>t&&"[object Object]"===Object.prototype.toString.call(t);function indenter(t){if(!(t>0))return t=>t;var e=" ".repeat(t);return t=>{if("string"!=typeof t)return t;const n=t.split("\n");return 1===n.length?e+t:n.map(t=>""===t.trim()?t:e+t).join("\n")}}const clean=t=>t.split("\n").filter(t=>""!==t.trim()).join("\n");function stringify(t,e){const n=e>0?"\n":"",r=indenter(e);return function t(e){let i,o="",s=!0;return e.some((e,r,c)=>{if(0===r)return i="<"+e,1===c.length;if(1===r){if(isObject(e))return Object.keys(e).map(t=>{let n=e[t];Array.isArray(n)&&(n=n.join(" ")),i+=" "+t+'="'+n+'"'}),2===c.length||void(i+=">");i+=">"}switch(typeof e){case"string":case"number":case"boolean":case"undefined":return void(o+=e+n)}s=!1,o+=t(e)})?i+"/>"+n:s?i+clean(o)+"</"+e[0]+">"+n:i+n+r(o)+"</"+e[0]+">"+n}(t)}module.exports=stringify;
247
247
 
248
248
  },{}],51:[function(require,module,exports){
@@ -266,7 +266,7 @@ const{geometries:geometries,maths:maths,primitives:primitives}=require("@jscad/m
266
266
  },{"./helpers":54,"@jscad/modeling":207}],57:[function(require,module,exports){
267
267
  module.exports={
268
268
  "name": "@jscad/dxf-deserializer",
269
- "version": "2.3.19",
269
+ "version": "2.3.20",
270
270
  "description": "DXF Deserializer for JSCAD",
271
271
  "homepage": "https://openjscad.xyz/",
272
272
  "repository": "https://github.com/jscad/OpenJSCAD.org",
@@ -294,7 +294,7 @@ module.exports={
294
294
  ],
295
295
  "license": "MIT",
296
296
  "dependencies": {
297
- "@jscad/modeling": "2.10.0"
297
+ "@jscad/modeling": "2.11.0"
298
298
  },
299
299
  "devDependencies": {
300
300
  "ava": "3.15.0",
@@ -315,7 +315,7 @@ const colorIndex=[[0,0,0,255],[255,0,0,255],[255,255,0,255],[0,255,0,255],[0,255
315
315
  },{}],61:[function(require,module,exports){
316
316
  const{geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{geom3:geom3,geom2:geom2,path2:path2}=geometries,{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),{dxfHeaders:dxfHeaders,dxfClasses:dxfClasses,dxfTables:dxfTables,dxfBlocks:dxfBlocks,dxfObjects:dxfObjects}=require("./autocad_AC2017"),colorindex2017=require("./colorindex2017"),mimeType="application/dxf",serialize=(n,...e)=>{const t={geom2To:"lwpolyline",geom3To:"3dface",pathTo:"lwpolyline",statusCallback:null,colorIndex:colorindex2017};if((n=Object.assign({},t,n)).entityId=0,0===(e=(e=flatten(e)).filter(n=>geom3.isA(n)||geom2.isA(n)||path2.isA(n))).length)throw new Error("only JSCAD geometries can be serialized to DXF");return e=toArray(modifiers.generalize({snap:!0,triangulate:!0},e)),[`999\nCreated by JSCAD\n${dxfHeaders(n)}\n${dxfClasses(n)}\n${dxfTables(n)}\n${dxfBlocks(n)}\n${dxfEntities(e,n)}\n${dxfObjects(n)}\n 0\nEOF\n`]},dxfEntities=(n,e)=>{const t=n.map((n,t)=>{if(geom2.isA(n)){const t=n.color,o=n.name,s=geom2.toOutlines(n).map(n=>({closed:!0,points:n,color:t,name:o}));return"polyline"===e.geom2To?PathsToPolyine(s,e):PathsToLwpolyline(s,e)}if(geom3.isA(n))return"polyline"===e.geom3To?PolygonsToPolyline(n,e):PolygonsTo3DFaces(n,e);if(path2.isA(n)){const t=n.color,o=n.name,s={closed:n.isClosed,points:path2.toPoints(n),color:t,name:o};return PathsToLwpolyline([s],e)}return""});let o=" 0\nSECTION\n 2\nENTITIES\n";return t.forEach(n=>{n&&(o+=n)}),o+=" 0\nENDSEC"},PathsToLwpolyline=(n,e)=>{e.statusCallback&&e.statusCallback({progress:0});let t="";return n.forEach((o,s)=>{if(o.points.length<1)return;const l=o.points.length+(o.closed?1:0);t+=` 0\nLWPOLYLINE\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n 3\n${getName(o,e)}\n 8\n0\n 67\n0\n 62\n${getColorNumber(o,e)}\n 100\nAcDbPolyline\n 90\n${l}\n 70\n${o.closed?1:0}\n`;for(let n=0;n<l;n++){let e=n;e>=o.points.length&&(e-=o.points.length);const s=o.points[e];t+=` 10\n${s[0]}\n 20\n${s[1]}\n`}e.statusCallback&&e.statusCallback({progress:100*s/n.length})}),e.statusCallback&&e.statusCallback({progress:100}),[t]},PathsToPolyine=(n,e)=>{e.statusCallback&&e.statusCallback({progress:0});let t="";return n.forEach((o,s)=>{const l=o.points.length+(o.closed?1:0);t+=` 0\nPOLYLINE\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n 3\n${getName(o,e)}\n 8\n0\n 62\n${getColorNumber(o,e)}\n 100\nAcDb2dPolyline\n`;for(let n=0;n<l;n++){let s=n;s>=o.points.length&&(s-=o.points.length);const l=o.points[s];t+=` 0\nVERTEX\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n 8\n0\n 100\nAcDbVertex\n 100\nAcDb2dVertex\n 10\n${l[0]}\n 20\n${l[1]}\n`}t+=` 0\nSEQEND\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n`,e.statusCallback&&e.statusCallback({progress:100*s/n.length})}),e.statusCallback&&e.statusCallback({progress:100}),[t]},PolygonsTo3DFaces=(n,e)=>{e.statusCallback&&e.statusCallback({progress:0});let t="";const o=geom3.toPolygons(n),s=getColorNumber(n,e);return o.forEach((n,o)=>{const l=n.color?getColorNumber(n,e):s;polygonToTriangles(n).forEach((n,o)=>{t+=triangleTo3DFaces(n,e,l)})}),e.statusCallback&&e.statusCallback({progress:100}),[t]},polygonToTriangles=n=>{const e=n.vertices.length-2;if(e<1)return[];const t=n.vertices[0],o=[];for(let s=0;s<e;s++)o.push([t,n.vertices[s+1],n.vertices[s+2]]);return o},triangleTo3DFaces=(n,e,t)=>{const o=n[0],s=n[1],l=n[2],r=n[2];return` 0\n3DFACE\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n 8\n0\n 62\n${t}\n 100\nAcDbFace\n 70\n0\n 10\n${o[0]}\n 20\n${o[1]}\n 30\n${o[2]}\n 11\n${s[0]}\n 21\n${s[1]}\n 31\n${s[2]}\n 12\n${l[0]}\n 22\n${l[1]}\n 32\n${l[2]}\n 13\n${r[0]}\n 23\n${r[1]}\n 33\n${r[2]}\n`},PolygonsToPolyline=(n,e)=>{let t="";const o=polygons2polyfaces(geom3.toPolygons(n));return o.faces.length>0&&(t+=` 0\nPOLYLINE\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n 3\n${getName(n,e)}\n 8\n0\n 62\n${getColorNumber(n,e)}\n 100\nAcDb3dPolyline\n 70\n64\n 71\n${o.vertices.length}\n 72\n${o.faces.length}\n`,o.vertices.forEach(n=>{t+=` 0\nVERTEX\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n 8\n0\n 100\nAcDbVertex\n 100\nAcDb3dPolylineVertex\n 10\n${n[0]}\n 20\n${n[1]}\n 30\n${n[2]}\n 70\n192\n`}),o.faces.forEach(n=>{t+=` 0\nVERTEX\n 5\n${getEntityId(e)}\n 100\nAcDbEntity\n 8\n0\n 100\nAcDbVertex\n 100\nAcDb3dPolylineVertex\n 10\n0\n 20\n0\n 30\n0\n 70\n128\n 71\n${n[0]}\n 72\n${n[1]}\n 73\n${n[2]}\n 74\n${n[3]}\n`})),[t]},polygons2polyfaces=n=>{const e=[],t=[];for(let o=0;o<n.length;++o){const s=n[o],l=[];for(let n=0;n<s.vertices.length;++n){const e=s.vertices[n];t.push([e[0],e[1],e[2]]),l.push(t.length)}for(;l.length<4;)l.push(0);e.push(l)}return{faces:e,vertices:t}},getEntityId=n=>{n.entityId++;const e="00000"+n.entityId.toString(16).toUpperCase();return"CAD"+e.substr(e.length-5)},getName=(n,e)=>{if(n.name)return n.name;const t="00000"+e.entityId.toString(16).toUpperCase();return"CAD"+t.substr(t.length-5)},getColorNumber=(n,e)=>{let t=256;if(n.color){const o=Math.floor(255*n.color[0]),s=Math.floor(255*n.color[1]),l=Math.floor(255*n.color[2]),r=e.colorIndex;let a=765;for(let n=1;n<r.length;n++){const e=r[n],i=Math.abs(o-e[0])+Math.abs(s-e[1])+Math.abs(l-e[2]);if(i<a){if(t=n,0===i)break;a=i}}}return t};module.exports={serialize:serialize,mimeType:mimeType};
317
317
 
318
- },{"./autocad_AC2017":59,"./colorindex2017":60,"@jscad/array-utils":520,"@jscad/modeling":207}],62:[function(require,module,exports){
318
+ },{"./autocad_AC2017":59,"./colorindex2017":60,"@jscad/array-utils":521,"@jscad/modeling":207}],62:[function(require,module,exports){
319
319
  class BinaryReader{constructor(t){this._buffer=t,this._pos=0}readInt8(){return this._decodeInt(8,!0)}readUInt8(){return this._decodeInt(8,!1)}readInt16(){return this._decodeInt(16,!0)}readUInt16(){return this._decodeInt(16,!1)}readInt32(){return this._decodeInt(32,!0)}readUInt32(){return this._decodeInt(32,!1)}readFloat(){return this._decodeFloat(23,8)}readDouble(){return this._decodeFloat(52,11)}readChar(){return this.readString(1)}readString(t){this._checkSize(8*t);const e=this._buffer.substr(this._pos,t);return this._pos+=t,e}seek(t){this._pos=t,this._checkSize(0)}getPosition(){return this._pos}getSize(){return this._buffer.length}_decodeFloat(t,e){const r=t+e+1,s=r>>3;this._checkSize(r);const i=Math.pow(2,e-1)-1,h=this._readBits(t+e,1,s),d=this._readBits(t,e,s);let o=0,n=2,_=0,a=0;do{const e=this._readByte(++_,s);let r=1<<(a=t%8||8);for(;r>>=1;)e&r&&(o+=1/n),n*=2}while(t-=a);return this._pos+=s,d===1+(i<<1)?o?NaN:h?-1/0:1/0:(1+-2*h)*(d||o?d?Math.pow(2,d-i)*(1+o):Math.pow(2,1-i)*o:0)}_decodeInt(t,e){const r=this._readBits(0,t,t/8),s=Math.pow(2,t),i=e&&r>=s/2?r-s:r;return this._pos+=t/8,i}_shl(t,e){for(++e;--e;t=1073741824==(1073741824&(t%=2147483648))?2*t:2*(t-1073741824)+2147483647+1);return t}_readByte(t,e){return 255&this._buffer.charCodeAt(this._pos+e-t-1)}_readBits(t,e,r){const s=(t+e)%8,i=t%8,h=r-(t>>3)-1;let d=r+(-(t+e)>>3),o=h-d,n=this._readByte(h,r)>>i&(1<<(o?8-i:e))-1;for(o&&s&&(n+=(this._readByte(d++,r)&(1<<s)-1)<<(o--<<3)-i);o;)n+=this._shl(this._readByte(d++,r),(o--<<3)-i);return n}_checkSize(t){this._pos,Math.ceil(t/8),this._buffer.length}}module.exports=BinaryReader;
320
320
 
321
321
  },{}],63:[function(require,module,exports){
@@ -323,7 +323,7 @@ class BinaryReader{constructor(t){this._buffer=t,this._pos=0}readInt8(){return t
323
323
  class Blob{constructor(e,t){if(t=t||{},this.size=0,this.type="",this.isClosed=!1,this.encoding="utf8",this.buffer=null,this.length=0,!e)return;if(!Array.isArray(e))return;let s,i;e.forEach(e=>{"string"==typeof e?this.length+=e.length:e instanceof ArrayBuffer&&(this.length+=e.byteLength)}),t.type&&(this.type=t.type.toLowerCase()),t.endings,t.encoding&&(this.encoding=t.encoding.toLowerCase()),t.length&&(this.length=t.length),this.buffer=Buffer.allocUnsafe(this.length);for(let t=0;t<e.length;t++)switch(typeof e[t]){case"string":s=this.buffer.write(e[t],this.size,this.encoding),this.size=this.size+s;break;case"object":if((i=e[t])instanceof ArrayBuffer){const e=new DataView(i);for(let t=0;t<i.byteLength;t++){const i=e.getUint8(t);s=this.buffer.writeUInt8(i,this.size,!1),this.size++}}}}asBuffer(){return this.buffer.slice(0,this.size)}arrayBuffer(){return this.buffer.slice(0,this.size)}slice(e,t,s){return e=e||0,t=t||this.size,s=s||"",new Blob}stream(){return null}text(){return""}close(){this.isClosed||(this.isClosed=!0)}toString(){return""}}module.exports=Blob;
324
324
 
325
325
  }).call(this)}).call(this,require("buffer").Buffer)
326
- },{"buffer":682}],64:[function(require,module,exports){
326
+ },{"buffer":683}],64:[function(require,module,exports){
327
327
  const makeBlob=require("./makeBlob"),Blob=makeBlob(),convertToBlob=o=>{const{data:e,mimeType:l}=o;return new Blob(e,{type:l})};module.exports=convertToBlob;
328
328
 
329
329
  },{"./makeBlob":66}],65:[function(require,module,exports){
@@ -344,13 +344,13 @@ const{makeBlob:makeBlob,convertToBlob:convertToBlob}=require("@jscad/io-utils"),
344
344
  },{"./deserializers":67,"./prepareOutput":70,"@jscad/3mf-serializer":36,"@jscad/amf-serializer":49,"@jscad/dxf-serializer":61,"@jscad/io-utils":65,"@jscad/json-serializer":73,"@jscad/obj-serializer":76,"@jscad/stl-serializer":81,"@jscad/svg-serializer":93,"@jscad/x3d-serializer":119}],70:[function(require,module,exports){
345
345
  const{toArray:toArray}=require("@jscad/array-utils"),{formats:formats}=require("./formats"),amfSerializer=require("@jscad/amf-serializer"),dxfSerializer=require("@jscad/dxf-serializer"),jsonSerializer=require("@jscad/json-serializer"),objSerializer=require("@jscad/obj-serializer"),stlSerializer=require("@jscad/stl-serializer"),svgSerializer=require("@jscad/svg-serializer"),x3dSerializer=require("@jscad/x3d-serializer"),m3fSerializer=require("@jscad/3mf-serializer"),prepareOutput=(e,r)=>{const i={format:void 0,version:"0.0.0"},{format:a,version:s}=Object.assign({},i,r),l={producer:"JSCAD "+s,date:new Date,version:s},t={amf:amfSerializer,stl:stlSerializer,stla:{mimeType:stlSerializer.mimeType,serialize:(e,r)=>stlSerializer.serialize(Object.assign({},{binary:!1},e),r)},stlb:stlSerializer,dxf:dxfSerializer,obj:objSerializer,svg:svgSerializer,x3d:x3dSerializer,"3mf":m3fSerializer,json:jsonSerializer,js:{mimeType:formats.js.mimetype,serialize:(e,r)=>toArray(r)},jscad:{mimeType:formats.jscad.mimetype,serialize:(e,r)=>toArray(r)},undefined:()=>{throw new Error("Not supported : only jscad, stl, amf, dxf, svg or json as output format")}},o=Object.assign({},l,r);return{data:t[a].serialize(o,e),mimeType:t[a].mimeType}};module.exports=prepareOutput;
346
346
 
347
- },{"./formats":68,"@jscad/3mf-serializer":36,"@jscad/amf-serializer":49,"@jscad/array-utils":520,"@jscad/dxf-serializer":61,"@jscad/json-serializer":73,"@jscad/obj-serializer":76,"@jscad/stl-serializer":81,"@jscad/svg-serializer":93,"@jscad/x3d-serializer":119}],71:[function(require,module,exports){
347
+ },{"./formats":68,"@jscad/3mf-serializer":36,"@jscad/amf-serializer":49,"@jscad/array-utils":521,"@jscad/dxf-serializer":61,"@jscad/json-serializer":73,"@jscad/obj-serializer":76,"@jscad/stl-serializer":81,"@jscad/svg-serializer":93,"@jscad/x3d-serializer":119}],71:[function(require,module,exports){
348
348
  const{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),version=require("./package.json").version,deserialize=(e,t)=>{const n={filename:"json",output:"script",version:version,addMetaData:!0};e=Object.assign({},n,e);let r=JSON.parse(t);return r=flatten(toArray(r)),"script"===e.output?translate(e,r):r},translate=(e,t)=>{const{addMetaData:n,filename:r,version:s}=e;let a=n?`//\n// Produced by JSCAD IO Library : JSON Deserializer (${s})\n// date: ${new Date}\n// source: ${r}\n//\n`:"";return a+=`\nconst { geometries } = require('@jscad/modeling')\n\nconst main = () => {\n const objects = [${translateToList(t)} ]\n return objects\n}\n\n${translateToObjects(t)}\n\nmodule.exports = { main }\n`},translateToList=e=>e.reduce((e,t,n)=>e+` json${n},`,""),translateToObjects=e=>e.reduce((e,t,n)=>e+translateToObject(t,n),""),translateToObject=(e,t)=>`const json${t} = ${JSON.stringify(e)}\n`,extension="json";module.exports={deserialize:deserialize,extension:"json"};
349
349
 
350
- },{"./package.json":72,"@jscad/array-utils":520}],72:[function(require,module,exports){
350
+ },{"./package.json":72,"@jscad/array-utils":521}],72:[function(require,module,exports){
351
351
  module.exports={
352
352
  "name": "@jscad/json-deserializer",
353
- "version": "2.0.23",
353
+ "version": "2.0.24",
354
354
  "description": "JSON Deserializer for JSCAD",
355
355
  "homepage": "https://openjscad.xyz/",
356
356
  "repository": "https://github.com/jscad/OpenJSCAD.org",
@@ -381,7 +381,7 @@ module.exports={
381
381
  "@jscad/array-utils": "2.1.4"
382
382
  },
383
383
  "devDependencies": {
384
- "@jscad/modeling": "2.10.0",
384
+ "@jscad/modeling": "2.11.0",
385
385
  "ava": "3.15.0",
386
386
  "nyc": "15.1.0"
387
387
  },
@@ -397,7 +397,7 @@ const{colors:colors,primitives:primitives}=require("@jscad/modeling"),version=re
397
397
  },{"./package.json":75,"@jscad/modeling":207}],75:[function(require,module,exports){
398
398
  module.exports={
399
399
  "name": "@jscad/obj-deserializer",
400
- "version": "2.0.22",
400
+ "version": "2.0.23",
401
401
  "description": "OBJ Deserializer for JSCAD",
402
402
  "homepage": "https://openjscad.xyz/",
403
403
  "repository": "https://github.com/jscad/OpenJSCAD.org",
@@ -429,7 +429,7 @@ module.exports={
429
429
  ],
430
430
  "license": "MIT",
431
431
  "dependencies": {
432
- "@jscad/modeling": "2.10.0"
432
+ "@jscad/modeling": "2.11.0"
433
433
  },
434
434
  "devDependencies": {
435
435
  "ava": "3.15.0",
@@ -441,13 +441,13 @@ module.exports={
441
441
  },{}],76:[function(require,module,exports){
442
442
  const{colors:colors,geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),mimeType="application/object",serialize=(e,...t)=>{e=Object.assign({},{statusCallback:null,triangulate:!0},e);let o=(t=flatten(t)).filter(e=>geometries.geom3.isA(e));if(0===o.length)throw new Error("only 3D geometries can be serialized to OBJ");t.length!==o.length&&console.warn("some objects could not be serialized to OBJ"),o=toArray(modifiers.generalize({snap:!0,triangulate:e.triangulate},o)),e.statusCallback&&e.statusCallback({progress:0});let r="# Wavefront OBJ file generated by JSCAD\n";const s=[];let a="default";return o.forEach((t,l)=>{e.statusCallback&&e.statusCallback({progress:100*l/o.length}),r+="\n";const i=getColorName(t),n=geometries.geom3.toPolygons(t).filter(e=>e.vertices.length>=3);n.forEach(e=>{e.vertices.forEach(e=>{const t=convertVertex(e);s.indexOf(t)<0&&(s.push(t),r+=`${t}\n`)})}),r+="\n",n.forEach(e=>{const t=e.vertices.map(e=>s.indexOf(convertVertex(e))+1),o=getColorName(e)||i||"default";o!==a&&(r+=`usemtl ${o}\n`,a=o),r+=`f ${t.join(" ")}\n`})}),e.statusCallback&&e.statusCallback({progress:100}),[r]},convertVertex=e=>`v ${e[0]} ${e[1]} ${e[2]}`,getColorName=e=>{let t;if(e.color){const o=e.color[0],r=e.color[1],s=e.color[2];let a=765;for(const e in colors.cssColors){const l=colors.cssColors[e],i=Math.abs(o-l[0])+Math.abs(r-l[1])+Math.abs(s-l[2]);if(i<a){if(t=e,0===i)break;a=i}}}return t};module.exports={serialize:serialize,mimeType:mimeType};
443
443
 
444
- },{"@jscad/array-utils":520,"@jscad/modeling":207}],77:[function(require,module,exports){
444
+ },{"@jscad/array-utils":521,"@jscad/modeling":207}],77:[function(require,module,exports){
445
445
  const{maths:maths,primitives:primitives}=require("@jscad/modeling"),{BinaryReader:BinaryReader}=require("@jscad/io-utils"),packageVersion=require("./package.json").version,deserialize=(e,s)=>{const t={filename:"stl",version:packageVersion,addMetaData:!0,output:"script"};(e=Object.assign({},t,e))&&e.statusCallback&&e.statusCallback({progress:0});const{filename:r,version:a,output:n,addMetaData:o}=e;s=isBuffer(s)?bufferToBinaryString(s):s;const l=isDataBinaryRobust(s);e&&e.statusCallback&&e.statusCallback({progress:33});e&&e.statusCallback&&e.statusCallback({progress:66});const i=("script"===n?formatAsJscad:formatAsCsg)((l?deserializeBinarySTL:deserializeAsciiSTL)(s,r,a,"script"===n?({vertices:e,triangles:s,normals:t,colors:r,index:a})=>toScript(e,s,null,r,a):({vertices:e,triangles:s,normals:t,colors:r})=>toPolyhedron(e,s,null,r)),o,a,r);return e&&e.statusCallback&&e.statusCallback({progress:100}),i},bufferToBinaryString=e=>{let s="";const t=new Uint8Array(e),r=t.byteLength;for(let e=0;e<r;e++)s+=String.fromCharCode(t[e]);return s},isBuffer=e=>void 0!==e.byteLength&&"function"==typeof e.slice,ensureString=e=>{if("string"!=typeof e){const s=new Uint8Array(e);let t="";for(let r=0;r<e.byteLength;r++)t+=String.fromCharCode(s[r]);return t}return e},isDataBinaryRobust=e=>{const s=ensureString(e);return null===/vertex[\s]+([-+]?[0-9]+\.?[0-9]*([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+[\s]+([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)+/g.exec(s)},formatAsJscad=(e,s,t,r)=>{let a="";return s&&(a=`\n //\n // producer: JSCAD STL Deserializer ${t}\n // date: ${new Date}\n // source: ${r}\n // objects: ${e.length}\n //\n `),a+="const {primitives} = require('@jscad/modeling')\n",a+=e.join("\n"),a+=`\nconst main = () => {\n return [${e.map((e,s)=>`solid${s+1}()`)}]\n}\n\nmodule.exports = {main}\n`},formatAsCsg=e=>e,deserializeBinarySTL=(e,s,t,r)=>{const a=[],n=[],o=[],l=[];let i=0,c=0,u=null;const p=parseInt("01000000000000000",2),h=parseInt("00000000000011111",2),d=parseInt("00000001111100000",2),g=parseInt("00111110000000000",2),m=new BinaryReader(e);let f=0,v=0,b=0,S=0,F=0,y=0;for(let e=0;e<80;e++)switch(f){case 6:b=m.readUInt8(),f+=1;continue;case 7:S=m.readUInt8(),f+=1;continue;case 8:F=m.readUInt8(),f+=1;continue;case 9:y=m.readUInt8(),f+=1;continue;default:switch(v=m.readChar()){case"C":case"O":case"L":case"R":case"=":f+=1}}10===f&&(u=[b/255,S/255,F/255,y/255]);const C=m.readUInt32();for(let e=0;e<C;e++){const e=[];e.push(m.readFloat()),e.push(m.readFloat()),e.push(m.readFloat());let s=[];s.push(m.readFloat()),s.push(m.readFloat()),s.push(m.readFloat());const t=[];t.push(m.readFloat()),t.push(m.readFloat()),t.push(m.readFloat());let r=[];r.push(m.readFloat()),r.push(m.readFloat()),r.push(m.readFloat());let v=0;for(let a=0;a<3;a++)isNaN(s[a])&&v++,isNaN(t[a])&&v++,isNaN(r[a])&&v++,isNaN(e[a])&&v++;v>0&&console.log("bad triangle vertice coords/normal: ",v),c+=v;const b=[];b.push(i++),b.push(i++),b.push(i++);const S=m.readUInt16();let F=null;if(10===f){const e=(S&h)/31,s=((S&d)>>>5)/31,t=((S&g)>>>10)/31,r=255;F=0===(S&p)?[e,s,t,r]:u,l.push(F)}if(0===v){const a=maths.vec3.subtract(maths.vec3.create(),t,s),n=maths.vec3.subtract(maths.vec3.create(),r,s),o=maths.vec3.cross(maths.vec3.create(),a,n);if(maths.vec3.dot(e,o)>0){const e=r;r=s,s=e}}a.push(s),a.push(t),a.push(r),n.push(b),o.push(e)}return c&&console.warn(`WARNING: import errors: ${c} (some triangles might be misaligned or missing)`),[r({vertices:a,triangles:n,normals:o,colors:l,index:1})]},deserializeAsciiSTL=(e,s,t,r)=>{let a=0;const n=e.split("endsolid"),o=[];for(let s=1;s<n.length;s++){const t=/\bfacet[\s\S]*?endloop/gim,n=[],l=[],i=[],c=[];let u=0,p=0;const h=e.match(t);if(null!=h){for(let e=0;e<h.length;e++){const s=/\bfacet\s+normal\s+(\S+)\s+(\S+)\s+(\S+)\s+outer\s+loop\s+vertex\s+(\S+)\s+(\S+)\s+(\S+)\s+vertex\s+(\S+)\s+(\S+)\s+(\S+)\s+vertex\s+(\S+)\s+(\S+)\s+(\S+)\s*/gim.exec(h[e]);if(null==s)continue;if(13!==s.length){console.log("Failed to parse "+h[e]);break}let t=0;for(let e=0;e<s.length;e++)"NaN"===s[e]&&(console.log("bad normal or triangle vertice #"+a+" "+e+": '"+s[e]+"', skipped"),t++);if(p+=t,t)continue;let r=1;const o=[];o.push(parseFloat(s[r++])),o.push(parseFloat(s[r++])),o.push(parseFloat(s[r++]));let c=[];c.push(parseFloat(s[r++])),c.push(parseFloat(s[r++])),c.push(parseFloat(s[r++]));const d=[];d.push(parseFloat(s[r++])),d.push(parseFloat(s[r++])),d.push(parseFloat(s[r++]));let g=[];g.push(parseFloat(s[r++])),g.push(parseFloat(s[r++])),g.push(parseFloat(s[r++]));const m=[];if(m.push(u++),m.push(u++),m.push(u++),0===t){const e=maths.vec3.subtract(maths.vec3.create(),d,c),s=maths.vec3.subtract(maths.vec3.create(),g,c),t=maths.vec3.cross(maths.vec3.create(),e,s);if(maths.vec3.dot(o,t)>0){const e=g;g=c,c=e}}n.push(c),n.push(d),n.push(g),i.push(o),l.push(m),a++}p&&console.warn(`WARNING: import errors: ${p} (some triangles might be misaligned or missing)`),o.push(r({vertices:n,triangles:l,colors:c,index:s}))}}return o},toPolyhedron=(e,s,t,r)=>{r&&s.length!==r.length&&(r=void 0);const a={orientation:"inward",points:e,faces:s,colors:r};return primitives.polyhedron(a)},toScript=(e,s,t,r,a)=>{let n=`\n//\n// solid ${a} : ${e.length} points, ${s.length} faces, ${r.length} colors\n//\nconst solid${a} = () => {\n`;n+=" const points = [\n";for(let s=0;s<e.length;s++)n+=` [${e[s]}],\n`;n+=" ]\n",n+=" const faces = [\n";for(let e=0;e<s.length;e++)n+=` [${s[e]}],\n`;if(n+=" ]\n",r&&s.length===r.length){n+=" const colors = [\n";for(let e=0;e<r.length;e++)n+=` [${r[e]}],\n`;n+=" ]\n"}else n+=" const colors = null\n";return n+=" return primitives.polyhedron({points, faces, colors, orientation: 'inside'})\n}\n"},extension="stl";module.exports={deserialize:deserialize,extension:"stl"};
446
446
 
447
447
  },{"./package.json":78,"@jscad/io-utils":65,"@jscad/modeling":207}],78:[function(require,module,exports){
448
448
  module.exports={
449
449
  "name": "@jscad/stl-deserializer",
450
- "version": "2.1.19",
450
+ "version": "2.1.20",
451
451
  "description": "STL Deserializer for JSCAD",
452
452
  "homepage": "https://openjscad.xyz/",
453
453
  "repository": "https://github.com/jscad/OpenJSCAD.org",
@@ -479,8 +479,8 @@ module.exports={
479
479
  ],
480
480
  "license": "MIT",
481
481
  "dependencies": {
482
- "@jscad/io-utils": "2.0.22",
483
- "@jscad/modeling": "2.10.0"
482
+ "@jscad/io-utils": "2.0.23",
483
+ "@jscad/modeling": "2.11.0"
484
484
  },
485
485
  "devDependencies": {
486
486
  "ava": "3.15.0",
@@ -498,7 +498,7 @@ const{geometries:geometries}=require("@jscad/modeling"),serializeBinary=(e,r)=>{
498
498
  },{"@jscad/modeling":207}],81:[function(require,module,exports){
499
499
  const{geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),{serializeBinary:serializeBinary}=require("./CSGToStlb"),{serializeText:serializeText}=require("./CSGToStla"),mimeType="application/sla",serialize=(e,...i)=>{e=Object.assign({},{binary:!0,statusCallback:null},e);let r=(i=flatten(i)).filter(e=>geometries.geom3.isA(e));if(0===r.length)throw new Error("only 3D geometries can be serialized to STL");return i.length!==r.length&&console.warn("some objects could not be serialized to STL"),r=toArray(modifiers.generalize({snap:!0,triangulate:!0},r)),e.binary?serializeBinary(r,e):serializeText(r,e)};module.exports={mimeType:mimeType,serialize:serialize};
500
500
 
501
- },{"./CSGToStla":79,"./CSGToStlb":80,"@jscad/array-utils":520,"@jscad/modeling":207}],82:[function(require,module,exports){
501
+ },{"./CSGToStla":79,"./CSGToStlb":80,"@jscad/array-utils":521,"@jscad/modeling":207}],82:[function(require,module,exports){
502
502
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CHAR="\t\n\r -퟿-�𐀀-􏿿",exports.S=" \t\r\n",exports.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",exports.NAME_CHAR="-"+exports.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",exports.CHAR_RE=new RegExp("^["+exports.CHAR+"]$","u"),exports.S_RE=new RegExp("^["+exports.S+"]+$","u"),exports.NAME_START_CHAR_RE=new RegExp("^["+exports.NAME_START_CHAR+"]$","u"),exports.NAME_CHAR_RE=new RegExp("^["+exports.NAME_CHAR+"]$","u"),exports.NAME_RE=new RegExp("^["+exports.NAME_START_CHAR+"]["+exports.NAME_CHAR+"]*$","u"),exports.NMTOKEN_RE=new RegExp("^["+exports.NAME_CHAR+"]+$","u");var TAB=9,NL=10,CR=13,SPACE=32;function isChar(e){return e>=SPACE&&e<=55295||e===NL||e===CR||e===TAB||e>=57344&&e<=65533||e>=65536&&e<=1114111}function isS(e){return e===SPACE||e===NL||e===CR||e===TAB}function isNameStartChar(e){return e>=65&&e<=90||e>=97&&e<=122||58===e||95===e||8204===e||8205===e||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}function isNameChar(e){return isNameStartChar(e)||e>=48&&e<=57||45===e||46===e||183===e||e>=768&&e<=879||e>=8255&&e<=8256}exports.S_LIST=[SPACE,NL,CR,TAB],exports.isChar=isChar,exports.isS=isS,exports.isNameStartChar=isNameStartChar,exports.isNameChar=isNameChar;
503
503
 
504
504
  },{}],83:[function(require,module,exports){
@@ -513,7 +513,7 @@ const{geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{fla
513
513
  },{"xmlchars/xml/1.0/ed5":82,"xmlchars/xml/1.1/ed2":83,"xmlchars/xmlns/1.0/ed3":84}],86:[function(require,module,exports){
514
514
  module.exports={
515
515
  "name": "@jscad/svg-deserializer",
516
- "version": "2.5.2",
516
+ "version": "2.5.4",
517
517
  "description": "SVG Deserializer for JSCAD",
518
518
  "homepage": "https://openjscad.xyz/",
519
519
  "repository": "https://github.com/jscad/OpenJSCAD.org",
@@ -546,7 +546,7 @@ module.exports={
546
546
  "license": "MIT",
547
547
  "dependencies": {
548
548
  "@jscad/array-utils": "2.1.4",
549
- "@jscad/modeling": "2.10.0",
549
+ "@jscad/modeling": "2.11.0",
550
550
  "saxes": "5.0.1"
551
551
  },
552
552
  "devDependencies": {
@@ -565,8 +565,8 @@ const{inchMM:inchMM,ptMM:ptMM,pcMM:pcMM,svgColors:svgColors}=require("./constant
565
565
  },{"./constants":87}],89:[function(require,module,exports){
566
566
  const saxes=require("saxes"),{colors:colors,transforms:transforms}=require("@jscad/modeling"),{toArray:toArray}=require("@jscad/array-utils"),version=require("../package.json").version,{cagLengthX:cagLengthX,cagLengthY:cagLengthY,svgColorForTarget:svgColorForTarget}=require("./helpers"),{svgSvg:svgSvg,svgRect:svgRect,svgCircle:svgCircle,svgGroup:svgGroup,svgLine:svgLine,svgPath:svgPath,svgEllipse:svgEllipse,svgPolygon:svgPolygon,svgPolyline:svgPolyline,svgUse:svgUse}=require("./svgElementHelpers"),shapesMapGeometry=require("./shapesMapGeometry"),shapesMapJscad=require("./shapesMapJscad"),deserialize=(s,e)=>{const t={addMetaData:!0,filename:"svg",output:"script",pxPmm:require("./constants").pxPmm,segments:32,target:"path",pathSelfClosed:"error",version:version};return"script"===(s=Object.assign({},t,s)).output?translate(e,s):instantiate(e,s)},instantiate=(s,e)=>{const{pxPmm:t}=e;if(e&&e.statusCallback&&e.statusCallback({progress:0}),createSvgParser(s,t),!svgObj)throw new Error("SVG parsing failed, no valid SVG data retrieved");e&&e.statusCallback&&e.statusCallback({progress:50});const n=objectify(e,svgObj);return e&&e.statusCallback&&e.statusCallback({progress:100}),n},translate=(s,e)=>{const{filename:t,version:n,pxPmm:r,addMetaData:o}=e;if(e&&e.statusCallback&&e.statusCallback({progress:0}),createSvgParser(s,r),!svgObj)throw new Error("SVG parsing failed, no valid SVG data retrieved");let a=o?`//\n // producer: JSCAD SVG Deserializer ${n}\n // date: ${new Date}\n // source: ${t}\n //\n`:"";return a+="const { colors, geometries, primitives, transforms } = require('@jscad/modeling')\n\n",e&&e.statusCallback&&e.statusCallback({progress:50}),a+=codify(e,svgObj),a+="\nmodule.exports = { main }",e&&e.statusCallback&&e.statusCallback({progress:100}),a};let svgUnitsX,svgUnitsY,svgUnitsV;const svgObjects=[],svgGroups=[],svgDefs=[];let svgObj,svgInDefs=!1,svgUnitsPmm=[1,1];const objectify=(s,e)=>{const{target:t,segments:n,pathSelfClosed:r}=s,o=svgGroups.length;svgGroups.push(e);let a=o;for(;a>0;)a--;let g=[];const l={svgUnitsPmm:svgUnitsPmm,svgUnitsX:svgUnitsX,svgUnitsY:svgUnitsY,svgUnitsV:svgUnitsV,level:o,target:t,svgGroups:svgGroups,segments:n,pathSelfClosed:r};for(a=0;a<e.objects.length;a++){const s=e.objects[a];let n=toArray(shapesMapGeometry(s,objectify,l));n=n.map(e=>{if("transforms"in s){let t=null,n=null,r=null;for(let e=0;e<s.transforms.length;e++){const o=s.transforms[e];"rotate"in o&&(t=o),"scale"in o&&(n=o),"translate"in o&&(r=o)}if(null!==n){let s=Math.abs(n.scale[0]),t=Math.abs(n.scale[1]);e=transforms.scale([s,t,1],e),s=n.scale[0],t=n.scale[1],s<0&&(e=transforms.mirrorX(e)),t<0&&(e=transforms.mirrorY(e))}if(null!==t){const s=0-.017453292519943295*t.rotate;e=transforms.rotateZ(s,e)}if(null!==r){const s=cagLengthX(r.translate[0],svgUnitsPmm,svgUnitsX),t=0-cagLengthY(r.translate[1],svgUnitsPmm,svgUnitsY);e=transforms.translate([s,t,0],e)}}const n=svgColorForTarget(t,s);return n&&(e=colors.colorize(n,e)),e}),g=g.concat(n)}return svgGroups.pop(),g},codify=(s,e)=>{const{target:t,segments:n}=s,r=svgGroups.length;svgGroups.push(e);let o=" ",a=r;for(;a>0;)o+=" ",a--;let g="";0===r&&(g+="function main(params) {\n let levels = {}\n let paths = {}\n let parts\n");const l="levels.l"+r;for(g+=`${o}${l} = []\n`,a=0;a<e.objects.length;a++){const s=e.objects[a],i="paths.p"+a;if(g+=shapesMapJscad(s,codify,{level:r,indent:o,ln:l,on:i,svgUnitsPmm:svgUnitsPmm,svgUnitsX:svgUnitsX,svgUnitsY:svgUnitsY,svgUnitsV:svgUnitsV,svgGroups:svgGroups,target:t,segments:n}),"transforms"in s){let e=null,t=null,n=null;for(let r=0;r<s.transforms.length;r++){const o=s.transforms[r];"rotate"in o&&(e=o),"scale"in o&&(t=o),"translate"in o&&(n=o)}if(null!==t){let s=Math.abs(t.scale[0]),e=Math.abs(t.scale[1]);g+=`${o}${i} = transforms.scale([${s}, ${e}, 1], ${i})\n`,(s=t.scale[0])<0&&(g+=`${o}${i} = transforms.mirrorX(${i})\n`),(e=t.scale[1])<0&&(g+=`${o}${i} = transforms.mirrorY(${i})\n`)}if(null!==e){g+=`${o}${i} = transforms.rotateZ(${0-.017453292519943295*e.rotate}, ${i})\n`}if(null!==n){g+=`${o}${i} = transforms.translate([${cagLengthX(n.translate[0],svgUnitsPmm,svgUnitsX)}, ${0-cagLengthY(n.translate[1],svgUnitsPmm,svgUnitsY)}, 0], ${i})\n`}}const v=svgColorForTarget(t,s);v&&(g+=`${o}${i} = colors.colorize([${v}], ${i})\n`),g+=`${o}${l} = ${l}.concat(${i})\n\n`}return 0===r&&(g+=o+"return "+l+"\n",g+="}\n"),svgGroups.pop(),g},createSvgParser=(s,e)=>{const t=new saxes.SaxesParser;return void 0!==e&&e>t.pxPmm&&(t.pxPmm=e),t.on("error",s=>{console.log(`ERROR: SVG file, line ${t.line}, column ${t.column}`),console.log(s)}),t.on("opentag",s=>{const n={SVG:svgSvg,G:svgGroup,RECT:svgRect,CIRCLE:svgCircle,ELLIPSE:svgEllipse,LINE:svgLine,POLYLINE:svgPolyline,POLYGON:svgPolygon,PATH:svgPath,USE:svgUse,DEFS:()=>{svgInDefs=!0},DESC:()=>void 0,TITLE:()=>void 0,STYLE:()=>void 0,undefined:()=>console.log("WARNING: unsupported SVG element: "+s.name)};s.attributes.position=[t.line+1,t.column+1];const r=s.name.toUpperCase(),o=n[r]?n[r](s.attributes,{svgObjects:svgObjects,customPxPmm:e}):void 0;if(o)if("id"in o&&(svgObjects[o.id]=o),"svg"===o.type)svgGroups.push(o),svgUnitsPmm=o.unitsPmm,svgUnitsX=o.viewW,svgUnitsY=o.viewH,svgUnitsV=o.viewP;else if(!0===svgInDefs){if(svgDefs.length>0){const s=svgDefs.pop();"objects"in s&&s.objects.push(o),svgDefs.push(s)}"group"===o.type&&svgDefs.push(o)}else{if(svgGroups.length>0){const s=svgGroups.pop();"objects"in s&&s.objects.push(o),svgGroups.push(s)}"group"===o.type&&svgGroups.push(o)}}),t.on("closetag",s=>{const e=()=>!0===svgInDefs?svgDefs.pop():svgGroups.pop(),t={SVG:e,DEFS:()=>{svgInDefs=!1},USE:e,G:e,undefined:()=>{}},n=s.name.toUpperCase(),r=t[n]?t[n]():void 0;0===svgGroups.length&&(svgObj=r)}),t.on("end",()=>{}),t.write(s).close(),t},extension="svg";module.exports={deserialize:deserialize,extension:"svg"};
567
567
 
568
- },{"../package.json":86,"./constants":87,"./helpers":88,"./shapesMapGeometry":90,"./shapesMapJscad":91,"./svgElementHelpers":92,"@jscad/array-utils":520,"@jscad/modeling":207,"saxes":85}],90:[function(require,module,exports){
569
- const{geometries:geometries,primitives:primitives}=require("@jscad/modeling"),{svg2cagX:svg2cagX,svg2cagY:svg2cagY,cagLengthX:cagLengthX,cagLengthY:cagLengthY,cagLengthP:cagLengthP,reflect:reflect}=require("./helpers"),shapesMapGeometry=(e,s,a)=>{const{svgUnitsPmm:t,svgUnitsX:g,svgUnitsY:o,svgUnitsV:r,svgGroups:n,target:c,segments:p,pathSelfClosed:i}=a;return{group:e=>s({target:c,segments:p},e),rect:(e,s,a,t,g,o,r)=>{let n=cagLengthX(e.x,s,a),p=0-cagLengthY(e.y,s,t);const i=cagLengthX(e.width,s,a),l=cagLengthY(e.height,s,t),v=cagLengthX(e.rx,s,a);let h;return i>0&&l>0&&(n+=i/2,p-=l/2,h=0===v?primitives.rectangle({center:[n,p],size:[i,l]}):primitives.roundedRectangle({center:[n,p],segments:r,size:[i,l],roundRadius:v}),"path"===c&&(h=geometries.path2.fromPoints({closed:!0},geometries.geom2.toPoints(h)))),h},circle:(e,s,a,t,g,o,r)=>{const n=cagLengthX(e.x,s,a),p=0-cagLengthY(e.y,s,t),i=cagLengthP(e.radius,s,g);let l;return i>0&&(l=primitives.circle({center:[n,p],segments:r,radius:i}),"path"===c&&(l=geometries.path2.fromPoints({closed:!0},geometries.geom2.toPoints(l)))),l},ellipse:(e,s,a,t,g,o,r)=>{const n=cagLengthX(e.rx,s,a),p=cagLengthY(e.ry,s,t),i=cagLengthX(e.cx,s,a),l=0-cagLengthY(e.cy,s,t);let v;return n>0&&p>0&&(v=primitives.ellipse({center:[i,l],segments:r,radius:[n,p]}),"path"===c&&(v=geometries.path2.fromPoints({closed:!0},geometries.geom2.toPoints(v)))),v},line:(e,s,a,t,g)=>{const o=cagLengthX(e.x1,s,a),r=0-cagLengthY(e.y1,s,t),n=cagLengthX(e.x2,s,a),c=0-cagLengthY(e.y2,s,t);return primitives.line([[o,r],[n,c]])},polygon:(e,s,a,t)=>{const g=[];for(let o=0;o<e.points.length;o++){const r=e.points[o];if("x"in r&&"y"in r){const e=cagLengthX(r.x,s,a),o=0-cagLengthY(r.y,s,t);g.push([e,o])}}return"geom2"===c?geometries.geom2.fromPoints(g):geometries.path2.fromPoints({},g)},polyline:(e,s,a,t,g)=>{const o=[];for(let g=0;g<e.points.length;g++){const r=e.points[g];if("x"in r&&"y"in r){const e=cagLengthX(r.x,s,a),g=0-cagLengthY(r.y,s,t);o.push([e,g])}}return primitives.line(o)},path:(e,s,a,t,g,o,r)=>{const n=expandPath(e,s,a,t,g,o,r,i);return Object.entries(n).sort((e,s)=>e[0].localeCompare(s[0])).map(e=>{const s=e[1];if("geom2"===c&&s.isClosed){const e=geometries.path2.toPoints(s).slice();return e.push(e[0]),geometries.geom2.fromPoints(e)}return s})}}[e.type](e,t,g,o,r,n,p)};module.exports=shapesMapGeometry;const appendPoints=(e,s)=>s?geometries.path2.appendPoints(e,s):geometries.path2.fromPoints({},e),expandPath=(e,s,a,t,g,o,r,n)=>{const c={};let p=0,i=0,l=0,v=0,h=0,m="path"+h,F=!1,d=0,X=0,f=0,Y=0;const P=()=>{m="path"+ ++h,F=!1},u=()=>{c[m]||(c[m]=geometries.path2.fromPoints({},[]))};for(let a=0;a<e.commands.length;a++){const t=e.commands[a],g=t.p;let o=0;switch(t.c){case"m":for(0===a&&(l=0,v=0),g.length>=o+2&&(l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),P(),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]]),p=l,i=v);g.length>=o+2;)l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"M":for(g.length>=o+2&&(l=parseFloat(g[o++]),v=parseFloat(g[o++]),P(),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]]),p=l,i=v);g.length>=o+2;)l=parseFloat(g[o++]),v=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"a":for(;g.length>=o+7;){const e=parseFloat(g[o++]),a=parseFloat(g[o++]),t=0-.017453292519943295*parseFloat(g[o++]),n="1"===g[o++],p="1"===g[o++];l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendArc({segments:r,endpoint:[svg2cagX(l,s),svg2cagY(v,s)],radius:[svg2cagX(e,s),svg2cagY(a,s)],xaxisrotation:t,clockwise:p,large:n},c[m])}break;case"A":for(;g.length>=o+7;){const e=parseFloat(g[o++]),a=parseFloat(g[o++]),t=0-.017453292519943295*parseFloat(g[o++]),n="1"===g[o++],p="1"===g[o++];l=parseFloat(g[o++]),v=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendArc({segments:r,endpoint:[svg2cagX(l,s),svg2cagY(v,s)],radius:[svg2cagX(e,s),svg2cagY(a,s)],xaxisrotation:t,clockwise:p,large:n},c[m])}break;case"c":for(;g.length>=o+6;){const e=l+parseFloat(g[o++]),a=v+parseFloat(g[o++]);d=l+parseFloat(g[o++]),X=v+parseFloat(g[o++]),l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(e,s),svg2cagY(a,s)],[svg2cagX(d,s),svg2cagY(X,s)],[svg2cagX(l,s),svg2cagY(v,s)]]},c[m]);const t=reflect(d,X,l,v);d=t[0],X=t[1]}break;case"C":for(;g.length>=o+6;){const e=parseFloat(g[o++]),a=parseFloat(g[o++]);d=parseFloat(g[o++]),X=parseFloat(g[o++]),l=parseFloat(g[o++]),v=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(e,s),svg2cagY(a,s)],[svg2cagX(d,s),svg2cagY(X,s)],[svg2cagX(l,s),svg2cagY(v,s)]]},c[m]);const t=reflect(d,X,l,v);d=t[0],X=t[1]}break;case"q":for(;g.length>=o+4;){f=l+parseFloat(g[o++]),Y=v+parseFloat(g[o++]),l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(f,s),svg2cagY(Y,s)],[svg2cagX(f,s),svg2cagY(Y,s)],[svg2cagX(l,s),svg2cagY(v,s)]]},c[m]);const e=reflect(f,Y,l,v);f=e[0],Y=e[1]}break;case"Q":for(;g.length>=o+4;){f=parseFloat(g[o++]),Y=parseFloat(g[o++]),l=parseFloat(g[o++]),v=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(f,s),svg2cagY(Y,s)],[svg2cagX(f,s),svg2cagY(Y,s)],[svg2cagX(l,s),svg2cagY(v,s)]]},c[m]);const e=reflect(f,Y,l,v);f=e[0],Y=e[1]}break;case"t":for(;g.length>=o+2;){l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(f,s),svg2cagY(Y,s)],[svg2cagX(f,s),svg2cagY(Y,s)],[l,v]]},c[m]);const e=reflect(f,Y,l,v);f=e[0],Y=e[1]}break;case"T":for(;g.length>=o+2;){l=parseFloat(g[o++]),v=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(f,s),svg2cagY(Y,s)],[svg2cagX(f,s),svg2cagY(Y,s)],[svg2cagX(l,s),svg2cagY(v,s)]]},c[m]);const e=reflect(f,Y,l,v);f=e[0],Y=e[1]}break;case"s":for(;g.length>=o+4;){const e=d,a=X;d=l+parseFloat(g[o++]),X=v+parseFloat(g[o++]),l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(e,s),svg2cagY(a,s)],[svg2cagX(d,s),svg2cagY(X,s)],[svg2cagX(l,s),svg2cagY(v,s)]]},c[m]);const t=reflect(d,X,l,v);d=t[0],X=t[1]}break;case"S":for(;g.length>=o+4;){const e=d,a=X;d=parseFloat(g[o++]),X=parseFloat(g[o++]),l=parseFloat(g[o++]),v=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(e,s),svg2cagY(a,s)],[svg2cagX(d,s),svg2cagY(X,s)],[svg2cagX(l,s),svg2cagY(v,s)]]},c[m]);const t=reflect(d,X,l,v);d=t[0],X=t[1]}break;case"h":for(;g.length>=o+1;)l+=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"H":for(;g.length>=o+1;)l=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"l":for(;g.length>=o+2;)l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"L":for(;g.length>=o+2;)l=parseFloat(g[o++]),v=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"v":for(;g.length>=o+1;)v+=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"V":for(;g.length>=o+1;)v=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"z":case"Z":c[m]=geometries.path2.close(c[m]),l=p,v=i,F=!0;break;default:console.log("Warning: Unknow PATH command ["+t.c+"]")}const h=e=>"z"===e||"Z"===e;if(!0!==F&&c[m]&&c[m].isClosed){let s=e.commands[a+1];if(!s||!h(s.c))if("trim"===n)for(;s&&!h(s.c);)a++,s=e.commands[a+1];else{if("split"!==n)throw new Error(`Malformed svg path at ${e.position[0]}:${t.pos}. Path closed itself with command #${a} ${t.c}${g.join(" ")}`);P()}}}return c};
568
+ },{"../package.json":86,"./constants":87,"./helpers":88,"./shapesMapGeometry":90,"./shapesMapJscad":91,"./svgElementHelpers":92,"@jscad/array-utils":521,"@jscad/modeling":207,"saxes":85}],90:[function(require,module,exports){
569
+ const{geometries:geometries,primitives:primitives}=require("@jscad/modeling"),{svg2cagX:svg2cagX,svg2cagY:svg2cagY,cagLengthX:cagLengthX,cagLengthY:cagLengthY,cagLengthP:cagLengthP,reflect:reflect}=require("./helpers"),shapesMapGeometry=(e,s,a)=>{const{svgUnitsPmm:t,svgUnitsX:g,svgUnitsY:o,svgUnitsV:r,svgGroups:n,target:c,segments:p,pathSelfClosed:i}=a;return{group:e=>s({target:c,segments:p},e),rect:(e,s,a,t,g,o,r)=>{let n=cagLengthX(e.x,s,a),p=0-cagLengthY(e.y,s,t);const i=cagLengthX(e.width,s,a),l=cagLengthY(e.height,s,t),v=cagLengthX(e.rx,s,a);let h;return i>0&&l>0&&(n+=i/2,p-=l/2,h=0===v?primitives.rectangle({center:[n,p],size:[i,l]}):primitives.roundedRectangle({center:[n,p],segments:r,size:[i,l],roundRadius:v}),"path"===c&&(h=geometries.path2.fromPoints({closed:!0},geometries.geom2.toPoints(h)))),h},circle:(e,s,a,t,g,o,r)=>{const n=cagLengthX(e.x,s,a),p=0-cagLengthY(e.y,s,t),i=cagLengthP(e.radius,s,g);let l;return i>0&&(l=primitives.circle({center:[n,p],segments:r,radius:i}),"path"===c&&(l=geometries.path2.fromPoints({closed:!0},geometries.geom2.toPoints(l)))),l},ellipse:(e,s,a,t,g,o,r)=>{const n=cagLengthX(e.rx,s,a),p=cagLengthY(e.ry,s,t),i=cagLengthX(e.cx,s,a),l=0-cagLengthY(e.cy,s,t);let v;return n>0&&p>0&&(v=primitives.ellipse({center:[i,l],segments:r,radius:[n,p]}),"path"===c&&(v=geometries.path2.fromPoints({closed:!0},geometries.geom2.toPoints(v)))),v},line:(e,s,a,t,g)=>{const o=cagLengthX(e.x1,s,a),r=0-cagLengthY(e.y1,s,t),n=cagLengthX(e.x2,s,a),c=0-cagLengthY(e.y2,s,t);return primitives.line([[o,r],[n,c]])},polygon:(e,s,a,t)=>{const g=[];for(let o=0;o<e.points.length;o++){const r=e.points[o];if("x"in r&&"y"in r){const e=cagLengthX(r.x,s,a),o=0-cagLengthY(r.y,s,t);g.push([e,o])}}return"geom2"===c?geometries.geom2.fromPoints(g):geometries.path2.fromPoints({},g)},polyline:(e,s,a,t,g)=>{const o=[];for(let g=0;g<e.points.length;g++){const r=e.points[g];if("x"in r&&"y"in r){const e=cagLengthX(r.x,s,a),g=0-cagLengthY(r.y,s,t);o.push([e,g])}}return primitives.line(o)},path:(e,s,a,t,g,o,r)=>{const n=expandPath(e,s,a,t,g,o,r,i);return Object.entries(n).sort((e,s)=>e[0].localeCompare(s[0])).map(e=>{const s=e[1];if("geom2"===c&&s.isClosed){const e=geometries.path2.toPoints(s).slice();return e.push(e[0]),geometries.geom2.fromPoints(e)}return s})}}[e.type](e,t,g,o,r,n,p)};module.exports=shapesMapGeometry;const appendPoints=(e,s)=>s?geometries.path2.appendPoints(e,s):geometries.path2.fromPoints({},e),expandPath=(e,s,a,t,g,o,r,n)=>{const c={};let p=0,i=0,l=0,v=0,h=0,m="path"+h,F=!1,d=0,X=0,f=0,Y=0;const P=()=>{m="path"+ ++h,F=!1},u=()=>{c[m]||(c[m]=geometries.path2.fromPoints({},[]))};for(let a=0;a<e.commands.length;a++){const t=e.commands[a],g=t.p;let o=0;switch(t.c){case"m":for(0===a&&(l=0,v=0),g.length>=o+2&&(l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),P(),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]]),p=l,i=v);g.length>=o+2;)l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"M":for(g.length>=o+2&&(l=parseFloat(g[o++]),v=parseFloat(g[o++]),P(),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]]),p=l,i=v);g.length>=o+2;)l=parseFloat(g[o++]),v=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"a":for(;g.length>=o+7;){const e=parseFloat(g[o++]),a=parseFloat(g[o++]),t=0-.017453292519943295*parseFloat(g[o++]),n="1"===g[o++],p="1"===g[o++];l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendArc({segments:r,endpoint:[svg2cagX(l,s),svg2cagY(v,s)],radius:[svg2cagX(e,s),svg2cagY(a,s)],xaxisrotation:t,clockwise:p,large:n},c[m])}break;case"A":for(;g.length>=o+7;){const e=parseFloat(g[o++]),a=parseFloat(g[o++]),t=0-.017453292519943295*parseFloat(g[o++]),n="1"===g[o++],p="1"===g[o++];l=parseFloat(g[o++]),v=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendArc({segments:r,endpoint:[svg2cagX(l,s),svg2cagY(v,s)],radius:[svg2cagX(e,s),svg2cagY(a,s)],xaxisrotation:t,clockwise:p,large:n},c[m])}break;case"c":for(;g.length>=o+6;){const e=l+parseFloat(g[o++]),a=v+parseFloat(g[o++]);d=l+parseFloat(g[o++]),X=v+parseFloat(g[o++]),l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(e,s),svg2cagY(a,s)],[svg2cagX(d,s),svg2cagY(X,s)],[svg2cagX(l,s),svg2cagY(v,s)]]},c[m]);const t=reflect(d,X,l,v);d=t[0],X=t[1]}break;case"C":for(;g.length>=o+6;){const e=parseFloat(g[o++]),a=parseFloat(g[o++]);d=parseFloat(g[o++]),X=parseFloat(g[o++]),l=parseFloat(g[o++]),v=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(e,s),svg2cagY(a,s)],[svg2cagX(d,s),svg2cagY(X,s)],[svg2cagX(l,s),svg2cagY(v,s)]]},c[m]);const t=reflect(d,X,l,v);d=t[0],X=t[1]}break;case"q":for(;g.length>=o+4;){f=l+parseFloat(g[o++]),Y=v+parseFloat(g[o++]),l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(f,s),svg2cagY(Y,s)],[svg2cagX(f,s),svg2cagY(Y,s)],[svg2cagX(l,s),svg2cagY(v,s)]]},c[m]);const e=reflect(f,Y,l,v);f=e[0],Y=e[1]}break;case"Q":for(;g.length>=o+4;){f=parseFloat(g[o++]),Y=parseFloat(g[o++]),l=parseFloat(g[o++]),v=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(f,s),svg2cagY(Y,s)],[svg2cagX(f,s),svg2cagY(Y,s)],[svg2cagX(l,s),svg2cagY(v,s)]]},c[m]);const e=reflect(f,Y,l,v);f=e[0],Y=e[1]}break;case"t":for(;g.length>=o+2;){l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(f,s),svg2cagY(Y,s)],[svg2cagX(f,s),svg2cagY(Y,s)],[l,v]]},c[m]);const e=reflect(f,Y,l,v);f=e[0],Y=e[1]}break;case"T":for(;g.length>=o+2;){l=parseFloat(g[o++]),v=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(f,s),svg2cagY(Y,s)],[svg2cagX(f,s),svg2cagY(Y,s)],[svg2cagX(l,s),svg2cagY(v,s)]]},c[m]);const e=reflect(f,Y,l,v);f=e[0],Y=e[1]}break;case"s":for(;g.length>=o+4;){const e=d,a=X;d=l+parseFloat(g[o++]),X=v+parseFloat(g[o++]),l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(e,s),svg2cagY(a,s)],[svg2cagX(d,s),svg2cagY(X,s)],[svg2cagX(l,s),svg2cagY(v,s)]]},c[m]);const t=reflect(d,X,l,v);d=t[0],X=t[1]}break;case"S":for(;g.length>=o+4;){const e=d,a=X;d=parseFloat(g[o++]),X=parseFloat(g[o++]),l=parseFloat(g[o++]),v=parseFloat(g[o++]),u(),c[m]=geometries.path2.appendBezier({segments:r,controlPoints:[[svg2cagX(e,s),svg2cagY(a,s)],[svg2cagX(d,s),svg2cagY(X,s)],[svg2cagX(l,s),svg2cagY(v,s)]]},c[m]);const t=reflect(d,X,l,v);d=t[0],X=t[1]}break;case"h":for(;g.length>=o+1;)l+=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"H":for(;g.length>=o+1;)l=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"l":for(;g.length>=o+2;)l+=parseFloat(g[o++]),v+=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"L":for(;g.length>=o+2;)l=parseFloat(g[o++]),v=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"v":for(;g.length>=o+1;)v+=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"V":for(;g.length>=o+1;)v=parseFloat(g[o++]),c[m]=appendPoints([[svg2cagX(l,s),svg2cagY(v,s)]],c[m]);break;case"z":case"Z":c[m]=geometries.path2.close(c[m]),l=p,v=i,F=!0;break;default:console.log("Warning: Unknow PATH command ["+t.c+"]")}const h=e=>"z"===e||"Z"===e;if(!0!==F&&c[m]&&c[m].isClosed){let s=e.commands[a+1];if(s&&!h(s.c))if("trim"===n)for(;s&&!h(s.c);)a++,s=e.commands[a+1];else{if("split"!==n)throw new Error(`Malformed svg path at ${e.position[0]}:${t.pos}. Path closed itself with command #${a} ${t.c}${g.join(" ")}`);P()}}}return c};
570
570
 
571
571
  },{"./helpers":88,"@jscad/modeling":207}],91:[function(require,module,exports){
572
572
  const{svg2cagX:svg2cagX,svg2cagY:svg2cagY,cagLengthX:cagLengthX,cagLengthY:cagLengthY,cagLengthP:cagLengthP,reflect:reflect}=require("./helpers"),shapesMap=(e,t,s)=>{const{level:a,indent:g,on:n,svgUnitsPmm:o,svgUnitsX:r,svgUnitsY:$,svgUnitsV:i,svgGroups:c,target:p,segments:h}=s;return{group:e=>{let s=t({target:p,segments:h},e);return s+=`${g}${n} = levels.l${a+1}\n`},rect:(e,t,s,a,o,r,$,i)=>{let c=cagLengthX(e.x,t,s),h=0-cagLengthY(e.y,t,a);const l=cagLengthX(e.width,t,s),f=cagLengthY(e.height,t,a),v=cagLengthX(e.rx,t,s);let m;return l>0&&f>0&&(c=(c+l/2).toFixed(4),h=(h-f/2).toFixed(4),m=0===v?`${g}${n} = primitives.rectangle({center: [${c}, ${h}], size: [${l}, ${f}]}) // line ${e.position}\n`:`${g}${n} = primitives.roundedRectangle({center: [${c}, ${h}], segments: ${i}, size: [${l}, ${f}], roundRadius: ${v}}) // line ${e.position}\n`,"path"===p&&(m+=`${g}${n} = geometries.path2.fromPoints({closed: true}, geometries.geom2.toPoints(${n}))\n`)),m},circle:(e,t,s,a,o,r,$,i)=>{const c=cagLengthX(e.x,t,s),h=0-cagLengthY(e.y,t,a),l=cagLengthP(e.radius,t,o);let f;return l>0&&(f=`${g}${n} = primitives.circle({center: [${c}, ${h}], segments: ${i}, radius: ${l}}) // line ${e.position}\n`,"path"===p&&(f+=`${g}${n} = geometries.path2.fromPoints({closed: true}, geometries.geom2.toPoints(${n}))\n`)),f},ellipse:(e,t,s,a,o,r,$,i)=>{const c=cagLengthX(e.rx,t,s),h=cagLengthY(e.ry,t,a),l=cagLengthX(e.cx,t,s),f=0-cagLengthY(e.cy,t,a);let v;return c>0&&h>0&&(v=`${g}${n} = primitives.ellipse({center: [${l}, ${f}], segments: ${i}, radius: [${c}, ${h}]}) // line ${e.position}\n`,"path"===p&&(v+=`${g}${n} = geometries.path2.fromPoints({closed: true}, geometries.geom2.toPoints(${n}))\n`)),v},line:(e,t,s,a,o)=>{const r=cagLengthX(e.x1,t,s),$=0-cagLengthY(e.y1,t,a),i=cagLengthX(e.x2,t,s),c=0-cagLengthY(e.y2,t,a);return`${g}${n} = primitives.line([[${r}, ${$}], [${i}, ${c}]]) // line ${e.position}\n`},polygon:(e,t,s,a)=>{let o=`${g}${n} = primitives.polygon({points: [\n`;for(let n=0;n<e.points.length;n++){const r=e.points[n];if("x"in r&&"y"in r){const e=cagLengthX(r.x,t,s),n=0-cagLengthY(r.y,t,a);o+=`${g} [${e}, ${n}],\n`}}return o+=`${g}]}) // line ${e.position}\n`,"path"===p&&(o+=`${g}${n} = geometries.path2.fromPoints({closed: true}, geometries.geom2.toPoints(${n}))\n`),o},polyline:(e,t,s,a,o)=>{let r=`${g}${n} = geometries.path2.fromPoints({}, [\n`;for(let n=0;n<e.points.length;n++){const o=e.points[n];if("x"in o&&"y"in o){const e=cagLengthX(o.x,t,s),n=0-cagLengthY(o.y,t,a);r+=`${g} [${e}, ${n}],\n`}}return r+=`${g}]) // line ${e.position}\n`},path:path}[e.type](e,o,r,$,i,s,c,h)};module.exports=shapesMap;const path=(e,t,s,a,g,n,o,r)=>{const{indent:$,on:i,target:c}=n;let p=`${$}parts = [] // line ${e.position}\n`,h=0,l=0,f=0,v=0,m=0,F=i+m,X=!1,Y=0,d=0,P=0,u=0;for(let s=0;s<e.commands.length;s++){const a=e.commands[s],g=a.p;switch(a.c){case"m":for(0===s&&(f=0,v=0),m>0&&!1===X&&(p+=`${$}parts.push(${F})\n`),g.length>=2&&(f+=parseFloat(g.shift()),v+=parseFloat(g.shift()),X=!1,p+=`${$}${F=i+ ++m} = geometries.path2.fromPoints({}, [[${svg2cagX(f,t)}, ${svg2cagY(v,t)}]])\n`,h=f,l=v);g.length>=2;)f+=parseFloat(g.shift()),v+=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendPoints([${svg2cagX(f,t)}, ${svg2cagY(v,t)}], ${F})\n`;break;case"M":for(m>0&&!1===X&&(p+=`${$}parts.push(${F})\n`),g.length>=2&&(f=parseFloat(g.shift()),v=parseFloat(g.shift()),X=!1,p+=`${$}${F=i+ ++m} = geometries.path2.fromPoints({}, [[${svg2cagX(f,t)}, ${svg2cagY(v,t)}]])\n`,h=f,l=v);g.length>=2;)f=parseFloat(g.shift()),v=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendPoints([${svg2cagX(f,t)}, ${svg2cagY(v,t)}], ${F})\n`;break;case"a":for(;g.length>=7;){const e=parseFloat(g.shift()),s=parseFloat(g.shift()),a=0-.017453292519943295*parseFloat(g.shift()),n="1"===g.shift(),o="1"===g.shift();f+=parseFloat(g.shift()),v+=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendArc({segments: ${r}, endpoint: [${svg2cagX(f,t)}, ${svg2cagY(v,t)}], radius: [${svg2cagX(e,t)}, ${svg2cagY(s,t)}], xaxisrotation: ${a}, clockwise: ${o}, large: ${n}}, ${F})\n`}break;case"A":for(;g.length>=7;){const e=parseFloat(g.shift()),s=parseFloat(g.shift()),a=0-.017453292519943295*parseFloat(g.shift()),n="1"===g.shift(),o="1"===g.shift();f=parseFloat(g.shift()),v=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendArc({segments: ${r}, endpoint: [${svg2cagX(f,t)}, ${svg2cagY(v,t)}], radius: [${svg2cagX(e,t)}, ${svg2cagY(s,t)}], xaxisrotation: ${a}, clockwise: ${o}, large: ${n}}, ${F})\n`}break;case"c":for(;g.length>=6;){const e=f+parseFloat(g.shift()),s=v+parseFloat(g.shift());Y=f+parseFloat(g.shift()),d=v+parseFloat(g.shift()),f+=parseFloat(g.shift()),v+=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendBezier({segments: ${r}, controlPoints: [[${svg2cagX(e,t)}, ${svg2cagY(s,t)}], [${svg2cagX(Y,t)}, ${svg2cagY(d,t)}], [${svg2cagX(f,t)}, ${svg2cagY(v,t)}]]}, ${F})\n`;const a=reflect(Y,d,f,v);Y=a[0],d=a[1]}break;case"C":for(;g.length>=6;){const e=parseFloat(g.shift()),s=parseFloat(g.shift());Y=parseFloat(g.shift()),d=parseFloat(g.shift()),f=parseFloat(g.shift()),v=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendBezier({segments: ${r}, controlPoints: [[${svg2cagX(e,t)}, ${svg2cagY(s,t)}], [${svg2cagX(Y,t)}, ${svg2cagY(d,t)}], [${svg2cagX(f,t)}, ${svg2cagY(v,t)}]]}, ${F})\n`;const a=reflect(Y,d,f,v);Y=a[0],d=a[1]}break;case"q":for(;g.length>=4;){P=f+parseFloat(g.shift()),u=v+parseFloat(g.shift()),f+=parseFloat(g.shift()),v+=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendBezier({segments: ${r}, controlPoints: [[${svg2cagX(P,t)}, ${svg2cagY(u,t)}], [${svg2cagX(f,t)}, ${svg2cagY(v,t)}]]}, ${F})\n`;const e=reflect(P,u,f,v);P=e[0],u=e[1]}break;case"Q":for(;g.length>=4;){P=parseFloat(g.shift()),u=parseFloat(g.shift()),f=parseFloat(g.shift()),v=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendBezier({segments: ${r}, controlPoints: [[${svg2cagX(P,t)}, ${svg2cagY(u,t)}], [${svg2cagX(f,t)}, ${svg2cagY(v,t)}]]}, ${F})\n`;const e=reflect(P,u,f,v);P=e[0],u=e[1]}break;case"t":for(;g.length>=2;){f+=parseFloat(g.shift()),v+=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendBezier({segments: ${r}, controlPoints: [[${svg2cagX(P,t)}, ${svg2cagY(u,t)}], [${svg2cagX(f,t)}, ${svg2cagY(v,t)}]]}, ${F})\n`;const e=reflect(P,u,f,v);P=e[0],u=e[1]}break;case"T":for(;g.length>=2;){f=parseFloat(g.shift()),v=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendBezier({segments: ${r}, controlPoints: [[${svg2cagX(P,t)}, ${svg2cagY(u,t)}], [${svg2cagX(f,t)}, ${svg2cagY(v,t)}]]}, ${F})\n`;const e=reflect(P,u,f,v);P=e[0],u=e[1]}break;case"s":for(;g.length>=4;){const e=Y,s=d;Y=f+parseFloat(g.shift()),d=v+parseFloat(g.shift()),f+=parseFloat(g.shift()),v+=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendBezier({segments: ${r}, controlPoints: [[${svg2cagX(e,t)}, ${svg2cagY(s,t)}], [${svg2cagX(Y,t)}, ${svg2cagY(d,t)}], [${svg2cagX(f,t)}, ${svg2cagY(v,t)}]]}, ${F})\n`;const a=reflect(Y,d,f,v);Y=a[0],d=a[1]}break;case"S":for(;g.length>=4;){const e=Y,s=d;Y=parseFloat(g.shift()),d=parseFloat(g.shift()),f=parseFloat(g.shift()),v=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendBezier({segments: ${r}, controlPoints: [[${svg2cagX(e,t)}, ${svg2cagY(s,t)}], [${svg2cagX(Y,t)}, ${svg2cagY(d,t)}], [${svg2cagX(f,t)}, ${svg2cagY(v,t)}]]}, ${F})\n`;const a=reflect(Y,d,f,v);Y=a[0],d=a[1]}break;case"h":for(;g.length>=1;)f+=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendPoints([[${svg2cagX(f,t)}, ${svg2cagY(v,t)}]], ${F})\n`;break;case"H":for(;g.length>=1;)f=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendPoints([[${svg2cagX(f,t)}, ${svg2cagY(v,t)}]], ${F})\n`;break;case"l":for(;g.length>=2;)f+=parseFloat(g.shift()),v+=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendPoints([[${svg2cagX(f,t)}, ${svg2cagY(v,t)}]], ${F})\n`;break;case"L":for(;g.length>=2;)f=parseFloat(g.shift()),v=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendPoints([[${svg2cagX(f,t)}, ${svg2cagY(v,t)}]], ${F})\n`;break;case"v":for(;g.length>=1;)v+=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendPoints([[${svg2cagX(f,t)}, ${svg2cagY(v,t)}]], ${F})\n`;break;case"V":for(;g.length>=1;)v=parseFloat(g.shift()),p+=`${$}${F} = geometries.path2.appendPoints([[${svg2cagX(f,t)}, ${svg2cagY(v,t)}]], ${F})\n`;break;case"z":case"Z":p+=`${$}${F} = geometries.path2.close(${F})\n`,"geom2"===c&&(p+=`${$}${F} = geometries.geom2.fromPoints(geometries.path2.toPoints(${F}))\n`),p+=`${$}parts.push(${F})\n`,f=h,v=l,X=!0;break;default:console.log("Warning: Unknow PATH command ["+a.c+"]")}}return m>0&&!1===X&&(p+=`${$}parts.push(${F})\n`),p+=`${$}${i} = parts\n`};
@@ -583,7 +583,7 @@ const{geometries:geometries,maths:maths,measurements:measurements,utils:utils}=r
583
583
  },{}],95:[function(require,module,exports){
584
584
  module.exports={
585
585
  "name": "@jscad/svg-serializer",
586
- "version": "2.3.10",
586
+ "version": "2.3.11",
587
587
  "description": "SVG Serializer for JSCAD",
588
588
  "homepage": "https://openjscad.xyz/",
589
589
  "repository": "https://github.com/jscad/OpenJSCAD.org",
@@ -615,7 +615,7 @@ module.exports={
615
615
  ],
616
616
  "license": "MIT",
617
617
  "dependencies": {
618
- "@jscad/modeling": "2.10.0",
618
+ "@jscad/modeling": "2.11.0",
619
619
  "onml": "1.3.0"
620
620
  },
621
621
  "devDependencies": {
@@ -640,7 +640,7 @@ module.exports={
640
640
  },{"xmlchars/xml/1.0/ed5":96,"xmlchars/xml/1.1/ed2":97,"xmlchars/xmlns/1.0/ed3":98}],100:[function(require,module,exports){
641
641
  module.exports={
642
642
  "name": "@jscad/x3d-deserializer",
643
- "version": "2.2.2",
643
+ "version": "2.2.3",
644
644
  "description": "X3D Deserializer for JSCAD",
645
645
  "repository": "https://github.com/jscad/OpenJSCAD.org/",
646
646
  "main": "src/index.js",
@@ -667,7 +667,7 @@ module.exports={
667
667
  },
668
668
  "dependencies": {
669
669
  "@jscad/array-utils": "2.1.4",
670
- "@jscad/modeling": "2.10.0",
670
+ "@jscad/modeling": "2.11.0",
671
671
  "saxes": "5.0.1"
672
672
  },
673
673
  "devDependencies": {
@@ -691,7 +691,7 @@ const version=require("../package.json").version,translate=require("./translate"
691
691
  },{"../package.json":100,"./instantiate":105,"./translate":112}],105:[function(require,module,exports){
692
692
  const{flatten:flatten}=require("@jscad/array-utils"),parse=require("./parse"),instantiateDefinitions=require("./instantiateDefinitions"),{x3dTypes:x3dTypes}=require("./objects"),instantiate=(t,e)=>{const s={pxPmm:require("./constants").pxPmm};t=Object.assign({},s,t);const{pxPmm:a}=t;t&&t.statusCallback&&t.statusCallback({progress:0});const{x3dObj:n}=parse(e,a);if(n.definition!==x3dTypes.X3D||!n.objects)throw new Error("X3D malformed");if(n.objects.length<1||n.objects[0].definition!==x3dTypes.SCENE)throw new Error("X3D did not define a SCENE");t&&t.statusCallback&&t.statusCallback({progress:50});const i=n.objects[0].objects;let r=instantiateDefinitions(t,i);return t.flatten&&(r=flatten(r)),t&&t.statusCallback&&t.statusCallback({progress:100}),r};module.exports=instantiate;
693
693
 
694
- },{"./constants":101,"./instantiateDefinitions":106,"./objects":110,"./parse":111,"@jscad/array-utils":520}],106:[function(require,module,exports){
694
+ },{"./constants":101,"./instantiateDefinitions":106,"./objects":110,"./parse":111,"@jscad/array-utils":521}],106:[function(require,module,exports){
695
695
  const{colors:colors,transforms:transforms}=require("@jscad/modeling"),createTransform=require("./createTransform"),{x3dTypes:x3dTypes}=require("./objects"),{findColor:findColor}=require("./translateHelpers"),instantiatePrimitive=require("./instantiatePrimitive"),{instantiateLine:instantiateLine}=require("./instantiateLine"),{instantiateMesh:instantiateMesh}=require("./instantiateMesh"),instantiatedList=new Map,instantiateTransform=(t,n)=>{const i=n.objects.map(n=>instantiateDefinition(t,n)).filter(t=>null!=t);if(0===i.length)return null;const e=createTransform(n.center,n.rotation,n.scale,n.scaleOrientation,n.translation);return i.map(t=>{const n=t.color;return t=transforms.transform(e,t),n&&(t.color=n),t})},instantiateShape=(t,n)=>{const i=n.objects,e=findColor(i,t);let a=instantiatePrimitive(t,i);return a||(a=instantiateMesh(t,i)),a||(a=instantiateLine(t,i)),a||(a=null),a&&e&&(a=colors.colorize(e,a)),a},instantiateGroup=(t,n)=>{const i=n.objects.map(n=>instantiateDefinition(t,n)).filter(t=>null!=t);return 0===i.length?null:i},instantiateDefinition=(t,n)=>{let i;switch(n.definition){case x3dTypes.TRANSFORM:i=instantiateTransform(t,n);break;case x3dTypes.SHAPE:i=instantiateShape(t,n);break;case x3dTypes.GROUP:i=instantiateGroup(t,n);break;default:console.log("WARNING: unknown definition: "+n.definition)}return i},instantiateDefinitions=(t,n)=>{const i=n.map(n=>instantiateDefinition(t,n)).filter(t=>null!=t);return instantiatedList.clear(),i};module.exports=instantiateDefinitions;
696
696
 
697
697
  },{"./createTransform":102,"./instantiateLine":107,"./instantiateMesh":108,"./instantiatePrimitive":109,"./objects":110,"./translateHelpers":114,"@jscad/modeling":207}],107:[function(require,module,exports){
@@ -733,13 +733,13 @@ const{geometries:geometries}=require("@jscad/modeling"),{geom3:geom3,poly3:poly3
733
733
  },{}],119:[function(require,module,exports){
734
734
  const{geometries:geometries,modifiers:modifiers}=require("@jscad/modeling"),{geom2:geom2,geom3:geom3,path2:path2,poly2:poly2,poly3:poly3}=geometries,{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),stringify=require("onml/lib/stringify"),mimeType="model/x3d+xml",serialize=(e,...o)=>{if(e=Object.assign({},{color:[0,0,1,1],decimals:1e3,metadata:!0,unit:"millimeter",statusCallback:null},e),0===(o=(o=flatten(o)).filter(e=>geom3.isA(e)||geom2.isA(e)||path2.isA(e))).length)throw new Error("expected one or more geom3/geom2/path2 objects");e.statusCallback&&e.statusCallback({progress:0});let t=["X3D",{profile:"Interchange",version:"4.0","xmlns:xsd":"http://www.w3.org/2001/XMLSchema-instance","xsd:noNamespaceSchemaLocation":"http://www.web3d.org/specifications/x3d-4.0.xsd"}];e.metadata?t.push(["head",{},["meta",{name:"creator",content:"Created by JSCAD"}],["meta",{name:"reference",content:"https://www.openjscad.xyz"}],["meta",{name:"created",content:(new Date).toISOString()}]]):t.push(["head",{},["meta",{name:"creator",content:"Created by JSCAD"}]]),t=t.concat(convertObjects(o,e));const r=`<?xml version="1.0" encoding="UTF-8"?>\n${stringify(t,2)}`;return e&&e.statusCallback&&e.statusCallback({progress:100}),[r]},convertObjects=(e,o)=>{let t=["Scene",{}];const r=[];return e.forEach((t,n)=>{if(o.statusCallback&&o.statusCallback({progress:100*n/e.length}),geom3.isA(t)){t=modifiers.generalize({snap:!0,triangulate:!0},t),geom3.toPolygons(t).length>0&&r.push(convertGeom3(t,o))}geom2.isA(t)&&r.push(convertGeom2(t,o)),path2.isA(t)&&r.push(convertPath2(t,o))}),[t=t.concat(r)]},convertPath2=(e,o)=>{const t=path2.toPoints(e).slice();return t.length>1&&e.isClosed&&t.push(t[0]),shape=["Shape",{},convertPolyline2D(poly2.create(t),o)],e.color&&shape.push(convertAppearance(e,o)),shape},convertGeom2=(e,o)=>{const t=geom2.toOutlines(e),r=["Group",{}];return t.forEach(t=>{t.length>1&&t.push(t[0]);const n=["Shape",{},convertPolyline2D(poly2.create(t),o)];e.color&&n.push(convertAppearance(e,o)),r.push(n)}),r},convertPolyline2D=(e,o)=>{return["Polyline2D",{lineSegments:e.vertices.map(e=>`${e[0]} ${e[1]}`).join(" ")}]},convertAppearance=(e,o)=>{return["Appearance",["Material",{diffuseColor:e.color.join(" "),emissiveColor:e.color.join(" ")}]]},convertGeom3=(e,o)=>{const t=["Shape",{},convertMesh(e,o)];return e.color&&t.push(convertAppearance(e,o)),t},convertMesh=(e,o)=>{const t=convertToTriangles(e,o),r=polygons2coordinates(t,o),n=r[0].join(" "),s=r[1].join(" "),a=r[2].join(" "),c=["IndexedTriangleSet",{ccw:"true",colorPerVertex:"false",solid:"false",index:n},["Coordinate",{point:s}]];return e.color||c.push(["Color",{color:a}]),c},convertToTriangles=(e,o)=>{const t=[];return geom3.toPolygons(e).forEach(r=>{const n=r.vertices[0];for(let s=r.vertices.length-3;s>=0;s--){const a=poly3.fromPoints([n,r.vertices[s+1],r.vertices[s+2]]);let c=o.color;e.color&&(c=e.color),r.color&&(c=r.color),a.color=c,t.push(a)}}),t},convertToColor=(e,o)=>{let t=o.color;return e.color&&(t=e.color),`${t[0]} ${t[1]} ${t[2]}`},polygons2coordinates=(e,o)=>{const t=[],r=[],n=[],s=new Map;return e.forEach(e=>{const a=[],c=e.vertices.length;for(let t=0;t<c;t++){const n=e.vertices[t],c=`${n[0]},${n[1]},${n[2]}`;if(!s.has(c)){const e=Math.round(n[0]*o.decimals)/o.decimals,t=Math.round(n[1]*o.decimals)/o.decimals,a=Math.round(n[2]*o.decimals)/o.decimals;r.push(`${e} ${t} ${a}`),s.set(c,r.length-1)}a.push(s.get(c))}t.push(a.join(" ")),n.push(convertToColor(e,o))}),s.clear(),[t,r,n]};module.exports={serialize:serialize,mimeType:mimeType};
735
735
 
736
- },{"@jscad/array-utils":520,"@jscad/modeling":207,"onml/lib/stringify":118}],120:[function(require,module,exports){
736
+ },{"@jscad/array-utils":521,"@jscad/modeling":207,"onml/lib/stringify":118}],120:[function(require,module,exports){
737
737
  const cssColors=require("./cssColors"),colorNameToRgb=o=>cssColors[o.toLowerCase()];module.exports=colorNameToRgb;
738
738
 
739
739
  },{"./cssColors":122}],121:[function(require,module,exports){
740
740
  const flatten=require("../utils/flatten"),geom2=require("../geometries/geom2"),geom3=require("../geometries/geom3"),path2=require("../geometries/path2"),poly3=require("../geometries/poly3"),colorGeom2=(o,r)=>{const e=geom2.clone(r);return e.color=o,e},colorGeom3=(o,r)=>{const e=geom3.clone(r);return e.color=o,e},colorPath2=(o,r)=>{const e=path2.clone(r);return e.color=o,e},colorPoly3=(o,r)=>{const e=poly3.clone(r);return e.color=o,e},colorize=(o,...r)=>{if(!Array.isArray(o))throw new Error("color must be an array");if(o.length<3)throw new Error("color must contain R, G and B values");if(3===o.length&&(o=[o[0],o[1],o[2],1]),0===(r=flatten(r)).length)throw new Error("wrong number of arguments");const e=r.map(r=>geom2.isA(r)?colorGeom2(o,r):geom3.isA(r)?colorGeom3(o,r):path2.isA(r)?colorPath2(o,r):poly3.isA(r)?colorPoly3(o,r):(r.color=o,r));return 1===e.length?e[0]:e};module.exports=colorize;
741
741
 
742
- },{"../geometries/geom2":141,"../geometries/geom3":156,"../geometries/path2":177,"../geometries/poly3":194,"../utils/flatten":510}],122:[function(require,module,exports){
742
+ },{"../geometries/geom2":141,"../geometries/geom3":156,"../geometries/path2":177,"../geometries/poly3":194,"../utils/flatten":511}],122:[function(require,module,exports){
743
743
  const cssColors={black:[0,0,0],silver:[192/255,192/255,192/255],gray:[128/255,128/255,128/255],white:[1,1,1],maroon:[128/255,0,0],red:[1,0,0],purple:[128/255,0,128/255],fuchsia:[1,0,1],green:[0,128/255,0],lime:[0,1,0],olive:[128/255,128/255,0],yellow:[1,1,0],navy:[0,0,128/255],blue:[0,0,1],teal:[0,128/255,128/255],aqua:[0,1,1],aliceblue:[240/255,248/255,1],antiquewhite:[250/255,235/255,215/255],aquamarine:[127/255,1,212/255],azure:[240/255,1,1],beige:[245/255,245/255,220/255],bisque:[1,228/255,196/255],blanchedalmond:[1,235/255,205/255],blueviolet:[138/255,43/255,226/255],brown:[165/255,42/255,42/255],burlywood:[222/255,184/255,135/255],cadetblue:[95/255,158/255,160/255],chartreuse:[127/255,1,0],chocolate:[210/255,105/255,30/255],coral:[1,127/255,80/255],cornflowerblue:[100/255,149/255,237/255],cornsilk:[1,248/255,220/255],crimson:[220/255,20/255,60/255],cyan:[0,1,1],darkblue:[0,0,139/255],darkcyan:[0,139/255,139/255],darkgoldenrod:[184/255,134/255,11/255],darkgray:[169/255,169/255,169/255],darkgreen:[0,100/255,0],darkgrey:[169/255,169/255,169/255],darkkhaki:[189/255,183/255,107/255],darkmagenta:[139/255,0,139/255],darkolivegreen:[85/255,107/255,47/255],darkorange:[1,140/255,0],darkorchid:[.6,50/255,.8],darkred:[139/255,0,0],darksalmon:[233/255,150/255,122/255],darkseagreen:[143/255,188/255,143/255],darkslateblue:[72/255,61/255,139/255],darkslategray:[47/255,79/255,79/255],darkslategrey:[47/255,79/255,79/255],darkturquoise:[0,206/255,209/255],darkviolet:[148/255,0,211/255],deeppink:[1,20/255,147/255],deepskyblue:[0,191/255,1],dimgray:[105/255,105/255,105/255],dimgrey:[105/255,105/255,105/255],dodgerblue:[30/255,144/255,1],firebrick:[178/255,34/255,34/255],floralwhite:[1,250/255,240/255],forestgreen:[34/255,139/255,34/255],gainsboro:[220/255,220/255,220/255],ghostwhite:[248/255,248/255,1],gold:[1,215/255,0],goldenrod:[218/255,165/255,32/255],greenyellow:[173/255,1,47/255],grey:[128/255,128/255,128/255],honeydew:[240/255,1,240/255],hotpink:[1,105/255,180/255],indianred:[205/255,92/255,92/255],indigo:[75/255,0,130/255],ivory:[1,1,240/255],khaki:[240/255,230/255,140/255],lavender:[230/255,230/255,250/255],lavenderblush:[1,240/255,245/255],lawngreen:[124/255,252/255,0],lemonchiffon:[1,250/255,205/255],lightblue:[173/255,216/255,230/255],lightcoral:[240/255,128/255,128/255],lightcyan:[224/255,1,1],lightgoldenrodyellow:[250/255,250/255,210/255],lightgray:[211/255,211/255,211/255],lightgreen:[144/255,238/255,144/255],lightgrey:[211/255,211/255,211/255],lightpink:[1,182/255,193/255],lightsalmon:[1,160/255,122/255],lightseagreen:[32/255,178/255,170/255],lightskyblue:[135/255,206/255,250/255],lightslategray:[119/255,136/255,.6],lightslategrey:[119/255,136/255,.6],lightsteelblue:[176/255,196/255,222/255],lightyellow:[1,1,224/255],limegreen:[50/255,205/255,50/255],linen:[250/255,240/255,230/255],magenta:[1,0,1],mediumaquamarine:[.4,205/255,170/255],mediumblue:[0,0,205/255],mediumorchid:[186/255,85/255,211/255],mediumpurple:[147/255,112/255,219/255],mediumseagreen:[60/255,179/255,113/255],mediumslateblue:[123/255,104/255,238/255],mediumspringgreen:[0,250/255,154/255],mediumturquoise:[72/255,209/255,.8],mediumvioletred:[199/255,21/255,133/255],midnightblue:[25/255,25/255,112/255],mintcream:[245/255,1,250/255],mistyrose:[1,228/255,225/255],moccasin:[1,228/255,181/255],navajowhite:[1,222/255,173/255],oldlace:[253/255,245/255,230/255],olivedrab:[107/255,142/255,35/255],orange:[1,165/255,0],orangered:[1,69/255,0],orchid:[218/255,112/255,214/255],palegoldenrod:[238/255,232/255,170/255],palegreen:[152/255,251/255,152/255],paleturquoise:[175/255,238/255,238/255],palevioletred:[219/255,112/255,147/255],papayawhip:[1,239/255,213/255],peachpuff:[1,218/255,185/255],peru:[205/255,133/255,63/255],pink:[1,192/255,203/255],plum:[221/255,160/255,221/255],powderblue:[176/255,224/255,230/255],rosybrown:[188/255,143/255,143/255],royalblue:[65/255,105/255,225/255],saddlebrown:[139/255,69/255,19/255],salmon:[250/255,128/255,114/255],sandybrown:[244/255,164/255,96/255],seagreen:[46/255,139/255,87/255],seashell:[1,245/255,238/255],sienna:[160/255,82/255,45/255],skyblue:[135/255,206/255,235/255],slateblue:[106/255,90/255,205/255],slategray:[112/255,128/255,144/255],slategrey:[112/255,128/255,144/255],snow:[1,250/255,250/255],springgreen:[0,1,127/255],steelblue:[70/255,130/255,180/255],tan:[210/255,180/255,140/255],thistle:[216/255,191/255,216/255],tomato:[1,99/255,71/255],turquoise:[64/255,224/255,208/255],violet:[238/255,130/255,238/255],wheat:[245/255,222/255,179/255],whitesmoke:[245/255,245/255,245/255],yellowgreen:[154/255,205/255,50/255]};module.exports=cssColors;
744
744
 
745
745
  },{}],123:[function(require,module,exports){
@@ -748,10 +748,10 @@ const hexToRgb=t=>{if((t=t.replace("#","")).length<6)throw new Error("the given
748
748
  },{}],124:[function(require,module,exports){
749
749
  const flatten=require("../utils/flatten"),hueToColorComponent=require("./hueToColorComponent"),hslToRgb=(...o)=>{if((o=flatten(o)).length<3)throw new Error("values must contain H, S and L values");const e=o[0],n=o[1],t=o[2];let r=t,l=t,u=t;if(0!==n){const o=t<.5?t*(1+n):t+n-t*n,h=2*t-o;r=hueToColorComponent(h,o,e+1/3),l=hueToColorComponent(h,o,e),u=hueToColorComponent(h,o,e-1/3)}if(o.length>3){return[r,l,u,o[3]]}return[r,l,u]};module.exports=hslToRgb;
750
750
 
751
- },{"../utils/flatten":510,"./hueToColorComponent":126}],125:[function(require,module,exports){
751
+ },{"../utils/flatten":511,"./hueToColorComponent":126}],125:[function(require,module,exports){
752
752
  const flatten=require("../utils/flatten"),hsvToRgb=(...e)=>{if((e=flatten(e)).length<3)throw new Error("values must contain H, S and V values");const t=e[0],a=e[1],r=e[2];let s=0,n=0,o=0;const c=Math.floor(6*t),l=6*t-c,u=r*(1-a),b=r*(1-l*a),h=r*(1-(1-l)*a);switch(c%6){case 0:s=r,n=h,o=u;break;case 1:s=b,n=r,o=u;break;case 2:s=u,n=r,o=h;break;case 3:s=u,n=b,o=r;break;case 4:s=h,n=u,o=r;break;case 5:s=r,n=u,o=b}if(e.length>3){return[s,n,o,e[3]]}return[s,n,o]};module.exports=hsvToRgb;
753
753
 
754
- },{"../utils/flatten":510}],126:[function(require,module,exports){
754
+ },{"../utils/flatten":511}],126:[function(require,module,exports){
755
755
  const hueToColorComponent=(o,e,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?o+6*(e-o)*n:n<.5?e:n<2/3?o+(e-o)*(2/3-n)*6:o);module.exports=hueToColorComponent;
756
756
 
757
757
  },{}],127:[function(require,module,exports){
@@ -760,13 +760,13 @@ module.exports={colorize:require("./colorize"),colorNameToRgb:require("./colorNa
760
760
  },{"./colorNameToRgb":120,"./colorize":121,"./cssColors":122,"./hexToRgb":123,"./hslToRgb":124,"./hsvToRgb":125,"./hueToColorComponent":126,"./rgbToHex":128,"./rgbToHsl":129,"./rgbToHsv":130}],128:[function(require,module,exports){
761
761
  const flatten=require("../utils/flatten"),rgbToHex=(...t)=>{if((t=flatten(t)).length<3)throw new Error("values must contain R, G and B values");const e=255*t[0],r=255*t[1],n=255*t[2];let o=`#${Number(16777216+65536*e+256*r+n).toString(16).substring(1,7)}`;return t.length>3&&(o+=Number(255*t[3]).toString(16)),o};module.exports=rgbToHex;
762
762
 
763
- },{"../utils/flatten":510}],129:[function(require,module,exports){
763
+ },{"../utils/flatten":511}],129:[function(require,module,exports){
764
764
  const flatten=require("../utils/flatten"),rgbToHsl=(...t)=>{if((t=flatten(t)).length<3)throw new Error("values must contain R, G and B values");const e=t[0],n=t[1],s=t[2],a=Math.max(e,n,s),r=Math.min(e,n,s);let l,o;const c=(a+r)/2;if(a===r)l=o=0;else{const t=a-r;switch(o=c>.5?t/(2-a-r):t/(a+r),a){case e:l=(n-s)/t+(n<s?6:0);break;case n:l=(s-e)/t+2;break;case s:l=(e-n)/t+4}l/=6}if(t.length>3){return[l,o,c,t[3]]}return[l,o,c]};module.exports=rgbToHsl;
765
765
 
766
- },{"../utils/flatten":510}],130:[function(require,module,exports){
766
+ },{"../utils/flatten":511}],130:[function(require,module,exports){
767
767
  const flatten=require("../utils/flatten"),rgbToHsv=(...e)=>{if((e=flatten(e)).length<3)throw new Error("values must contain R, G and B values");const t=e[0],a=e[1],n=e[2],r=Math.max(t,a,n),s=Math.min(t,a,n);let l;const o=r,c=r-s,i=0===r?0:c/r;if(r===s)l=0;else{switch(r){case t:l=(a-n)/c+(a<n?6:0);break;case a:l=(n-t)/c+2;break;case n:l=(t-a)/c+4}l/=6}if(e.length>3){return[l,i,o,e[3]]}return[l,i,o]};module.exports=rgbToHsv;
768
768
 
769
- },{"../utils/flatten":510}],131:[function(require,module,exports){
769
+ },{"../utils/flatten":511}],131:[function(require,module,exports){
770
770
  const create=e=>{if(!Array.isArray(e))throw new Error("Bezier points must be a valid array/");if(e.length<2)throw new Error("Bezier points must contain at least 2 values.");const r=getPointType(e);return{points:e,pointType:r,dimensions:"float_single"===r?0:e[0].length,permutations:getPermutations(e.length-1),tangentPermutations:getPermutations(e.length-2)}},getPointType=function(e){let r=null;return e.forEach(e=>{let t="";if(Number.isFinite(e))t="float_single";else{if(!Array.isArray(e))throw new Error("Bezier points must all be numbers or arrays of number.");e.forEach(e=>{if(!Number.isFinite(e))throw new Error("Bezier point values must all be numbers.")}),t="float_"+e.length}if(null==r)r=t;else if(r!==t)throw new Error("Bezier points must be either all numbers or all arrays of numbers of the same size.")}),r},getPermutations=function(e){const r=[];for(let t=0;t<=e;t++)r.push(factorial(e)/(factorial(t)*factorial(e-t)));return r},factorial=function(e){let r=1;for(let t=2;t<=e;t++)r*=t;return r};module.exports=create;
771
771
 
772
772
  },{}],132:[function(require,module,exports){
@@ -997,7 +997,7 @@ const signedDistanceToPoint=require("../../maths/plane/signedDistanceToPoint"),{
997
997
  },{"../../maths/constants":209,"../../maths/plane/signedDistanceToPoint":279,"../../maths/vec3":336,"./isA":196,"./isConvex":197,"./measureArea":198,"./plane":202}],207:[function(require,module,exports){
998
998
  module.exports={colors:require("./colors"),curves:require("./curves"),geometries:require("./geometries"),maths:require("./maths"),measurements:require("./measurements"),primitives:require("./primitives"),text:require("./text"),utils:require("./utils"),booleans:require("./operations/booleans"),expansions:require("./operations/expansions"),extrusions:require("./operations/extrusions"),hulls:require("./operations/hulls"),modifiers:require("./operations/modifiers"),transforms:require("./operations/transforms")};
999
999
 
1000
- },{"./colors":127,"./curves":135,"./geometries":165,"./maths":210,"./measurements":366,"./operations/booleans":380,"./operations/expansions":409,"./operations/extrusions":431,"./operations/hulls":453,"./operations/modifiers":464,"./operations/transforms":474,"./primitives":490,"./text":504,"./utils":512}],208:[function(require,module,exports){
1000
+ },{"./colors":127,"./curves":135,"./geometries":165,"./maths":210,"./measurements":366,"./operations/booleans":380,"./operations/expansions":409,"./operations/extrusions":432,"./operations/hulls":454,"./operations/modifiers":465,"./operations/transforms":475,"./primitives":491,"./text":505,"./utils":513}],208:[function(require,module,exports){
1001
1001
  const mat4=require("./mat4"),vec2=require("./vec2"),vec3=require("./vec3"),OrthoNormalBasis=function(e,t){arguments.length<2&&(t=vec3.orthogonal(vec3.create(),e)),this.v=vec3.normalize(vec3.create(),vec3.cross(vec3.create(),e,t)),this.u=vec3.cross(vec3.create(),this.v,e),this.plane=e,this.planeorigin=vec3.scale(vec3.create(),e,e[3])};OrthoNormalBasis.GetCartesian=function(e,t){const i=e+"/"+t;let s,n;if("X/Y"===i)s=[0,0,1],n=[1,0,0];else if("Y/-X"===i)s=[0,0,1],n=[0,1,0];else if("-X/-Y"===i)s=[0,0,1],n=[-1,0,0];else if("-Y/X"===i)s=[0,0,1],n=[0,-1,0];else if("-X/Y"===i)s=[0,0,-1],n=[-1,0,0];else if("-Y/-X"===i)s=[0,0,-1],n=[0,-1,0];else if("X/-Y"===i)s=[0,0,-1],n=[1,0,0];else if("Y/X"===i)s=[0,0,-1],n=[0,1,0];else if("X/Z"===i)s=[0,-1,0],n=[1,0,0];else if("Z/-X"===i)s=[0,-1,0],n=[0,0,1];else if("-X/-Z"===i)s=[0,-1,0],n=[-1,0,0];else if("-Z/X"===i)s=[0,-1,0],n=[0,0,-1];else if("-X/Z"===i)s=[0,1,0],n=[-1,0,0];else if("-Z/-X"===i)s=[0,1,0],n=[0,0,-1];else if("X/-Z"===i)s=[0,1,0],n=[1,0,0];else if("Z/X"===i)s=[0,1,0],n=[0,0,1];else if("Y/Z"===i)s=[1,0,0],n=[0,1,0];else if("Z/-Y"===i)s=[1,0,0],n=[0,0,1];else if("-Y/-Z"===i)s=[1,0,0],n=[0,-1,0];else if("-Z/Y"===i)s=[1,0,0],n=[0,0,-1];else if("-Y/Z"===i)s=[-1,0,0],n=[0,-1,0];else if("-Z/-Y"===i)s=[-1,0,0],n=[0,0,-1];else if("Y/-Z"===i)s=[-1,0,0],n=[0,1,0];else{if("Z/Y"!==i)throw new Error("OrthoNormalBasis.GetCartesian: invalid combination of axis identifiers. Should pass two string arguments from [X,Y,Z,-X,-Y,-Z], being two different axes.");s=[-1,0,0],n=[0,0,1]}return new OrthoNormalBasis(new Plane(new Vector3D(s),0),new Vector3D(n))},OrthoNormalBasis.Z0Plane=function(){const e=new Plane(new Vector3D([0,0,1]),0);return new OrthoNormalBasis(e,new Vector3D([1,0,0]))},OrthoNormalBasis.prototype={getProjectionMatrix:function(){return mat4.fromValues(this.u[0],this.v[0],this.plane[0],0,this.u[1],this.v[1],this.plane[1],0,this.u[2],this.v[2],this.plane[2],0,0,0,-this.plane[3],1)},getInverseProjectionMatrix:function(){const e=vec3.scale(vec3.create(),this.plane,this.plane[3]);return mat4.fromValues(this.u[0],this.u[1],this.u[2],0,this.v[0],this.v[1],this.v[2],0,this.plane[0],this.plane[1],this.plane[2],0,e[0],e[1],e[2],1)},to2D:function(e){return vec2.fromValues(vec3.dot(e,this.u),vec3.dot(e,this.v))},to3D:function(e){const t=vec3.scale(vec3.create(),this.u,e[0]),i=vec3.scale(vec3.create(),this.v,e[1]),s=vec3.add(t,t,this.planeorigin);return vec3.add(i,i,s)},line3Dto2D:function(e){const t=e.point,i=e.direction.plus(t),s=this.to2D(t),n=this.to2D(i);return Line2D.fromPoints(s,n)},line2Dto3D:function(e){const t=e.origin(),i=e.direction().plus(t),s=this.to3D(t),n=this.to3D(i);return Line3D.fromPoints(s,n)},transform:function(e){const t=this.plane.transform(e),i=this.u.transform(e),s=new Vector3D(0,0,0).transform(e),n=i.minus(s);return new OrthoNormalBasis(t,n)}},module.exports=OrthoNormalBasis;
1002
1002
 
1003
1003
  },{"./mat4":258,"./vec2":305,"./vec3":336}],209:[function(require,module,exports){
@@ -1477,40 +1477,40 @@ module.exports={measureAggregateArea:require("./measureAggregateArea"),measureAg
1477
1477
  },{"./measureAggregateArea":367,"./measureAggregateBoundingBox":368,"./measureAggregateEpsilon":369,"./measureAggregateVolume":370,"./measureArea":371,"./measureBoundingBox":372,"./measureBoundingSphere":373,"./measureCenter":374,"./measureCenterOfMass":375,"./measureDimensions":376,"./measureEpsilon":377,"./measureVolume":378}],367:[function(require,module,exports){
1478
1478
  const flatten=require("../utils/flatten"),measureArea=require("./measureArea"),measureAggregateArea=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("measureAggregateArea: no geometries supplied");const r=measureArea(e);if(1===e.length)return r;return r.reduce((e,r)=>e+r,0)};module.exports=measureAggregateArea;
1479
1479
 
1480
- },{"../utils/flatten":510,"./measureArea":371}],368:[function(require,module,exports){
1480
+ },{"../utils/flatten":511,"./measureArea":371}],368:[function(require,module,exports){
1481
1481
  const flatten=require("../utils/flatten"),vec3min=require("../maths/vec3/min"),vec3max=require("../maths/vec3/max"),measureBoundingBox=require("./measureBoundingBox"),measureAggregateBoundingBox=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("measureAggregateBoundingBox: no geometries supplied");const r=measureBoundingBox(e);if(1===e.length)return r;const u=[[Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE],[-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE]];return r.reduce((e,r)=>e=[vec3min(e[0],e[0],r[0]),vec3max(e[1],e[1],r[1])],u)};module.exports=measureAggregateBoundingBox;
1482
1482
 
1483
- },{"../maths/vec3/max":339,"../maths/vec3/min":340,"../utils/flatten":510,"./measureBoundingBox":372}],369:[function(require,module,exports){
1483
+ },{"../maths/vec3/max":339,"../maths/vec3/min":340,"../utils/flatten":511,"./measureBoundingBox":372}],369:[function(require,module,exports){
1484
1484
  const flatten=require("../utils/flatten"),measureAggregateBoundingBox=require("./measureAggregateBoundingBox"),calculateEpsilonFromBounds=require("./calculateEpsilonFromBounds"),{geom2:geom2,geom3:geom3,path2:path2}=require("../geometries"),measureAggregateEpsilon=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("measureAggregateEpsilon: no geometries supplied");const o=measureAggregateBoundingBox(e);let r=0;return r=e.reduce((e,o)=>path2.isA(o)||geom2.isA(o)?Math.max(e,2):geom3.isA(o)?Math.max(e,3):0,r),calculateEpsilonFromBounds(o,r)};module.exports=measureAggregateEpsilon;
1485
1485
 
1486
- },{"../geometries":165,"../utils/flatten":510,"./calculateEpsilonFromBounds":365,"./measureAggregateBoundingBox":368}],370:[function(require,module,exports){
1486
+ },{"../geometries":165,"../utils/flatten":511,"./calculateEpsilonFromBounds":365,"./measureAggregateBoundingBox":368}],370:[function(require,module,exports){
1487
1487
  const flatten=require("../utils/flatten"),measureVolume=require("./measureVolume"),measureAggregateVolume=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("measureAggregateVolume: no geometries supplied");const r=measureVolume(e);if(1===e.length)return r;return r.reduce((e,r)=>e+r,0)};module.exports=measureAggregateVolume;
1488
1488
 
1489
- },{"../utils/flatten":510,"./measureVolume":378}],371:[function(require,module,exports){
1489
+ },{"../utils/flatten":511,"./measureVolume":378}],371:[function(require,module,exports){
1490
1490
  const flatten=require("../utils/flatten"),geom2=require("../geometries/geom2"),geom3=require("../geometries/geom3"),path2=require("../geometries/path2"),poly3=require("../geometries/poly3"),cache=new WeakMap,measureAreaOfPath2=()=>0,measureAreaOfGeom2=e=>{let r=cache.get(e);if(r)return r;return r=geom2.toSides(e).reduce((e,r)=>e+(r[0][0]*r[1][1]-r[0][1]*r[1][0]),0),r*=.5,cache.set(e,r),r},measureAreaOfGeom3=e=>{let r=cache.get(e);if(r)return r;return r=geom3.toPolygons(e).reduce((e,r)=>e+poly3.measureArea(r),0),cache.set(e,r),r},measureArea=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");const r=e.map(e=>path2.isA(e)?0:geom2.isA(e)?measureAreaOfGeom2(e):geom3.isA(e)?measureAreaOfGeom3(e):0);return 1===r.length?r[0]:r};module.exports=measureArea;
1491
1491
 
1492
- },{"../geometries/geom2":141,"../geometries/geom3":156,"../geometries/path2":177,"../geometries/poly3":194,"../utils/flatten":510}],372:[function(require,module,exports){
1492
+ },{"../geometries/geom2":141,"../geometries/geom3":156,"../geometries/path2":177,"../geometries/poly3":194,"../utils/flatten":511}],372:[function(require,module,exports){
1493
1493
  const flatten=require("../utils/flatten"),vec2=require("../maths/vec2"),vec3=require("../maths/vec3"),geom2=require("../geometries/geom2"),geom3=require("../geometries/geom3"),path2=require("../geometries/path2"),poly3=require("../geometries/poly3"),cache=new WeakMap,measureBoundingBoxOfPath2=e=>{let o=cache.get(e);if(o)return o;const t=path2.toPoints(e);let n;n=0===t.length?vec2.create():vec2.clone(t[0]);let r=vec2.clone(n);return t.forEach(e=>{vec2.min(n,n,e),vec2.max(r,r,e)}),n=[n[0],n[1],0],r=[r[0],r[1],0],o=[n,r],cache.set(e,o),o},measureBoundingBoxOfGeom2=e=>{let o=cache.get(e);if(o)return o;const t=geom2.toPoints(e);let n;n=0===t.length?vec2.create():vec2.clone(t[0]);let r=vec2.clone(n);return t.forEach(e=>{vec2.min(n,n,e),vec2.max(r,r,e)}),n=[n[0],n[1],0],r=[r[0],r[1],0],o=[n,r],cache.set(e,o),o},measureBoundingBoxOfGeom3=e=>{let o=cache.get(e);if(o)return o;const t=geom3.toPolygons(e);let n=vec3.create();if(t.length>0){const e=poly3.toPoints(t[0]);vec3.copy(n,e[0])}let r=vec3.clone(n);return t.forEach(e=>{poly3.toPoints(e).forEach(e=>{vec3.min(n,n,e),vec3.max(r,r,e)})}),n=[n[0],n[1],n[2]],r=[r[0],r[1],r[2]],o=[n,r],cache.set(e,o),o},measureBoundingBox=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");const o=e.map(e=>path2.isA(e)?measureBoundingBoxOfPath2(e):geom2.isA(e)?measureBoundingBoxOfGeom2(e):geom3.isA(e)?measureBoundingBoxOfGeom3(e):[[0,0,0],[0,0,0]]);return 1===o.length?o[0]:o};module.exports=measureBoundingBox;
1494
1494
 
1495
- },{"../geometries/geom2":141,"../geometries/geom3":156,"../geometries/path2":177,"../geometries/poly3":194,"../maths/vec2":305,"../maths/vec3":336,"../utils/flatten":510}],373:[function(require,module,exports){
1495
+ },{"../geometries/geom2":141,"../geometries/geom3":156,"../geometries/path2":177,"../geometries/poly3":194,"../maths/vec2":305,"../maths/vec3":336,"../utils/flatten":511}],373:[function(require,module,exports){
1496
1496
  const flatten=require("../utils/flatten"),vec2=require("../maths/vec2"),vec3=require("../maths/vec3"),geom2=require("../geometries/geom2"),geom3=require("../geometries/geom3"),path2=require("../geometries/path2"),poly3=require("../geometries/poly3"),cacheOfBoundingSpheres=new WeakMap,measureBoundingSphereOfPath2=e=>{let t=cacheOfBoundingSpheres.get(e);if(void 0!==t)return t;const r=vec3.create();let o=0;const c=path2.toPoints(e);if(c.length>0){let e=0;const t=vec3.create();c.forEach(o=>{vec3.add(r,r,vec3.fromVec2(t,o,0)),e++}),vec3.scale(r,r,1/e),c.forEach(e=>{o=Math.max(o,vec2.squaredDistance(r,e))}),o=Math.sqrt(o)}return t=[r,o],cacheOfBoundingSpheres.set(e,t),t},measureBoundingSphereOfGeom2=e=>{let t=cacheOfBoundingSpheres.get(e);if(void 0!==t)return t;const r=vec3.create();let o=0;const c=geom2.toSides(e);if(c.length>0){let e=0;const t=vec3.create();c.forEach(o=>{vec3.add(r,r,vec3.fromVec2(t,o[0],0)),e++}),vec3.scale(r,r,1/e),c.forEach(e=>{o=Math.max(o,vec2.squaredDistance(r,e[0]))}),o=Math.sqrt(o)}return t=[r,o],cacheOfBoundingSpheres.set(e,t),t},measureBoundingSphereOfGeom3=e=>{let t=cacheOfBoundingSpheres.get(e);if(void 0!==t)return t;const r=vec3.create();let o=0;const c=geom3.toPolygons(e);if(c.length>0){let e=0;c.forEach(t=>{poly3.toPoints(t).forEach(t=>{vec3.add(r,r,t),e++})}),vec3.scale(r,r,1/e),c.forEach(e=>{poly3.toPoints(e).forEach(e=>{o=Math.max(o,vec3.squaredDistance(r,e))})}),o=Math.sqrt(o)}return t=[r,o],cacheOfBoundingSpheres.set(e,t),t},measureBoundingSphere=(...e)=>{const t=(e=flatten(e)).map(e=>path2.isA(e)?measureBoundingSphereOfPath2(e):geom2.isA(e)?measureBoundingSphereOfGeom2(e):geom3.isA(e)?measureBoundingSphereOfGeom3(e):[[0,0,0],0]);return 1===t.length?t[0]:t};module.exports=measureBoundingSphere;
1497
1497
 
1498
- },{"../geometries/geom2":141,"../geometries/geom3":156,"../geometries/path2":177,"../geometries/poly3":194,"../maths/vec2":305,"../maths/vec3":336,"../utils/flatten":510}],374:[function(require,module,exports){
1498
+ },{"../geometries/geom2":141,"../geometries/geom3":156,"../geometries/path2":177,"../geometries/poly3":194,"../maths/vec2":305,"../maths/vec3":336,"../utils/flatten":511}],374:[function(require,module,exports){
1499
1499
  const flatten=require("../utils/flatten"),measureBoundingBox=require("./measureBoundingBox"),measureCenter=(...e)=>{const n=(e=flatten(e)).map(e=>{const n=measureBoundingBox(e);return[n[0][0]+(n[1][0]-n[0][0])/2,n[0][1]+(n[1][1]-n[0][1])/2,n[0][2]+(n[1][2]-n[0][2])/2]});return 1===n.length?n[0]:n};module.exports=measureCenter;
1500
1500
 
1501
- },{"../utils/flatten":510,"./measureBoundingBox":372}],375:[function(require,module,exports){
1501
+ },{"../utils/flatten":511,"./measureBoundingBox":372}],375:[function(require,module,exports){
1502
1502
  const flatten=require("../utils/flatten"),vec3=require("../maths/vec3"),geom2=require("../geometries/geom2"),geom3=require("../geometries/geom3"),cacheOfCenterOfMass=new WeakMap,measureCenterOfMassGeom2=e=>{let t=cacheOfCenterOfMass.get(e);if(void 0!==t)return t;const s=geom2.toSides(e);let r=0,c=0,a=0;if(s.length>0){for(let e=0;e<s.length;e++){const t=s[e][0],o=s[e][1],n=t[0]*o[1]-t[1]*o[0];r+=n,c+=(t[0]+o[0])*n,a+=(t[1]+o[1])*n}const e=1/(6*(r/=2));c*=e,a*=e}return t=vec3.fromValues(c,a,0),cacheOfCenterOfMass.set(e,t),t},measureCenterOfMassGeom3=e=>{let t=cacheOfCenterOfMass.get(e);if(void 0!==t)return t;t=vec3.create();const s=geom3.toPolygons(e);if(0===s.length)return t;let r=0;const c=vec3.create();return s.forEach(e=>{const s=e.vertices;for(let e=0;e<s.length-2;e++){vec3.cross(c,s[e+1],s[e+2]);const a=vec3.dot(s[0],c)/6;r+=a,vec3.add(c,s[0],s[e+1]),vec3.add(c,c,s[e+2]);const o=vec3.scale(c,c,.25*a);vec3.add(t,t,o)}}),vec3.scale(t,t,1/r),cacheOfCenterOfMass.set(e,t),t},measureCenterOfMass=(...e)=>{const t=(e=flatten(e)).map(e=>geom2.isA(e)?measureCenterOfMassGeom2(e):geom3.isA(e)?measureCenterOfMassGeom3(e):[0,0,0]);return 1===t.length?t[0]:t};module.exports=measureCenterOfMass;
1503
1503
 
1504
- },{"../geometries/geom2":141,"../geometries/geom3":156,"../maths/vec3":336,"../utils/flatten":510}],376:[function(require,module,exports){
1504
+ },{"../geometries/geom2":141,"../geometries/geom3":156,"../maths/vec3":336,"../utils/flatten":511}],376:[function(require,module,exports){
1505
1505
  const flatten=require("../utils/flatten"),measureBoundingBox=require("./measureBoundingBox"),measureDimensions=(...e)=>{const n=(e=flatten(e)).map(e=>{const n=measureBoundingBox(e);return[n[1][0]-n[0][0],n[1][1]-n[0][1],n[1][2]-n[0][2]]});return 1===n.length?n[0]:n};module.exports=measureDimensions;
1506
1506
 
1507
- },{"../utils/flatten":510,"./measureBoundingBox":372}],377:[function(require,module,exports){
1507
+ },{"../utils/flatten":511,"./measureBoundingBox":372}],377:[function(require,module,exports){
1508
1508
  const flatten=require("../utils/flatten"),{geom2:geom2,geom3:geom3,path2:path2}=require("../geometries"),calculateEpsilonFromBounds=require("./calculateEpsilonFromBounds"),measureBoundingBox=require("./measureBoundingBox"),measureEpsilonOfPath2=e=>calculateEpsilonFromBounds(measureBoundingBox(e),2),measureEpsilonOfGeom2=e=>calculateEpsilonFromBounds(measureBoundingBox(e),2),measureEpsilonOfGeom3=e=>calculateEpsilonFromBounds(measureBoundingBox(e),3),measureEpsilon=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");const o=e.map(e=>path2.isA(e)?measureEpsilonOfPath2(e):geom2.isA(e)?measureEpsilonOfGeom2(e):geom3.isA(e)?measureEpsilonOfGeom3(e):0);return 1===o.length?o[0]:o};module.exports=measureEpsilon;
1509
1509
 
1510
- },{"../geometries":165,"../utils/flatten":510,"./calculateEpsilonFromBounds":365,"./measureBoundingBox":372}],378:[function(require,module,exports){
1510
+ },{"../geometries":165,"../utils/flatten":511,"./calculateEpsilonFromBounds":365,"./measureBoundingBox":372}],378:[function(require,module,exports){
1511
1511
  const flatten=require("../utils/flatten"),geom2=require("../geometries/geom2"),geom3=require("../geometries/geom3"),path2=require("../geometries/path2"),poly3=require("../geometries/poly3"),cache=new WeakMap,measureVolumeOfPath2=()=>0,measureVolumeOfGeom2=()=>0,measureVolumeOfGeom3=e=>{let r=cache.get(e);if(r)return r;return r=geom3.toPolygons(e).reduce((e,r)=>e+poly3.measureSignedVolume(r),0),cache.set(e,r),r},measureVolume=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");const r=e.map(e=>path2.isA(e)?0:geom2.isA(e)?0:geom3.isA(e)?measureVolumeOfGeom3(e):0);return 1===r.length?r[0]:r};module.exports=measureVolume;
1512
1512
 
1513
- },{"../geometries/geom2":141,"../geometries/geom3":156,"../geometries/path2":177,"../geometries/poly3":194,"../utils/flatten":510}],379:[function(require,module,exports){
1513
+ },{"../geometries/geom2":141,"../geometries/geom3":156,"../geometries/path2":177,"../geometries/poly3":194,"../utils/flatten":511}],379:[function(require,module,exports){
1514
1514
  const vec2=require("../../maths/vec2"),geom2=require("../../geometries/geom2"),fromFakePolygon=(e,o)=>{if(o.vertices.length<4)return null;const r=[],n=o.vertices.filter((e,o)=>e[2]>0&&(r.push(o),!0));if(2!==n.length)throw new Error("Assertion failed: fromFakePolygon: not enough points found");const t=n.map(o=>{const r=Math.round(o[0]/e)*e+0,n=Math.round(o[1]/e)*e+0;return vec2.fromValues(r,n)});if(vec2.equals(t[0],t[1]))return null;const s=r[1]-r[0];if(1!==s&&3!==s)throw new Error("Assertion failed: fromFakePolygon: unknown index ordering");return 1===s&&t.reverse(),t},fromFakePolygons=(e,o)=>{const r=o.map(o=>fromFakePolygon(e,o)).filter(e=>null!==e);return geom2.create(r)};module.exports=fromFakePolygons;
1515
1515
 
1516
1516
  },{"../../geometries/geom2":141,"../../maths/vec2":305}],380:[function(require,module,exports){
@@ -1519,13 +1519,13 @@ module.exports={intersect:require("./intersect"),scission:require("./scission"),
1519
1519
  },{"./intersect":381,"./scission":386,"./subtract":388,"./union":399}],381:[function(require,module,exports){
1520
1520
  const flatten=require("../../utils/flatten"),areAllShapesTheSameType=require("../../utils/areAllShapesTheSameType"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),intersectGeom2=require("./intersectGeom2"),intersectGeom3=require("./intersectGeom3"),intersect=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");if(!areAllShapesTheSameType(e))throw new Error("only intersect of the types are supported");const r=e[0];return geom2.isA(r)?intersectGeom2(e):geom3.isA(r)?intersectGeom3(e):r};module.exports=intersect;
1521
1521
 
1522
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../utils/areAllShapesTheSameType":508,"../../utils/flatten":510,"./intersectGeom2":382,"./intersectGeom3":383}],382:[function(require,module,exports){
1522
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../utils/areAllShapesTheSameType":509,"../../utils/flatten":511,"./intersectGeom2":382,"./intersectGeom3":383}],382:[function(require,module,exports){
1523
1523
  const flatten=require("../../utils/flatten"),geom3=require("../../geometries/geom3"),measureEpsilon=require("../../measurements/measureEpsilon"),fromFakePolygons=require("./fromFakePolygons"),to3DWalls=require("./to3DWalls"),intersectGeom3=require("./intersectGeom3"),intersect=(...e)=>{const o=(e=flatten(e)).map(e=>to3DWalls({z0:-1,z1:1},e)),r=intersectGeom3(o),t=measureEpsilon(r);return fromFakePolygons(t,geom3.toPolygons(r))};module.exports=intersect;
1524
1524
 
1525
- },{"../../geometries/geom3":156,"../../measurements/measureEpsilon":377,"../../utils/flatten":510,"./fromFakePolygons":379,"./intersectGeom3":383,"./to3DWalls":392}],383:[function(require,module,exports){
1525
+ },{"../../geometries/geom3":156,"../../measurements/measureEpsilon":377,"../../utils/flatten":511,"./fromFakePolygons":379,"./intersectGeom3":383,"./to3DWalls":392}],383:[function(require,module,exports){
1526
1526
  const flatten=require("../../utils/flatten"),retessellate=require("../modifiers/retessellate"),intersectSub=require("./intersectGeom3Sub"),intersect=(...e)=>{let t=(e=flatten(e)).shift();return e.forEach(e=>{t=intersectSub(t,e)}),t=retessellate(t)};module.exports=intersect;
1527
1527
 
1528
- },{"../../utils/flatten":510,"../modifiers/retessellate":468,"./intersectGeom3Sub":384}],384:[function(require,module,exports){
1528
+ },{"../../utils/flatten":511,"../modifiers/retessellate":469,"./intersectGeom3Sub":384}],384:[function(require,module,exports){
1529
1529
  const geom3=require("../../geometries/geom3"),mayOverlap=require("./mayOverlap"),{Tree:Tree}=require("./trees"),intersectGeom3Sub=(e,o)=>{if(!mayOverlap(e,o))return geom3.create();const r=new Tree(geom3.toPolygons(e)),t=new Tree(geom3.toPolygons(o));r.invert(),t.clipTo(r),t.invert(),r.clipTo(t),t.clipTo(r),r.addPolygons(t.allPolygons()),r.invert();const n=r.allPolygons();return geom3.create(n)};module.exports=intersectGeom3Sub;
1530
1530
 
1531
1531
  },{"../../geometries/geom3":156,"./mayOverlap":385,"./trees":396}],385:[function(require,module,exports){
@@ -1534,19 +1534,19 @@ const{EPS:EPS}=require("../../maths/constants"),measureBoundingBox=require("../.
1534
1534
  },{"../../maths/constants":209,"../../measurements/measureBoundingBox":372}],386:[function(require,module,exports){
1535
1535
  const flatten=require("../../utils/flatten"),geom3=require("../../geometries/geom3"),scissionGeom3=require("./scissionGeom3"),scission=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");const s=e.map(e=>geom3.isA(e)?scissionGeom3(e):e);return 1===s.length?s[0]:s};module.exports=scission;
1536
1536
 
1537
- },{"../../geometries/geom3":156,"../../utils/flatten":510,"./scissionGeom3":387}],387:[function(require,module,exports){
1537
+ },{"../../geometries/geom3":156,"../../utils/flatten":511,"./scissionGeom3":387}],387:[function(require,module,exports){
1538
1538
  const vec3=require("../../maths/vec3"),measureEpsilon=require("../../measurements/measureEpsilon"),geom3=require("../../geometries/geom3"),sortNb=e=>e.sort((e,s)=>e-s).filter((e,s,o)=>!s||e!==o[s-1]),insertMapping=(e,s,o)=>{const t=`${s}`,n=e.get(t);void 0===n?e.set(t,[o]):n.push(o)},findMapping=(e,s)=>{const o=`${s}`;return e.get(o)},scissionGeom3=e=>{const s=measureEpsilon(e),o=geom3.toPolygons(e),t=o.length,n=new Map,r=vec3.create();o.forEach((e,o)=>{e.vertices.forEach(e=>{insertMapping(n,vec3.snap(r,e,s),o)})});const c=o.map(e=>{let o=[];return e.vertices.forEach(e=>{o=o.concat(findMapping(n,vec3.snap(r,e,s)))}),{e:1,d:sortNb(o)}});n.clear();let i=0;const a=c.length;for(let e=0;e<a;e++){const s=c[e];if(s.e>0){const o=new Array(t);o[e]=!0;do{i=0,o.forEach((e,s)=>{const t=c[s];if(t.e>0){t.e=-1;for(let e=0;e<t.d.length;e++)o[t.d[e]]=!0;i++}})}while(i>0);s.indexes=o}}const p=[];for(let e=0;e<a;e++)if(c[e].indexes){const s=[];c[e].indexes.forEach((e,t)=>s.push(o[t])),p.push(geom3.create(s))}return p};module.exports=scissionGeom3;
1539
1539
 
1540
1540
  },{"../../geometries/geom3":156,"../../maths/vec3":336,"../../measurements/measureEpsilon":377}],388:[function(require,module,exports){
1541
1541
  const flatten=require("../../utils/flatten"),areAllShapesTheSameType=require("../../utils/areAllShapesTheSameType"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),subtractGeom2=require("./subtractGeom2"),subtractGeom3=require("./subtractGeom3"),subtract=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");if(!areAllShapesTheSameType(e))throw new Error("only subtract of the types are supported");const r=e[0];return geom2.isA(r)?subtractGeom2(e):geom3.isA(r)?subtractGeom3(e):r};module.exports=subtract;
1542
1542
 
1543
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../utils/areAllShapesTheSameType":508,"../../utils/flatten":510,"./subtractGeom2":389,"./subtractGeom3":390}],389:[function(require,module,exports){
1543
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../utils/areAllShapesTheSameType":509,"../../utils/flatten":511,"./subtractGeom2":389,"./subtractGeom3":390}],389:[function(require,module,exports){
1544
1544
  const flatten=require("../../utils/flatten"),geom3=require("../../geometries/geom3"),measureEpsilon=require("../../measurements/measureEpsilon"),fromFakePolygons=require("./fromFakePolygons"),to3DWalls=require("./to3DWalls"),subtractGeom3=require("./subtractGeom3"),subtract=(...e)=>{const o=(e=flatten(e)).map(e=>to3DWalls({z0:-1,z1:1},e)),r=subtractGeom3(o),t=measureEpsilon(r);return fromFakePolygons(t,geom3.toPolygons(r))};module.exports=subtract;
1545
1545
 
1546
- },{"../../geometries/geom3":156,"../../measurements/measureEpsilon":377,"../../utils/flatten":510,"./fromFakePolygons":379,"./subtractGeom3":390,"./to3DWalls":392}],390:[function(require,module,exports){
1546
+ },{"../../geometries/geom3":156,"../../measurements/measureEpsilon":377,"../../utils/flatten":511,"./fromFakePolygons":379,"./subtractGeom3":390,"./to3DWalls":392}],390:[function(require,module,exports){
1547
1547
  const flatten=require("../../utils/flatten"),retessellate=require("../modifiers/retessellate"),subtractSub=require("./subtractGeom3Sub"),subtract=(...t)=>{let e=(t=flatten(t)).shift();return t.forEach(t=>{e=subtractSub(e,t)}),e=retessellate(e)};module.exports=subtract;
1548
1548
 
1549
- },{"../../utils/flatten":510,"../modifiers/retessellate":468,"./subtractGeom3Sub":391}],391:[function(require,module,exports){
1549
+ },{"../../utils/flatten":511,"../modifiers/retessellate":469,"./subtractGeom3Sub":391}],391:[function(require,module,exports){
1550
1550
  const geom3=require("../../geometries/geom3"),mayOverlap=require("./mayOverlap"),{Tree:Tree}=require("./trees"),subtractGeom3Sub=(e,o)=>{if(!mayOverlap(e,o))return geom3.clone(e);const r=new Tree(geom3.toPolygons(e)),t=new Tree(geom3.toPolygons(o));r.invert(),r.clipTo(t),t.clipTo(r,!0),r.addPolygons(t.allPolygons()),r.invert();const l=r.allPolygons();return geom3.create(l)};module.exports=subtractGeom3Sub;
1551
1551
 
1552
1552
  },{"../../geometries/geom3":156,"./mayOverlap":385,"./trees":396}],392:[function(require,module,exports){
@@ -1573,19 +1573,19 @@ const{EPS:EPS}=require("../../../maths/constants"),plane=require("../../../maths
1573
1573
  },{"../../../geometries/poly3":194,"../../../maths/constants":209,"../../../maths/plane":277,"../../../maths/vec3":336,"./splitLineSegmentByPlane":397}],399:[function(require,module,exports){
1574
1574
  const flatten=require("../../utils/flatten"),areAllShapesTheSameType=require("../../utils/areAllShapesTheSameType"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),unionGeom2=require("./unionGeom2"),unionGeom3=require("./unionGeom3"),union=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");if(!areAllShapesTheSameType(e))throw new Error("only unions of the same type are supported");const o=e[0];return geom2.isA(o)?unionGeom2(e):geom3.isA(o)?unionGeom3(e):o};module.exports=union;
1575
1575
 
1576
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../utils/areAllShapesTheSameType":508,"../../utils/flatten":510,"./unionGeom2":400,"./unionGeom3":401}],400:[function(require,module,exports){
1576
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../utils/areAllShapesTheSameType":509,"../../utils/flatten":511,"./unionGeom2":400,"./unionGeom3":401}],400:[function(require,module,exports){
1577
1577
  const flatten=require("../../utils/flatten"),geom3=require("../../geometries/geom3"),measureEpsilon=require("../../measurements/measureEpsilon"),fromFakePolygons=require("./fromFakePolygons"),to3DWalls=require("./to3DWalls"),unionGeom3=require("./unionGeom3"),union=(...e)=>{const o=(e=flatten(e)).map(e=>to3DWalls({z0:-1,z1:1},e)),n=unionGeom3(o),r=measureEpsilon(n);return fromFakePolygons(r,geom3.toPolygons(n))};module.exports=union;
1578
1578
 
1579
- },{"../../geometries/geom3":156,"../../measurements/measureEpsilon":377,"../../utils/flatten":510,"./fromFakePolygons":379,"./to3DWalls":392,"./unionGeom3":401}],401:[function(require,module,exports){
1579
+ },{"../../geometries/geom3":156,"../../measurements/measureEpsilon":377,"../../utils/flatten":511,"./fromFakePolygons":379,"./to3DWalls":392,"./unionGeom3":401}],401:[function(require,module,exports){
1580
1580
  const flatten=require("../../utils/flatten"),retessellate=require("../modifiers/retessellate"),unionSub=require("./unionGeom3Sub"),union=(...e)=>{let t;for(e=flatten(e),t=1;t<e.length;t+=2)e.push(unionSub(e[t-1],e[t]));let n=e[t-1];return n=retessellate(n)};module.exports=union;
1581
1581
 
1582
- },{"../../utils/flatten":510,"../modifiers/retessellate":468,"./unionGeom3Sub":402}],402:[function(require,module,exports){
1582
+ },{"../../utils/flatten":511,"../modifiers/retessellate":469,"./unionGeom3Sub":402}],402:[function(require,module,exports){
1583
1583
  const geom3=require("../../geometries/geom3"),mayOverlap=require("./mayOverlap"),{Tree:Tree}=require("./trees"),unionSub=(e,o)=>{if(!mayOverlap(e,o))return unionForNonIntersecting(e,o);const n=new Tree(geom3.toPolygons(e)),r=new Tree(geom3.toPolygons(o));n.clipTo(r,!1),r.clipTo(n),r.invert(),r.clipTo(n),r.invert();const t=n.allPolygons().concat(r.allPolygons());return geom3.create(t)},unionForNonIntersecting=(e,o)=>{let n=geom3.toPolygons(e);return n=n.concat(geom3.toPolygons(o)),geom3.create(n)};module.exports=unionSub;
1584
1584
 
1585
1585
  },{"../../geometries/geom3":156,"./mayOverlap":385,"./trees":396}],403:[function(require,module,exports){
1586
1586
  const flatten=require("../../utils/flatten"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),expandGeom2=require("./expandGeom2"),expandGeom3=require("./expandGeom3"),expandPath2=require("./expandPath2"),expand=(e,...r)=>{if(0===(r=flatten(r)).length)throw new Error("wrong number of arguments");const t=r.map(r=>path2.isA(r)?expandPath2(e,r):geom2.isA(r)?expandGeom2(e,r):geom3.isA(r)?expandGeom3(e,r):r);return 1===t.length?t[0]:t};module.exports=expand;
1587
1587
 
1588
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../utils/flatten":510,"./expandGeom2":404,"./expandGeom3":405,"./expandPath2":406}],404:[function(require,module,exports){
1588
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../utils/flatten":511,"./expandGeom2":404,"./expandGeom3":405,"./expandPath2":406}],404:[function(require,module,exports){
1589
1589
  const geom2=require("../../geometries/geom2"),offsetFromPoints=require("./offsetFromPoints"),expandGeom2=(e,o)=>{const{delta:r,corners:s,segments:t}=Object.assign({},{delta:1,corners:"edge",segments:16},e);if("edge"!==s&&"chamfer"!==s&&"round"!==s)throw new Error('corners must be "edge", "chamfer", or "round"');const n=geom2.toOutlines(o).map(o=>offsetFromPoints(e={delta:r,corners:s,closed:!0,segments:t},o)).reduce((e,o)=>e.concat(geom2.toSides(geom2.fromPoints(o))),[]);return geom2.create(n)};module.exports=expandGeom2;
1590
1590
 
1591
1591
  },{"../../geometries/geom2":141,"./offsetFromPoints":411}],405:[function(require,module,exports){
@@ -1597,7 +1597,7 @@ const area=require("../../maths/utils/area"),vec2=require("../../maths/vec2"),ge
1597
1597
  },{"../../geometries/geom2":141,"../../geometries/path2":177,"../../maths/utils/area":282,"../../maths/vec2":305,"./offsetFromPoints":411}],407:[function(require,module,exports){
1598
1598
  const{EPS:EPS,TAU:TAU}=require("../../maths/constants"),mat4=require("../../maths/mat4"),vec3=require("../../maths/vec3"),fnNumberSort=require("../../utils/fnNumberSort"),geom3=require("../../geometries/geom3"),poly3=require("../../geometries/poly3"),sphere=require("../../primitives/sphere"),retessellate=require("../modifiers/retessellate"),unionGeom3Sub=require("../booleans/unionGeom3Sub"),extrudePolygon=require("./extrudePolygon"),mapPlaneToVertex=(e,t,o)=>{const n=t.toString();if(e.has(n)){e.get(n)[1].push(o)}else{const s=[t,[o]];e.set(n,s)}},mapPlaneToEdge=(e,t,o)=>{const n=t[0].toString(),s=t[1].toString(),r=n<s?`${n},${s}`:`${s},${n}`;if(e.has(r)){e.get(r)[1].push(o)}else{const n=[t,[o]];e.set(r,n)}},addUniqueAngle=(e,t)=>{e.findIndex(e=>e===t)<0&&e.push(t)},expandShell=(e,t)=>{const{delta:o,segments:n}=Object.assign({},{delta:1,segments:12},e);let s=geom3.create();const r=new Map,c=new Map,a=vec3.create(),l=vec3.create();return geom3.toPolygons(t).forEach((e,t)=>{const n=vec3.scale(vec3.create(),poly3.plane(e),2*o),a=poly3.transform(mat4.fromTranslation(mat4.create(),vec3.scale(vec3.create(),n,-.5)),e),l=extrudePolygon(n,a);s=unionGeom3Sub(s,l);const u=e.vertices;for(let t=0;t<u.length;t++){mapPlaneToVertex(r,u[t],poly3.plane(e));const o=(t+1)%u.length,n=[u[t],u[o]];mapPlaneToEdge(c,n,poly3.plane(e))}}),c.forEach(e=>{const t=e[0],r=e[1],c=t[0],u=t[1],i=vec3.subtract(vec3.create(),u,c);vec3.normalize(i,i);const m=r[0],g=vec3.cross(vec3.create(),m,i);let p=[];for(let e=0;e<n;e++)addUniqueAngle(p,e*TAU/n);for(let e=0,t=r.length;e<t;e++){const t=r[e],o=vec3.dot(g,t),n=vec3.dot(m,t);let s=Math.atan2(o,n);s<0&&(s+=TAU),addUniqueAngle(p,s),(s=Math.atan2(-o,-n))<0&&(s+=TAU),addUniqueAngle(p,s)}const h=(p=p.sort(fnNumberSort)).length;let v,d;const f=[],S=[],q=[];for(let e=-1;e<h;e++){const t=p[e<0?e+h:e],n=Math.sin(t),s=Math.cos(t);vec3.scale(a,m,s*o),vec3.scale(l,g,n*o),vec3.add(a,a,l);const r=vec3.add(vec3.create(),c,a),i=vec3.add(vec3.create(),u,a);let y=!1;if(e>=0&&vec3.distance(r,v)<EPS&&(y=!0),!y){if(e>=0){f.push(r),S.push(i);const e=[d,i,r,v],t=poly3.create(e);q.push(t)}v=r,d=i}}S.reverse(),q.push(poly3.create(f)),q.push(poly3.create(S));const y=geom3.create(q);s=unionGeom3Sub(s,y)}),r.forEach(e=>{const t=e[0],r=e[1],c=r[0];let u=null,i=0;for(let e=1;e<r.length;e++){const t=r[e],o=vec3.cross(a,c,t),n=vec3.length(o);n>.05&&n>i&&(i=n,u=t)}u||(u=vec3.orthogonal(a,c));const m=vec3.cross(a,c,u);vec3.normalize(m,m);const g=vec3.cross(l,m,c),p=sphere({center:[t[0],t[1],t[2]],radius:o,segments:n,axes:[c,m,g]});s=unionGeom3Sub(s,p)}),retessellate(s)};module.exports=expandShell;
1599
1599
 
1600
- },{"../../geometries/geom3":156,"../../geometries/poly3":194,"../../maths/constants":209,"../../maths/mat4":258,"../../maths/vec3":336,"../../primitives/sphere":498,"../../utils/fnNumberSort":511,"../booleans/unionGeom3Sub":402,"../modifiers/retessellate":468,"./extrudePolygon":408}],408:[function(require,module,exports){
1600
+ },{"../../geometries/geom3":156,"../../geometries/poly3":194,"../../maths/constants":209,"../../maths/mat4":258,"../../maths/vec3":336,"../../primitives/sphere":499,"../../utils/fnNumberSort":512,"../booleans/unionGeom3Sub":402,"../modifiers/retessellate":469,"./extrudePolygon":408}],408:[function(require,module,exports){
1601
1601
  const mat4=require("../../maths/mat4"),vec3=require("../../maths/vec3"),geom3=require("../../geometries/geom3"),poly3=require("../../geometries/poly3"),extrudePolygon=(e,r)=>{vec3.dot(poly3.plane(r),e)>0&&(r=poly3.invert(r));const t=[r],o=poly3.transform(mat4.fromTranslation(mat4.create(),e),r),s=r.vertices.length;for(let e=0;e<s;e++){const c=e<s-1?e+1:0,i=poly3.create([r.vertices[e],o.vertices[e],o.vertices[c],r.vertices[c]]);t.push(i)}return t.push(poly3.invert(o)),geom3.create(t)};module.exports=extrudePolygon;
1602
1602
 
1603
1603
  },{"../../geometries/geom3":156,"../../geometries/poly3":194,"../../maths/mat4":258,"../../maths/vec3":336}],409:[function(require,module,exports){
@@ -1606,7 +1606,7 @@ module.exports={expand:require("./expand"),offset:require("./offset")};
1606
1606
  },{"./expand":403,"./offset":410}],410:[function(require,module,exports){
1607
1607
  const flatten=require("../../utils/flatten"),geom2=require("../../geometries/geom2"),path2=require("../../geometries/path2"),offsetGeom2=require("./offsetGeom2"),offsetPath2=require("./offsetPath2"),offset=(e,...t)=>{if(0===(t=flatten(t)).length)throw new Error("wrong number of arguments");const o=t.map(t=>path2.isA(t)?offsetPath2(e,t):geom2.isA(t)?offsetGeom2(e,t):t);return 1===o.length?o[0]:o};module.exports=offset;
1608
1608
 
1609
- },{"../../geometries/geom2":141,"../../geometries/path2":177,"../../utils/flatten":510,"./offsetGeom2":412,"./offsetPath2":413}],411:[function(require,module,exports){
1609
+ },{"../../geometries/geom2":141,"../../geometries/path2":177,"../../utils/flatten":511,"./offsetGeom2":412,"./offsetPath2":413}],411:[function(require,module,exports){
1610
1610
  const{EPS:EPS,TAU:TAU}=require("../../maths/constants"),intersect=require("../../maths/utils/intersect"),line2=require("../../maths/line2"),vec2=require("../../maths/vec2"),area=require("../../maths/utils/area"),offsetFromPoints=(e,t)=>{let{delta:s,corners:c,closed:n,segments:a}=Object.assign({},{delta:1,corners:"edge",closed:!1,segments:16},e);if(Math.abs(s)<EPS)return t;let r=e.closed?area(t):1;0===r&&(r=1);const o=r>0&&s>=0||r<0&&s<0;s=Math.abs(s);let i=null,l=[];const u=[],v=vec2.create(),f=t.length;for(let e=0;e<f;e++){const c=(e+1)%f,a=t[e],r=t[c];o?vec2.subtract(v,a,r):vec2.subtract(v,r,a),vec2.normal(v,v),vec2.normalize(v,v),vec2.scale(v,v,s);const h=vec2.add(vec2.create(),a,v),d=vec2.add(vec2.create(),r,v),m=[h,d];if(null!=i&&(n||!n&&0!==c)){const e=intersect(i[0],i[1],m[0],m[1]);e?(l.pop(),m[0]=e):u.push({c:a,s0:i,s1:m})}i=[h,d],(0!==c||n)&&(l.push(m[0]),l.push(m[1]))}if(n&&null!=i){const e=l[0],s=l[1],c=intersect(i[0],i[1],e,s);if(c)l[0]=c,l.pop();else{const c=t[0],n=[e,s];u.push({c:c,s0:i,s1:n})}}if("edge"===c){const e=new Map;l.forEach((t,s)=>e.set(t,s));const t=line2.create(),s=line2.create();u.forEach(c=>{line2.fromPoints(t,c.s0[0],c.s0[1]),line2.fromPoints(s,c.s1[0],c.s1[1]);const n=line2.intersectPointOfLines(t,s);if(Number.isFinite(n[0])&&Number.isFinite(n[1])){const t=c.s0[1],s=e.get(t);l[s]=n,l[(s+1)%l.length]=void 0}else{const t=c.s1[0],s=e.get(t);l[s]=void 0}}),l=l.filter(e=>void 0!==e)}if("round"===c){let e=Math.floor(a/4);const t=vec2.create();u.forEach(c=>{let n=vec2.angle(vec2.subtract(t,c.s1[0],c.c));if(n-=vec2.angle(vec2.subtract(t,c.s0[1],c.c)),o&&n<0&&(n+=Math.PI)<0&&(n+=Math.PI),!o&&n>0&&(n-=Math.PI)>0&&(n-=Math.PI),0!==n){const r=n/(e=Math.floor(a*(Math.abs(n)/TAU))),o=vec2.angle(vec2.subtract(t,c.s0[1],c.c)),i=[];for(let t=1;t<e;t++){const e=o+r*t,n=vec2.fromAngleRadians(vec2.create(),e);vec2.scale(n,n,s),vec2.add(n,n,c.c),i.push(n)}if(i.length>0){const e=c.s0[1];let t=l.findIndex(t=>vec2.equals(e,t));t=(t+1)%l.length,l.splice(t,0,...i)}}else{const e=c.s1[0],t=l.findIndex(t=>vec2.equals(e,t));l.splice(t,1)}})}return l};module.exports=offsetFromPoints;
1611
1611
 
1612
1612
  },{"../../maths/constants":209,"../../maths/line2":220,"../../maths/utils/area":282,"../../maths/utils/intersect":285,"../../maths/vec2":305}],412:[function(require,module,exports){
@@ -1636,628 +1636,631 @@ const{Node:Node,insertNode:insertNode,removeNode:removeNode}=require("./linkedLi
1636
1636
  },{"./linkedList":417,"./triangle":421}],420:[function(require,module,exports){
1637
1637
  const geom2=require("../../../geometries/geom2"),plane=require("../../../maths/plane"),vec2=require("../../../maths/vec2"),vec3=require("../../../maths/vec3"),calculatePlane=require("../slice/calculatePlane"),assignHoles=require("./assignHoles");class PolygonHierarchy{constructor(e){this.plane=calculatePlane(e);const s=vec3.orthogonal(vec3.create(),this.plane),c=vec3.cross(vec3.create(),this.plane,s);this.v=vec3.normalize(c,c),this.u=vec3.cross(vec3.create(),this.v,this.plane),this.basisMap=new Map;const t=e.edges.map(e=>e.map(e=>this.to2D(e))),a=geom2.create(t);this.roots=assignHoles(a)}to2D(e){const s=vec2.fromValues(vec3.dot(e,this.u),vec3.dot(e,this.v));return this.basisMap.set(s,e),s}to3D(e){const s=this.basisMap.get(e);if(s)return s;{console.log("Warning: point not in original slice");const s=vec3.scale(vec3.create(),this.u,e[0]),c=vec3.scale(vec3.create(),this.v,e[1]),t=vec3.scale(vec3.create(),plane,plane[3]),a=vec3.add(s,s,t);return vec3.add(c,c,a)}}}module.exports=PolygonHierarchy;
1638
1638
 
1639
- },{"../../../geometries/geom2":141,"../../../maths/plane":277,"../../../maths/vec2":305,"../../../maths/vec3":336,"../slice/calculatePlane":433,"./assignHoles":414}],421:[function(require,module,exports){
1639
+ },{"../../../geometries/geom2":141,"../../../maths/plane":277,"../../../maths/vec2":305,"../../../maths/vec3":336,"../slice/calculatePlane":434,"./assignHoles":414}],421:[function(require,module,exports){
1640
1640
  const pointInTriangle=(n,a,e,r,i,o,t,x)=>(i-t)*(a-x)-(n-t)*(o-x)>=0&&(n-t)*(r-x)-(e-t)*(a-x)>=0&&(e-t)*(o-x)-(i-t)*(r-x)>=0,area=(n,a,e)=>(a.y-n.y)*(e.x-a.x)-(a.x-n.x)*(e.y-a.y);module.exports={area:area,pointInTriangle:pointInTriangle};
1641
1641
 
1642
1642
  },{}],422:[function(require,module,exports){
1643
1643
  const mat4=require("../../maths/mat4"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),poly3=require("../../geometries/poly3"),slice=require("./slice"),repairSlice=require("./slice/repair"),extrudeWalls=require("./extrudeWalls"),defaultCallback=(e,r,l)=>{let t=null;return geom2.isA(l)&&(t=slice.fromSides(geom2.toSides(l))),poly3.isA(l)&&(t=slice.fromPoints(poly3.toPoints(l))),0===e||1===e?slice.transform(mat4.fromTranslation(mat4.create(),[0,0,e]),t):null},extrudeFromSlices=(e,r)=>{const l={numberOfSlices:2,capStart:!0,capEnd:!0,close:!1,repair:!0,callback:defaultCallback},{numberOfSlices:t,capStart:o,capEnd:c,close:s,repair:i,callback:a}=Object.assign({},l,e);if(t<2)throw new Error("numberOfSlices must be 2 or more");i&&(r=repairSlice(r));const n=t-1;let u=null,m=null,f=null,g=[];for(let e=0;e<t;e++){const l=a(e/n,e,r);if(l){if(!slice.isA(l))throw new Error("the callback function must return slice objects");if(0===slice.toEdges(l).length)throw new Error("the callback function must return slices with one or more edges");f&&(g=g.concat(extrudeWalls(f,l))),0===e&&(u=l),e===t-1&&(m=l),f=l}}if(c){const e=slice.toPolygons(m);g=g.concat(e)}if(o){const e=slice.toPolygons(u).map(poly3.invert);g=g.concat(e)}return o||c||s&&!slice.equals(m,u)&&(g=g.concat(extrudeWalls(m,u))),geom3.create(g)};module.exports=extrudeFromSlices;
1644
1644
 
1645
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/poly3":194,"../../maths/mat4":258,"./extrudeWalls":430,"./slice":439,"./slice/repair":441}],423:[function(require,module,exports){
1645
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/poly3":194,"../../maths/mat4":258,"./extrudeWalls":431,"./slice":440,"./slice/repair":442}],423:[function(require,module,exports){
1646
+ const{TAU:TAU}=require("../../maths/constants"),slice=require("./slice"),mat4=require("../../maths/mat4"),extrudeFromSlices=require("./extrudeFromSlices"),geom2=require("../../geometries/geom2"),extrudeHelical=(e,t)=>{const r={angle:TAU,startAngle:0,pitch:10,endOffset:0,segmentsPerRotation:32},{angle:a,endOffset:s,segmentsPerRotation:i,startAngle:o}=Object.assign({},r,e);let n;n=!e.pitch&&e.height?e.height/(a/TAU):e.pitch?e.pitch:r.pitch;if(i<3)throw new Error("The number of segments per rotation needs to be at least 3.");let m=geom2.toSides(t);if(0===m.length)throw new Error("the given geometry cannot be empty");const l=m.filter(e=>e[0][0]>=0);let c=slice.fromSides(m);0===l.length&&(c=slice.reverse(c));const h=Math.round(i/TAU*Math.abs(a)),g=h>=2?h:2,u=mat4.create();let f;return extrudeFromSlices({numberOfSlices:g+1,callback:(e,t,r)=>{const i=o+a/g*t,m=s/g*t,l=(i-o)/TAU*n;return mat4.multiply(u,mat4.fromTranslation(mat4.create(),[m,0,l*Math.sign(a)]),mat4.fromXRotation(mat4.create(),-TAU/4*Math.sign(a))),f=mat4.create(),mat4.multiply(f,mat4.fromZRotation(mat4.create(),i),u),slice.transform(f,r)}},c)};module.exports=extrudeHelical;
1647
+
1648
+ },{"../../geometries/geom2":141,"../../maths/constants":209,"../../maths/mat4":258,"./extrudeFromSlices":422,"./slice":440}],424:[function(require,module,exports){
1646
1649
  const flatten=require("../../utils/flatten"),geom2=require("../../geometries/geom2"),path2=require("../../geometries/path2"),extrudeLinearGeom2=require("./extrudeLinearGeom2"),extrudeLinearPath2=require("./extrudeLinearPath2"),extrudeLinear=(e,...t)=>{const{height:r,twistAngle:i,twistSteps:n,repair:a}=Object.assign({},{height:1,twistAngle:0,twistSteps:1,repair:!0},e);if(0===(t=flatten(t)).length)throw new Error("wrong number of arguments");e={offset:[0,0,r],twistAngle:i,twistSteps:n,repair:a};const s=t.map(t=>path2.isA(t)?extrudeLinearPath2(e,t):geom2.isA(t)?extrudeLinearGeom2(e,t):t);return 1===s.length?s[0]:s};module.exports=extrudeLinear;
1647
1650
 
1648
- },{"../../geometries/geom2":141,"../../geometries/path2":177,"../../utils/flatten":510,"./extrudeLinearGeom2":424,"./extrudeLinearPath2":425}],424:[function(require,module,exports){
1651
+ },{"../../geometries/geom2":141,"../../geometries/path2":177,"../../utils/flatten":511,"./extrudeLinearGeom2":425,"./extrudeLinearPath2":426}],425:[function(require,module,exports){
1649
1652
  const mat4=require("../../maths/mat4"),vec3=require("../../maths/vec3"),geom2=require("../../geometries/geom2"),slice=require("./slice"),extrudeFromSlices=require("./extrudeFromSlices"),extrudeGeom2=(e,t)=>{let{offset:r,twistAngle:s,twistSteps:o,repair:i}=Object.assign({},{offset:[0,0,1],twistAngle:0,twistSteps:12,repair:!0},e);if(o<1)throw new Error("twistSteps must be 1 or more");0===s&&(o=1);const c=vec3.clone(r),m=geom2.toSides(t);if(0===m.length)throw new Error("the given geometry cannot be empty");const a=slice.fromSides(m);c[2]<0&&slice.reverse(a,a);const n=mat4.create();return extrudeFromSlices(e={numberOfSlices:o+1,capStart:!0,capEnd:!0,repair:i,callback:(e,t,r)=>{const i=t/o*s,m=vec3.scale(vec3.create(),c,t/o);return mat4.multiply(n,mat4.fromZRotation(n,i),mat4.fromTranslation(mat4.create(),m)),slice.transform(n,r)}},a)};module.exports=extrudeGeom2;
1650
1653
 
1651
- },{"../../geometries/geom2":141,"../../maths/mat4":258,"../../maths/vec3":336,"./extrudeFromSlices":422,"./slice":439}],425:[function(require,module,exports){
1654
+ },{"../../geometries/geom2":141,"../../maths/mat4":258,"../../maths/vec3":336,"./extrudeFromSlices":422,"./slice":440}],426:[function(require,module,exports){
1652
1655
  const geom2=require("../../geometries/geom2"),path2=require("../../geometries/path2"),extrudeLinearGeom2=require("./extrudeLinearGeom2"),extrudePath2=(e,r)=>{if(!r.isClosed)throw new Error("extruded path must be closed");const t=path2.toPoints(r),o=geom2.fromPoints(t);return extrudeLinearGeom2(e,o)};module.exports=extrudePath2;
1653
1656
 
1654
- },{"../../geometries/geom2":141,"../../geometries/path2":177,"./extrudeLinearGeom2":424}],426:[function(require,module,exports){
1657
+ },{"../../geometries/geom2":141,"../../geometries/path2":177,"./extrudeLinearGeom2":425}],427:[function(require,module,exports){
1655
1658
  const flatten=require("../../utils/flatten"),geom2=require("../../geometries/geom2"),path2=require("../../geometries/path2"),extrudeRectangularPath2=require("./extrudeRectangularPath2"),extrudeRectangularGeom2=require("./extrudeRectangularGeom2"),extrudeRectangular=(e,...t)=>{const{size:r,height:a}=Object.assign({},{size:1,height:1},e);if(0===(t=flatten(t)).length)throw new Error("wrong number of arguments");if(r<=0)throw new Error("size must be positive");if(a<=0)throw new Error("height must be positive");const u=t.map(t=>path2.isA(t)?extrudeRectangularPath2(e,t):geom2.isA(t)?extrudeRectangularGeom2(e,t):t);return 1===u.length?u[0]:u};module.exports=extrudeRectangular;
1656
1659
 
1657
- },{"../../geometries/geom2":141,"../../geometries/path2":177,"../../utils/flatten":510,"./extrudeRectangularGeom2":427,"./extrudeRectangularPath2":428}],427:[function(require,module,exports){
1660
+ },{"../../geometries/geom2":141,"../../geometries/path2":177,"../../utils/flatten":511,"./extrudeRectangularGeom2":428,"./extrudeRectangularPath2":429}],428:[function(require,module,exports){
1658
1661
  const{area:area}=require("../../maths/utils"),geom2=require("../../geometries/geom2"),path2=require("../../geometries/path2"),expand=require("../expansions/expand"),extrudeLinearGeom2=require("./extrudeLinearGeom2"),extrudeRectangularGeom2=(e,r)=>{const{size:t,height:o}=Object.assign({},{size:1,height:1},e);e.delta=t,e.offset=[0,0,o];const a=geom2.toOutlines(r);if(0===a.length)throw new Error("the given geometry cannot be empty");const n=a.map(r=>(area(r)<0&&r.reverse(),expand(e,path2.fromPoints({closed:!0},r)))).reduce((e,r)=>e.concat(geom2.toSides(r)),[]),i=geom2.create(n);return extrudeLinearGeom2(e,i)};module.exports=extrudeRectangularGeom2;
1659
1662
 
1660
- },{"../../geometries/geom2":141,"../../geometries/path2":177,"../../maths/utils":283,"../expansions/expand":403,"./extrudeLinearGeom2":424}],428:[function(require,module,exports){
1663
+ },{"../../geometries/geom2":141,"../../geometries/path2":177,"../../maths/utils":283,"../expansions/expand":403,"./extrudeLinearGeom2":425}],429:[function(require,module,exports){
1661
1664
  const path2=require("../../geometries/path2"),expand=require("../expansions/expand"),extrudeLinearGeom2=require("./extrudeLinearGeom2"),extrudeRectangularPath2=(e,t)=>{const{size:r,height:n}=Object.assign({},{size:1,height:1},e);if(e.delta=r,e.offset=[0,0,n],0===path2.toPoints(t).length)throw new Error("the given geometry cannot be empty");const a=expand(e,t);return extrudeLinearGeom2(e,a)};module.exports=extrudeRectangularPath2;
1662
1665
 
1663
- },{"../../geometries/path2":177,"../expansions/expand":403,"./extrudeLinearGeom2":424}],429:[function(require,module,exports){
1666
+ },{"../../geometries/path2":177,"../expansions/expand":403,"./extrudeLinearGeom2":425}],430:[function(require,module,exports){
1664
1667
  const{TAU:TAU}=require("../../maths/constants"),mat4=require("../../maths/mat4"),{mirrorX:mirrorX}=require("../transforms/mirror"),geom2=require("../../geometries/geom2"),slice=require("./slice"),extrudeFromSlices=require("./extrudeFromSlices"),extrudeRotate=(e,t)=>{const r={segments:12,startAngle:0,angle:TAU,overflow:"cap"};let{segments:a,startAngle:o,angle:s,overflow:m}=Object.assign({},r,e);if(a<3)throw new Error("segments must be greater then 3");o=Math.abs(o)>TAU?o%TAU:o,s=Math.abs(s)>TAU?s%TAU:s;let n=o+s;if((n=Math.abs(n)>TAU?n%TAU:n)<o){const e=o;o=n,n=e}let l=n-o;if(l<=0&&(l=TAU),Math.abs(l)<TAU){const e=TAU/a;a=Math.floor(Math.abs(l)/e),Math.abs(l)>a*e&&a++}let i=geom2.toSides(t);if(0===i.length)throw new Error("the given geometry cannot be empty");const c=i.filter(e=>e[0][0]<0),g=i.filter(e=>e[0][0]>=0);c.length>0&&g.length>0&&"cap"===m&&(c.length>g.length?(i=i.map(e=>{let t=e[0],r=e[1];return[t=[Math.min(t[0],0),t[1]],r=[Math.min(r[0],0),r[1]]]}),t=geom2.reverse(geom2.create(i)),t=mirrorX(t)):g.length>=c.length&&(i=i.map(e=>{let t=e[0],r=e[1];return[t=[Math.max(t[0],0),t[1]],r=[Math.max(r[0],0),r[1]]]}),t=geom2.create(i)));const h=l/a,u=Math.abs(l)<TAU,A=slice.fromSides(geom2.toSides(t));slice.reverse(A,A);const f=mat4.create();return extrudeFromSlices(e={numberOfSlices:a+1,capStart:u,capEnd:u,close:!u,callback:(e,t,r)=>{let s=h*t+o;return l===TAU&&t===a&&(s=o),mat4.multiply(f,mat4.fromZRotation(f,s),mat4.fromXRotation(mat4.create(),TAU/4)),slice.transform(f,r)}},A)};module.exports=extrudeRotate;
1665
1668
 
1666
- },{"../../geometries/geom2":141,"../../maths/constants":209,"../../maths/mat4":258,"../transforms/mirror":475,"./extrudeFromSlices":422,"./slice":439}],430:[function(require,module,exports){
1669
+ },{"../../geometries/geom2":141,"../../maths/constants":209,"../../maths/mat4":258,"../transforms/mirror":476,"./extrudeFromSlices":422,"./slice":440}],431:[function(require,module,exports){
1667
1670
  const{EPS:EPS}=require("../../maths/constants"),vec3=require("../../maths/vec3"),poly3=require("../../geometries/poly3"),slice=require("./slice"),gcd=(e,t)=>e===t?e:e<t?gcd(t,e):1===t?1:0===t?e:gcd(t,e%t),lcm=(e,t)=>e*t/gcd(e,t),repartitionEdges=(e,t)=>{const r=e/t.length;if(1===r)return t;const s=vec3.fromValues(r,r,r),c=[];return t.forEach(e=>{const t=vec3.subtract(vec3.create(),e[1],e[0]);vec3.divide(t,t,s);let l=e[0];for(let e=1;e<=r;++e){const e=vec3.add(vec3.create(),l,t);c.push([l,e]),l=e}}),c},EPSAREA=EPS*EPS/2*Math.sin(Math.PI/3),extrudeWalls=(e,t)=>{let r=slice.toEdges(e),s=slice.toEdges(t);if(r.length!==s.length){const e=lcm(r.length,s.length);e!==r.length&&(r=repartitionEdges(e,r)),e!==s.length&&(s=repartitionEdges(e,s))}const c=[];return r.forEach((e,t)=>{const r=s[t],l=poly3.create([e[0],e[1],r[1]]),o=poly3.measureArea(l);Number.isFinite(o)&&o>EPSAREA&&c.push(l);const n=poly3.create([e[0],r[1],r[0]]),i=poly3.measureArea(n);Number.isFinite(i)&&i>EPSAREA&&c.push(n)}),c};module.exports=extrudeWalls;
1668
1671
 
1669
- },{"../../geometries/poly3":194,"../../maths/constants":209,"../../maths/vec3":336,"./slice":439}],431:[function(require,module,exports){
1670
- module.exports={extrudeFromSlices:require("./extrudeFromSlices"),extrudeLinear:require("./extrudeLinear"),extrudeRectangular:require("./extrudeRectangular"),extrudeRotate:require("./extrudeRotate"),project:require("./project"),slice:require("./slice")};
1672
+ },{"../../geometries/poly3":194,"../../maths/constants":209,"../../maths/vec3":336,"./slice":440}],432:[function(require,module,exports){
1673
+ module.exports={extrudeFromSlices:require("./extrudeFromSlices"),extrudeLinear:require("./extrudeLinear"),extrudeRectangular:require("./extrudeRectangular"),extrudeRotate:require("./extrudeRotate"),extrudeHelical:require("./extrudeHelical"),project:require("./project"),slice:require("./slice")};
1671
1674
 
1672
- },{"./extrudeFromSlices":422,"./extrudeLinear":423,"./extrudeRectangular":426,"./extrudeRotate":429,"./project":432,"./slice":439}],432:[function(require,module,exports){
1675
+ },{"./extrudeFromSlices":422,"./extrudeHelical":423,"./extrudeLinear":424,"./extrudeRectangular":427,"./extrudeRotate":430,"./project":433,"./slice":440}],433:[function(require,module,exports){
1673
1676
  const flatten=require("../../utils/flatten"),aboutEqualNormals=require("../../maths/utils/aboutEqualNormals"),plane=require("../../maths/plane"),mat4=require("../../maths/mat4"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),poly3=require("../../geometries/poly3"),measureEpsilon=require("../../measurements/measureEpsilon"),unionGeom2=require("../booleans/unionGeom2"),projectGeom3=(e,o)=>{const r=plane.fromNormalAndPoint(plane.create(),e.axis,e.origin);if(Number.isNaN(r[0])||Number.isNaN(r[1])||Number.isNaN(r[2])||Number.isNaN(r[3]))throw new Error("project: invalid axis or origin");const t=measureEpsilon(o),a=t*t*Math.sqrt(3)/4;if(0===t)return geom2.create();const n=geom3.toPolygons(o);let s=[];for(let e=0;e<n.length;e++){const o=n[e].vertices.map(e=>plane.projectionOfPoint(r,e)),t=poly3.create(o),i=poly3.plane(t);aboutEqualNormals(r,i)&&(poly3.measureArea(t)<a||s.push(t))}if(!aboutEqualNormals(r,[0,0,1])){const e=mat4.fromVectorRotation(mat4.create(),r,[0,0,1]);s=s.map(o=>poly3.transform(e,o))}const i=(s=s.sort((e,o)=>poly3.measureArea(o)-poly3.measureArea(e))).map(e=>geom2.fromPoints(e.vertices));return unionGeom2(i)},project=(e,...o)=>{const{axis:r,origin:t}=Object.assign({},{axis:[0,0,1],origin:[0,0,0]},e);if(0===(o=flatten(o)).length)throw new Error("wrong number of arguments");e={axis:r,origin:t};const a=o.map(o=>geom3.isA(o)?projectGeom3(e,o):o);return 1===a.length?a[0]:a};module.exports=project;
1674
1677
 
1675
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/poly3":194,"../../maths/mat4":258,"../../maths/plane":277,"../../maths/utils/aboutEqualNormals":281,"../../measurements/measureEpsilon":377,"../../utils/flatten":510,"../booleans/unionGeom2":400}],433:[function(require,module,exports){
1678
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/poly3":194,"../../maths/mat4":258,"../../maths/plane":277,"../../maths/utils/aboutEqualNormals":281,"../../measurements/measureEpsilon":377,"../../utils/flatten":511,"../booleans/unionGeom2":400}],434:[function(require,module,exports){
1676
1679
  const plane=require("../../../maths/plane"),vec3=require("../../../maths/vec3"),calculatePlane=e=>{const c=e.edges;if(c.length<3)throw new Error("slices must have 3 or more edges to calculate a plane");const a=c.reduce((e,c)=>vec3.add(vec3.create(),e,c[0]),vec3.create());let t;vec3.scale(a,a,1/c.length);let l=0;c.forEach(e=>{if(!vec3.equals(e[0],e[1])){const c=vec3.squaredDistance(a,e[0]);c>l&&(t=e,l=c)}});const r=c.find(e=>vec3.equals(e[1],t[0]));return plane.fromPoints(plane.create(),r[0],t[0],t[1])};module.exports=calculatePlane;
1677
1680
 
1678
- },{"../../../maths/plane":277,"../../../maths/vec3":336}],434:[function(require,module,exports){
1681
+ },{"../../../maths/plane":277,"../../../maths/vec3":336}],435:[function(require,module,exports){
1679
1682
  const create=require("./create"),vec3=require("../../../maths/vec3"),clone=(...e)=>{let c,r;return 1===e.length?(c=create(),r=e[0]):(c=e[0],r=e[1]),c.edges=r.edges.map(e=>[vec3.clone(e[0]),vec3.clone(e[1])]),c};module.exports=clone;
1680
1683
 
1681
- },{"../../../maths/vec3":336,"./create":435}],435:[function(require,module,exports){
1684
+ },{"../../../maths/vec3":336,"./create":436}],436:[function(require,module,exports){
1682
1685
  const create=e=>(e||(e=[]),{edges:e});module.exports=create;
1683
1686
 
1684
- },{}],436:[function(require,module,exports){
1687
+ },{}],437:[function(require,module,exports){
1685
1688
  const vec3=require("../../../maths/vec3"),equals=(e,s)=>{const r=e.edges,t=s.edges;return r.length===t.length&&r.reduce((e,s,r)=>{const u=t[r],c=vec3.squaredDistance(s[0],u[0]);return e&&c<Number.EPSILON},!0)};module.exports=equals;
1686
1689
 
1687
- },{"../../../maths/vec3":336}],437:[function(require,module,exports){
1690
+ },{"../../../maths/vec3":336}],438:[function(require,module,exports){
1688
1691
  const vec3=require("../../../maths/vec3"),create=require("./create"),fromPoints=e=>{if(!Array.isArray(e))throw new Error("the given points must be an array");if(e.length<3)throw new Error("the given points must contain THREE or more points");const r=[];let t=e[e.length-1];return e.forEach(e=>{2===e.length&&r.push([vec3.fromVec2(vec3.create(),t),vec3.fromVec2(vec3.create(),e)]),3===e.length&&r.push([t,e]),t=e}),create(r)};module.exports=fromPoints;
1689
1692
 
1690
- },{"../../../maths/vec3":336,"./create":435}],438:[function(require,module,exports){
1693
+ },{"../../../maths/vec3":336,"./create":436}],439:[function(require,module,exports){
1691
1694
  const vec3=require("../../../maths/vec3"),create=require("./create"),fromSides=e=>{if(!Array.isArray(e))throw new Error("the given sides must be an array");const r=[];return e.forEach(e=>{r.push([vec3.fromVec2(vec3.create(),e[0]),vec3.fromVec2(vec3.create(),e[1])])}),create(r)};module.exports=fromSides;
1692
1695
 
1693
- },{"../../../maths/vec3":336,"./create":435}],439:[function(require,module,exports){
1696
+ },{"../../../maths/vec3":336,"./create":436}],440:[function(require,module,exports){
1694
1697
  module.exports={calculatePlane:require("./calculatePlane"),clone:require("./clone"),create:require("./create"),equals:require("./equals"),fromPoints:require("./fromPoints"),fromSides:require("./fromSides"),isA:require("./isA"),reverse:require("./reverse"),toEdges:require("./toEdges"),toPolygons:require("./toPolygons"),toString:require("./toString"),transform:require("./transform")};
1695
1698
 
1696
- },{"./calculatePlane":433,"./clone":434,"./create":435,"./equals":436,"./fromPoints":437,"./fromSides":438,"./isA":440,"./reverse":442,"./toEdges":443,"./toPolygons":444,"./toString":445,"./transform":446}],440:[function(require,module,exports){
1699
+ },{"./calculatePlane":434,"./clone":435,"./create":436,"./equals":437,"./fromPoints":438,"./fromSides":439,"./isA":441,"./reverse":443,"./toEdges":444,"./toPolygons":445,"./toString":446,"./transform":447}],441:[function(require,module,exports){
1697
1700
  const isA=e=>!!(e&&"object"==typeof e&&"edges"in e&&Array.isArray(e.edges));module.exports=isA;
1698
1701
 
1699
- },{}],441:[function(require,module,exports){
1702
+ },{}],442:[function(require,module,exports){
1700
1703
  const vec3=require("../../../maths/vec3"),create=require("./create"),repair=e=>{if(!e.edges)return e;let t=e.edges;const r=new Map,c=new Map;(t=t.filter(e=>!vec3.equals(e[0],e[1]))).forEach(e=>{const t=e[0].toString(),s=e[1].toString();r.set(t,e[0]),r.set(s,e[1]),c.set(t,(c.get(t)||0)+1),c.set(s,(c.get(s)||0)-1)});const s=[],a=[];return c.forEach((e,t)=>{e<0&&s.push(t),e>0&&a.push(t)}),s.forEach(e=>{const c=r.get(e);let s,n=1/0;a.forEach(e=>{const t=r.get(e),a=vec3.distance(c,t);a<n&&(n=a,s=t)}),console.warn(`slice.repair: repairing vertex gap ${c} to ${s} distance ${n}`),t=t.map(t=>t[0].toString()===e?[s,t[1]]:t[1].toString()===e?[t[0],s]:t)}),create(t)};module.exports=repair;
1701
1704
 
1702
- },{"../../../maths/vec3":336,"./create":435}],442:[function(require,module,exports){
1705
+ },{"../../../maths/vec3":336,"./create":436}],443:[function(require,module,exports){
1703
1706
  const create=require("./create"),reverse=(...e)=>{let r,t;return 1===e.length?(r=create(),t=e[0]):(r=e[0],t=e[1]),r.edges=t.edges.map(e=>[e[1],e[0]]),r};module.exports=reverse;
1704
1707
 
1705
- },{"./create":435}],443:[function(require,module,exports){
1708
+ },{"./create":436}],444:[function(require,module,exports){
1706
1709
  const toEdges=e=>e.edges;module.exports=toEdges;
1707
1710
 
1708
- },{}],444:[function(require,module,exports){
1711
+ },{}],445:[function(require,module,exports){
1709
1712
  const poly3=require("../../../geometries/poly3"),earcut=require("../earcut"),PolygonHierarchy=require("../earcut/polygonHierarchy"),toPolygons=o=>{const e=new PolygonHierarchy(o),r=[];return e.roots.forEach(({solid:o,holes:t})=>{let l=o.length;const n=[];t.forEach((o,e)=>{n.push(l),l+=o.length});const s=[o,...t].flat(),c=s.flat(),a=o=>e.to3D(s[o]),h=earcut(c,n);for(let o=0;o<h.length;o+=3){const t=h.slice(o,o+3).map(a);r.push(poly3.fromPointsAndPlane(t,e.plane))}}),r};module.exports=toPolygons;
1710
1713
 
1711
- },{"../../../geometries/poly3":194,"../earcut":416,"../earcut/polygonHierarchy":420}],445:[function(require,module,exports){
1714
+ },{"../../../geometries/poly3":194,"../earcut":416,"../earcut/polygonHierarchy":420}],446:[function(require,module,exports){
1712
1715
  const vec3=require("../../../maths/vec3"),edgesToString=e=>e.reduce((e,t)=>e+=`[${vec3.toString(t[0])}, ${vec3.toString(t[1])}], `,""),toString=e=>`[${edgesToString(e.edges)}]`;module.exports=toString;
1713
1716
 
1714
- },{"../../../maths/vec3":336}],446:[function(require,module,exports){
1717
+ },{"../../../maths/vec3":336}],447:[function(require,module,exports){
1715
1718
  const vec3=require("../../../maths/vec3"),create=require("./create"),transform=(e,r)=>{const t=r.edges.map(r=>[vec3.transform(vec3.create(),r[0],e),vec3.transform(vec3.create(),r[1],e)]);return create(t)};module.exports=transform;
1716
1719
 
1717
- },{"../../../maths/vec3":336,"./create":435}],447:[function(require,module,exports){
1720
+ },{"../../../maths/vec3":336,"./create":436}],448:[function(require,module,exports){
1718
1721
  const flatten=require("../../utils/flatten"),areAllShapesTheSameType=require("../../utils/areAllShapesTheSameType"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),hullPath2=require("./hullPath2"),hullGeom2=require("./hullGeom2"),hullGeom3=require("./hullGeom3"),hull=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");if(!areAllShapesTheSameType(e))throw new Error("only hulls of the same type are supported");const l=e[0];return path2.isA(l)?hullPath2(e):geom2.isA(l)?hullGeom2(e):geom3.isA(l)?hullGeom3(e):l};module.exports=hull;
1719
1722
 
1720
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../utils/areAllShapesTheSameType":508,"../../utils/flatten":510,"./hullGeom2":449,"./hullGeom3":450,"./hullPath2":451}],448:[function(require,module,exports){
1723
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../utils/areAllShapesTheSameType":509,"../../utils/flatten":511,"./hullGeom2":450,"./hullGeom3":451,"./hullPath2":452}],449:[function(require,module,exports){
1721
1724
  const flatten=require("../../utils/flatten"),union=require("../booleans/union"),hull=require("./hull"),hullChain=(...n)=>{if((n=flatten(n)).length<2)throw new Error("wrong number of arguments");const e=[];for(let l=1;l<n.length;l++)e.push(hull(n[l-1],n[l]));return union(e)};module.exports=hullChain;
1722
1725
 
1723
- },{"../../utils/flatten":510,"../booleans/union":399,"./hull":447}],449:[function(require,module,exports){
1726
+ },{"../../utils/flatten":511,"../booleans/union":399,"./hull":448}],450:[function(require,module,exports){
1724
1727
  const flatten=require("../../utils/flatten"),geom2=require("../../geometries/geom2"),hullPoints2=require("./hullPoints2"),toUniquePoints=require("./toUniquePoints"),hullGeom2=(...e)=>{e=flatten(e);const t=toUniquePoints(e),o=hullPoints2(t);return o.length<3?geom2.create():geom2.fromPoints(o)};module.exports=hullGeom2;
1725
1728
 
1726
- },{"../../geometries/geom2":141,"../../utils/flatten":510,"./hullPoints2":452,"./toUniquePoints":462}],450:[function(require,module,exports){
1729
+ },{"../../geometries/geom2":141,"../../utils/flatten":511,"./hullPoints2":453,"./toUniquePoints":463}],451:[function(require,module,exports){
1727
1730
  const flatten=require("../../utils/flatten"),geom3=require("../../geometries/geom3"),poly3=require("../../geometries/poly3"),quickhull=require("./quickhull"),toUniquePoints=require("./toUniquePoints"),hullGeom3=(...e)=>{if(1===(e=flatten(e)).length)return e[0];const t=toUniquePoints(e),o=quickhull(t,{skipTriangulation:!0}).map(e=>{const o=e.map(e=>t[e]);return poly3.create(o)});return geom3.create(o)};module.exports=hullGeom3;
1728
1731
 
1729
- },{"../../geometries/geom3":156,"../../geometries/poly3":194,"../../utils/flatten":510,"./quickhull":460,"./toUniquePoints":462}],451:[function(require,module,exports){
1732
+ },{"../../geometries/geom3":156,"../../geometries/poly3":194,"../../utils/flatten":511,"./quickhull":461,"./toUniquePoints":463}],452:[function(require,module,exports){
1730
1733
  const flatten=require("../../utils/flatten"),path2=require("../../geometries/path2"),hullPoints2=require("./hullPoints2"),toUniquePoints=require("./toUniquePoints"),hullPath2=(...t)=>{t=flatten(t);const e=toUniquePoints(t),o=hullPoints2(e);return path2.fromPoints({closed:!0},o)};module.exports=hullPath2;
1731
1734
 
1732
- },{"../../geometries/path2":177,"../../utils/flatten":510,"./hullPoints2":452,"./toUniquePoints":462}],452:[function(require,module,exports){
1735
+ },{"../../geometries/path2":177,"../../utils/flatten":511,"./hullPoints2":453,"./toUniquePoints":463}],453:[function(require,module,exports){
1733
1736
  const vec2=require("../../maths/vec2"),hullPoints2=t=>{let e=vec2.fromValues(1/0,1/0);t.forEach(t=>{(t[1]<e[1]||t[1]===e[1]&&t[0]<e[0])&&(e=t)});const n=[];t.forEach(t=>{const s=fakeAtan2(t[1]-e[1],t[0]-e[0]),o=vec2.squaredDistance(t,e);n.push({point:t,angle:s,distSq:o})}),n.sort((t,e)=>t.angle<e.angle?-1:t.angle>e.angle?1:t.distSq<e.distSq?-1:t.distSq>e.distSq?1:0);const s=[];return n.forEach(t=>{let e=s.length;for(;e>1&&ccw(s[e-2],s[e-1],t.point)<=Number.EPSILON;)s.pop(),e=s.length;s.push(t.point)}),s},ccw=(t,e,n)=>(e[0]-t[0])*(n[1]-t[1])-(e[1]-t[1])*(n[0]-t[0]),fakeAtan2=(t,e)=>0===t&&0===e?-1/0:-e/t;module.exports=hullPoints2;
1734
1737
 
1735
- },{"../../maths/vec2":305}],453:[function(require,module,exports){
1738
+ },{"../../maths/vec2":305}],454:[function(require,module,exports){
1736
1739
  module.exports={hull:require("./hull"),hullChain:require("./hullChain")};
1737
1740
 
1738
- },{"./hull":447,"./hullChain":448}],454:[function(require,module,exports){
1741
+ },{"./hull":448,"./hullChain":449}],455:[function(require,module,exports){
1739
1742
  const add=require("../../../maths/vec3/add"),copy=require("../../../maths/vec3/copy"),cross=require("../../../maths/vec3/cross"),dot=require("../../../maths/vec3/dot"),length=require("../../../maths/vec3/length"),normalize=require("../../../maths/vec3/normalize"),scale=require("../../../maths/vec3/scale"),subtract=require("../../../maths/vec3/subtract"),HalfEdge=require("./HalfEdge"),VISIBLE=0,NON_CONVEX=1,DELETED=2;class Face{constructor(){this.normal=[],this.centroid=[],this.offset=0,this.outside=null,this.mark=VISIBLE,this.edge=null,this.nVertices=0}getEdge(e){if("number"!=typeof e)throw Error("requires a number");let t=this.edge;for(;e>0;)t=t.next,e-=1;for(;e<0;)t=t.prev,e+=1;return t}computeNormal(){const e=this.edge,t=e.next;let r=t.next;const s=subtract([],t.head().point,e.head().point),o=[],i=[];for(this.nVertices=2,this.normal=[0,0,0];r!==e;)copy(i,s),subtract(s,r.head().point,e.head().point),add(this.normal,this.normal,cross(o,i,s)),r=r.next,this.nVertices+=1;this.area=length(this.normal),this.normal=scale(this.normal,this.normal,1/this.area)}computeNormalMinArea(e){if(this.computeNormal(),this.area<e){let e,t=0,r=this.edge;do{const s=r.lengthSquared();s>t&&(e=r,t=s),r=r.next}while(r!==this.edge);const s=e.tail().point,o=e.head().point,i=subtract([],o,s),n=Math.sqrt(t);scale(i,i,1/n);const a=dot(this.normal,i);scale(i,i,-a),add(this.normal,this.normal,i),normalize(this.normal,this.normal)}}computeCentroid(){this.centroid=[0,0,0];let e=this.edge;do{add(this.centroid,this.centroid,e.head().point),e=e.next}while(e!==this.edge);scale(this.centroid,this.centroid,1/this.nVertices)}computeNormalAndCentroid(e){void 0!==e?this.computeNormalMinArea(e):this.computeNormal(),this.computeCentroid(),this.offset=dot(this.normal,this.centroid)}distanceToPlane(e){return dot(this.normal,e)-this.offset}connectHalfEdges(e,t){let r;if(e.opposite.face===t.opposite.face){const s=t.opposite.face;let o;e===this.edge&&(this.edge=t),3===s.nVertices?(o=t.opposite.prev.opposite,s.mark=DELETED,r=s):(o=t.opposite.next,s.edge===o.prev&&(s.edge=o),o.prev=o.prev.prev,o.prev.next=o),t.prev=e.prev,t.prev.next=t,t.setOpposite(o),s.computeNormalAndCentroid()}else e.next=t,t.prev=e;return r}mergeAdjacentFaces(e,t){const r=e.opposite,s=r.face;t.push(s),s.mark=DELETED;let o,i,n=e.prev,a=e.next,c=r.prev,h=r.next;for(;n.opposite.face===s;)n=n.prev,h=h.next;for(;a.opposite.face===s;)a=a.next,c=c.prev;for(o=h;o!==c.next;o=o.next)o.face=this;return this.edge=a,(i=this.connectHalfEdges(c,a))&&t.push(i),(i=this.connectHalfEdges(n,h))&&t.push(i),this.computeNormalAndCentroid(),t}collectIndices(){const e=[];let t=this.edge;do{e.push(t.head().index),t=t.next}while(t!==this.edge);return e}static createTriangle(e,t,r,s=0){const o=new Face,i=new HalfEdge(e,o),n=new HalfEdge(t,o),a=new HalfEdge(r,o);return i.next=a.prev=n,n.next=i.prev=a,a.next=n.prev=i,o.edge=i,o.computeNormalAndCentroid(s),o}}module.exports={VISIBLE:VISIBLE,NON_CONVEX:1,DELETED:DELETED,Face:Face};
1740
1743
 
1741
- },{"../../../maths/vec3/add":323,"../../../maths/vec3/copy":326,"../../../maths/vec3/cross":328,"../../../maths/vec3/dot":331,"../../../maths/vec3/length":337,"../../../maths/vec3/normalize":343,"../../../maths/vec3/scale":348,"../../../maths/vec3/subtract":352,"./HalfEdge":455}],455:[function(require,module,exports){
1744
+ },{"../../../maths/vec3/add":323,"../../../maths/vec3/copy":326,"../../../maths/vec3/cross":328,"../../../maths/vec3/dot":331,"../../../maths/vec3/length":337,"../../../maths/vec3/normalize":343,"../../../maths/vec3/scale":348,"../../../maths/vec3/subtract":352,"./HalfEdge":456}],456:[function(require,module,exports){
1742
1745
  const distance=require("../../../maths/vec3/distance"),squaredDistance=require("../../../maths/vec3/squaredDistance");class HalfEdge{constructor(t,e){this.vertex=t,this.face=e,this.next=null,this.prev=null,this.opposite=null}head(){return this.vertex}tail(){return this.prev?this.prev.vertex:null}length(){return this.tail()?distance(this.tail().point,this.head().point):-1}lengthSquared(){return this.tail()?squaredDistance(this.tail().point,this.head().point):-1}setOpposite(t){this.opposite=t,t.opposite=this}}module.exports=HalfEdge;
1743
1746
 
1744
- },{"../../../maths/vec3/distance":329,"../../../maths/vec3/squaredDistance":350}],456:[function(require,module,exports){
1747
+ },{"../../../maths/vec3/distance":329,"../../../maths/vec3/squaredDistance":350}],457:[function(require,module,exports){
1745
1748
  const dot=require("../../../maths/vec3/dot"),pointLineDistance=require("./point-line-distance"),getPlaneNormal=require("./get-plane-normal"),VertexList=require("./VertexList"),Vertex=require("./Vertex"),{Face:Face,VISIBLE:VISIBLE,NON_CONVEX:NON_CONVEX,DELETED:DELETED}=require("./Face"),MERGE_NON_CONVEX_WRT_LARGER_FACE=1,MERGE_NON_CONVEX=2;class QuickHull{constructor(e){if(!Array.isArray(e))throw TypeError("input is not a valid array");if(e.length<4)throw Error("cannot build a simplex out of <4 points");this.tolerance=-1,this.nFaces=0,this.nPoints=e.length,this.faces=[],this.newFaces=[],this.claimed=new VertexList,this.unclaimed=new VertexList,this.vertices=[];for(let t=0;t<e.length;t+=1)this.vertices.push(new Vertex(e[t],t));this.discardedFaces=[],this.vertexPointIndices=[]}addVertexToFace(e,t){e.face=t,t.outside?this.claimed.insertBefore(t.outside,e):this.claimed.add(e),t.outside=e}removeVertexFromFace(e,t){e===t.outside&&(e.next&&e.next.face===t?t.outside=e.next:t.outside=null),this.claimed.remove(e)}removeAllVerticesFromFace(e){if(e.outside){let t=e.outside;for(;t.next&&t.next.face===e;)t=t.next;return this.claimed.removeChain(e.outside,t),t.next=null,e.outside}}deleteFaceVertices(e,t){const i=this.removeAllVerticesFromFace(e);if(i)if(t){let e;for(let s=i;s;s=e){e=s.next,t.distanceToPlane(s.point)>this.tolerance?this.addVertexToFace(s,t):this.unclaimed.add(s)}}else this.unclaimed.addAll(i)}resolveUnclaimedPoints(e){let t=this.unclaimed.first();for(let i=t;i;i=t){t=i.next;let s,o=this.tolerance;for(let t=0;t<e.length;t+=1){const a=e[t];if(a.mark===VISIBLE){const e=a.distanceToPlane(i.point);if(e>o&&(o=e,s=a),o>1e3*this.tolerance)break}}s&&this.addVertexToFace(i,s)}}computeExtremes(){const e=[],t=[],i=[],s=[];let o,a;for(o=0;o<3;o+=1)i[o]=s[o]=this.vertices[0];for(o=0;o<3;o+=1)e[o]=t[o]=this.vertices[0].point[o];for(o=1;o<this.vertices.length;o+=1){const c=this.vertices[o],n=c.point;for(a=0;a<3;a+=1)n[a]<e[a]&&(e[a]=n[a],i[a]=c);for(a=0;a<3;a+=1)n[a]>t[a]&&(t[a]=n[a],s[a]=c)}return this.tolerance=3*Number.EPSILON*(Math.max(Math.abs(e[0]),Math.abs(t[0]))+Math.max(Math.abs(e[1]),Math.abs(t[1]))+Math.max(Math.abs(e[2]),Math.abs(t[2]))),[i,s]}createInitialSimplex(){const e=this.vertices,[t,i]=this.computeExtremes();let s,o,a,c,n=0,r=0;for(a=0;a<3;a+=1){const e=i[a].point[a]-t[a].point[a];e>n&&(n=e,r=a)}const l=t[r],h=i[r];for(n=0,a=0;a<this.vertices.length;a+=1){const e=this.vertices[a];if(e!==l&&e!==h){const t=pointLineDistance(e.point,l.point,h.point);t>n&&(n=t,s=e)}}const d=getPlaneNormal([],l.point,h.point,s.point),p=dot(l.point,d);for(n=-1,a=0;a<this.vertices.length;a+=1){const e=this.vertices[a];if(e!==l&&e!==h&&e!==s){const t=Math.abs(dot(d,e.point)-p);t>n&&(n=t,o=e)}}const f=[];if(dot(o.point,d)-p<0)for(f.push(Face.createTriangle(l,h,s),Face.createTriangle(o,h,l),Face.createTriangle(o,s,h),Face.createTriangle(o,l,s)),a=0;a<3;a+=1){const e=(a+1)%3;f[a+1].getEdge(2).setOpposite(f[0].getEdge(e)),f[a+1].getEdge(1).setOpposite(f[e+1].getEdge(0))}else for(f.push(Face.createTriangle(l,s,h),Face.createTriangle(o,l,h),Face.createTriangle(o,h,s),Face.createTriangle(o,s,l)),a=0;a<3;a+=1){const e=(a+1)%3;f[a+1].getEdge(2).setOpposite(f[0].getEdge((3-a)%3)),f[a+1].getEdge(0).setOpposite(f[e+1].getEdge(1))}for(a=0;a<4;a+=1)this.faces.push(f[a]);for(a=0;a<e.length;a+=1){const t=e[a];if(t!==l&&t!==h&&t!==s&&t!==o){let e;for(n=this.tolerance,c=0;c<4;c+=1){const i=f[c].distanceToPlane(t.point);i>n&&(n=i,e=f[c])}e&&this.addVertexToFace(t,e)}}}reindexFaceAndVertices(){const e=[];for(let t=0;t<this.faces.length;t+=1){const i=this.faces[t];i.mark===VISIBLE&&e.push(i)}this.faces=e}collectFaces(e){const t=[];for(let i=0;i<this.faces.length;i+=1){if(this.faces[i].mark!==VISIBLE)throw Error("attempt to include a destroyed face in the hull");const s=this.faces[i].collectIndices();if(e)t.push(s);else for(let e=0;e<s.length-2;e+=1)t.push([s[0],s[e+1],s[e+2]])}return t}nextVertexToAdd(){if(!this.claimed.isEmpty()){let e,t,i=0;const s=this.claimed.first().face;for(t=s.outside;t&&t.face===s;t=t.next){const o=s.distanceToPlane(t.point);o>i&&(i=o,e=t)}return e}}computeHorizon(e,t,i,s){let o;this.deleteFaceVertices(i),i.mark=DELETED,o=t?t.next:t=i.getEdge(0);do{const t=o.opposite,i=t.face;i.mark===VISIBLE&&(i.distanceToPlane(e)>this.tolerance?this.computeHorizon(e,t,i,s):s.push(o)),o=o.next}while(o!==t)}addAdjoiningFace(e,t){const i=Face.createTriangle(e,t.tail(),t.head());return this.faces.push(i),i.getEdge(-1).setOpposite(t.opposite),i.getEdge(0)}addNewFaces(e,t){let i,s;this.newFaces=[];for(let o=0;o<t.length;o+=1){const a=t[o],c=this.addAdjoiningFace(e,a);i?c.next.setOpposite(s):i=c,this.newFaces.push(c.face),s=c}i.next.setOpposite(s)}oppositeFaceDistance(e){return e.face.distanceToPlane(e.opposite.face.centroid)}doAdjacentMerge(e,t){let i=e.edge,s=!0,o=0;do{if(o>=e.nVertices)throw Error("merge recursion limit exceeded");const a=i.opposite.face;let c=!1;if(t===MERGE_NON_CONVEX?(this.oppositeFaceDistance(i)>-this.tolerance||this.oppositeFaceDistance(i.opposite)>-this.tolerance)&&(c=!0):e.area>a.area?this.oppositeFaceDistance(i)>-this.tolerance?c=!0:this.oppositeFaceDistance(i.opposite)>-this.tolerance&&(s=!1):this.oppositeFaceDistance(i.opposite)>-this.tolerance?c=!0:this.oppositeFaceDistance(i)>-this.tolerance&&(s=!1),c){const t=e.mergeAdjacentFaces(i,[]);for(let i=0;i<t.length;i+=1)this.deleteFaceVertices(t[i],e);return!0}i=i.next,o+=1}while(i!==e.edge);return s||(e.mark=NON_CONVEX),!1}addVertexToHull(e){const t=[];this.unclaimed.clear(),this.removeVertexFromFace(e,e.face),this.computeHorizon(e.point,null,e.face,t),this.addNewFaces(e,t);for(let e=0;e<this.newFaces.length;e+=1){const t=this.newFaces[e];if(t.mark===VISIBLE)for(;this.doAdjacentMerge(t,MERGE_NON_CONVEX_WRT_LARGER_FACE););}for(let e=0;e<this.newFaces.length;e+=1){const t=this.newFaces[e];if(t.mark===NON_CONVEX)for(t.mark=VISIBLE;this.doAdjacentMerge(t,MERGE_NON_CONVEX););}this.resolveUnclaimedPoints(this.newFaces)}build(){let e;for(this.createInitialSimplex();e=this.nextVertexToAdd();)this.addVertexToHull(e);this.reindexFaceAndVertices()}}module.exports=QuickHull;
1746
1749
 
1747
- },{"../../../maths/vec3/dot":331,"./Face":454,"./Vertex":457,"./VertexList":458,"./get-plane-normal":459,"./point-line-distance":461}],457:[function(require,module,exports){
1750
+ },{"../../../maths/vec3/dot":331,"./Face":455,"./Vertex":458,"./VertexList":459,"./get-plane-normal":460,"./point-line-distance":462}],458:[function(require,module,exports){
1748
1751
  class Vertex{constructor(t,e){this.point=t,this.index=e,this.next=null,this.prev=null,this.face=null}}module.exports=Vertex;
1749
1752
 
1750
- },{}],458:[function(require,module,exports){
1753
+ },{}],459:[function(require,module,exports){
1751
1754
  class VertexList{constructor(){this.head=null,this.tail=null}clear(){this.head=this.tail=null}insertBefore(e,t){t.prev=e.prev,t.next=e,t.prev?t.prev.next=t:this.head=t,e.prev=t}insertAfter(e,t){t.prev=e,t.next=e.next,t.next?t.next.prev=t:this.tail=t,e.next=t}add(e){this.head?this.tail.next=e:this.head=e,e.prev=this.tail,e.next=null,this.tail=e}addAll(e){for(this.head?this.tail.next=e:this.head=e,e.prev=this.tail;e.next;)e=e.next;this.tail=e}remove(e){e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev}removeChain(e,t){e.prev?e.prev.next=t.next:this.head=t.next,t.next?t.next.prev=e.prev:this.tail=e.prev}first(){return this.head}isEmpty(){return!this.head}}module.exports=VertexList;
1752
1755
 
1753
- },{}],459:[function(require,module,exports){
1756
+ },{}],460:[function(require,module,exports){
1754
1757
  const cross=require("../../../maths/vec3/cross"),normalize=require("../../../maths/vec3/normalize"),subtract=require("../../../maths/vec3/subtract"),planeNormal=(r,e,s,t)=>{const a=[0,0,0];return subtract(r,e,s),subtract(a,s,t),cross(r,r,a),normalize(r,r)};module.exports=planeNormal;
1755
1758
 
1756
- },{"../../../maths/vec3/cross":328,"../../../maths/vec3/normalize":343,"../../../maths/vec3/subtract":352}],460:[function(require,module,exports){
1759
+ },{"../../../maths/vec3/cross":328,"../../../maths/vec3/normalize":343,"../../../maths/vec3/subtract":352}],461:[function(require,module,exports){
1757
1760
  const QuickHull=require("./QuickHull"),runner=(u,l={})=>{const e=new QuickHull(u);return e.build(),e.collectFaces(l.skipTriangulation)};module.exports=runner;
1758
1761
 
1759
- },{"./QuickHull":456}],461:[function(require,module,exports){
1762
+ },{"./QuickHull":457}],462:[function(require,module,exports){
1760
1763
  const cross=require("../../../maths/vec3/cross"),subtract=require("../../../maths/vec3/subtract"),squaredLength=require("../../../maths/vec3/squaredLength"),distanceSquared=(e,t,r)=>{const s=[],a=[];subtract(s,r,t),subtract(a,e,t);const n=squaredLength(cross([],a,s)),c=squaredLength(s);if(0===c)throw Error("a and b are the same point");return n/c},pointLineDistance=(e,t,r)=>Math.sqrt(distanceSquared(e,t,r));module.exports=pointLineDistance;
1761
1764
 
1762
- },{"../../../maths/vec3/cross":328,"../../../maths/vec3/squaredLength":351,"../../../maths/vec3/subtract":352}],462:[function(require,module,exports){
1765
+ },{"../../../maths/vec3/cross":328,"../../../maths/vec3/squaredLength":351,"../../../maths/vec3/subtract":352}],463:[function(require,module,exports){
1763
1766
  const geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),toUniquePoints=o=>{const e=new Set,t=[],r=o=>{const r=o.toString();e.has(r)||(t.push(o),e.add(r))};return o.forEach(o=>{geom2.isA(o)?geom2.toPoints(o).forEach(r):geom3.isA(o)?geom3.toPoints(o).forEach(o=>o.forEach(r)):path2.isA(o)&&path2.toPoints(o).forEach(r)}),t};module.exports=toUniquePoints;
1764
1767
 
1765
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177}],463:[function(require,module,exports){
1768
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177}],464:[function(require,module,exports){
1766
1769
  const flatten=require("../../utils/flatten"),measureEpsilon=require("../../measurements/measureEpsilon"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),snapPolygons=require("./snapPolygons"),mergePolygons=require("./mergePolygons"),insertTjunctions=require("./insertTjunctions"),triangulatePolygons=require("./triangulatePolygons"),generalizePath2=(e,r)=>r,generalizeGeom2=(e,r)=>r,generalizeGeom3=(e,r)=>{const{snap:n,simplify:o,triangulate:t}=Object.assign({},{snap:!1,simplify:!1,triangulate:!1},e),i=measureEpsilon(r);let s=geom3.toPolygons(r);n&&(s=snapPolygons(i,s)),o&&(s=mergePolygons(i,s)),t&&(s=insertTjunctions(s),s=triangulatePolygons(i,s));const g=Object.assign({},r);return g.polygons=s,g},generalize=(e,...r)=>{if(0===(r=flatten(r)).length)throw new Error("wrong number of arguments");const n=r.map(r=>{if(path2.isA(r))return generalizePath2(0,r);if(geom2.isA(r))return generalizeGeom2(0,r);if(geom3.isA(r))return generalizeGeom3(e,r);throw new Error("invalid geometry")});return 1===n.length?n[0]:n};module.exports=generalize;
1767
1770
 
1768
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../measurements/measureEpsilon":377,"../../utils/flatten":510,"./insertTjunctions":465,"./mergePolygons":466,"./snapPolygons":470,"./triangulatePolygons":471}],464:[function(require,module,exports){
1771
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../measurements/measureEpsilon":377,"../../utils/flatten":511,"./insertTjunctions":466,"./mergePolygons":467,"./snapPolygons":471,"./triangulatePolygons":472}],465:[function(require,module,exports){
1769
1772
  module.exports={generalize:require("./generalize"),snap:require("./snap")};
1770
1773
 
1771
- },{"./generalize":463,"./snap":469}],465:[function(require,module,exports){
1774
+ },{"./generalize":464,"./snap":470}],466:[function(require,module,exports){
1772
1775
  const constants=require("../../maths/constants"),vec3=require("../../maths/vec3"),poly3=require("../../geometries/poly3"),assert=!1,getTag=e=>`${e}`,addSide=(e,t,s,n,r,c)=>{const o=getTag(n),g=getTag(r);const l=`${o}/${g}`,a=`${g}/${o}`;if(e.has(a))return deleteSide(e,t,s,r,n,null),null;const i={vertex0:n,vertex1:r,polygonindex:c};return e.has(l)?e.get(l).push(i):e.set(l,[i]),t.has(o)?t.get(o).push(l):t.set(o,[l]),s.has(g)?s.get(g).push(l):s.set(g,[l]),l},deleteSide=(e,t,s,n,r,c)=>{const o=getTag(n),g=getTag(r),l=`${o}/${g}`;let a=-1;const i=e.get(l);for(let e=0;e<i.length;e++){const t=i[e];let s=getTag(t.vertex0);if(s===o&&((s=getTag(t.vertex1))===g&&(null===c||t.polygonindex===c))){a=e;break}}i.splice(a,1),0===i.length&&e.delete(l),a=t.get(o).indexOf(l),t.get(o).splice(a,1),0===t.get(o).length&&t.delete(o),a=s.get(g).indexOf(l),s.get(g).splice(a,1),0===s.get(g).length&&s.delete(g)},insertTjunctions=e=>{const t=new Map;for(let s=0;s<e.length;s++){const n=e[s],r=n.vertices.length;if(r>=3){let e=n.vertices[0],c=getTag(e);for(let o=0;o<r;o++){let g=o+1;g===r&&(g=0);const l=n.vertices[g],a=getTag(l),i=`${c}/${a}`,v=`${a}/${c}`;if(t.has(v)){const e=t.get(v);e.splice(-1,1),0===e.length&&t.delete(v)}else{const n={vertex0:e,vertex1:l,polygonindex:s};t.has(i)?t.get(i).push(n):t.set(i,[n])}e=l,c=a}}else console.warn("warning: invalid polygon found during insertTjunctions")}if(t.size>0){const s=new Map,n=new Map,r=new Map;for(const[e,c]of t)r.set(e,!0),c.forEach(t=>{const r=getTag(t.vertex0),c=getTag(t.vertex1);s.has(r)?s.get(r).push(e):s.set(r,[e]),n.has(c)?n.get(c).push(e):n.set(c,[e])});const c=e.slice(0);for(;0!==t.size;){for(const e of t.keys())r.set(e,!0);let e=!1;for(;;){const o=Array.from(r.keys());if(0===o.length)break;const g=o[0];let l=!0;if(t.has(g)){const o=t.get(g);0;const a=o[0];for(let o=0;o<2;o++){const g=0===o?a.vertex0:a.vertex1,i=0===o?a.vertex1:a.vertex0,v=getTag(g),d=getTag(i);let h=[];0===o?n.has(v)&&(h=n.get(v)):s.has(v)&&(h=s.get(v));for(let a=0;a<h.length;a++){const v=h[a],f=t.get(v)[0],u=0===o?f.vertex0:f.vertex1,x=0===o?f.vertex1:f.vertex0,p=getTag(u);getTag(x);if(p===d){deleteSide(t,s,n,g,i,null),deleteSide(t,s,n,i,g,null),l=!1,o=2,e=!0;break}{const a=g,v=i,d=u,h=vec3.subtract(vec3.create(),d,a),x=vec3.dot(vec3.subtract(vec3.create(),v,a),h)/vec3.dot(h,h);if(x>0&&x<1){const g=vec3.scale(vec3.create(),h,x);if(vec3.add(g,g,a),vec3.squaredDistance(g,v)<constants.EPS*constants.EPS){const g=f.polygonindex,a=c[g],v=getTag(f.vertex1);let d=-1;for(let e=0;e<a.vertices.length;e++)if(getTag(a.vertices[e])===v){d=e;break}0;const h=a.vertices.slice(0);h.splice(d,0,i);const u=poly3.create(h);c[g]=u,deleteSide(t,s,n,f.vertex0,f.vertex1,g);const x=addSide(t,s,n,f.vertex0,i,g),p=addSide(t,s,n,i,f.vertex1,g);null!==x&&r.set(x,!0),null!==p&&r.set(p,!0),l=!1,o=2,e=!0;break}}}}}}l&&r.delete(g)}if(!e)break}e=c}return t.clear(),e};module.exports=insertTjunctions;
1773
1776
 
1774
- },{"../../geometries/poly3":194,"../../maths/constants":209,"../../maths/vec3":336}],466:[function(require,module,exports){
1777
+ },{"../../geometries/poly3":194,"../../maths/constants":209,"../../maths/vec3":336}],467:[function(require,module,exports){
1775
1778
  const aboutEqualNormals=require("../../maths/utils/aboutEqualNormals"),vec3=require("../../maths/vec3"),poly3=require("../../geometries/poly3"),createEdges=e=>{const n=poly3.toPoints(e),t=[];for(let e=0;e<n.length;e++){const l=(e+1)%n.length,r={v1:n[e],v2:n[l]};t.push(r)}for(let e=0;e<t.length;e++){const l=(e+1)%n.length;t[e].next=t[l],t[l].prev=t[e]}return t},insertEdge=(e,n)=>{const t=`${n.v1}:${n.v2}`;e.set(t,n)},deleteEdge=(e,n)=>{const t=`${n.v1}:${n.v2}`;e.delete(t)},findOppositeEdge=(e,n)=>{const t=`${n.v2}:${n.v1}`;return e.get(t)},calculateAnglesBetween=(e,n,t)=>{let l=e.prev.v1,r=e.prev.v2,o=n.next.v2;const v=calculateAngle(l,r,o,t);return l=n.prev.v1,r=n.prev.v2,o=e.next.v2,[v,calculateAngle(l,r,o,t)]},v1=vec3.create(),v2=vec3.create(),calculateAngle=(e,n,t,l)=>{const r=vec3.subtract(v1,n,e),o=vec3.subtract(v2,t,n);return vec3.cross(r,r,o),vec3.dot(r,l)},createPolygonAnd=e=>{let n;const t=[];for(;e.next;){const n=e.next;t.push(e.v1),e.v1=null,e.v2=null,e.next=null,e.prev=null,e=n}return t.length>0&&(n=poly3.create(t)),n},mergeCoplanarPolygons=e=>{if(e.length<2)return e;const n=e[0].plane,t=e.slice(),l=new Map;for(;t.length>0;){const e=t.shift(),r=createEdges(e);for(let e=0;e<r.length;e++){const t=r[e],o=findOppositeEdge(l,t);if(o){const e=calculateAnglesBetween(t,o,n);if(e[0]>=0&&e[1]>=0){const n=o.next,r=t.next;t.prev.next=o.next,t.next.prev=o.prev,o.prev.next=t.next,o.next.prev=t.prev,t.v1=null,t.v2=null,t.next=null,t.prev=null,deleteEdge(l,o),o.v1=null,o.v2=null,o.next=null,o.prev=null;const v=(e,n,t)=>{const l={v1:t.v1,v2:n.v2,next:n.next,prev:t.prev};t.prev.next=l,n.next.prev=l,deleteEdge(e,n),n.v1=null,n.v2=null,n.next=null,n.prev=null,deleteEdge(e,t),t.v1=null,t.v2=null,t.next=null,t.prev=null};0===e[0]&&v(l,n,n.prev),0===e[1]&&v(l,r,r.prev)}}else t.next&&insertEdge(l,t)}}const r=[];return l.forEach(e=>{const n=createPolygonAnd(e);n&&r.push(n)}),l.clear(),r},coplanar=(e,n)=>Math.abs(e[3]-n[3])<1.5e-7&&aboutEqualNormals(e,n),mergePolygons=(e,n)=>{const t=[];n.forEach(e=>{const n=t.find(n=>coplanar(n[0],poly3.plane(e)));if(n){n[1].push(e)}else t.push([poly3.plane(e),[e]])});let l=[];return t.forEach(e=>{const n=e[1],t=mergeCoplanarPolygons(n);l=l.concat(t)}),l};module.exports=mergePolygons;
1776
1779
 
1777
- },{"../../geometries/poly3":194,"../../maths/utils/aboutEqualNormals":281,"../../maths/vec3":336}],467:[function(require,module,exports){
1780
+ },{"../../geometries/poly3":194,"../../maths/utils/aboutEqualNormals":281,"../../maths/vec3":336}],468:[function(require,module,exports){
1778
1781
  const{EPS:EPS}=require("../../maths/constants"),line2=require("../../maths/line2"),vec2=require("../../maths/vec2"),OrthoNormalBasis=require("../../maths/OrthoNormalBasis"),interpolateBetween2DPointsForY=require("../../maths/utils/interpolateBetween2DPointsForY"),{insertSorted:insertSorted,fnNumberSort:fnNumberSort}=require("../../utils"),poly3=require("../../geometries/poly3"),reTesselateCoplanarPolygons=t=>{if(t.length<2)return t;const e=[],o=t.length,n=poly3.plane(t[0]),l=new OrthoNormalBasis(n),i=[],r=[],s=new Map,f=new Map,p=new Map,h=10/EPS;for(let e=0;e<o;e++){const o=t[e];let n=[],g=o.vertices.length,c=-1;if(g>0){let t,i;for(let r=0;r<g;r++){let s=l.to2D(o.vertices[r]);const g=Math.floor(s[1]*h);let a;p.has(g)?a=p.get(g):p.has(g+1)?a=p.get(g+1):p.has(g-1)?a=p.get(g-1):(a=s[1],p.set(g,s[1])),s=vec2.fromValues(s[0],a),n.push(s);const u=s[1];(0===r||u<t)&&(t=u,c=r),(0===r||u>i)&&(i=u);let m=f.get(u);m||(m={},f.set(u,m)),m[e]=!0}if(t>=i)n=[],g=0,c=-1;else{let o=s.get(t);o||(o=[],s.set(t,o)),o.push(e)}}n.reverse(),c=g-c-1,i.push(n),r.push(c)}const g=[];f.forEach((t,e)=>g.push(e)),g.sort(fnNumberSort);let c=[],a=[];for(let t=0;t<g.length;t++){const o=[],p=g[t],h=f.get(p);for(let t=0;t<c.length;++t){const e=c[t],o=e.polygonindex;if(h[o]){const n=i[o],l=n.length;let r=e.leftvertexindex,s=e.rightvertexindex;for(;;){let t=r+1;if(t>=l&&(t=0),n[t][1]!==p)break;r=t}let f=s-1;if(f<0&&(f=l-1),n[f][1]===p&&(s=f),r!==e.leftvertexindex&&r===s)c.splice(t,1),--t;else{e.leftvertexindex=r,e.rightvertexindex=s,e.topleft=n[r],e.topright=n[s];let t=r+1;t>=l&&(t=0),e.bottomleft=n[t];let o=s-1;o<0&&(o=l-1),e.bottomright=n[o]}}}let u;if(t>=g.length-1)c=[],u=null;else{const e=.5*(p+(u=Number(g[t+1]))),o=s.get(p);for(const t in o){const n=o[t],l=i[n],s=l.length,f=r[n];let h=f;for(;;){let t=h+1;if(t>=s&&(t=0),l[t][1]!==p)break;if(t===f)break;h=t}let g=f;for(;;){let t=g-1;if(t<0&&(t=s-1),l[t][1]!==p)break;if(t===h)break;g=t}let a=h+1;a>=s&&(a=0);let u=g-1;u<0&&(u=s-1);const m={polygonindex:n,leftvertexindex:h,rightvertexindex:g,topleft:l[h],topright:l[g],bottomleft:l[a],bottomright:l[u]};insertSorted(c,m,(t,o)=>{const n=interpolateBetween2DPointsForY(t.topleft,t.bottomleft,e),l=interpolateBetween2DPointsForY(o.topleft,o.bottomleft,e);return n>l?1:n<l?-1:0})}}for(const t in c){const e=c[t];let n=interpolateBetween2DPointsForY(e.topleft,e.bottomleft,p);const l=vec2.fromValues(n,p);n=interpolateBetween2DPointsForY(e.topright,e.bottomright,p);const i=vec2.fromValues(n,p);n=interpolateBetween2DPointsForY(e.topleft,e.bottomleft,u);const r=vec2.fromValues(n,u);n=interpolateBetween2DPointsForY(e.topright,e.bottomright,u);const s=vec2.fromValues(n,u),f={topleft:l,topright:i,bottomleft:r,bottomright:s,leftline:line2.fromPoints(line2.create(),l,r),rightline:line2.fromPoints(line2.create(),s,i)};if(o.length>0){const t=o[o.length-1],e=vec2.distance(f.topleft,t.topright),n=vec2.distance(f.bottomleft,t.bottomright);e<EPS&&n<EPS&&(f.topleft=t.topleft,f.leftline=t.leftline,f.bottomleft=t.bottomleft,o.splice(o.length-1,1))}o.push(f)}if(t>0){const t=new Set,i=new Set;for(let e=0;e<o.length;e++){const n=o[e];for(let e=0;e<a.length;e++)if(!i.has(e)){const o=a[e];if(vec2.distance(o.bottomleft,n.topleft)<EPS&&vec2.distance(o.bottomright,n.topright)<EPS){i.add(e);const l=line2.direction(n.leftline),r=line2.direction(o.leftline),s=l[0]-r[0],f=line2.direction(n.rightline),p=line2.direction(o.rightline),h=f[0]-p[0],g=Math.abs(s)<EPS,c=Math.abs(h)<EPS,a=c||h>=0;(g||s>=0)&&a&&(n.outpolygon=o.outpolygon,n.leftlinecontinues=g,n.rightlinecontinues=c,t.add(e));break}}}for(let o=0;o<a.length;o++)if(!t.has(o)){const t=a[o];t.outpolygon.rightpoints.push(t.bottomright),vec2.distance(t.bottomright,t.bottomleft)>EPS&&t.outpolygon.leftpoints.push(t.bottomleft),t.outpolygon.leftpoints.reverse();const i=t.outpolygon.rightpoints.concat(t.outpolygon.leftpoints).map(t=>l.to3D(t)),r=poly3.fromPointsAndPlane(i,n);r.vertices.length&&e.push(r)}}for(let t=0;t<o.length;t++){const e=o[t];e.outpolygon?(e.leftlinecontinues||e.outpolygon.leftpoints.push(e.topleft),e.rightlinecontinues||e.outpolygon.rightpoints.push(e.topright)):(e.outpolygon={leftpoints:[],rightpoints:[]},e.outpolygon.leftpoints.push(e.topleft),vec2.distance(e.topleft,e.topright)>EPS&&e.outpolygon.rightpoints.push(e.topright))}a=o}return e};module.exports=reTesselateCoplanarPolygons;
1779
1782
 
1780
- },{"../../geometries/poly3":194,"../../maths/OrthoNormalBasis":208,"../../maths/constants":209,"../../maths/line2":220,"../../maths/utils/interpolateBetween2DPointsForY":284,"../../maths/vec2":305,"../../utils":512}],468:[function(require,module,exports){
1783
+ },{"../../geometries/poly3":194,"../../maths/OrthoNormalBasis":208,"../../maths/constants":209,"../../maths/line2":220,"../../maths/utils/interpolateBetween2DPointsForY":284,"../../maths/vec2":305,"../../utils":513}],469:[function(require,module,exports){
1781
1784
  const geom3=require("../../geometries/geom3"),poly3=require("../../geometries/poly3"),aboutEqualNormals=require("../../maths/utils/aboutEqualNormals"),reTesselateCoplanarPolygons=require("./reTesselateCoplanarPolygons"),coplanar=(e,o)=>Math.abs(e[3]-o[3])<1.5e-7&&aboutEqualNormals(e,o),retessellate=e=>{if(e.isRetesselated)return e;const o=geom3.toPolygons(e),s=[];o.forEach(e=>{const o=s.find(o=>coplanar(o[0],poly3.plane(e)));if(o){o[1].push(e)}else s.push([poly3.plane(e),[e]])});let a=[];s.forEach(e=>{const o=e[1],s=reTesselateCoplanarPolygons(o);a=a.concat(s)});const l=geom3.create(a);return l.isRetesselated=!0,l};module.exports=retessellate;
1782
1785
 
1783
- },{"../../geometries/geom3":156,"../../geometries/poly3":194,"../../maths/utils/aboutEqualNormals":281,"./reTesselateCoplanarPolygons":467}],469:[function(require,module,exports){
1786
+ },{"../../geometries/geom3":156,"../../geometries/poly3":194,"../../maths/utils/aboutEqualNormals":281,"./reTesselateCoplanarPolygons":468}],470:[function(require,module,exports){
1784
1787
  const flatten=require("../../utils/flatten"),vec2=require("../../maths/vec2"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),measureEpsilon=require("../../measurements/measureEpsilon"),snapPolygons=require("./snapPolygons"),snapPath2=e=>{const s=measureEpsilon(e),r=path2.toPoints(e).map(e=>vec2.snap(vec2.create(),e,s));return path2.create(r)},snapGeom2=e=>{const s=measureEpsilon(e);let r=geom2.toSides(e).map(e=>[vec2.snap(vec2.create(),e[0],s),vec2.snap(vec2.create(),e[1],s)]);return r=r.filter(e=>!vec2.equals(e[0],e[1])),geom2.create(r)},snapGeom3=e=>{const s=measureEpsilon(e),r=geom3.toPolygons(e),o=snapPolygons(s,r);return geom3.create(o)},snap=(...e)=>{if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");const s=e.map(e=>path2.isA(e)?snapPath2(e):geom2.isA(e)?snapGeom2(e):geom3.isA(e)?snapGeom3(e):e);return 1===s.length?s[0]:s};module.exports=snap;
1785
1788
 
1786
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../maths/vec2":305,"../../measurements/measureEpsilon":377,"../../utils/flatten":510,"./snapPolygons":470}],470:[function(require,module,exports){
1789
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../maths/vec2":305,"../../measurements/measureEpsilon":377,"../../utils/flatten":511,"./snapPolygons":471}],471:[function(require,module,exports){
1787
1790
  const vec3=require("../../maths/vec3"),poly3=require("../../geometries/poly3"),isValidPoly3=(e,o)=>{const r=Math.abs(poly3.measureArea(o));return Number.isFinite(r)&&r>e},snapPolygons=(e,o)=>{let r=o.map(o=>{const r=o.vertices.map(o=>vec3.snap(vec3.create(),o,e)),t=[];for(let e=0;e<r.length;e++){const o=(e+1)%r.length;vec3.equals(r[e],r[o])||t.push(r[e])}const s=poly3.create(t);return o.color&&(s.color=o.color),s});const t=e*e*Math.sqrt(3)/4;return r=r.filter(e=>isValidPoly3(t,e))};module.exports=snapPolygons;
1788
1791
 
1789
- },{"../../geometries/poly3":194,"../../maths/vec3":336}],471:[function(require,module,exports){
1792
+ },{"../../geometries/poly3":194,"../../maths/vec3":336}],472:[function(require,module,exports){
1790
1793
  const vec3=require("../../maths/vec3"),poly3=require("../../geometries/poly3"),triangulatePolygon=(e,o,r)=>{const t=o.vertices.length;if(t>3){if(t>4){const c=[0,0,0];o.vertices.forEach(e=>vec3.add(c,c,e)),vec3.snap(c,vec3.divide(c,c,[t,t,t]),e);for(let e=0;e<t;e++){const s=poly3.create([c,o.vertices[e],o.vertices[(e+1)%t]]);o.color&&(s.color=o.color),r.push(s)}return}const c=poly3.create([o.vertices[0],o.vertices[1],o.vertices[2]]),s=poly3.create([o.vertices[0],o.vertices[2],o.vertices[3]]);return o.color&&(c.color=o.color,s.color=o.color),void r.push(c,s)}r.push(o)},triangulatePolygons=(e,o)=>{const r=[];return o.forEach(o=>{triangulatePolygon(e,o,r)}),r};module.exports=triangulatePolygons;
1791
1794
 
1792
- },{"../../geometries/poly3":194,"../../maths/vec3":336}],472:[function(require,module,exports){
1795
+ },{"../../geometries/poly3":194,"../../maths/vec3":336}],473:[function(require,module,exports){
1793
1796
  const flatten=require("../../utils/flatten"),padArrayToLength=require("../../utils/padArrayToLength"),measureAggregateBoundingBox=require("../../measurements/measureAggregateBoundingBox"),{translate:translate}=require("./translate"),validateOptions=e=>{if(!Array.isArray(e.modes)||e.modes.length>3)throw new Error("align(): modes must be an array of length <= 3");if(e.modes=padArrayToLength(e.modes,"none",3),3!==e.modes.filter(e=>["center","max","min","none"].includes(e)).length)throw new Error('align(): all modes must be one of "center", "max" or "min"');if(!Array.isArray(e.relativeTo)||e.relativeTo.length>3)throw new Error("align(): relativeTo must be an array of length <= 3");if(e.relativeTo=padArrayToLength(e.relativeTo,0,3),3!==e.relativeTo.filter(e=>Number.isFinite(e)||null==e).length)throw new Error("align(): all relativeTo values must be a number, or null.");if("boolean"!=typeof e.grouped)throw new Error("align(): grouped must be a boolean value.");return e},populateRelativeToFromBounds=(e,r,t)=>{for(let n=0;n<3;n++)null==e[n]&&("center"===r[n]?e[n]=(t[0][n]+t[1][n])/2:"max"===r[n]?e[n]=t[1][n]:"min"===r[n]&&(e[n]=t[0][n]));return e},alignGeometries=(e,r,t)=>{const n=measureAggregateBoundingBox(e),o=[0,0,0];for(let e=0;e<3;e++)"center"===r[e]?o[e]=t[e]-(n[0][e]+n[1][e])/2:"max"===r[e]?o[e]=t[e]-n[1][e]:"min"===r[e]&&(o[e]=t[e]-n[0][e]);return translate(o,e)},align=(e,...r)=>{e=Object.assign({},{modes:["center","center","min"],relativeTo:[0,0,0],grouped:!1},e),e=validateOptions(e);let{modes:t,relativeTo:n,grouped:o}=e;if(0===(r=flatten(r)).length)throw new Error("align(): No geometries were provided to act upon");if(n.filter(e=>null==e).length){const e=measureAggregateBoundingBox(r);n=populateRelativeToFromBounds(n,t,e)}return 1===(r=o?alignGeometries(r,t,n):r.map(e=>alignGeometries(e,t,n))).length?r[0]:r};module.exports=align;
1794
1797
 
1795
- },{"../../measurements/measureAggregateBoundingBox":368,"../../utils/flatten":510,"../../utils/padArrayToLength":514,"./translate":479}],473:[function(require,module,exports){
1798
+ },{"../../measurements/measureAggregateBoundingBox":368,"../../utils/flatten":511,"../../utils/padArrayToLength":515,"./translate":480}],474:[function(require,module,exports){
1796
1799
  const flatten=require("../../utils/flatten"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),measureBoundingBox=require("../../measurements/measureBoundingBox"),{translate:translate}=require("./translate"),centerGeometry=(e,r)=>{const{axes:t,relativeTo:n}=Object.assign({},{axes:[!0,!0,!0],relativeTo:[0,0,0]},e),a=measureBoundingBox(r),o=[0,0,0];return t[0]&&(o[0]=n[0]-(a[0][0]+(a[1][0]-a[0][0])/2)),t[1]&&(o[1]=n[1]-(a[0][1]+(a[1][1]-a[0][1])/2)),t[2]&&(o[2]=n[2]-(a[0][2]+(a[1][2]-a[0][2])/2)),translate(o,r)},center=(e,...r)=>{const{axes:t,relativeTo:n}=Object.assign({},{axes:[!0,!0,!0],relativeTo:[0,0,0]},e);if(0===(r=flatten(r)).length)throw new Error("wrong number of arguments");if(3!==n.length)throw new Error("relativeTo must be an array of length 3");e={axes:t,relativeTo:n};const a=r.map(r=>path2.isA(r)?centerGeometry(e,r):geom2.isA(r)?centerGeometry(e,r):geom3.isA(r)?centerGeometry(e,r):r);return 1===a.length?a[0]:a},centerX=(...e)=>center({axes:[!0,!1,!1]},e),centerY=(...e)=>center({axes:[!1,!0,!1]},e),centerZ=(...e)=>center({axes:[!1,!1,!0]},e);module.exports={center:center,centerX:centerX,centerY:centerY,centerZ:centerZ};
1797
1800
 
1798
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../measurements/measureBoundingBox":372,"../../utils/flatten":510,"./translate":479}],474:[function(require,module,exports){
1801
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../measurements/measureBoundingBox":372,"../../utils/flatten":511,"./translate":480}],475:[function(require,module,exports){
1799
1802
  module.exports={align:require("./align"),center:require("./center").center,centerX:require("./center").centerX,centerY:require("./center").centerY,centerZ:require("./center").centerZ,mirror:require("./mirror").mirror,mirrorX:require("./mirror").mirrorX,mirrorY:require("./mirror").mirrorY,mirrorZ:require("./mirror").mirrorZ,rotate:require("./rotate").rotate,rotateX:require("./rotate").rotateX,rotateY:require("./rotate").rotateY,rotateZ:require("./rotate").rotateZ,scale:require("./scale").scale,scaleX:require("./scale").scaleX,scaleY:require("./scale").scaleY,scaleZ:require("./scale").scaleZ,transform:require("./transform"),translate:require("./translate").translate,translateX:require("./translate").translateX,translateY:require("./translate").translateY,translateZ:require("./translate").translateZ};
1800
1803
 
1801
- },{"./align":472,"./center":473,"./mirror":475,"./rotate":476,"./scale":477,"./transform":478,"./translate":479}],475:[function(require,module,exports){
1804
+ },{"./align":473,"./center":474,"./mirror":476,"./rotate":477,"./scale":478,"./transform":479,"./translate":480}],476:[function(require,module,exports){
1802
1805
  const flatten=require("../../utils/flatten"),mat4=require("../../maths/mat4"),plane=require("../../maths/plane"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),mirror=(r,...e)=>{const{origin:o,normal:m}=Object.assign({},{origin:[0,0,0],normal:[0,0,1]},r);if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");const i=plane.fromNormalAndPoint(plane.create(),m,o);if(Number.isNaN(i[0]))throw new Error("the given origin and normal do not define a proper plane");const n=mat4.mirrorByPlane(mat4.create(),i),t=e.map(r=>path2.isA(r)?path2.transform(n,r):geom2.isA(r)?geom2.transform(n,r):geom3.isA(r)?geom3.transform(n,r):r);return 1===t.length?t[0]:t},mirrorX=(...r)=>mirror({normal:[1,0,0]},r),mirrorY=(...r)=>mirror({normal:[0,1,0]},r),mirrorZ=(...r)=>mirror({normal:[0,0,1]},r);module.exports={mirror:mirror,mirrorX:mirrorX,mirrorY:mirrorY,mirrorZ:mirrorZ};
1803
1806
 
1804
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../maths/mat4":258,"../../maths/plane":277,"../../utils/flatten":510}],476:[function(require,module,exports){
1807
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../maths/mat4":258,"../../maths/plane":277,"../../utils/flatten":511}],477:[function(require,module,exports){
1805
1808
  const flatten=require("../../utils/flatten"),mat4=require("../../maths/mat4"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),rotate=(t,...e)=>{if(!Array.isArray(t))throw new Error("angles must be an array");if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");for(t=t.slice();t.length<3;)t.push(0);const r=t[2],o=t[1],a=t[0],m=mat4.fromTaitBryanRotation(mat4.create(),r,o,a),n=e.map(t=>path2.isA(t)?path2.transform(m,t):geom2.isA(t)?geom2.transform(m,t):geom3.isA(t)?geom3.transform(m,t):t);return 1===n.length?n[0]:n},rotateX=(t,...e)=>rotate([t,0,0],e),rotateY=(t,...e)=>rotate([0,t,0],e),rotateZ=(t,...e)=>rotate([0,0,t],e);module.exports={rotate:rotate,rotateX:rotateX,rotateY:rotateY,rotateZ:rotateZ};
1806
1809
 
1807
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../maths/mat4":258,"../../utils/flatten":510}],477:[function(require,module,exports){
1810
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../maths/mat4":258,"../../utils/flatten":511}],478:[function(require,module,exports){
1808
1811
  const flatten=require("../../utils/flatten"),mat4=require("../../maths/mat4"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),scale=(e,...r)=>{if(!Array.isArray(e))throw new Error("factors must be an array");if(0===(r=flatten(r)).length)throw new Error("wrong number of arguments");for(e=e.slice();e.length<3;)e.push(1);if(e[0]<=0||e[1]<=0||e[2]<=0)throw new Error("factors must be positive");const a=mat4.fromScaling(mat4.create(),e),t=r.map(e=>path2.isA(e)?path2.transform(a,e):geom2.isA(e)?geom2.transform(a,e):geom3.isA(e)?geom3.transform(a,e):e);return 1===t.length?t[0]:t},scaleX=(e,...r)=>scale([e,1,1],r),scaleY=(e,...r)=>scale([1,e,1],r),scaleZ=(e,...r)=>scale([1,1,e],r);module.exports={scale:scale,scaleX:scaleX,scaleY:scaleY,scaleZ:scaleZ};
1809
1812
 
1810
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../maths/mat4":258,"../../utils/flatten":510}],478:[function(require,module,exports){
1813
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../maths/mat4":258,"../../utils/flatten":511}],479:[function(require,module,exports){
1811
1814
  const flatten=require("../../utils/flatten"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),transform=(e,...r)=>{if(0===(r=flatten(r)).length)throw new Error("wrong number of arguments");const t=r.map(r=>path2.isA(r)?path2.transform(e,r):geom2.isA(r)?geom2.transform(e,r):geom3.isA(r)?geom3.transform(e,r):r);return 1===t.length?t[0]:t};module.exports=transform;
1812
1815
 
1813
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../utils/flatten":510}],479:[function(require,module,exports){
1816
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../utils/flatten":511}],480:[function(require,module,exports){
1814
1817
  const flatten=require("../../utils/flatten"),mat4=require("../../maths/mat4"),geom2=require("../../geometries/geom2"),geom3=require("../../geometries/geom3"),path2=require("../../geometries/path2"),translate=(t,...e)=>{if(!Array.isArray(t))throw new Error("offset must be an array");if(0===(e=flatten(e)).length)throw new Error("wrong number of arguments");for(t=t.slice();t.length<3;)t.push(0);const r=mat4.fromTranslation(mat4.create(),t),a=e.map(t=>path2.isA(t)?path2.transform(r,t):geom2.isA(t)?geom2.transform(r,t):geom3.isA(t)?geom3.transform(r,t):t);return 1===a.length?a[0]:a},translateX=(t,...e)=>translate([t,0,0],e),translateY=(t,...e)=>translate([0,t,0],e),translateZ=(t,...e)=>translate([0,0,t],e);module.exports={translate:translate,translateX:translateX,translateY:translateY,translateZ:translateZ};
1815
1818
 
1816
- },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../maths/mat4":258,"../../utils/flatten":510}],480:[function(require,module,exports){
1819
+ },{"../../geometries/geom2":141,"../../geometries/geom3":156,"../../geometries/path2":177,"../../maths/mat4":258,"../../utils/flatten":511}],481:[function(require,module,exports){
1817
1820
  const{EPS:EPS,TAU:TAU}=require("../maths/constants"),vec2=require("../maths/vec2"),path2=require("../geometries/path2"),{isGT:isGT,isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),arc=e=>{const r={center:[0,0],radius:1,startAngle:0,endAngle:TAU,makeTangent:!1,segments:32};let{center:t,radius:s,startAngle:n,endAngle:a,makeTangent:o,segments:c}=Object.assign({},r,e);if(!isNumberArray(t,2))throw new Error("center must be an array of X and Y values");if(!isGT(s,0))throw new Error("radius must be greater than zero");if(!isGTE(n,0))throw new Error("startAngle must be positive");if(!isGTE(a,0))throw new Error("endAngle must be positive");if(!isGTE(c,4))throw new Error("segments must be four or more");let i=TAU;(n%=TAU)<(a%=TAU)&&(i=a-n),n>a&&(i=a+(TAU-n));const m=Math.acos((s*s+s*s-EPS*EPS)/(2*s*s)),l=vec2.clone(t);let u;const A=[];if(i<m)u=vec2.fromAngleRadians(vec2.create(),n),vec2.scale(u,u,s),vec2.add(u,u,l),A.push(u);else{const e=Math.max(1,Math.floor(c*(i/TAU)))+1;let r=.5*e/i;r>.25&&(r=.25);const t=o?e+2:e;for(let a=0;a<=t;a++){let t=a;o&&((t=(a-1)*(e-2*r)/e+r)<0&&(t=0),t>e&&(t=e));const c=n+t*(i/e);u=vec2.fromAngleRadians(vec2.create(),c),vec2.scale(u,u,s),vec2.add(u,u,l),A.push(u)}}return path2.fromPoints({closed:!1},A)};module.exports=arc;
1818
1821
 
1819
- },{"../geometries/path2":177,"../maths/constants":209,"../maths/vec2":305,"./commonChecks":482}],481:[function(require,module,exports){
1822
+ },{"../geometries/path2":177,"../maths/constants":209,"../maths/vec2":305,"./commonChecks":483}],482:[function(require,module,exports){
1820
1823
  const{TAU:TAU}=require("../maths/constants"),ellipse=require("./ellipse"),{isGT:isGT}=require("./commonChecks"),circle=e=>{const s={center:[0,0],radius:1,startAngle:0,endAngle:TAU,segments:32};let{center:r,radius:t,startAngle:n,endAngle:i,segments:l}=Object.assign({},s,e);if(!isGT(t,0))throw new Error("radius must be greater than zero");return ellipse({center:r,radius:t=[t,t],startAngle:n,endAngle:i,segments:l})};module.exports=circle;
1821
1824
 
1822
- },{"../maths/constants":209,"./commonChecks":482,"./ellipse":487}],482:[function(require,module,exports){
1825
+ },{"../maths/constants":209,"./commonChecks":483,"./ellipse":488}],483:[function(require,module,exports){
1823
1826
  const isNumberArray=(i,r)=>!!(Array.isArray(i)&&i.length>=r)&&i.every(i=>Number.isFinite(i)),isGT=(i,r)=>Number.isFinite(i)&&i>r,isGTE=(i,r)=>Number.isFinite(i)&&i>=r;module.exports={isNumberArray:isNumberArray,isGT:isGT,isGTE:isGTE};
1824
1827
 
1825
- },{}],483:[function(require,module,exports){
1828
+ },{}],484:[function(require,module,exports){
1826
1829
  const cuboid=require("./cuboid"),{isGT:isGT}=require("./commonChecks"),cube=e=>{let{center:r,size:i}=Object.assign({},{center:[0,0,0],size:2},e);if(!isGT(i,0))throw new Error("size must be greater than zero");return cuboid({center:r,size:i=[i,i,i]})};module.exports=cube;
1827
1830
 
1828
- },{"./commonChecks":482,"./cuboid":484}],484:[function(require,module,exports){
1831
+ },{"./commonChecks":483,"./cuboid":485}],485:[function(require,module,exports){
1829
1832
  const geom3=require("../geometries/geom3"),poly3=require("../geometries/poly3"),{isNumberArray:isNumberArray}=require("./commonChecks"),cuboid=e=>{const{center:r,size:o}=Object.assign({},{center:[0,0,0],size:[2,2,2]},e);if(!isNumberArray(r,3))throw new Error("center must be an array of X, Y and Z values");if(!isNumberArray(o,3))throw new Error("size must be an array of width, depth and height values");if(!o.every(e=>e>0))throw new Error("size values must be greater than zero");return geom3.create([[[0,4,6,2],[-1,0,0]],[[1,3,7,5],[1,0,0]],[[0,1,5,4],[0,-1,0]],[[2,6,7,3],[0,1,0]],[[0,2,3,1],[0,0,-1]],[[4,5,7,6],[0,0,1]]].map(e=>{const t=e[0].map(e=>{return[r[0]+o[0]/2*(2*!!(1&e)-1),r[1]+o[1]/2*(2*!!(2&e)-1),r[2]+o[2]/2*(2*!!(4&e)-1)]});return poly3.create(t)}))};module.exports=cuboid;
1830
1833
 
1831
- },{"../geometries/geom3":156,"../geometries/poly3":194,"./commonChecks":482}],485:[function(require,module,exports){
1834
+ },{"../geometries/geom3":156,"../geometries/poly3":194,"./commonChecks":483}],486:[function(require,module,exports){
1832
1835
  const cylinderElliptic=require("./cylinderElliptic"),{isGT:isGT}=require("./commonChecks"),cylinder=e=>{const{center:i,height:r,radius:t,segments:s}=Object.assign({},{center:[0,0,0],height:2,radius:1,segments:32},e);if(!isGT(t,0))throw new Error("radius must be greater than zero");return cylinderElliptic({center:i,height:r,startRadius:[t,t],endRadius:[t,t],segments:s})};module.exports=cylinder;
1833
1836
 
1834
- },{"./commonChecks":482,"./cylinderElliptic":486}],486:[function(require,module,exports){
1837
+ },{"./commonChecks":483,"./cylinderElliptic":487}],487:[function(require,module,exports){
1835
1838
  const{EPS:EPS,TAU:TAU}=require("../maths/constants"),vec3=require("../maths/vec3"),geom3=require("../geometries/geom3"),poly3=require("../geometries/poly3"),{sin:sin,cos:cos}=require("../maths/utils/trigonometry"),{isGT:isGT,isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),cylinderElliptic=e=>{const r={center:[0,0,0],height:2,startRadius:[1,1],startAngle:0,endRadius:[1,1],endAngle:TAU,segments:32};let{center:s,height:t,startRadius:a,startAngle:i,endRadius:o,endAngle:n,segments:u}=Object.assign({},r,e);if(!isNumberArray(s,3))throw new Error("center must be an array of X, Y and Z values");if(!isGT(t,0))throw new Error("height must be greater then zero");if(!isNumberArray(a,2))throw new Error("startRadius must be an array of X and Y values");if(!a.every(e=>e>=0))throw new Error("startRadius values must be positive");if(!isNumberArray(o,2))throw new Error("endRadius must be an array of X and Y values");if(!o.every(e=>e>=0))throw new Error("endRadius values must be positive");if(o.every(e=>0===e)&&a.every(e=>0===e))throw new Error("at least one radius must be positive");if(!isGTE(i,0))throw new Error("startAngle must be positive");if(!isGTE(n,0))throw new Error("endAngle must be positive");if(!isGTE(u,4))throw new Error("segments must be four or more");let c=TAU;(i%=TAU)<(n%=TAU)&&(c=n-i),i>n&&(c=n+(TAU-i));const l=Math.min(a[0],a[1],o[0],o[1]),m=Math.acos((l*l+l*l-EPS*EPS)/(2*l*l));if(c<m)throw new Error("startAngle and endAngle do not define a significant rotation");const h=Math.floor(u*(c/TAU)),d=vec3.fromValues(0,0,-t/2),v=vec3.fromValues(0,0,t/2),f=vec3.subtract(vec3.create(),v,d),g=vec3.fromValues(1,0,0),p=vec3.fromValues(0,1,0),A=vec3.create(),w=vec3.create(),E=vec3.create(),y=(e,r,s)=>{const t=r*c+i;return vec3.scale(A,g,s[0]*cos(t)),vec3.scale(w,p,s[1]*sin(t)),vec3.add(A,A,w),vec3.scale(E,f,e),vec3.add(E,E,d),vec3.add(vec3.create(),A,E)},T=(...e)=>{const r=e.map(e=>vec3.add(vec3.create(),e,s));return poly3.create(r)},b=[];for(let e=0;e<h;e++){const r=e/h;let s=(e+1)/h;c===TAU&&e===h-1&&(s=0),o[0]===a[0]&&o[1]===a[1]?(b.push(T(d,y(0,s,o),y(0,r,o))),b.push(T(y(0,s,o),y(1,s,o),y(1,r,o),y(0,r,o))),b.push(T(v,y(1,r,o),y(1,s,o)))):(a[0]>0&&a[1]>0&&b.push(T(d,y(0,s,a),y(0,r,a))),(a[0]>0||a[1]>0)&&b.push(T(y(0,r,a),y(0,s,a),y(1,r,o))),o[0]>0&&o[1]>0&&b.push(T(v,y(1,r,o),y(1,s,o))),(o[0]>0||o[1]>0)&&b.push(T(y(1,r,o),y(0,s,a),y(1,s,o))))}return c<TAU&&(b.push(T(d,y(0,0,a),v)),b.push(T(y(0,0,a),y(1,0,o),v)),b.push(T(d,v,y(0,1,a))),b.push(T(y(0,1,a),v,y(1,1,o)))),geom3.create(b)};module.exports=cylinderElliptic;
1836
1839
 
1837
- },{"../geometries/geom3":156,"../geometries/poly3":194,"../maths/constants":209,"../maths/utils/trigonometry":287,"../maths/vec3":336,"./commonChecks":482}],487:[function(require,module,exports){
1840
+ },{"../geometries/geom3":156,"../geometries/poly3":194,"../maths/constants":209,"../maths/utils/trigonometry":287,"../maths/vec3":336,"./commonChecks":483}],488:[function(require,module,exports){
1838
1841
  const{EPS:EPS,TAU:TAU}=require("../maths/constants"),vec2=require("../maths/vec2"),geom2=require("../geometries/geom2"),{sin:sin,cos:cos}=require("../maths/utils/trigonometry"),{isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),ellipse=e=>{const r={center:[0,0],radius:[1,1],startAngle:0,endAngle:TAU,segments:32};let{center:s,radius:t,startAngle:n,endAngle:o,segments:i}=Object.assign({},r,e);if(!isNumberArray(s,2))throw new Error("center must be an array of X and Y values");if(!isNumberArray(t,2))throw new Error("radius must be an array of X and Y values");if(!t.every(e=>e>0))throw new Error("radius values must be greater than zero");if(!isGTE(n,0))throw new Error("startAngle must be positive");if(!isGTE(o,0))throw new Error("endAngle must be positive");if(!isGTE(i,3))throw new Error("segments must be three or more");let a=TAU;(n%=TAU)<(o%=TAU)&&(a=o-n),n>o&&(a=o+(TAU-n));const m=Math.min(t[0],t[1]);if(a<Math.acos((m*m+m*m-EPS*EPS)/(2*m*m)))throw new Error("startAngle and endAngle do not define a significant rotation");i=Math.floor(i*(a/TAU));const u=vec2.clone(s),c=a/i,l=[];i=a<TAU?i+1:i;for(let e=0;e<i;e++){const r=c*e+n,s=vec2.fromValues(t[0]*cos(r),t[1]*sin(r));vec2.add(s,u,s),l.push(s)}return a<TAU&&l.push(u),geom2.fromPoints(l)};module.exports=ellipse;
1839
1842
 
1840
- },{"../geometries/geom2":141,"../maths/constants":209,"../maths/utils/trigonometry":287,"../maths/vec2":305,"./commonChecks":482}],488:[function(require,module,exports){
1843
+ },{"../geometries/geom2":141,"../maths/constants":209,"../maths/utils/trigonometry":287,"../maths/vec2":305,"./commonChecks":483}],489:[function(require,module,exports){
1841
1844
  const{TAU:TAU}=require("../maths/constants"),vec3=require("../maths/vec3"),geom3=require("../geometries/geom3"),poly3=require("../geometries/poly3"),{sin:sin,cos:cos}=require("../maths/utils/trigonometry"),{isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),ellipsoid=e=>{const{center:c,radius:r,segments:a,axes:s}=Object.assign({},{center:[0,0,0],radius:[1,1,1],segments:32,axes:[[1,0,0],[0,-1,0],[0,0,1]]},e);if(!isNumberArray(c,3))throw new Error("center must be an array of X, Y and Z values");if(!isNumberArray(r,3))throw new Error("radius must be an array of X, Y and Z values");if(!r.every(e=>e>0))throw new Error("radius values must be greater than zero");if(!isGTE(a,4))throw new Error("segments must be four or more");const t=vec3.scale(vec3.create(),vec3.normalize(vec3.create(),s[0]),r[0]),v=vec3.scale(vec3.create(),vec3.normalize(vec3.create(),s[1]),r[1]),o=vec3.scale(vec3.create(),vec3.normalize(vec3.create(),s[2]),r[2]),l=Math.round(a/4);let u;const i=[],d=vec3.create(),n=vec3.create();for(let e=0;e<=a;e++){const r=TAU*e/a,s=vec3.add(vec3.create(),vec3.scale(d,t,cos(r)),vec3.scale(n,v,sin(r)));if(e>0){let e,r;for(let a=0;a<=l;a++){const t=TAU/4*a/l,v=cos(t),m=sin(t);if(a>0){let t,h=[];t=vec3.subtract(vec3.create(),vec3.scale(d,u,e),vec3.scale(n,o,r)),h.push(vec3.add(t,t,c)),t=vec3.subtract(vec3.create(),vec3.scale(d,s,e),vec3.scale(n,o,r)),h.push(vec3.add(t,t,c)),a<l&&(t=vec3.subtract(vec3.create(),vec3.scale(d,s,v),vec3.scale(n,o,m)),h.push(vec3.add(t,t,c))),t=vec3.subtract(vec3.create(),vec3.scale(d,u,v),vec3.scale(n,o,m)),h.push(vec3.add(t,t,c)),i.push(poly3.create(h)),h=[],t=vec3.add(vec3.create(),vec3.scale(d,u,e),vec3.scale(n,o,r)),h.push(vec3.add(vec3.create(),c,t)),t=vec3.add(t,vec3.scale(d,s,e),vec3.scale(n,o,r)),h.push(vec3.add(vec3.create(),c,t)),a<l&&(t=vec3.add(t,vec3.scale(d,s,v),vec3.scale(n,o,m)),h.push(vec3.add(vec3.create(),c,t))),t=vec3.add(t,vec3.scale(d,u,v),vec3.scale(n,o,m)),h.push(vec3.add(vec3.create(),c,t)),h.reverse(),i.push(poly3.create(h))}e=v,r=m}}u=s}return geom3.create(i)};module.exports=ellipsoid;
1842
1845
 
1843
- },{"../geometries/geom3":156,"../geometries/poly3":194,"../maths/constants":209,"../maths/utils/trigonometry":287,"../maths/vec3":336,"./commonChecks":482}],489:[function(require,module,exports){
1846
+ },{"../geometries/geom3":156,"../geometries/poly3":194,"../maths/constants":209,"../maths/utils/trigonometry":287,"../maths/vec3":336,"./commonChecks":483}],490:[function(require,module,exports){
1844
1847
  const mat4=require("../maths/mat4"),vec3=require("../maths/vec3"),geom3=require("../geometries/geom3"),polyhedron=require("./polyhedron"),{isGT:isGT,isGTE:isGTE}=require("./commonChecks"),geodesicSphere=e=>{let{radius:r,frequency:t}=Object.assign({},{radius:1,frequency:6},e);if(!isGT(r,0))throw new Error("radius must be greater than zero");if(!isGTE(t,6))throw new Error("frequency must be six or more");t=Math.floor(t/6);const o=[[.850651,0,-.525731],[.850651,-0,.525731],[-.850651,-0,.525731],[-.850651,0,-.525731],[0,-.525731,.850651],[0,.525731,.850651],[0,.525731,-.850651],[0,-.525731,-.850651],[-.525731,-.850651,-0],[.525731,-.850651,-0],[.525731,.850651,0],[-.525731,.850651,0]],s=[[0,9,1],[1,10,0],[6,7,0],[10,6,0],[7,9,0],[5,1,4],[4,1,9],[5,10,1],[2,8,3],[3,11,2],[2,5,4],[4,8,2],[2,11,5],[3,7,6],[6,11,3],[8,7,3],[9,8,4],[11,10,5],[10,11,6],[8,9,7]],n=(e,r,t)=>{const o=e[0],s=e[1],n=e[2];let c=t;const a=[],l=[];for(let e=0;e<r;e++)for(let t=0;t<r-e;t++){const f=e/r,u=(e+1)/r,h=t/(r-e),m=(t+1)/(r-e),g=r-e-1?t/(r-e-1):1,p=[];p[0]=i(i(o,s,h),n,f),p[1]=i(i(o,s,m),n,f),p[2]=i(i(o,s,g),n,u);for(let e=0;e<3;e++){const r=vec3.length(p[e]);for(let t=0;t<3;t++)p[e][t]/=r}if(a.push(p[0],p[1],p[2]),l.push([c,c+1,c+2]),c+=3,t<r-e-1){const h=r-e-1?(t+1)/(r-e-1):1;p[0]=i(i(o,s,m),n,f),p[1]=i(i(o,s,h),n,u),p[2]=i(i(o,s,g),n,u);for(let e=0;e<3;e++){const r=vec3.length(p[e]);for(let t=0;t<3;t++)p[e][t]/=r}a.push(p[0],p[1],p[2]),l.push([c,c+1,c+2]),c+=3}}return{points:a,triangles:l,offset:c}},i=(e,r,t)=>{const o=1-t,s=[];for(let n=0;n<3;n++)s[n]=e[n]*o+r[n]*t;return s};let c=[],a=[],l=0;for(let e=0;e<s.length;e++){const r=n([o[s[e][0]],o[s[e][1]],o[s[e][2]]],t,l);c=c.concat(r.points),a=a.concat(r.triangles),l=r.offset}let f=polyhedron({points:c,faces:a,orientation:"inward"});return 1!==r&&(f=geom3.transform(mat4.fromScaling(mat4.create(),[r,r,r]),f)),f};module.exports=geodesicSphere;
1845
1848
 
1846
- },{"../geometries/geom3":156,"../maths/mat4":258,"../maths/vec3":336,"./commonChecks":482,"./polyhedron":493}],490:[function(require,module,exports){
1849
+ },{"../geometries/geom3":156,"../maths/mat4":258,"../maths/vec3":336,"./commonChecks":483,"./polyhedron":494}],491:[function(require,module,exports){
1847
1850
  module.exports={arc:require("./arc"),circle:require("./circle"),cube:require("./cube"),cuboid:require("./cuboid"),cylinder:require("./cylinder"),cylinderElliptic:require("./cylinderElliptic"),ellipse:require("./ellipse"),ellipsoid:require("./ellipsoid"),geodesicSphere:require("./geodesicSphere"),line:require("./line"),polygon:require("./polygon"),polyhedron:require("./polyhedron"),rectangle:require("./rectangle"),roundedCuboid:require("./roundedCuboid"),roundedCylinder:require("./roundedCylinder"),roundedRectangle:require("./roundedRectangle"),sphere:require("./sphere"),square:require("./square"),star:require("./star"),torus:require("./torus"),triangle:require("./triangle")};
1848
1851
 
1849
- },{"./arc":480,"./circle":481,"./cube":483,"./cuboid":484,"./cylinder":485,"./cylinderElliptic":486,"./ellipse":487,"./ellipsoid":488,"./geodesicSphere":489,"./line":491,"./polygon":492,"./polyhedron":493,"./rectangle":494,"./roundedCuboid":495,"./roundedCylinder":496,"./roundedRectangle":497,"./sphere":498,"./square":499,"./star":500,"./torus":501,"./triangle":502}],491:[function(require,module,exports){
1852
+ },{"./arc":481,"./circle":482,"./cube":484,"./cuboid":485,"./cylinder":486,"./cylinderElliptic":487,"./ellipse":488,"./ellipsoid":489,"./geodesicSphere":490,"./line":492,"./polygon":493,"./polyhedron":494,"./rectangle":495,"./roundedCuboid":496,"./roundedCylinder":497,"./roundedRectangle":498,"./sphere":499,"./square":500,"./star":501,"./torus":502,"./triangle":503}],492:[function(require,module,exports){
1850
1853
  const path2=require("../geometries/path2"),line=r=>{if(!Array.isArray(r))throw new Error("points must be an array");return path2.fromPoints({},r)};module.exports=line;
1851
1854
 
1852
- },{"../geometries/path2":177}],492:[function(require,module,exports){
1855
+ },{"../geometries/path2":177}],493:[function(require,module,exports){
1853
1856
  const geom2=require("../geometries/geom2"),polygon=r=>{const{points:o,paths:t}=Object.assign({},{points:[],paths:[]},r);if(!Array.isArray(o)||!Array.isArray(t))throw new Error("points and paths must be arrays");let a=o;Array.isArray(o[0])&&(Array.isArray(o[0][0])||(a=[o])),a.forEach((r,o)=>{if(!Array.isArray(r))throw new Error("list of points "+o+" must be an array");if(r.length<3)throw new Error("list of points "+o+" must contain three or more points");r.forEach((r,t)=>{if(!Array.isArray(r))throw new Error("list of points "+o+", point "+t+" must be an array");if(r.length<2)throw new Error("list of points "+o+", point "+t+" must contain by X and Y values")})});let s=t;if(0===t.length){let r=0;s=a.map(o=>o.map(o=>r++))}const e=[];a.forEach(r=>r.forEach(r=>e.push(r)));let n=[];return s.forEach(r=>{const o=r.map(r=>e[r]),t=geom2.fromPoints(o);n=n.concat(geom2.toSides(t))}),geom2.create(n)};module.exports=polygon;
1854
1857
 
1855
- },{"../geometries/geom2":141}],493:[function(require,module,exports){
1858
+ },{"../geometries/geom2":141}],494:[function(require,module,exports){
1856
1859
  const geom3=require("../geometries/geom3"),poly3=require("../geometries/poly3"),{isNumberArray:isNumberArray}=require("./commonChecks"),polyhedron=r=>{const e={points:[],faces:[],colors:void 0,orientation:"outward"},{points:o,faces:a,colors:t,orientation:n}=Object.assign({},e,r);if(!Array.isArray(o)||!Array.isArray(a))throw new Error("points and faces must be arrays");if(o.length<3)throw new Error("three or more points are required");if(a.length<1)throw new Error("one or more faces are required");if(t){if(!Array.isArray(t))throw new Error("colors must be an array");if(t.length!==a.length)throw new Error("faces and colors must have the same length")}o.forEach((r,e)=>{if(!isNumberArray(r,3))throw new Error(`point ${e} must be an array of X, Y, Z values`)}),a.forEach((r,e)=>{if(r.length<3)throw new Error(`face ${e} must contain 3 or more indexes`);if(!isNumberArray(r,r.length))throw new Error(`face ${e} must be an array of numbers`)}),"outward"!==n&&a.forEach(r=>r.reverse());const s=a.map((r,e)=>{const a=poly3.create(r.map(r=>o[r]));return t&&t[e]&&(a.color=t[e]),a});return geom3.create(s)};module.exports=polyhedron;
1857
1860
 
1858
- },{"../geometries/geom3":156,"../geometries/poly3":194,"./commonChecks":482}],494:[function(require,module,exports){
1861
+ },{"../geometries/geom3":156,"../geometries/poly3":194,"./commonChecks":483}],495:[function(require,module,exports){
1859
1862
  const vec2=require("../maths/vec2"),geom2=require("../geometries/geom2"),{isNumberArray:isNumberArray}=require("./commonChecks"),rectangle=e=>{const{center:r,size:t}=Object.assign({},{center:[0,0],size:[2,2]},e);if(!isNumberArray(r,2))throw new Error("center must be an array of X and Y values");if(!isNumberArray(t,2))throw new Error("size must be an array of X and Y values");if(!t.every(e=>e>0))throw new Error("size values must be greater than zero");const a=[t[0]/2,t[1]/2],c=[a[0],-a[1]],s=[vec2.subtract(vec2.create(),r,a),vec2.add(vec2.create(),r,c),vec2.add(vec2.create(),r,a),vec2.subtract(vec2.create(),r,c)];return geom2.fromPoints(s)};module.exports=rectangle;
1860
1863
 
1861
- },{"../geometries/geom2":141,"../maths/vec2":305,"./commonChecks":482}],495:[function(require,module,exports){
1864
+ },{"../geometries/geom2":141,"../maths/vec2":305,"./commonChecks":483}],496:[function(require,module,exports){
1862
1865
  const{EPS:EPS,TAU:TAU}=require("../maths/constants"),vec2=require("../maths/vec2"),vec3=require("../maths/vec3"),geom3=require("../geometries/geom3"),poly3=require("../geometries/poly3"),{sin:sin,cos:cos}=require("../maths/utils/trigonometry"),{isGT:isGT,isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),createCorners=(e,r,t,s,c,o)=>{const a=TAU/4*c/s,n=cos(a),i=sin(a),u=s-c;let l=t*n,h=r[2]-(t-t*i);o||(h=t-t*i-r[2]),l=l>EPS?l:0;const d=vec3.add(vec3.create(),e,[r[0]-t,r[1]-t,h]),v=vec3.add(vec3.create(),e,[t-r[0],r[1]-t,h]),m=vec3.add(vec3.create(),e,[t-r[0],t-r[1],h]),p=vec3.add(vec3.create(),e,[r[0]-t,t-r[1],h]),f=[],g=[],E=[],y=[];for(let e=0;e<=u;e++){const r=u>0?TAU/4*e/u:0,t=vec2.fromAngleRadians(vec2.create(),r);vec2.scale(t,t,l);const s=vec3.fromVec2(vec3.create(),t);f.push(vec3.add(vec3.create(),d,s)),vec3.rotateZ(s,s,[0,0,0],TAU/4),g.push(vec3.add(vec3.create(),v,s)),vec3.rotateZ(s,s,[0,0,0],TAU/4),E.push(vec3.add(vec3.create(),m,s)),vec3.rotateZ(s,s,[0,0,0],TAU/4),y.push(vec3.add(vec3.create(),p,s))}return o?[f,g,E,y]:(f.reverse(),g.reverse(),E.reverse(),y.reverse(),[y,E,g,f])},stitchCorners=(e,r)=>{const t=[];for(let s=0;s<e.length;s++){const c=e[s],o=r[s];for(let e=0;e<c.length-1;e++)t.push(poly3.create([c[e],c[e+1],o[e]])),e<o.length-1&&t.push(poly3.create([o[e],c[e+1],o[e+1]]))}return t},stitchWalls=(e,r)=>{const t=[];for(let s=0;s<e.length;s++){let c=e[s],o=r[s];const a=c[c.length-1],n=o[o.length-1],i=(s+1)%e.length;c=e[i],o=r[i];const u=c[0],l=o[0];t.push(poly3.create([a,u,l,n]))}return t},stitchSides=(e,r)=>{e=(e=[e[3],e[2],e[1],e[0]]).map(e=>e.slice().reverse());const t=[];e.forEach(e=>{e.forEach(e=>t.push(e))});const s=[];r.forEach(e=>{e.forEach(e=>s.push(e))});const c=[];for(let e=0;e<s.length;e++){const r=(e+1)%s.length;c.push(poly3.create([t[e],t[r],s[r],s[e]]))}return c},roundedCuboid=e=>{let{center:r,size:t,roundRadius:s,segments:c}=Object.assign({},{center:[0,0,0],size:[2,2,2],roundRadius:.2,segments:32},e);if(!isNumberArray(r,3))throw new Error("center must be an array of X, Y and Z values");if(!isNumberArray(t,3))throw new Error("size must be an array of X, Y and Z values");if(!t.every(e=>e>0))throw new Error("size values must be greater than zero");if(!isGT(s,0))throw new Error("roundRadius must be greater than zero");if(!isGTE(c,4))throw new Error("segments must be four or more");if(s>(t=t.map(e=>e/2))[0]-EPS||s>t[1]-EPS||s>t[2]-EPS)throw new Error("roundRadius must be smaller then the radius of all dimensions");c=Math.floor(c/4);let o=null,a=null,n=[];for(let e=0;e<=c;e++){const i=createCorners(r,t,s,c,e,!0),u=createCorners(r,t,s,c,e,!1);if(0===e&&(n=n.concat(stitchSides(u,i))),o&&(n=n.concat(stitchCorners(o,i),stitchWalls(o,i))),a&&(n=n.concat(stitchCorners(a,u),stitchWalls(a,u))),e===c){let e=i.map(e=>e[0]);n.push(poly3.create(e)),e=u.map(e=>e[0]),n.push(poly3.create(e))}o=i,a=u}return geom3.create(n)};module.exports=roundedCuboid;
1863
1866
 
1864
- },{"../geometries/geom3":156,"../geometries/poly3":194,"../maths/constants":209,"../maths/utils/trigonometry":287,"../maths/vec2":305,"../maths/vec3":336,"./commonChecks":482}],496:[function(require,module,exports){
1867
+ },{"../geometries/geom3":156,"../geometries/poly3":194,"../maths/constants":209,"../maths/utils/trigonometry":287,"../maths/vec2":305,"../maths/vec3":336,"./commonChecks":483}],497:[function(require,module,exports){
1865
1868
  const{EPS:EPS,TAU:TAU}=require("../maths/constants"),vec3=require("../maths/vec3"),geom3=require("../geometries/geom3"),poly3=require("../geometries/poly3"),{sin:sin,cos:cos}=require("../maths/utils/trigonometry"),{isGT:isGT,isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),roundedCylinder=e=>{const{center:c,height:r,radius:s,roundRadius:a,segments:t}=Object.assign({},{center:[0,0,0],height:2,radius:1,roundRadius:.2,segments:32},e);if(!isNumberArray(c,3))throw new Error("center must be an array of X, Y and Z values");if(!isGT(r,0))throw new Error("height must be greater then zero");if(!isGT(s,0))throw new Error("radius must be greater then zero");if(!isGT(a,0))throw new Error("roundRadius must be greater then zero");if(a>s-EPS)throw new Error("roundRadius must be smaller then the radius");if(!isGTE(t,4))throw new Error("segments must be four or more");const v=[0,0,-r/2],o=[0,0,r/2],u=vec3.subtract(vec3.create(),o,v);if(2*a>vec3.length(u)-EPS)throw new Error("height must be larger than twice roundRadius");let d;d=Math.abs(u[0])>Math.abs(u[1])?vec3.fromValues(0,1,0):vec3.fromValues(1,0,0);const i=vec3.scale(vec3.create(),vec3.normalize(vec3.create(),u),a),n=vec3.scale(vec3.create(),vec3.normalize(vec3.create(),vec3.cross(vec3.create(),i,d)),s),l=vec3.scale(vec3.create(),vec3.normalize(vec3.create(),vec3.cross(vec3.create(),n,i)),s);vec3.add(v,v,i),vec3.subtract(o,o,i);const h=Math.floor(.25*t),m=e=>{const r=e.map(e=>vec3.add(e,e,c));return poly3.create(r)},p=[],b=vec3.create(),g=vec3.create();let f;for(let e=0;e<=t;e++){const c=TAU*e/t,r=vec3.add(vec3.create(),vec3.scale(b,n,cos(c)),vec3.scale(g,l,sin(c)));if(e>0){let e,c,s=[];s.push(vec3.add(vec3.create(),v,r)),s.push(vec3.add(vec3.create(),v,f)),s.push(vec3.add(vec3.create(),o,f)),s.push(vec3.add(vec3.create(),o,r)),p.push(m(s));for(let a=0;a<=h;a++){const t=TAU/4*a/h,u=cos(t),d=sin(t);if(a>0){let t;s=[],t=vec3.add(vec3.create(),v,vec3.subtract(b,vec3.scale(b,f,e),vec3.scale(g,i,c))),s.push(t),t=vec3.add(vec3.create(),v,vec3.subtract(b,vec3.scale(b,r,e),vec3.scale(g,i,c))),s.push(t),a<h&&(t=vec3.add(vec3.create(),v,vec3.subtract(b,vec3.scale(b,r,u),vec3.scale(g,i,d))),s.push(t)),t=vec3.add(vec3.create(),v,vec3.subtract(b,vec3.scale(b,f,u),vec3.scale(g,i,d))),s.push(t),p.push(m(s)),s=[],t=vec3.add(vec3.create(),vec3.scale(b,f,e),vec3.scale(g,i,c)),vec3.add(t,t,o),s.push(t),t=vec3.add(vec3.create(),vec3.scale(b,r,e),vec3.scale(g,i,c)),vec3.add(t,t,o),s.push(t),a<h&&(t=vec3.add(vec3.create(),vec3.scale(b,r,u),vec3.scale(g,i,d)),vec3.add(t,t,o),s.push(t)),t=vec3.add(vec3.create(),vec3.scale(b,f,u),vec3.scale(g,i,d)),vec3.add(t,t,o),s.push(t),s.reverse(),p.push(m(s))}e=u,c=d}}f=r}return geom3.create(p)};module.exports=roundedCylinder;
1866
1869
 
1867
- },{"../geometries/geom3":156,"../geometries/poly3":194,"../maths/constants":209,"../maths/utils/trigonometry":287,"../maths/vec3":336,"./commonChecks":482}],497:[function(require,module,exports){
1870
+ },{"../geometries/geom3":156,"../geometries/poly3":194,"../maths/constants":209,"../maths/utils/trigonometry":287,"../maths/vec3":336,"./commonChecks":483}],498:[function(require,module,exports){
1868
1871
  const{EPS:EPS,TAU:TAU}=require("../maths/constants"),vec2=require("../maths/vec2"),geom2=require("../geometries/geom2"),{isGT:isGT,isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),roundedRectangle=e=>{let{center:r,size:a,roundRadius:t,segments:s}=Object.assign({},{center:[0,0],size:[2,2],roundRadius:.2,segments:32},e);if(!isNumberArray(r,2))throw new Error("center must be an array of X and Y values");if(!isNumberArray(a,2))throw new Error("size must be an array of X and Y values");if(!a.every(e=>e>0))throw new Error("size values must be greater than zero");if(!isGT(t,0))throw new Error("roundRadius must be greater than zero");if(!isGTE(s,4))throw new Error("segments must be four or more");if(t>(a=a.map(e=>e/2))[0]-EPS||t>a[1]-EPS)throw new Error("roundRadius must be smaller then the radius of all dimensions");const c=Math.floor(s/4),o=vec2.add(vec2.create(),r,[a[0]-t,a[1]-t]),n=vec2.add(vec2.create(),r,[t-a[0],a[1]-t]),i=vec2.add(vec2.create(),r,[t-a[0],t-a[1]]),u=vec2.add(vec2.create(),r,[a[0]-t,t-a[1]]),d=[],v=[],m=[],h=[];for(let e=0;e<=c;e++){const r=TAU/4*e/c,a=vec2.fromAngleRadians(vec2.create(),r);vec2.scale(a,a,t),d.push(vec2.add(vec2.create(),o,a)),vec2.rotate(a,a,vec2.create(),TAU/4),v.push(vec2.add(vec2.create(),n,a)),vec2.rotate(a,a,vec2.create(),TAU/4),m.push(vec2.add(vec2.create(),i,a)),vec2.rotate(a,a,vec2.create(),TAU/4),h.push(vec2.add(vec2.create(),u,a))}return geom2.fromPoints(d.concat(v,m,h))};module.exports=roundedRectangle;
1869
1872
 
1870
- },{"../geometries/geom2":141,"../maths/constants":209,"../maths/vec2":305,"./commonChecks":482}],498:[function(require,module,exports){
1873
+ },{"../geometries/geom2":141,"../maths/constants":209,"../maths/vec2":305,"./commonChecks":483}],499:[function(require,module,exports){
1871
1874
  const ellipsoid=require("./ellipsoid"),{isGT:isGT}=require("./commonChecks"),sphere=e=>{let{center:s,radius:r,segments:i,axes:t}=Object.assign({},{center:[0,0,0],radius:1,segments:32,axes:[[1,0,0],[0,-1,0],[0,0,1]]},e);if(!isGT(r,0))throw new Error("radius must be greater than zero");return ellipsoid({center:s,radius:r=[r,r,r],segments:i,axes:t})};module.exports=sphere;
1872
1875
 
1873
- },{"./commonChecks":482,"./ellipsoid":488}],499:[function(require,module,exports){
1876
+ },{"./commonChecks":483,"./ellipsoid":489}],500:[function(require,module,exports){
1874
1877
  const rectangle=require("./rectangle"),{isGT:isGT}=require("./commonChecks"),square=e=>{let{center:r,size:s}=Object.assign({},{center:[0,0],size:2},e);if(!isGT(s,0))throw new Error("size must be greater than zero");return rectangle({center:r,size:s=[s,s]})};module.exports=square;
1875
1878
 
1876
- },{"./commonChecks":482,"./rectangle":494}],500:[function(require,module,exports){
1879
+ },{"./commonChecks":483,"./rectangle":495}],501:[function(require,module,exports){
1877
1880
  const{TAU:TAU}=require("../maths/constants"),vec2=require("../maths/vec2"),geom2=require("../geometries/geom2"),{isGT:isGT,isGTE:isGTE,isNumberArray:isNumberArray}=require("./commonChecks"),getRadiusRatio=(e,r)=>e>0&&r>1&&r<e/2?Math.cos(Math.PI*r/e)/Math.cos(Math.PI*(r-1)/e):0,getPoints=(e,r,t,s)=>{const o=TAU/e,i=[];for(let a=0;a<e;a++){const e=vec2.fromAngleRadians(vec2.create(),o*a+t);vec2.scale(e,e,r),vec2.add(e,s,e),i.push(e)}return i},star=e=>{let{center:r,vertices:t,outerRadius:s,innerRadius:o,density:i,startAngle:a}=Object.assign({},{center:[0,0],vertices:5,outerRadius:1,innerRadius:0,density:2,startAngle:0},e);if(!isNumberArray(r,2))throw new Error("center must be an array of X and Y values");if(!isGTE(t,2))throw new Error("vertices must be two or more");if(!isGT(s,0))throw new Error("outerRadius must be greater than zero");if(!isGTE(o,0))throw new Error("innerRadius must be greater than zero");if(!isGTE(a,0))throw new Error("startAngle must be greater than zero");if(t=Math.floor(t),i=Math.floor(i),a%=TAU,0===o){if(!isGTE(i,2))throw new Error("density must be two or more");o=s*getRadiusRatio(t,i)}const n=vec2.clone(r),u=getPoints(t,s,a,n),c=getPoints(t,o,a+Math.PI/t,n),h=[];for(let e=0;e<t;e++)h.push(u[e]),h.push(c[e]);return geom2.fromPoints(h)};module.exports=star;
1878
1881
 
1879
- },{"../geometries/geom2":141,"../maths/constants":209,"../maths/vec2":305,"./commonChecks":482}],501:[function(require,module,exports){
1882
+ },{"../geometries/geom2":141,"../maths/constants":209,"../maths/vec2":305,"./commonChecks":483}],502:[function(require,module,exports){
1880
1883
  const{TAU:TAU}=require("../maths/constants"),extrudeRotate=require("../operations/extrusions/extrudeRotate"),{rotate:rotate}=require("../operations/transforms/rotate"),{translate:translate}=require("../operations/transforms/translate"),circle=require("./circle"),{isGT:isGT,isGTE:isGTE}=require("./commonChecks"),torus=e=>{const r={innerRadius:1,innerSegments:32,outerRadius:4,outerSegments:32,innerRotation:0,startAngle:0,outerRotation:TAU},{innerRadius:t,innerSegments:o,outerRadius:n,outerSegments:s,innerRotation:i,startAngle:a,outerRotation:u}=Object.assign({},r,e);if(!isGT(t,0))throw new Error("innerRadius must be greater than zero");if(!isGTE(o,3))throw new Error("innerSegments must be three or more");if(!isGT(n,0))throw new Error("outerRadius must be greater than zero");if(!isGTE(s,3))throw new Error("outerSegments must be three or more");if(!isGTE(a,0))throw new Error("startAngle must be positive");if(!isGT(u,0))throw new Error("outerRotation must be greater than zero");if(t>=n)throw new Error("inner circle is two large to rotate about the outer circle");let m=circle({radius:t,segments:o});return 0!==i&&(m=rotate([0,0,i],m)),m=translate([n,0],m),extrudeRotate({startAngle:a,angle:u,segments:s},m)};module.exports=torus;
1881
1884
 
1882
- },{"../maths/constants":209,"../operations/extrusions/extrudeRotate":429,"../operations/transforms/rotate":476,"../operations/transforms/translate":479,"./circle":481,"./commonChecks":482}],502:[function(require,module,exports){
1885
+ },{"../maths/constants":209,"../operations/extrusions/extrudeRotate":430,"../operations/transforms/rotate":477,"../operations/transforms/translate":480,"./circle":482,"./commonChecks":483}],503:[function(require,module,exports){
1883
1886
  const{NEPS:NEPS}=require("../maths/constants"),vec2=require("../maths/vec2"),geom2=require("../geometries/geom2"),{isNumberArray:isNumberArray}=require("./commonChecks"),solveAngleFromSSS=(e,r,t)=>Math.acos((e*e+r*r-t*t)/(2*e*r)),solveSideFromSAS=(e,r,t)=>r>NEPS?Math.sqrt(e*e+t*t-2*e*t*Math.cos(r)):Math.sqrt((e-t)*(e-t)+e*t*r*r*(1-r*r/12)),solveAAA=e=>{if(Math.abs(e[0]+e[1]+e[2]-Math.PI)>NEPS)throw new Error("AAA triangles require angles that sum to PI");const r=e[0],t=e[1],s=Math.PI-r-t,a=1/Math.sin(s)*Math.sin(r),n=1/Math.sin(s)*Math.sin(t);return createTriangle(r,t,s,a,n,1)},solveAAS=e=>{const r=e[0],t=e[1],s=Math.PI+NEPS-r-t;if(s<NEPS)throw new Error("AAS triangles require angles that sum to PI");const a=e[2],n=a/Math.sin(r)*Math.sin(t),o=a/Math.sin(r)*Math.sin(s);return createTriangle(r,t,s,a,n,o)},solveASA=e=>{const r=e[0],t=e[2],s=Math.PI+NEPS-r-t;if(s<NEPS)throw new Error("ASA triangles require angles that sum to PI");const a=e[1],n=a/Math.sin(s)*Math.sin(r),o=a/Math.sin(s)*Math.sin(t);return createTriangle(r,t,s,n,o,a)},solveSAS=e=>{const r=e[0],t=e[1],s=e[2],a=solveSideFromSAS(r,t,s),n=solveAngleFromSSS(a,r,s),o=Math.PI-n-t;return createTriangle(n,t,o,s,a,r)},solveSSA=e=>{const r=e[0],t=e[1],s=e[2],a=Math.asin(t*Math.sin(s)/r),n=Math.PI-a-s,o=r/Math.sin(s)*Math.sin(n);return createTriangle(a,n,s,t,o,r)},solveSSS=e=>{const r=e[1],t=e[2],s=e[0];if(r+t<=s||t+s<=r||s+r<=t)throw new Error("SSS triangle is incorrect, as the longest side is longer than the sum of the other sides");const a=solveAngleFromSSS(t,s,r),n=solveAngleFromSSS(s,r,t),o=Math.PI-a-n;return createTriangle(a,n,o,r,t,s)},createTriangle=(e,r,t,s,a,n)=>{const o=vec2.fromValues(0,0),i=vec2.fromValues(n,0),S=vec2.fromValues(s,0);return vec2.add(S,vec2.rotate(S,S,[0,0],Math.PI-r),i),geom2.fromPoints([o,i,S])},triangle=e=>{let{type:r,values:t}=Object.assign({},{type:"SSS",values:[1,1,1]},e);if("string"!=typeof r)throw new Error("triangle type must be a string");if("A"!==(r=r.toUpperCase())[0]&&"S"!==r[0]||"A"!==r[1]&&"S"!==r[1]||"A"!==r[2]&&"S"!==r[2])throw new Error("triangle type must contain three letters; A or S");if(!isNumberArray(t,3))throw new Error("triangle values must contain three values");if(!t.every(e=>e>0))throw new Error("triangle values must be greater than zero");switch(r){case"AAA":return solveAAA(t);case"AAS":return solveAAS(t);case"ASA":return solveASA(t);case"SAS":return solveSAS(t);case"SSA":return solveSSA(t);case"SSS":return solveSSS(t);default:throw new Error("invalid triangle type, try again")}};module.exports=triangle;
1884
1887
 
1885
- },{"../geometries/geom2":141,"../maths/constants":209,"../maths/vec2":305,"./commonChecks":482}],503:[function(require,module,exports){
1888
+ },{"../geometries/geom2":141,"../maths/constants":209,"../maths/vec2":305,"./commonChecks":483}],504:[function(require,module,exports){
1886
1889
  module.exports={height:14,32:[16],33:[10,5,21,5,7,void 0,5,2,4,1,5,0,6,1,5,2],34:[16,4,21,4,14,void 0,12,21,12,14],35:[21,11,25,4,-7,void 0,17,25,10,-7,void 0,4,12,18,12,void 0,3,6,17,6],36:[20,8,25,8,-4,void 0,12,25,12,-4,void 0,17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3],37:[24,21,21,3,0,void 0,8,21,10,19,10,17,9,15,7,14,5,14,3,16,3,18,4,20,6,21,8,21,10,20,13,19,16,19,19,20,21,21,void 0,17,7,15,6,14,4,14,2,16,0,18,0,20,1,21,3,21,5,19,7,17,7],38:[26,23,12,23,13,22,14,21,14,20,13,19,11,17,6,15,3,13,1,11,0,7,0,5,1,4,2,3,4,3,6,4,8,5,9,12,13,13,14,14,16,14,18,13,20,11,21,9,20,8,18,8,16,9,13,11,10,16,3,18,1,20,0,22,0,23,1,23,2],39:[10,5,19,4,20,5,21,6,20,6,18,5,16,4,15],40:[14,11,25,9,23,7,20,5,16,4,11,4,7,5,2,7,-2,9,-5,11,-7],41:[14,3,25,5,23,7,20,9,16,10,11,10,7,9,2,7,-2,5,-5,3,-7],42:[16,8,21,8,9,void 0,3,18,13,12,void 0,13,18,3,12],43:[26,13,18,13,0,void 0,4,9,22,9],44:[10,6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4],45:[26,4,9,22,9],46:[10,5,2,4,1,5,0,6,1,5,2],47:[22,20,25,2,-7],48:[20,9,21,6,20,4,17,3,12,3,9,4,4,6,1,9,0,11,0,14,1,16,4,17,9,17,12,16,17,14,20,11,21,9,21],49:[20,6,17,8,18,11,21,11,0],50:[20,4,16,4,17,5,19,6,20,8,21,12,21,14,20,15,19,16,17,16,15,15,13,13,10,3,0,17,0],51:[20,5,21,16,21,10,13,13,13,15,12,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4],52:[20,13,21,3,7,18,7,void 0,13,21,13,0],53:[20,15,21,5,21,4,12,5,13,8,14,11,14,14,13,16,11,17,8,17,6,16,3,14,1,11,0,8,0,5,1,4,2,3,4],54:[20,16,18,15,20,12,21,10,21,7,20,5,17,4,12,4,7,5,3,7,1,10,0,11,0,14,1,16,3,17,6,17,7,16,10,14,12,11,13,10,13,7,12,5,10,4,7],55:[20,17,21,7,0,void 0,3,21,17,21],56:[20,8,21,5,20,4,18,4,16,5,14,7,13,11,12,14,11,16,9,17,7,17,4,16,2,15,1,12,0,8,0,5,1,4,2,3,4,3,7,4,9,6,11,9,12,13,13,15,14,16,16,16,18,15,20,12,21,8,21],57:[20,16,14,15,11,13,9,10,8,9,8,6,9,4,11,3,14,3,15,4,18,6,20,9,21,10,21,13,20,15,18,16,14,16,9,15,4,13,1,10,0,8,0,5,1,4,3],58:[10,5,14,4,13,5,12,6,13,5,14,void 0,5,2,4,1,5,0,6,1,5,2],59:[10,5,14,4,13,5,12,6,13,5,14,void 0,6,1,5,0,4,1,5,2,6,1,6,-1,5,-3,4,-4],60:[24,20,18,4,9,20,0],61:[26,4,12,22,12,void 0,4,6,22,6],62:[24,4,18,20,9,4,0],63:[18,3,16,3,17,4,19,5,20,7,21,11,21,13,20,14,19,15,17,15,15,14,13,13,12,9,10,9,7,void 0,9,2,8,1,9,0,10,1,9,2],64:[27,18,13,17,15,15,16,12,16,10,15,9,14,8,11,8,8,9,6,11,5,14,5,16,6,17,8,void 0,12,16,10,14,9,11,9,8,10,6,11,5,void 0,18,16,17,8,17,6,19,5,21,5,23,7,24,10,24,12,23,15,22,17,20,19,18,20,15,21,12,21,9,20,7,19,5,17,4,15,3,12,3,9,4,6,5,4,7,2,9,1,12,0,15,0,18,1,20,2,21,3,void 0,19,16,18,8,18,6,19,5],65:[18,9,21,1,0,void 0,9,21,17,0,void 0,4,7,14,7],66:[21,4,21,4,0,void 0,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,void 0,4,11,13,11,16,10,17,9,18,7,18,4,17,2,16,1,13,0,4,0],67:[21,18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5],68:[21,4,21,4,0,void 0,4,21,11,21,14,20,16,18,17,16,18,13,18,8,17,5,16,3,14,1,11,0,4,0],69:[19,4,21,4,0,void 0,4,21,17,21,void 0,4,11,12,11,void 0,4,0,17,0],70:[18,4,21,4,0,void 0,4,21,17,21,void 0,4,11,12,11],71:[21,18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,18,8,void 0,13,8,18,8],72:[22,4,21,4,0,void 0,18,21,18,0,void 0,4,11,18,11],73:[8,4,21,4,0],74:[16,12,21,12,5,11,2,10,1,8,0,6,0,4,1,3,2,2,5,2,7],75:[21,4,21,4,0,void 0,18,21,4,7,void 0,9,12,18,0],76:[17,4,21,4,0,void 0,4,0,16,0],77:[24,4,21,4,0,void 0,4,21,12,0,void 0,20,21,12,0,void 0,20,21,20,0],78:[22,4,21,4,0,void 0,4,21,18,0,void 0,18,21,18,0],79:[22,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21],80:[21,4,21,4,0,void 0,4,21,13,21,16,20,17,19,18,17,18,14,17,12,16,11,13,10,4,10],81:[22,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21,void 0,12,4,18,-2],82:[21,4,21,4,0,void 0,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,4,11,void 0,11,11,18,0],83:[20,17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3],84:[16,8,21,8,0,void 0,1,21,15,21],85:[22,4,21,4,6,5,3,7,1,10,0,12,0,15,1,17,3,18,6,18,21],86:[18,1,21,9,0,void 0,17,21,9,0],87:[24,2,21,7,0,void 0,12,21,7,0,void 0,12,21,17,0,void 0,22,21,17,0],88:[20,3,21,17,0,void 0,17,21,3,0],89:[18,1,21,9,11,9,0,void 0,17,21,9,11],90:[20,17,21,3,0,void 0,3,21,17,21,void 0,3,0,17,0],91:[14,4,25,4,-7,void 0,5,25,5,-7,void 0,4,25,11,25,void 0,4,-7,11,-7],92:[14,0,21,14,-3],93:[14,9,25,9,-7,void 0,10,25,10,-7,void 0,3,25,10,25,void 0,3,-7,10,-7],94:[16,6,15,8,18,10,15,void 0,3,12,8,17,13,12,void 0,8,17,8,0],95:[16,0,-2,16,-2],96:[10,6,21,5,20,4,18,4,16,5,15,6,16,5,17],97:[19,15,14,15,0,void 0,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3],98:[19,4,21,4,0,void 0,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3],99:[18,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3],100:[19,15,21,15,0,void 0,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3],101:[18,3,8,15,8,15,10,14,12,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3],102:[12,10,21,8,21,6,20,5,17,5,0,void 0,2,14,9,14],103:[19,15,14,15,-2,14,-5,13,-6,11,-7,8,-7,6,-6,void 0,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3],104:[19,4,21,4,0,void 0,4,10,7,13,9,14,12,14,14,13,15,10,15,0],105:[8,3,21,4,20,5,21,4,22,3,21,void 0,4,14,4,0],106:[10,5,21,6,20,7,21,6,22,5,21,void 0,6,14,6,-3,5,-6,3,-7,1,-7],107:[17,4,21,4,0,void 0,14,14,4,4,void 0,8,8,15,0],108:[8,4,21,4,0],109:[30,4,14,4,0,void 0,4,10,7,13,9,14,12,14,14,13,15,10,15,0,void 0,15,10,18,13,20,14,23,14,25,13,26,10,26,0],110:[19,4,14,4,0,void 0,4,10,7,13,9,14,12,14,14,13,15,10,15,0],111:[19,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3,16,6,16,8,15,11,13,13,11,14,8,14],112:[19,4,14,4,-7,void 0,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3],113:[19,15,14,15,-7,void 0,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3],114:[13,4,14,4,0,void 0,4,8,5,11,7,13,9,14,12,14],115:[17,14,11,13,13,10,14,7,14,4,13,3,11,4,9,6,8,11,7,13,6,14,4,14,3,13,1,10,0,7,0,4,1,3,3],116:[12,5,21,5,4,6,1,8,0,10,0,void 0,2,14,9,14],117:[19,4,14,4,4,5,1,7,0,10,0,12,1,15,4,void 0,15,14,15,0],118:[16,2,14,8,0,void 0,14,14,8,0],119:[22,3,14,7,0,void 0,11,14,7,0,void 0,11,14,15,0,void 0,19,14,15,0],120:[17,3,14,14,0,void 0,14,14,3,0],121:[16,2,14,8,0,void 0,14,14,8,0,6,-4,4,-6,2,-7,1,-7],122:[17,14,14,3,0,void 0,3,14,14,14,void 0,3,0,14,0],123:[14,9,25,7,24,6,23,5,21,5,19,6,17,7,16,8,14,8,12,6,10,void 0,7,24,6,22,6,20,7,18,8,17,9,15,9,13,8,11,4,9,8,7,9,5,9,3,8,1,7,0,6,-2,6,-4,7,-6,void 0,6,8,8,6,8,4,7,2,6,1,5,-1,5,-3,6,-5,7,-6,9,-7],124:[8,4,25,4,-7],125:[14,5,25,7,24,8,23,9,21,9,19,8,17,7,16,6,14,6,12,8,10,void 0,7,24,8,22,8,20,7,18,6,17,5,15,5,13,6,11,10,9,6,7,5,5,5,3,6,1,7,0,8,-2,8,-4,7,-6,void 0,8,8,6,6,6,4,7,2,8,1,9,-1,9,-3,8,-5,7,-6,5,-7],126:[24,3,6,3,8,4,11,6,12,8,12,10,11,14,8,16,7,18,7,20,8,21,10,void 0,3,8,4,10,6,11,8,11,10,10,14,7,16,6,18,6,20,7,21,10,21,12]};
1887
1890
 
1888
- },{}],504:[function(require,module,exports){
1891
+ },{}],505:[function(require,module,exports){
1889
1892
  module.exports={vectorChar:require("./vectorChar"),vectorText:require("./vectorText")};
1890
1893
 
1891
- },{"./vectorChar":505,"./vectorText":507}],505:[function(require,module,exports){
1894
+ },{"./vectorChar":506,"./vectorText":508}],506:[function(require,module,exports){
1892
1895
  const vectorParams=require("./vectorParams"),vectorChar=(t,e)=>{const{xOffset:r,yOffset:s,input:h,font:o,height:c,extrudeOffset:n}=vectorParams(t,e);let a=h.charCodeAt(0);a&&o[a]||(a=63);const f=[].concat(o[a]),i=(c-n)/o.height,u=n/2,g=f.shift()*i,l=[];let v=[];for(let t=0,e=f.length;t<e;t+=2){const e=i*f[t]+r,h=i*f[t+1]+s+u;void 0===f[t]?(l.push(v),v=[],t--):v.push([e,h])}return v.length&&l.push(v),{width:g,height:c,segments:l}};module.exports=vectorChar;
1893
1896
 
1894
- },{"./vectorParams":506}],506:[function(require,module,exports){
1897
+ },{"./vectorParams":507}],507:[function(require,module,exports){
1895
1898
  const defaultFont=require("./fonts/single-line/hershey/simplex.js"),defaultsVectorParams={xOffset:0,yOffset:0,input:"?",align:"left",font:defaultFont,height:14,lineSpacing:2.142857142857143,letterSpacing:1,extrudeOffset:0},vectorParams=(t,e)=>{e||"string"!=typeof t||(t={input:t}),t=t||{};const s=Object.assign({},defaultsVectorParams,t);return s.input=e||s.input,s};module.exports=vectorParams;
1896
1899
 
1897
- },{"./fonts/single-line/hershey/simplex.js":503}],507:[function(require,module,exports){
1900
+ },{"./fonts/single-line/hershey/simplex.js":504}],508:[function(require,module,exports){
1898
1901
  const vectorChar=require("./vectorChar"),vectorParams=require("./vectorParams"),translateLine=(t,e)=>{const{x:n,y:s}=Object.assign({x:0,y:0},t||{}),r=e.segments;let h=null,a=null;for(let t=0,e=r.length;t<e;t++)for(let e=0,o=(h=r[t]).length;e<o;e++)a=h[e],h[e]=[a[0]+n,a[1]+s];return e},vectorText=(t,e)=>{const{xOffset:n,yOffset:s,input:r,font:h,height:a,align:o,extrudeOffset:i,lineSpacing:c,letterSpacing:g}=vectorParams(t,e);let l,f,m,x,u,d,[v,w]=[n,s],O={width:0,segments:[]};const p=[];let y=[],C=0;const L=v,P=()=>{p.push(O),C=Math.max(C,O.width),O={width:0,segments:[]}};for(l=0,f=r.length;l<f;l++)m=r[l],x=vectorChar({xOffset:v,yOffset:w,font:h,height:a,extrudeOffset:i},m),"\n"!==m?(u=x.width*g,O.width+=u,v+=u," "!==m&&(O.segments=O.segments.concat(x.segments))):(v=L,w-=x.height*c,P());for(O.segments.length&&P(),l=0,f=p.length;l<f;l++)O=p[l],C>O.width&&(d=C-O.width,"right"===o?O=translateLine({x:d},O):"center"===o&&(O=translateLine({x:d/2},O))),y=y.concat(O.segments);return y};module.exports=vectorText;
1899
1902
 
1900
- },{"./vectorChar":505,"./vectorParams":506}],508:[function(require,module,exports){
1903
+ },{"./vectorChar":506,"./vectorParams":507}],509:[function(require,module,exports){
1901
1904
  const geom2=require("../geometries/geom2"),geom3=require("../geometries/geom3"),path2=require("../geometries/path2"),areAllShapesTheSameType=e=>{let r;for(const o of e){let e=0;if(geom2.isA(o)&&(e=1),geom3.isA(o)&&(e=2),path2.isA(o)&&(e=3),r&&e!==r)return!1;r=e}return!0};module.exports=areAllShapesTheSameType;
1902
1905
 
1903
- },{"../geometries/geom2":141,"../geometries/geom3":156,"../geometries/path2":177}],509:[function(require,module,exports){
1906
+ },{"../geometries/geom2":141,"../geometries/geom3":156,"../geometries/path2":177}],510:[function(require,module,exports){
1904
1907
  const degToRad=d=>.017453292519943295*d;module.exports=degToRad;
1905
1908
 
1906
- },{}],510:[function(require,module,exports){
1909
+ },{}],511:[function(require,module,exports){
1907
1910
  const flatten=t=>t.reduce((t,a)=>Array.isArray(a)?t.concat(flatten(a)):t.concat(a),[]);module.exports=flatten;
1908
1911
 
1909
- },{}],511:[function(require,module,exports){
1912
+ },{}],512:[function(require,module,exports){
1910
1913
  const fnNumberSort=(o,r)=>o-r;module.exports=fnNumberSort;
1911
1914
 
1912
- },{}],512:[function(require,module,exports){
1915
+ },{}],513:[function(require,module,exports){
1913
1916
  module.exports={areAllShapesTheSameType:require("./areAllShapesTheSameType"),degToRad:require("./degToRad"),flatten:require("./flatten"),fnNumberSort:require("./fnNumberSort"),insertSorted:require("./insertSorted"),radiusToSegments:require("./radiusToSegments"),radToDeg:require("./radToDeg")};
1914
1917
 
1915
- },{"./areAllShapesTheSameType":508,"./degToRad":509,"./flatten":510,"./fnNumberSort":511,"./insertSorted":513,"./radToDeg":515,"./radiusToSegments":516}],513:[function(require,module,exports){
1918
+ },{"./areAllShapesTheSameType":509,"./degToRad":510,"./flatten":511,"./fnNumberSort":512,"./insertSorted":514,"./radToDeg":516,"./radiusToSegments":517}],514:[function(require,module,exports){
1916
1919
  const insertSorted=(t,e,o)=>{let r=0,s=t.length;for(;s>r;){const l=Math.floor((r+s)/2);o(e,t[l])>0?r=l+1:s=l}t.splice(r,0,e)};module.exports=insertSorted;
1917
1920
 
1918
- },{}],514:[function(require,module,exports){
1921
+ },{}],515:[function(require,module,exports){
1919
1922
  const padArrayToLength=(r,e,o)=>{for(r=r.slice();r.length<o;)r.push(e);return r};module.exports=padArrayToLength;
1920
1923
 
1921
- },{}],515:[function(require,module,exports){
1924
+ },{}],516:[function(require,module,exports){
1922
1925
  const radToDeg=o=>57.29577951308232*o;module.exports=radToDeg;
1923
1926
 
1924
- },{}],516:[function(require,module,exports){
1927
+ },{}],517:[function(require,module,exports){
1925
1928
  const{TAU:TAU}=require("../maths/constants"),radiusToSegments=(t,e,s)=>{const a=e>0?t*TAU/e:0,n=s>0?TAU/s:0;return Math.ceil(Math.max(a,n,4))};module.exports=radiusToSegments;
1926
1929
 
1927
- },{"../maths/constants":209}],517:[function(require,module,exports){
1930
+ },{"../maths/constants":209}],518:[function(require,module,exports){
1928
1931
  const flatten=t=>t.reduce((t,a)=>Array.isArray(a)?t.concat(flatten(a)):t.concat(a),[]);module.exports=flatten;
1929
1932
 
1930
- },{}],518:[function(require,module,exports){
1933
+ },{}],519:[function(require,module,exports){
1931
1934
  const fnNumberSort=(o,r)=>o-r;module.exports=fnNumberSort;
1932
1935
 
1933
- },{}],519:[function(require,module,exports){
1936
+ },{}],520:[function(require,module,exports){
1934
1937
  const head=r=>{if(Array.isArray(r)&&0!==r.length)return r[0]};module.exports=head;
1935
1938
 
1936
- },{}],520:[function(require,module,exports){
1939
+ },{}],521:[function(require,module,exports){
1937
1940
  module.exports={flatten:require("./flatten"),fnNumberSort:require("./fnNumberSort"),head:require("./head"),insertSorted:require("./insertSorted"),nth:require("./nth"),padToLength:require("./padToLength"),toArray:require("./toArray")};
1938
1941
 
1939
- },{"./flatten":517,"./fnNumberSort":518,"./head":519,"./insertSorted":521,"./nth":522,"./padToLength":523,"./toArray":524}],521:[function(require,module,exports){
1942
+ },{"./flatten":518,"./fnNumberSort":519,"./head":520,"./insertSorted":522,"./nth":523,"./padToLength":524,"./toArray":525}],522:[function(require,module,exports){
1940
1943
  const insertSorted=(t,e,o)=>{let r=0,n=t.length;for(;n>r;){const s=Math.floor((r+n)/2);o(e,t[s])>0?r=s+1:n=s}return t.splice(r,0,e),t};module.exports=insertSorted;
1941
1944
 
1942
- },{}],522:[function(require,module,exports){
1945
+ },{}],523:[function(require,module,exports){
1943
1946
  const nth=(r,t)=>{if(Array.isArray(r)&&!(r.length<t))return r[t]};module.exports=nth;
1944
1947
 
1945
- },{}],523:[function(require,module,exports){
1948
+ },{}],524:[function(require,module,exports){
1946
1949
  const padToLength=(e,o,t)=>{for(e=e.slice();e.length<t;)e.push(o);return e};module.exports=padToLength;
1947
1950
 
1948
- },{}],524:[function(require,module,exports){
1951
+ },{}],525:[function(require,module,exports){
1949
1952
  const toArray=r=>Array.isArray(r)?r:null==r?[]:[r];module.exports=toArray;
1950
1953
 
1951
- },{}],525:[function(require,module,exports){
1954
+ },{}],526:[function(require,module,exports){
1952
1955
  var transform=require("./lib/projectMat4");function unproject(r,t,e,o){var n=e[0],u=e[1],a=e[2],c=e[3],p=t[0],f=t[1],i=t[2];return p-=n,f=c-f-1,f-=u,r[0]=2*p/a-1,r[1]=2*f/c-1,r[2]=2*i-1,transform(r,r,o)}module.exports=unproject;
1953
1956
 
1954
- },{"./lib/projectMat4":526}],526:[function(require,module,exports){
1957
+ },{"./lib/projectMat4":527}],527:[function(require,module,exports){
1955
1958
  function project(r,e,o){var t=e[0],c=e[1],n=e[2],p=o[0],u=o[1],j=o[2],a=o[3],d=o[4],f=o[5],i=o[6],l=o[7],m=o[8],s=o[9],v=o[10],x=o[11],b=o[12],g=o[13],h=o[14],k=1/(t*a+c*l+n*x+o[15]);return r[0]=(t*p+c*d+n*m+b)*k,r[1]=(t*u+c*f+n*s+g)*k,r[2]=(t*j+c*i+n*v+h)*k,r}module.exports=project;
1956
1959
 
1957
- },{}],527:[function(require,module,exports){
1960
+ },{}],528:[function(require,module,exports){
1958
1961
  function adjoint(n,o){var t=o[0],r=o[1],a=o[2],d=o[3],e=o[4],i=o[5],u=o[6],j=o[7],c=o[8],f=o[9],l=o[10],m=o[11],p=o[12],s=o[13],v=o[14],x=o[15];return n[0]=i*(l*x-m*v)-f*(u*x-j*v)+s*(u*m-j*l),n[1]=-(r*(l*x-m*v)-f*(a*x-d*v)+s*(a*m-d*l)),n[2]=r*(u*x-j*v)-i*(a*x-d*v)+s*(a*j-d*u),n[3]=-(r*(u*m-j*l)-i*(a*m-d*l)+f*(a*j-d*u)),n[4]=-(e*(l*x-m*v)-c*(u*x-j*v)+p*(u*m-j*l)),n[5]=t*(l*x-m*v)-c*(a*x-d*v)+p*(a*m-d*l),n[6]=-(t*(u*x-j*v)-e*(a*x-d*v)+p*(a*j-d*u)),n[7]=t*(u*m-j*l)-e*(a*m-d*l)+c*(a*j-d*u),n[8]=e*(f*x-m*s)-c*(i*x-j*s)+p*(i*m-j*f),n[9]=-(t*(f*x-m*s)-c*(r*x-d*s)+p*(r*m-d*f)),n[10]=t*(i*x-j*s)-e*(r*x-d*s)+p*(r*j-d*i),n[11]=-(t*(i*m-j*f)-e*(r*m-d*f)+c*(r*j-d*i)),n[12]=-(e*(f*v-l*s)-c*(i*v-u*s)+p*(i*l-u*f)),n[13]=t*(f*v-l*s)-c*(r*v-a*s)+p*(r*l-a*f),n[14]=-(t*(i*v-u*s)-e*(r*v-a*s)+p*(r*u-a*i)),n[15]=t*(i*l-u*f)-e*(r*l-a*f)+c*(r*u-a*i),n}module.exports=adjoint;
1959
1962
 
1960
- },{}],528:[function(require,module,exports){
1963
+ },{}],529:[function(require,module,exports){
1961
1964
  function clone(e){var n=new Float32Array(16);return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n}module.exports=clone;
1962
1965
 
1963
- },{}],529:[function(require,module,exports){
1966
+ },{}],530:[function(require,module,exports){
1964
1967
  function copy(o,c){return o[0]=c[0],o[1]=c[1],o[2]=c[2],o[3]=c[3],o[4]=c[4],o[5]=c[5],o[6]=c[6],o[7]=c[7],o[8]=c[8],o[9]=c[9],o[10]=c[10],o[11]=c[11],o[12]=c[12],o[13]=c[13],o[14]=c[14],o[15]=c[15],o}module.exports=copy;
1965
1968
 
1966
- },{}],530:[function(require,module,exports){
1969
+ },{}],531:[function(require,module,exports){
1967
1970
  function create(){var e=new Float32Array(16);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}module.exports=create;
1968
1971
 
1969
- },{}],531:[function(require,module,exports){
1972
+ },{}],532:[function(require,module,exports){
1970
1973
  function determinant(e){var n=e[0],t=e[1],r=e[2],a=e[3],d=e[4],i=e[5],m=e[6],o=e[7],u=e[8],c=e[9],f=e[10],l=e[11],p=e[12],s=e[13],v=e[14],x=e[15];return(n*i-t*d)*(f*x-l*v)-(n*m-r*d)*(c*x-l*s)+(n*o-a*d)*(c*v-f*s)+(t*m-r*i)*(u*x-l*p)-(t*o-a*i)*(u*v-f*p)+(r*o-a*m)*(u*s-c*p)}module.exports=determinant;
1971
1974
 
1972
- },{}],532:[function(require,module,exports){
1975
+ },{}],533:[function(require,module,exports){
1973
1976
  function fromQuat(r,o){var t=o[0],u=o[1],a=o[2],e=o[3],f=t+t,m=u+u,n=a+a,Q=t*f,c=u*f,d=u*m,i=a*f,l=a*m,p=a*n,s=e*f,v=e*m,x=e*n;return r[0]=1-d-p,r[1]=c+x,r[2]=i-v,r[3]=0,r[4]=c-x,r[5]=1-Q-p,r[6]=l+s,r[7]=0,r[8]=i+v,r[9]=l-s,r[10]=1-Q-d,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r}module.exports=fromQuat;
1974
1977
 
1975
- },{}],533:[function(require,module,exports){
1978
+ },{}],534:[function(require,module,exports){
1976
1979
  function fromRotation(t,o,a){var n,r,s,e=a[0],h=a[1],i=a[2],u=Math.sqrt(e*e+h*h+i*i);return Math.abs(u)<1e-6?null:(e*=u=1/u,h*=u,i*=u,n=Math.sin(o),s=1-(r=Math.cos(o)),t[0]=e*e*s+r,t[1]=h*e*s+i*n,t[2]=i*e*s-h*n,t[3]=0,t[4]=e*h*s-i*n,t[5]=h*h*s+r,t[6]=i*h*s+e*n,t[7]=0,t[8]=e*i*s+h*n,t[9]=h*i*s-e*n,t[10]=i*i*s+r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)}module.exports=fromRotation;
1977
1980
 
1978
- },{}],534:[function(require,module,exports){
1981
+ },{}],535:[function(require,module,exports){
1979
1982
  function fromRotationTranslation(o,n,t){var r=n[0],a=n[1],i=n[2],e=n[3],f=r+r,l=a+a,m=i+i,s=r*f,u=r*l,R=r*m,T=a*l,c=a*m,d=i*m,p=e*f,v=e*l,x=e*m;return o[0]=1-(T+d),o[1]=u+x,o[2]=R-v,o[3]=0,o[4]=u-x,o[5]=1-(s+d),o[6]=c+p,o[7]=0,o[8]=R+v,o[9]=c-p,o[10]=1-(s+T),o[11]=0,o[12]=t[0],o[13]=t[1],o[14]=t[2],o[15]=1,o}module.exports=fromRotationTranslation;
1980
1983
 
1981
- },{}],535:[function(require,module,exports){
1984
+ },{}],536:[function(require,module,exports){
1982
1985
  function fromScaling(n,o){return n[0]=o[0],n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=o[1],n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=o[2],n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n}module.exports=fromScaling;
1983
1986
 
1984
- },{}],536:[function(require,module,exports){
1987
+ },{}],537:[function(require,module,exports){
1985
1988
  function fromTranslation(n,o){return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=1,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=1,n[11]=0,n[12]=o[0],n[13]=o[1],n[14]=o[2],n[15]=1,n}module.exports=fromTranslation;
1986
1989
 
1987
- },{}],537:[function(require,module,exports){
1990
+ },{}],538:[function(require,module,exports){
1988
1991
  function fromXRotation(o,t){var n=Math.sin(t),r=Math.cos(t);return o[0]=1,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=r,o[6]=n,o[7]=0,o[8]=0,o[9]=-n,o[10]=r,o[11]=0,o[12]=0,o[13]=0,o[14]=0,o[15]=1,o}module.exports=fromXRotation;
1989
1992
 
1990
- },{}],538:[function(require,module,exports){
1993
+ },{}],539:[function(require,module,exports){
1991
1994
  function fromYRotation(o,t){var n=Math.sin(t),r=Math.cos(t);return o[0]=r,o[1]=0,o[2]=-n,o[3]=0,o[4]=0,o[5]=1,o[6]=0,o[7]=0,o[8]=n,o[9]=0,o[10]=r,o[11]=0,o[12]=0,o[13]=0,o[14]=0,o[15]=1,o}module.exports=fromYRotation;
1992
1995
 
1993
- },{}],539:[function(require,module,exports){
1996
+ },{}],540:[function(require,module,exports){
1994
1997
  function fromZRotation(o,t){var n=Math.sin(t),r=Math.cos(t);return o[0]=r,o[1]=n,o[2]=0,o[3]=0,o[4]=-n,o[5]=r,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=1,o[11]=0,o[12]=0,o[13]=0,o[14]=0,o[15]=1,o}module.exports=fromZRotation;
1995
1998
 
1996
- },{}],540:[function(require,module,exports){
1999
+ },{}],541:[function(require,module,exports){
1997
2000
  function frustum(u,r,t,e,f,m,n){var o=1/(t-r),s=1/(f-e),a=1/(m-n);return u[0]=2*m*o,u[1]=0,u[2]=0,u[3]=0,u[4]=0,u[5]=2*m*s,u[6]=0,u[7]=0,u[8]=(t+r)*o,u[9]=(f+e)*s,u[10]=(n+m)*a,u[11]=-1,u[12]=0,u[13]=0,u[14]=n*m*2*a,u[15]=0,u}module.exports=frustum;
1998
2001
 
1999
- },{}],541:[function(require,module,exports){
2002
+ },{}],542:[function(require,module,exports){
2000
2003
  function identity(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}module.exports=identity;
2001
2004
 
2002
- },{}],542:[function(require,module,exports){
2005
+ },{}],543:[function(require,module,exports){
2003
2006
  module.exports={create:require("./create"),clone:require("./clone"),copy:require("./copy"),identity:require("./identity"),transpose:require("./transpose"),invert:require("./invert"),adjoint:require("./adjoint"),determinant:require("./determinant"),multiply:require("./multiply"),translate:require("./translate"),scale:require("./scale"),rotate:require("./rotate"),rotateX:require("./rotateX"),rotateY:require("./rotateY"),rotateZ:require("./rotateZ"),fromRotation:require("./fromRotation"),fromRotationTranslation:require("./fromRotationTranslation"),fromScaling:require("./fromScaling"),fromTranslation:require("./fromTranslation"),fromXRotation:require("./fromXRotation"),fromYRotation:require("./fromYRotation"),fromZRotation:require("./fromZRotation"),fromQuat:require("./fromQuat"),frustum:require("./frustum"),perspective:require("./perspective"),perspectiveFromFieldOfView:require("./perspectiveFromFieldOfView"),ortho:require("./ortho"),lookAt:require("./lookAt"),str:require("./str")};
2004
2007
 
2005
- },{"./adjoint":527,"./clone":528,"./copy":529,"./create":530,"./determinant":531,"./fromQuat":532,"./fromRotation":533,"./fromRotationTranslation":534,"./fromScaling":535,"./fromTranslation":536,"./fromXRotation":537,"./fromYRotation":538,"./fromZRotation":539,"./frustum":540,"./identity":541,"./invert":543,"./lookAt":544,"./multiply":545,"./ortho":546,"./perspective":547,"./perspectiveFromFieldOfView":548,"./rotate":549,"./rotateX":550,"./rotateY":551,"./rotateZ":552,"./scale":553,"./str":554,"./translate":555,"./transpose":556}],543:[function(require,module,exports){
2008
+ },{"./adjoint":528,"./clone":529,"./copy":530,"./create":531,"./determinant":532,"./fromQuat":533,"./fromRotation":534,"./fromRotationTranslation":535,"./fromScaling":536,"./fromTranslation":537,"./fromXRotation":538,"./fromYRotation":539,"./fromZRotation":540,"./frustum":541,"./identity":542,"./invert":544,"./lookAt":545,"./multiply":546,"./ortho":547,"./perspective":548,"./perspectiveFromFieldOfView":549,"./rotate":550,"./rotateX":551,"./rotateY":552,"./rotateZ":553,"./scale":554,"./str":555,"./translate":556,"./transpose":557}],544:[function(require,module,exports){
2006
2009
  function invert(n,r){var e=r[0],t=r[1],u=r[2],i=r[3],l=r[4],o=r[5],v=r[6],a=r[7],c=r[8],d=r[9],f=r[10],m=r[11],p=r[12],s=r[13],x=r[14],b=r[15],g=e*o-t*l,h=e*v-u*l,j=e*a-i*l,k=t*v-u*o,q=t*a-i*o,w=u*a-i*v,y=c*s-d*p,z=c*x-f*p,A=c*b-m*p,B=d*x-f*s,C=d*b-m*s,D=f*b-m*x,E=g*D-h*C+j*B+k*A-q*z+w*y;return E?(E=1/E,n[0]=(o*D-v*C+a*B)*E,n[1]=(u*C-t*D-i*B)*E,n[2]=(s*w-x*q+b*k)*E,n[3]=(f*q-d*w-m*k)*E,n[4]=(v*A-l*D-a*z)*E,n[5]=(e*D-u*A+i*z)*E,n[6]=(x*j-p*w-b*h)*E,n[7]=(c*w-f*j+m*h)*E,n[8]=(l*C-o*A+a*y)*E,n[9]=(t*A-e*C-i*y)*E,n[10]=(p*q-s*j+b*g)*E,n[11]=(d*j-c*q-m*g)*E,n[12]=(o*z-l*B-v*y)*E,n[13]=(e*B-t*z+u*y)*E,n[14]=(s*h-p*k-x*g)*E,n[15]=(c*k-d*h+f*g)*E,n):null}module.exports=invert;
2007
2010
 
2008
- },{}],544:[function(require,module,exports){
2011
+ },{}],545:[function(require,module,exports){
2009
2012
  var identity=require("./identity");function lookAt(t,a,e,r){var i,o,s,h,n,M,d,q,u,b,l=a[0],y=a[1],k=a[2],v=r[0],A=r[1],c=r[2],f=e[0],m=e[1],p=e[2];return Math.abs(l-f)<1e-6&&Math.abs(y-m)<1e-6&&Math.abs(k-p)<1e-6?identity(t):(d=l-f,q=y-m,u=k-p,i=A*(u*=b=1/Math.sqrt(d*d+q*q+u*u))-c*(q*=b),o=c*(d*=b)-v*u,s=v*q-A*d,(b=Math.sqrt(i*i+o*o+s*s))?(i*=b=1/b,o*=b,s*=b):(i=0,o=0,s=0),h=q*s-u*o,n=u*i-d*s,M=d*o-q*i,(b=Math.sqrt(h*h+n*n+M*M))?(h*=b=1/b,n*=b,M*=b):(h=0,n=0,M=0),t[0]=i,t[1]=h,t[2]=d,t[3]=0,t[4]=o,t[5]=n,t[6]=q,t[7]=0,t[8]=s,t[9]=M,t[10]=u,t[11]=0,t[12]=-(i*l+o*y+s*k),t[13]=-(h*l+n*y+M*k),t[14]=-(d*l+q*y+u*k),t[15]=1,t)}module.exports=lookAt;
2010
2013
 
2011
- },{"./identity":541}],545:[function(require,module,exports){
2014
+ },{"./identity":542}],546:[function(require,module,exports){
2012
2015
  function multiply(l,t,u){var r=t[0],e=t[1],i=t[2],m=t[3],n=t[4],o=t[5],p=t[6],y=t[7],a=t[8],c=t[9],d=t[10],f=t[11],s=t[12],v=t[13],x=t[14],b=t[15],g=u[0],h=u[1],j=u[2],k=u[3];return l[0]=g*r+h*n+j*a+k*s,l[1]=g*e+h*o+j*c+k*v,l[2]=g*i+h*p+j*d+k*x,l[3]=g*m+h*y+j*f+k*b,g=u[4],h=u[5],j=u[6],k=u[7],l[4]=g*r+h*n+j*a+k*s,l[5]=g*e+h*o+j*c+k*v,l[6]=g*i+h*p+j*d+k*x,l[7]=g*m+h*y+j*f+k*b,g=u[8],h=u[9],j=u[10],k=u[11],l[8]=g*r+h*n+j*a+k*s,l[9]=g*e+h*o+j*c+k*v,l[10]=g*i+h*p+j*d+k*x,l[11]=g*m+h*y+j*f+k*b,g=u[12],h=u[13],j=u[14],k=u[15],l[12]=g*r+h*n+j*a+k*s,l[13]=g*e+h*o+j*c+k*v,l[14]=g*i+h*p+j*d+k*x,l[15]=g*m+h*y+j*f+k*b,l}module.exports=multiply;
2013
2016
 
2014
- },{}],546:[function(require,module,exports){
2017
+ },{}],547:[function(require,module,exports){
2015
2018
  function ortho(o,r,t,e,n,u,h){var a=1/(r-t),c=1/(e-n),d=1/(u-h);return o[0]=-2*a,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=-2*c,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=2*d,o[11]=0,o[12]=(r+t)*a,o[13]=(n+e)*c,o[14]=(h+u)*d,o[15]=1,o}module.exports=ortho;
2016
2019
 
2017
- },{}],547:[function(require,module,exports){
2020
+ },{}],548:[function(require,module,exports){
2018
2021
  function perspective(e,t,r,p,n){var a=1/Math.tan(t/2),c=1/(p-n);return e[0]=a/r,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=(n+p)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=2*n*p*c,e[15]=0,e}module.exports=perspective;
2019
2022
 
2020
- },{}],548:[function(require,module,exports){
2023
+ },{}],549:[function(require,module,exports){
2021
2024
  function perspectiveFromFieldOfView(e,t,a,r){var h=Math.tan(t.upDegrees*Math.PI/180),i=Math.tan(t.downDegrees*Math.PI/180),n=Math.tan(t.leftDegrees*Math.PI/180),M=Math.tan(t.rightDegrees*Math.PI/180),s=2/(n+M),o=2/(h+i);return e[0]=s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=o,e[6]=0,e[7]=0,e[8]=-(n-M)*s*.5,e[9]=(h-i)*o*.5,e[10]=r/(a-r),e[11]=-1,e[12]=0,e[13]=0,e[14]=r*a/(a-r),e[15]=0,e}module.exports=perspectiveFromFieldOfView;
2022
2025
 
2023
- },{}],549:[function(require,module,exports){
2026
+ },{}],550:[function(require,module,exports){
2024
2027
  function rotate(t,a,r,e){var o,n,s,h,u,M,l,c,i,b,d,f,m,p,q,v,x,g,j,k,w,y,z,A,B=e[0],C=e[1],D=e[2],E=Math.sqrt(B*B+C*C+D*D);return Math.abs(E)<1e-6?null:(B*=E=1/E,C*=E,D*=E,o=Math.sin(r),s=1-(n=Math.cos(r)),h=a[0],u=a[1],M=a[2],l=a[3],c=a[4],i=a[5],b=a[6],d=a[7],f=a[8],m=a[9],p=a[10],q=a[11],v=B*B*s+n,x=C*B*s+D*o,g=D*B*s-C*o,j=B*C*s-D*o,k=C*C*s+n,w=D*C*s+B*o,y=B*D*s+C*o,z=C*D*s-B*o,A=D*D*s+n,t[0]=h*v+c*x+f*g,t[1]=u*v+i*x+m*g,t[2]=M*v+b*x+p*g,t[3]=l*v+d*x+q*g,t[4]=h*j+c*k+f*w,t[5]=u*j+i*k+m*w,t[6]=M*j+b*k+p*w,t[7]=l*j+d*k+q*w,t[8]=h*y+c*z+f*A,t[9]=u*y+i*z+m*A,t[10]=M*y+b*z+p*A,t[11]=l*y+d*z+q*A,a!==t&&(t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t)}module.exports=rotate;
2025
2028
 
2026
- },{}],550:[function(require,module,exports){
2029
+ },{}],551:[function(require,module,exports){
2027
2030
  function rotateX(t,o,r){var a=Math.sin(r),e=Math.cos(r),n=o[4],s=o[5],u=o[6],c=o[7],h=o[8],i=o[9],M=o[10],X=o[11];return o!==t&&(t[0]=o[0],t[1]=o[1],t[2]=o[2],t[3]=o[3],t[12]=o[12],t[13]=o[13],t[14]=o[14],t[15]=o[15]),t[4]=n*e+h*a,t[5]=s*e+i*a,t[6]=u*e+M*a,t[7]=c*e+X*a,t[8]=h*e-n*a,t[9]=i*e-s*a,t[10]=M*e-u*a,t[11]=X*e-c*a,t}module.exports=rotateX;
2028
2031
 
2029
- },{}],551:[function(require,module,exports){
2032
+ },{}],552:[function(require,module,exports){
2030
2033
  function rotateY(t,o,r){var a=Math.sin(r),e=Math.cos(r),n=o[0],s=o[1],u=o[2],c=o[3],h=o[8],i=o[9],M=o[10],Y=o[11];return o!==t&&(t[4]=o[4],t[5]=o[5],t[6]=o[6],t[7]=o[7],t[12]=o[12],t[13]=o[13],t[14]=o[14],t[15]=o[15]),t[0]=n*e-h*a,t[1]=s*e-i*a,t[2]=u*e-M*a,t[3]=c*e-Y*a,t[8]=n*a+h*e,t[9]=s*a+i*e,t[10]=u*a+M*e,t[11]=c*a+Y*e,t}module.exports=rotateY;
2031
2034
 
2032
- },{}],552:[function(require,module,exports){
2035
+ },{}],553:[function(require,module,exports){
2033
2036
  function rotateZ(t,o,r){var a=Math.sin(r),e=Math.cos(r),n=o[0],s=o[1],u=o[2],c=o[3],h=o[4],i=o[5],M=o[6],Z=o[7];return o!==t&&(t[8]=o[8],t[9]=o[9],t[10]=o[10],t[11]=o[11],t[12]=o[12],t[13]=o[13],t[14]=o[14],t[15]=o[15]),t[0]=n*e+h*a,t[1]=s*e+i*a,t[2]=u*e+M*a,t[3]=c*e+Z*a,t[4]=h*e-n*a,t[5]=i*e-s*a,t[6]=M*e-u*a,t[7]=Z*e-c*a,t}module.exports=rotateZ;
2034
2037
 
2035
- },{}],553:[function(require,module,exports){
2038
+ },{}],554:[function(require,module,exports){
2036
2039
  function scale(e,r,a){var c=a[0],l=a[1],n=a[2];return e[0]=r[0]*c,e[1]=r[1]*c,e[2]=r[2]*c,e[3]=r[3]*c,e[4]=r[4]*l,e[5]=r[5]*l,e[6]=r[6]*l,e[7]=r[7]*l,e[8]=r[8]*n,e[9]=r[9]*n,e[10]=r[10]*n,e[11]=r[11]*n,e[12]=r[12],e[13]=r[13],e[14]=r[14],e[15]=r[15],e}module.exports=scale;
2037
2040
 
2038
- },{}],554:[function(require,module,exports){
2041
+ },{}],555:[function(require,module,exports){
2039
2042
  function str(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"}module.exports=str;
2040
2043
 
2041
- },{}],555:[function(require,module,exports){
2044
+ },{}],556:[function(require,module,exports){
2042
2045
  function translate(t,r,a){var e,n,l,o,s,u,c,d,f,i,m,p,v=a[0],x=a[1],b=a[2];return r===t?(t[12]=r[0]*v+r[4]*x+r[8]*b+r[12],t[13]=r[1]*v+r[5]*x+r[9]*b+r[13],t[14]=r[2]*v+r[6]*x+r[10]*b+r[14],t[15]=r[3]*v+r[7]*x+r[11]*b+r[15]):(e=r[0],n=r[1],l=r[2],o=r[3],s=r[4],u=r[5],c=r[6],d=r[7],f=r[8],i=r[9],m=r[10],p=r[11],t[0]=e,t[1]=n,t[2]=l,t[3]=o,t[4]=s,t[5]=u,t[6]=c,t[7]=d,t[8]=f,t[9]=i,t[10]=m,t[11]=p,t[12]=e*v+s*x+f*b+r[12],t[13]=n*v+u*x+i*b+r[13],t[14]=l*v+c*x+m*b+r[14],t[15]=o*v+d*x+p*b+r[15]),t}module.exports=translate;
2043
2046
 
2044
- },{}],556:[function(require,module,exports){
2047
+ },{}],557:[function(require,module,exports){
2045
2048
  function transpose(e,r){if(e===r){var s=r[1],n=r[2],o=r[3],t=r[6],a=r[7],p=r[11];e[1]=r[4],e[2]=r[8],e[3]=r[12],e[4]=s,e[6]=r[9],e[7]=r[13],e[8]=n,e[9]=t,e[11]=r[14],e[12]=o,e[13]=a,e[14]=p}else e[0]=r[0],e[1]=r[4],e[2]=r[8],e[3]=r[12],e[4]=r[1],e[5]=r[5],e[6]=r[9],e[7]=r[13],e[8]=r[2],e[9]=r[6],e[10]=r[10],e[11]=r[14],e[12]=r[3],e[13]=r[7],e[14]=r[11],e[15]=r[15];return e}module.exports=transpose;
2046
2049
 
2047
- },{}],557:[function(require,module,exports){
2050
+ },{}],558:[function(require,module,exports){
2048
2051
  function add(d,e,n){return d[0]=e[0]+n[0],d[1]=e[1]+n[1],d[2]=e[2]+n[2],d}module.exports=add;
2049
2052
 
2050
- },{}],558:[function(require,module,exports){
2053
+ },{}],559:[function(require,module,exports){
2051
2054
  module.exports=angle;var fromValues=require("./fromValues"),normalize=require("./normalize"),dot=require("./dot");function angle(r,e){var a=fromValues(r[0],r[1],r[2]),o=fromValues(e[0],e[1],e[2]);normalize(a,a),normalize(o,o);var l=dot(a,o);return l>1?0:Math.acos(l)}
2052
2055
 
2053
- },{"./dot":568,"./fromValues":574,"./normalize":585}],559:[function(require,module,exports){
2056
+ },{"./dot":569,"./fromValues":575,"./normalize":586}],560:[function(require,module,exports){
2054
2057
  function ceil(e,c){return e[0]=Math.ceil(c[0]),e[1]=Math.ceil(c[1]),e[2]=Math.ceil(c[2]),e}module.exports=ceil;
2055
2058
 
2056
- },{}],560:[function(require,module,exports){
2059
+ },{}],561:[function(require,module,exports){
2057
2060
  function clone(e){var n=new Float32Array(3);return n[0]=e[0],n[1]=e[1],n[2]=e[2],n}module.exports=clone;
2058
2061
 
2059
- },{}],561:[function(require,module,exports){
2062
+ },{}],562:[function(require,module,exports){
2060
2063
  function copy(o,c){return o[0]=c[0],o[1]=c[1],o[2]=c[2],o}module.exports=copy;
2061
2064
 
2062
- },{}],562:[function(require,module,exports){
2065
+ },{}],563:[function(require,module,exports){
2063
2066
  function create(){var e=new Float32Array(3);return e[0]=0,e[1]=0,e[2]=0,e}module.exports=create;
2064
2067
 
2065
- },{}],563:[function(require,module,exports){
2068
+ },{}],564:[function(require,module,exports){
2066
2069
  function cross(r,o,s){var c=o[0],e=o[1],n=o[2],t=s[0],u=s[1],a=s[2];return r[0]=e*a-n*u,r[1]=n*t-c*a,r[2]=c*u-e*t,r}module.exports=cross;
2067
2070
 
2068
- },{}],564:[function(require,module,exports){
2071
+ },{}],565:[function(require,module,exports){
2069
2072
  module.exports=require("./distance");
2070
2073
 
2071
- },{"./distance":565}],565:[function(require,module,exports){
2074
+ },{"./distance":566}],566:[function(require,module,exports){
2072
2075
  function distance(t,e){var n=e[0]-t[0],r=e[1]-t[1],a=e[2]-t[2];return Math.sqrt(n*n+r*r+a*a)}module.exports=distance;
2073
2076
 
2074
- },{}],566:[function(require,module,exports){
2077
+ },{}],567:[function(require,module,exports){
2075
2078
  module.exports=require("./divide");
2076
2079
 
2077
- },{"./divide":567}],567:[function(require,module,exports){
2080
+ },{"./divide":568}],568:[function(require,module,exports){
2078
2081
  function divide(d,e,i){return d[0]=e[0]/i[0],d[1]=e[1]/i[1],d[2]=e[2]/i[2],d}module.exports=divide;
2079
2082
 
2080
- },{}],568:[function(require,module,exports){
2083
+ },{}],569:[function(require,module,exports){
2081
2084
  function dot(o,t){return o[0]*t[0]+o[1]*t[1]+o[2]*t[2]}module.exports=dot;
2082
2085
 
2083
- },{}],569:[function(require,module,exports){
2086
+ },{}],570:[function(require,module,exports){
2084
2087
  module.exports=1e-6;
2085
2088
 
2086
- },{}],570:[function(require,module,exports){
2089
+ },{}],571:[function(require,module,exports){
2087
2090
  module.exports=equals;var EPSILON=require("./epsilon");function equals(a,t){var s=a[0],h=a[1],M=a[2],b=t[0],e=t[1],r=t[2];return Math.abs(s-b)<=EPSILON*Math.max(1,Math.abs(s),Math.abs(b))&&Math.abs(h-e)<=EPSILON*Math.max(1,Math.abs(h),Math.abs(e))&&Math.abs(M-r)<=EPSILON*Math.max(1,Math.abs(M),Math.abs(r))}
2088
2091
 
2089
- },{"./epsilon":569}],571:[function(require,module,exports){
2092
+ },{"./epsilon":570}],572:[function(require,module,exports){
2090
2093
  function exactEquals(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}module.exports=exactEquals;
2091
2094
 
2092
- },{}],572:[function(require,module,exports){
2095
+ },{}],573:[function(require,module,exports){
2093
2096
  function floor(o,r){return o[0]=Math.floor(r[0]),o[1]=Math.floor(r[1]),o[2]=Math.floor(r[2]),o}module.exports=floor;
2094
2097
 
2095
- },{}],573:[function(require,module,exports){
2098
+ },{}],574:[function(require,module,exports){
2096
2099
  module.exports=forEach;var vec=require("./create")();function forEach(e,c,r,v,t,a){var n,o;for(c||(c=3),r||(r=0),o=v?Math.min(v*c+r,e.length):e.length,n=r;n<o;n+=c)vec[0]=e[n],vec[1]=e[n+1],vec[2]=e[n+2],t(vec,vec,a),e[n]=vec[0],e[n+1]=vec[1],e[n+2]=vec[2];return e}
2097
2100
 
2098
- },{"./create":562}],574:[function(require,module,exports){
2101
+ },{"./create":563}],575:[function(require,module,exports){
2099
2102
  function fromValues(r,e,o){var a=new Float32Array(3);return a[0]=r,a[1]=e,a[2]=o,a}module.exports=fromValues;
2100
2103
 
2101
- },{}],575:[function(require,module,exports){
2104
+ },{}],576:[function(require,module,exports){
2102
2105
  module.exports={EPSILON:require("./epsilon"),create:require("./create"),clone:require("./clone"),angle:require("./angle"),fromValues:require("./fromValues"),copy:require("./copy"),set:require("./set"),equals:require("./equals"),exactEquals:require("./exactEquals"),add:require("./add"),subtract:require("./subtract"),sub:require("./sub"),multiply:require("./multiply"),mul:require("./mul"),divide:require("./divide"),div:require("./div"),min:require("./min"),max:require("./max"),floor:require("./floor"),ceil:require("./ceil"),round:require("./round"),scale:require("./scale"),scaleAndAdd:require("./scaleAndAdd"),distance:require("./distance"),dist:require("./dist"),squaredDistance:require("./squaredDistance"),sqrDist:require("./sqrDist"),length:require("./length"),len:require("./len"),squaredLength:require("./squaredLength"),sqrLen:require("./sqrLen"),negate:require("./negate"),inverse:require("./inverse"),normalize:require("./normalize"),dot:require("./dot"),cross:require("./cross"),lerp:require("./lerp"),random:require("./random"),transformMat4:require("./transformMat4"),transformMat3:require("./transformMat3"),transformQuat:require("./transformQuat"),rotateX:require("./rotateX"),rotateY:require("./rotateY"),rotateZ:require("./rotateZ"),forEach:require("./forEach")};
2103
2106
 
2104
- },{"./add":557,"./angle":558,"./ceil":559,"./clone":560,"./copy":561,"./create":562,"./cross":563,"./dist":564,"./distance":565,"./div":566,"./divide":567,"./dot":568,"./epsilon":569,"./equals":570,"./exactEquals":571,"./floor":572,"./forEach":573,"./fromValues":574,"./inverse":576,"./len":577,"./length":578,"./lerp":579,"./max":580,"./min":581,"./mul":582,"./multiply":583,"./negate":584,"./normalize":585,"./random":586,"./rotateX":587,"./rotateY":588,"./rotateZ":589,"./round":590,"./scale":591,"./scaleAndAdd":592,"./set":593,"./sqrDist":594,"./sqrLen":595,"./squaredDistance":596,"./squaredLength":597,"./sub":598,"./subtract":599,"./transformMat3":600,"./transformMat4":601,"./transformQuat":602}],576:[function(require,module,exports){
2107
+ },{"./add":558,"./angle":559,"./ceil":560,"./clone":561,"./copy":562,"./create":563,"./cross":564,"./dist":565,"./distance":566,"./div":567,"./divide":568,"./dot":569,"./epsilon":570,"./equals":571,"./exactEquals":572,"./floor":573,"./forEach":574,"./fromValues":575,"./inverse":577,"./len":578,"./length":579,"./lerp":580,"./max":581,"./min":582,"./mul":583,"./multiply":584,"./negate":585,"./normalize":586,"./random":587,"./rotateX":588,"./rotateY":589,"./rotateZ":590,"./round":591,"./scale":592,"./scaleAndAdd":593,"./set":594,"./sqrDist":595,"./sqrLen":596,"./squaredDistance":597,"./squaredLength":598,"./sub":599,"./subtract":600,"./transformMat3":601,"./transformMat4":602,"./transformQuat":603}],577:[function(require,module,exports){
2105
2108
  function inverse(e,n){return e[0]=1/n[0],e[1]=1/n[1],e[2]=1/n[2],e}module.exports=inverse;
2106
2109
 
2107
- },{}],577:[function(require,module,exports){
2110
+ },{}],578:[function(require,module,exports){
2108
2111
  module.exports=require("./length");
2109
2112
 
2110
- },{"./length":578}],578:[function(require,module,exports){
2113
+ },{"./length":579}],579:[function(require,module,exports){
2111
2114
  function length(t){var e=t[0],n=t[1],r=t[2];return Math.sqrt(e*e+n*n+r*r)}module.exports=length;
2112
2115
 
2113
- },{}],579:[function(require,module,exports){
2116
+ },{}],580:[function(require,module,exports){
2114
2117
  function lerp(r,e,l,n){var o=e[0],p=e[1],t=e[2];return r[0]=o+n*(l[0]-o),r[1]=p+n*(l[1]-p),r[2]=t+n*(l[2]-t),r}module.exports=lerp;
2115
2118
 
2116
- },{}],580:[function(require,module,exports){
2119
+ },{}],581:[function(require,module,exports){
2117
2120
  function max(a,m,t){return a[0]=Math.max(m[0],t[0]),a[1]=Math.max(m[1],t[1]),a[2]=Math.max(m[2],t[2]),a}module.exports=max;
2118
2121
 
2119
- },{}],581:[function(require,module,exports){
2122
+ },{}],582:[function(require,module,exports){
2120
2123
  function min(n,i,m){return n[0]=Math.min(i[0],m[0]),n[1]=Math.min(i[1],m[1]),n[2]=Math.min(i[2],m[2]),n}module.exports=min;
2121
2124
 
2122
- },{}],582:[function(require,module,exports){
2125
+ },{}],583:[function(require,module,exports){
2123
2126
  module.exports=require("./multiply");
2124
2127
 
2125
- },{"./multiply":583}],583:[function(require,module,exports){
2128
+ },{"./multiply":584}],584:[function(require,module,exports){
2126
2129
  function multiply(l,t,u){return l[0]=t[0]*u[0],l[1]=t[1]*u[1],l[2]=t[2]*u[2],l}module.exports=multiply;
2127
2130
 
2128
- },{}],584:[function(require,module,exports){
2131
+ },{}],585:[function(require,module,exports){
2129
2132
  function negate(e,n){return e[0]=-n[0],e[1]=-n[1],e[2]=-n[2],e}module.exports=negate;
2130
2133
 
2131
- },{}],585:[function(require,module,exports){
2134
+ },{}],586:[function(require,module,exports){
2132
2135
  function normalize(r,e){var n=e[0],o=e[1],t=e[2],a=n*n+o*o+t*t;return a>0&&(a=1/Math.sqrt(a),r[0]=e[0]*a,r[1]=e[1]*a,r[2]=e[2]*a),r}module.exports=normalize;
2133
2136
 
2134
- },{}],586:[function(require,module,exports){
2137
+ },{}],587:[function(require,module,exports){
2135
2138
  function random(a,t){t=t||1;var r=2*Math.random()*Math.PI,n=2*Math.random()-1,o=Math.sqrt(1-n*n)*t;return a[0]=Math.cos(r)*o,a[1]=Math.sin(r)*o,a[2]=n*t,a}module.exports=random;
2136
2139
 
2137
- },{}],587:[function(require,module,exports){
2140
+ },{}],588:[function(require,module,exports){
2138
2141
  function rotateX(t,o,r,a){var e=r[1],n=r[2],s=o[1]-e,u=o[2]-n,c=Math.sin(a),h=Math.cos(a);return t[0]=o[0],t[1]=e+s*h-u*c,t[2]=n+s*c+u*h,t}module.exports=rotateX;
2139
2142
 
2140
- },{}],588:[function(require,module,exports){
2143
+ },{}],589:[function(require,module,exports){
2141
2144
  function rotateY(t,o,r,a){var e=r[0],n=r[2],s=o[0]-e,u=o[2]-n,c=Math.sin(a),h=Math.cos(a);return t[0]=e+u*c+s*h,t[1]=o[1],t[2]=n+u*h-s*c,t}module.exports=rotateY;
2142
2145
 
2143
- },{}],589:[function(require,module,exports){
2146
+ },{}],590:[function(require,module,exports){
2144
2147
  function rotateZ(t,o,r,a){var e=r[0],n=r[1],s=o[0]-e,u=o[1]-n,c=Math.sin(a),h=Math.cos(a);return t[0]=e+s*h-u*c,t[1]=n+s*c+u*h,t[2]=o[2],t}module.exports=rotateZ;
2145
2148
 
2146
- },{}],590:[function(require,module,exports){
2149
+ },{}],591:[function(require,module,exports){
2147
2150
  function round(n,o){return n[0]=Math.round(o[0]),n[1]=Math.round(o[1]),n[2]=Math.round(o[2]),n}module.exports=round;
2148
2151
 
2149
- },{}],591:[function(require,module,exports){
2152
+ },{}],592:[function(require,module,exports){
2150
2153
  function scale(e,c,l){return e[0]=c[0]*l,e[1]=c[1]*l,e[2]=c[2]*l,e}module.exports=scale;
2151
2154
 
2152
- },{}],592:[function(require,module,exports){
2155
+ },{}],593:[function(require,module,exports){
2153
2156
  function scaleAndAdd(d,e,n,A){return d[0]=e[0]+n[0]*A,d[1]=e[1]+n[1]*A,d[2]=e[2]+n[2]*A,d}module.exports=scaleAndAdd;
2154
2157
 
2155
- },{}],593:[function(require,module,exports){
2158
+ },{}],594:[function(require,module,exports){
2156
2159
  function set(e,t,n,o){return e[0]=t,e[1]=n,e[2]=o,e}module.exports=set;
2157
2160
 
2158
- },{}],594:[function(require,module,exports){
2161
+ },{}],595:[function(require,module,exports){
2159
2162
  module.exports=require("./squaredDistance");
2160
2163
 
2161
- },{"./squaredDistance":596}],595:[function(require,module,exports){
2164
+ },{"./squaredDistance":597}],596:[function(require,module,exports){
2162
2165
  module.exports=require("./squaredLength");
2163
2166
 
2164
- },{"./squaredLength":597}],596:[function(require,module,exports){
2167
+ },{"./squaredLength":598}],597:[function(require,module,exports){
2165
2168
  function squaredDistance(e,r){var a=r[0]-e[0],n=r[1]-e[1],s=r[2]-e[2];return a*a+n*n+s*s}module.exports=squaredDistance;
2166
2169
 
2167
- },{}],597:[function(require,module,exports){
2170
+ },{}],598:[function(require,module,exports){
2168
2171
  function squaredLength(e){var r=e[0],n=e[1],t=e[2];return r*r+n*n+t*t}module.exports=squaredLength;
2169
2172
 
2170
- },{}],598:[function(require,module,exports){
2173
+ },{}],599:[function(require,module,exports){
2171
2174
  module.exports=require("./subtract");
2172
2175
 
2173
- },{"./subtract":599}],599:[function(require,module,exports){
2176
+ },{"./subtract":600}],600:[function(require,module,exports){
2174
2177
  function subtract(t,r,u){return t[0]=r[0]-u[0],t[1]=r[1]-u[1],t[2]=r[2]-u[2],t}module.exports=subtract;
2175
2178
 
2176
- },{}],600:[function(require,module,exports){
2179
+ },{}],601:[function(require,module,exports){
2177
2180
  function transformMat3(r,t,a){var n=t[0],o=t[1],e=t[2];return r[0]=n*a[0]+o*a[3]+e*a[6],r[1]=n*a[1]+o*a[4]+e*a[7],r[2]=n*a[2]+o*a[5]+e*a[8],r}module.exports=transformMat3;
2178
2181
 
2179
- },{}],601:[function(require,module,exports){
2182
+ },{}],602:[function(require,module,exports){
2180
2183
  function transformMat4(r,t,a){var n=t[0],o=t[1],e=t[2],f=a[3]*n+a[7]*o+a[11]*e+a[15];return f=f||1,r[0]=(a[0]*n+a[4]*o+a[8]*e+a[12])/f,r[1]=(a[1]*n+a[5]*o+a[9]*e+a[13])/f,r[2]=(a[2]*n+a[6]*o+a[10]*e+a[14])/f,r}module.exports=transformMat4;
2181
2184
 
2182
- },{}],602:[function(require,module,exports){
2185
+ },{}],603:[function(require,module,exports){
2183
2186
  function transformQuat(r,t,a){var n=t[0],o=t[1],u=t[2],e=a[0],f=a[1],m=a[2],s=a[3],Q=s*n+f*u-m*o,c=s*o+m*n-e*u,d=s*u+e*o-f*n,i=-e*n-f*o-m*u;return r[0]=Q*s+i*-e+c*-m-d*-f,r[1]=c*s+i*-f+d*-e-Q*-m,r[2]=d*s+i*-m+Q*-f-c*-e,r}module.exports=transformQuat;
2184
2187
 
2185
- },{}],603:[function(require,module,exports){
2188
+ },{}],604:[function(require,module,exports){
2186
2189
  !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.createREGL=t()}(this,function(){function e(e,t){this.id=H++,this.type=e,this.data=t}function t(e){return"["+function e(t){if(0===t.length)return[];var r=t.charAt(0),n=t.charAt(t.length-1);if(1<t.length&&r===n&&('"'===r||"'"===r))return['"'+t.substr(1,t.length-2).replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'];if(r=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(t))return e(t.substr(0,r.index)).concat(e(r[1])).concat(e(t.substr(r.index+r[0].length)));if(1===(r=t.split(".")).length)return['"'+t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'];for(t=[],n=0;n<r.length;++n)t=t.concat(e(r[n]));return t}(e).join("][")+"]"}function r(e){return"string"==typeof e?e.split():e}function n(e){return"string"==typeof e?document.querySelector(e):e}function i(e){var t,i,a,f,o=e||{};e={};var u=[],s=[],c="undefined"==typeof window?1:window.devicePixelRatio,l=!1,p=function(e){},d=function(){};if("string"==typeof o?t=document.querySelector(o):"object"==typeof o&&("string"==typeof o.nodeName&&"function"==typeof o.appendChild&&"function"==typeof o.getBoundingClientRect?t=o:"function"==typeof o.drawArrays||"function"==typeof o.drawElements?a=(f=o).canvas:("gl"in o?f=o.gl:"canvas"in o?a=n(o.canvas):"container"in o&&(i=n(o.container)),"attributes"in o&&(e=o.attributes),"extensions"in o&&(u=r(o.extensions)),"optionalExtensions"in o&&(s=r(o.optionalExtensions)),"onDone"in o&&(p=o.onDone),"profile"in o&&(l=!!o.profile),"pixelRatio"in o&&(c=+o.pixelRatio))),t&&("canvas"===t.nodeName.toLowerCase()?a=t:i=t),!f){if(!a){if(!(t=function(e,t,r){function n(){var t=window.innerWidth,n=window.innerHeight;e!==document.body&&(t=(n=a.getBoundingClientRect()).right-n.left,n=n.bottom-n.top),a.width=r*t,a.height=r*n}var i,a=document.createElement("canvas");return R(a.style,{border:0,margin:0,padding:0,top:0,left:0,width:"100%",height:"100%"}),e.appendChild(a),e===document.body&&(a.style.position="absolute",R(e.style,{margin:0,padding:0})),e!==document.body&&"function"==typeof ResizeObserver?(i=new ResizeObserver(function(){setTimeout(n)})).observe(e):window.addEventListener("resize",n,!1),n(),{canvas:a,onDestroy:function(){i?i.disconnect():window.removeEventListener("resize",n),e.removeChild(a)}}}(i||document.body,0,c)))return null;a=t.canvas,d=t.onDestroy}void 0===e.premultipliedAlpha&&(e.premultipliedAlpha=!0),f=function(e,t){function r(r){try{return e.getContext(r,t)}catch(e){return null}}return r("webgl")||r("experimental-webgl")||r("webgl-experimental")}(a,e)}return f?{gl:f,canvas:a,container:i,extensions:u,optionalExtensions:s,pixelRatio:c,profile:l,onDone:p,onDestroy:d}:(d(),p("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org"),null)}function a(e,t){for(var r=Array(e),n=0;n<e;++n)r[n]=t(n);return r}function f(e){var t,r;return t=(65535<e)<<4,t|=r=(255<(e>>>=t))<<3,(t|=r=(15<(e>>>=r))<<2)|(r=(3<(e>>>=r))<<1)|e>>>r>>1}function o(){function e(e){e:{for(var t=16;268435456>=t;t*=16)if(e<=t){e=t;break e}e=0}return 0<(t=r[f(e)>>2]).length?t.pop():new ArrayBuffer(e)}function t(e){r[f(e.byteLength)>>2].push(e)}var r=a(8,function(){return[]});return{alloc:e,free:t,allocType:function(t,r){var n=null;switch(t){case 5120:n=new Int8Array(e(r),0,r);break;case 5121:n=new Uint8Array(e(r),0,r);break;case 5122:n=new Int16Array(e(2*r),0,r);break;case 5123:n=new Uint16Array(e(2*r),0,r);break;case 5124:n=new Int32Array(e(4*r),0,r);break;case 5125:n=new Uint32Array(e(4*r),0,r);break;case 5126:n=new Float32Array(e(4*r),0,r);break;default:return null}return n.length!==r?n.subarray(0,r):n},freeType:function(e){t(e.buffer)}}}function u(e){return!!e&&"object"==typeof e&&Array.isArray(e.shape)&&Array.isArray(e.stride)&&"number"==typeof e.offset&&e.shape.length===e.stride.length&&(Array.isArray(e.data)||G(e.data))}function s(e,t,r,n,i,a){for(var f=0;f<t;++f)for(var o=e[f],u=0;u<r;++u)for(var s=o[u],c=0;c<n;++c)i[a++]=s[c]}function c(e){return 0|J[Object.prototype.toString.call(e)]}function l(e,t){for(var r=0;r<t.length;++r)e[r]=t[r]}function p(e,t,r,n,i,a,f){for(var o=0,u=0;u<r;++u)for(var s=0;s<n;++s)e[o++]=t[i*u+a*s+f]}function d(e,t,r,n){function i(t){this.id=s++,this.buffer=e.createBuffer(),this.type=t,this.usage=35044,this.byteLength=0,this.dimension=1,this.dtype=5121,this.persistentData=null,r.profile&&(this.stats={size:0})}function a(t,r,n){t.byteLength=r.byteLength,e.bufferData(t.type,r,n)}function f(e,t,r,n,i,f){if(e.usage=r,Array.isArray(t)){if(e.dtype=n||5126,0<t.length)if(Array.isArray(t[0])){i=ee(t);for(var o=n=1;o<i.length;++o)n*=i[o];e.dimension=n,a(e,t=$(t,i,e.dtype),r),f?e.persistentData=t:q.freeType(t)}else"number"==typeof t[0]?(e.dimension=i,l(i=q.allocType(e.dtype,t.length),t),a(e,i,r),f?e.persistentData=i:q.freeType(i)):G(t[0])&&(e.dimension=t[0].length,e.dtype=n||c(t[0])||5126,a(e,t=$(t,[t.length,t[0].length],e.dtype),r),f?e.persistentData=t:q.freeType(t))}else if(G(t))e.dtype=n||c(t),e.dimension=i,a(e,t,r),f&&(e.persistentData=new Uint8Array(new Uint8Array(t.buffer)));else if(u(t)){i=t.shape;var s=t.stride,d=(o=t.offset,0),h=0,m=0,b=0;1===i.length?(d=i[0],h=1,m=s[0],b=0):2===i.length&&(d=i[0],h=i[1],m=s[0],b=s[1]),e.dtype=n||c(t.data)||5126,e.dimension=h,p(i=q.allocType(e.dtype,d*h),t.data,d,h,m,b,o),a(e,i,r),f?e.persistentData=i:q.freeType(i)}else t instanceof ArrayBuffer&&(e.dtype=5121,e.dimension=i,a(e,t,r),f&&(e.persistentData=new Uint8Array(new Uint8Array(t))))}function o(r){t.bufferCount--,n(r),e.deleteBuffer(r.buffer),r.buffer=null,delete d[r.id]}var s=0,d={};i.prototype.bind=function(){e.bindBuffer(this.type,this.buffer)},i.prototype.destroy=function(){o(this)};var h=[];return r.profile&&(t.getTotalBufferSize=function(){var e=0;return Object.keys(d).forEach(function(t){e+=d[t].stats.size}),e}),{create:function(n,a,s,h){function m(t){var n=35044,i=null,a=0,o=0,s=1;return Array.isArray(t)||G(t)||u(t)||t instanceof ArrayBuffer?i=t:"number"==typeof t?a=0|t:t&&("data"in t&&(i=t.data),"usage"in t&&(n=Z[t.usage]),"type"in t&&(o=K[t.type]),"dimension"in t&&(s=0|t.dimension),"length"in t&&(a=0|t.length)),b.bind(),i?f(b,i,n,o,s,h):(a&&e.bufferData(b.type,a,n),b.dtype=o||5121,b.usage=n,b.dimension=s,b.byteLength=a),r.profile&&(b.stats.size=b.byteLength*te[b.dtype]),m}t.bufferCount++;var b=new i(a);return d[b.id]=b,s||m(n),m._reglType="buffer",m._buffer=b,m.subdata=function(t,r){var n,i=0|(r||0);if(b.bind(),G(t)||t instanceof ArrayBuffer)e.bufferSubData(b.type,i,t);else if(Array.isArray(t)){if(0<t.length)if("number"==typeof t[0]){var a=q.allocType(b.dtype,t.length);l(a,t),e.bufferSubData(b.type,i,a),q.freeType(a)}else(Array.isArray(t[0])||G(t[0]))&&(n=ee(t),a=$(t,n,b.dtype),e.bufferSubData(b.type,i,a),q.freeType(a))}else if(u(t)){n=t.shape;var f=t.stride,o=a=0,s=0,d=0;1===n.length?(a=n[0],o=1,s=f[0],d=0):2===n.length&&(a=n[0],o=n[1],s=f[0],d=f[1]),n=Array.isArray(t.data)?b.dtype:c(t.data),p(n=q.allocType(n,a*o),t.data,a,o,s,d,t.offset),e.bufferSubData(b.type,i,n),q.freeType(n)}return m},r.profile&&(m.stats=b.stats),m.destroy=function(){o(b)},m},createStream:function(e,t){var r=h.pop();return r||(r=new i(e)),r.bind(),f(r,t,35040,0,1,!1),r},destroyStream:function(e){h.push(e)},clear:function(){Y(d).forEach(o),h.forEach(o)},getBuffer:function(e){return e&&e._buffer instanceof i?e._buffer:null},restore:function(){Y(d).forEach(function(t){t.buffer=e.createBuffer(),e.bindBuffer(t.type,t.buffer),e.bufferData(t.type,t.persistentData||t.byteLength,t.usage)})},_initBuffer:f}}function h(e,t,r,n){function i(e){this.id=s++,o[this.id]=this,this.buffer=e,this.primType=4,this.type=this.vertCount=0}function a(n,i,a,f,o,s,c){var l;if(n.buffer.bind(),i?((l=c)||G(i)&&(!u(i)||G(i.data))||(l=t.oes_element_index_uint?5125:5123),r._initBuffer(n.buffer,i,a,l,3)):(e.bufferData(34963,s,a),n.buffer.dtype=l||5121,n.buffer.usage=a,n.buffer.dimension=3,n.buffer.byteLength=s),l=c,!c){switch(n.buffer.dtype){case 5121:case 5120:l=5121;break;case 5123:case 5122:l=5123;break;case 5125:case 5124:l=5125}n.buffer.dtype=l}n.type=l,0>(i=o)&&(i=n.buffer.byteLength,5123===l?i>>=1:5125===l&&(i>>=2)),n.vertCount=i,i=f,0>f&&(i=4,1===(f=n.buffer.dimension)&&(i=0),2===f&&(i=1),3===f&&(i=4)),n.primType=i}function f(e){n.elementsCount--,delete o[e.id],e.buffer.destroy(),e.buffer=null}var o={},s=0,c={uint8:5121,uint16:5123};t.oes_element_index_uint&&(c.uint32=5125),i.prototype.bind=function(){this.buffer.bind()};var l=[];return{create:function(e,t){function o(e){if(e)if("number"==typeof e)s(e),l.primType=4,l.vertCount=0|e,l.type=5121;else{var t=null,r=35044,n=-1,i=-1,f=0,p=0;Array.isArray(e)||G(e)||u(e)?t=e:("data"in e&&(t=e.data),"usage"in e&&(r=Z[e.usage]),"primitive"in e&&(n=re[e.primitive]),"count"in e&&(i=0|e.count),"type"in e&&(p=c[e.type]),"length"in e?f=0|e.length:(f=i,5123===p||5122===p?f*=2:5125!==p&&5124!==p||(f*=4))),a(l,t,r,n,i,f,p)}else s(),l.primType=4,l.vertCount=0,l.type=5121;return o}var s=r.create(null,34963,!0),l=new i(s._buffer);return n.elementsCount++,o(e),o._reglType="elements",o._elements=l,o.subdata=function(e,t){return s.subdata(e,t),o},o.destroy=function(){f(l)},o},createStream:function(e){var t=l.pop();return t||(t=new i(r.create(null,34963,!0,!1)._buffer)),a(t,e,35040,-1,-1,0,0),t},destroyStream:function(e){l.push(e)},getElements:function(e){return"function"==typeof e&&e._elements instanceof i?e._elements:null},clear:function(){Y(o).forEach(f)}}}function m(e){for(var t=q.allocType(5123,e.length),r=0;r<e.length;++r)if(isNaN(e[r]))t[r]=65535;else if(1/0===e[r])t[r]=31744;else if(-1/0===e[r])t[r]=64512;else{ne[0]=e[r];var n=(a=ie[0])>>>31<<15,i=(a<<1>>>24)-127,a=a>>13&1023;t[r]=-24>i?n:-14>i?n+(a+1024>>-14-i):15<i?n+31744:n+(i+15<<10)+a}return t}function b(e){return Array.isArray(e)||G(e)}function g(e){return"[object "+e+"]"}function y(e){return Array.isArray(e)&&(0===e.length||"number"==typeof e[0])}function v(e){return!(!Array.isArray(e)||0===e.length||!b(e[0]))}function x(e){return Object.prototype.toString.call(e)}function w(e){if(!e)return!1;var t=x(e);return 0<=he.indexOf(t)||(y(e)||v(e)||u(e))}function A(e,t){36193===e.type?(e.data=m(t),q.freeType(t)):e.data=t}function k(e,t,r,n,i,a){if(e=void 0!==be[e]?be[e]:oe[e]*me[t],a&&(e*=6),i){for(n=0;1<=r;)n+=e*r*r,r/=2;return n}return e*r*n}function _(e,t,r,n,i,a,f){function o(){this.format=this.internalformat=6408,this.type=5121,this.flipY=this.premultiplyAlpha=this.compressed=!1,this.unpackAlignment=1,this.colorSpace=37444,this.channels=this.height=this.width=0}function s(e,t){e.internalformat=t.internalformat,e.format=t.format,e.type=t.type,e.compressed=t.compressed,e.premultiplyAlpha=t.premultiplyAlpha,e.flipY=t.flipY,e.unpackAlignment=t.unpackAlignment,e.colorSpace=t.colorSpace,e.width=t.width,e.height=t.height,e.channels=t.channels}function c(e,t){if("object"==typeof t&&t){"premultiplyAlpha"in t&&(e.premultiplyAlpha=t.premultiplyAlpha),"flipY"in t&&(e.flipY=t.flipY),"alignment"in t&&(e.unpackAlignment=t.alignment),"colorSpace"in t&&(e.colorSpace=U[t.colorSpace]),"type"in t&&(e.type=N[t.type]);var r=e.width,n=e.height,i=e.channels,a=!1;"shape"in t?(r=t.shape[0],n=t.shape[1],3===t.shape.length&&(i=t.shape[2],a=!0)):("radius"in t&&(r=n=t.radius),"width"in t&&(r=t.width),"height"in t&&(n=t.height),"channels"in t&&(i=t.channels,a=!0)),e.width=0|r,e.height=0|n,e.channels=0|i,r=!1,"format"in t&&(r=t.format,n=e.internalformat=Q[r],e.format=he[n],r in N&&!("type"in t)&&(e.type=N[r]),r in K&&(e.compressed=!0),r=!0),!a&&r?e.channels=oe[e.format]:a&&!r&&e.channels!==fe[e.format]&&(e.format=e.internalformat=fe[e.channels])}}function l(t){e.pixelStorei(37440,t.flipY),e.pixelStorei(37441,t.premultiplyAlpha),e.pixelStorei(37443,t.colorSpace),e.pixelStorei(3317,t.unpackAlignment)}function p(){o.call(this),this.yOffset=this.xOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function d(e,t){var r=null;if(w(t)?r=t:t&&(c(e,t),"x"in t&&(e.xOffset=0|t.x),"y"in t&&(e.yOffset=0|t.y),w(t.data)&&(r=t.data)),t.copy){var n=i.viewportWidth,a=i.viewportHeight;e.width=e.width||n-e.xOffset,e.height=e.height||a-e.yOffset,e.needsCopy=!0}else if(r){if(G(r))e.channels=e.channels||4,e.data=r,"type"in t||5121!==e.type||(e.type=0|J[Object.prototype.toString.call(r)]);else if(y(r)){switch(e.channels=e.channels||4,a=(n=r).length,e.type){case 5121:case 5123:case 5125:case 5126:(a=q.allocType(e.type,a)).set(n),e.data=a;break;case 36193:e.data=m(n)}e.alignment=1,e.needsFree=!0}else if(u(r)){n=r.data,Array.isArray(n)||5121!==e.type||(e.type=0|J[Object.prototype.toString.call(n)]);a=r.shape;var f,o,s,l,p=r.stride;3===a.length?(s=a[2],l=p[2]):l=s=1,f=a[0],o=a[1],a=p[0],p=p[1],e.alignment=1,e.width=f,e.height=o,e.channels=s,e.format=e.internalformat=fe[s],e.needsFree=!0,f=l,r=r.offset,s=e.width,l=e.height,o=e.channels;for(var d=q.allocType(36193===e.type?5126:e.type,s*l*o),h=0,g=0;g<l;++g)for(var k=0;k<s;++k)for(var _=0;_<o;++_)d[h++]=n[a*k+p*g+f*_+r];A(e,d)}else if(x(r)===ue||x(r)===se||x(r)===ce)x(r)===ue||x(r)===se?e.element=r:e.element=r.canvas,e.width=e.element.width,e.height=e.element.height,e.channels=4;else if(x(r)===le)e.element=r,e.width=r.width,e.height=r.height,e.channels=4;else if(x(r)===pe)e.element=r,e.width=r.naturalWidth,e.height=r.naturalHeight,e.channels=4;else if(x(r)===de)e.element=r,e.width=r.videoWidth,e.height=r.videoHeight,e.channels=4;else if(v(r)){for(n=e.width||r[0].length,a=e.height||r.length,p=e.channels,p=b(r[0][0])?p||r[0][0].length:p||1,f=X.shape(r),s=1,l=0;l<f.length;++l)s*=f[l];s=q.allocType(36193===e.type?5126:e.type,s),X.flatten(r,f,"",s),A(e,s),e.alignment=1,e.width=n,e.height=a,e.channels=p,e.format=e.internalformat=fe[p],e.needsFree=!0}}else e.width=e.width||1,e.height=e.height||1,e.channels=e.channels||4}function h(t,r,i,a,f){var o=t.element,u=t.data,s=t.internalformat,c=t.format,p=t.type,d=t.width,h=t.height;l(t),o?e.texSubImage2D(r,f,i,a,c,p,o):t.compressed?e.compressedTexSubImage2D(r,f,i,a,s,d,h,u):t.needsCopy?(n(),e.copyTexSubImage2D(r,f,i,a,t.xOffset,t.yOffset,d,h)):e.texSubImage2D(r,f,i,a,d,h,c,p,u)}function g(){return me.pop()||new p}function _(e){e.needsFree&&q.freeType(e.data),p.call(e),me.push(e)}function O(){o.call(this),this.genMipmaps=!1,this.mipmapHint=4352,this.mipmask=0,this.images=Array(16)}function E(e,t,r){var n=e.images[0]=g();e.mipmask=1,n.width=e.width=t,n.height=e.height=r,n.channels=e.channels=4}function D(e,t){var r=null;if(w(t))s(r=e.images[0]=g(),e),d(r,t),e.mipmask=1;else if(c(e,t),Array.isArray(t.mipmap))for(var n=t.mipmap,i=0;i<n.length;++i)s(r=e.images[i]=g(),e),r.width>>=i,r.height>>=i,d(r,n[i]),e.mipmask|=1<<i;else s(r=e.images[0]=g(),e),d(r,t),e.mipmask=1;s(e,e.images[0])}function T(t,r){for(var i=t.images,a=0;a<i.length&&i[a];++a){var f=i[a],o=r,u=a,s=f.element,c=f.data,p=f.internalformat,d=f.format,h=f.type,m=f.width,b=f.height;l(f),s?e.texImage2D(o,u,d,d,h,s):f.compressed?e.compressedTexImage2D(o,u,p,m,b,0,c):f.needsCopy?(n(),e.copyTexImage2D(o,u,d,f.xOffset,f.yOffset,m,b,0)):e.texImage2D(o,u,d,m,b,0,d,h,c||null)}}function S(){var e=be.pop()||new O;o.call(e);for(var t=e.mipmask=0;16>t;++t)e.images[t]=null;return e}function j(e){for(var t=e.images,r=0;r<t.length;++r)t[r]&&_(t[r]),t[r]=null;be.push(e)}function C(){this.magFilter=this.minFilter=9728,this.wrapT=this.wrapS=33071,this.anisotropic=1,this.genMipmaps=!1,this.mipmapHint=4352}function V(e,t){"min"in t&&(e.minFilter=W[t.min],0<=ae.indexOf(e.minFilter)&&!("faces"in t)&&(e.genMipmaps=!0)),"mag"in t&&(e.magFilter=H[t.mag]);var r=e.wrapS,n=e.wrapT;if("wrap"in t){var i=t.wrap;"string"==typeof i?r=n=M[i]:Array.isArray(i)&&(r=M[i[0]],n=M[i[1]])}else"wrapS"in t&&(r=M[t.wrapS]),"wrapT"in t&&(n=M[t.wrapT]);if(e.wrapS=r,e.wrapT=n,"anisotropic"in t&&(e.anisotropic=t.anisotropic),"mipmap"in t){switch(r=!1,typeof t.mipmap){case"string":e.mipmapHint=L[t.mipmap],r=e.genMipmaps=!0;break;case"boolean":r=e.genMipmaps=t.mipmap;break;case"object":e.genMipmaps=!1,r=!0}!r||"min"in t||(e.minFilter=9984)}}function F(r,n){e.texParameteri(n,10241,r.minFilter),e.texParameteri(n,10240,r.magFilter),e.texParameteri(n,10242,r.wrapS),e.texParameteri(n,10243,r.wrapT),t.ext_texture_filter_anisotropic&&e.texParameteri(n,34046,r.anisotropic),r.genMipmaps&&(e.hint(33170,r.mipmapHint),e.generateMipmap(n))}function B(t){o.call(this),this.mipmask=0,this.internalformat=6408,this.id=ge++,this.refCount=1,this.target=t,this.texture=e.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new C,f.profile&&(this.stats={size:0})}function z(t){e.activeTexture(33984),e.bindTexture(t.target,t.texture)}function I(){var t=xe[0];t?e.bindTexture(t.target,t.texture):e.bindTexture(3553,null)}function P(t){var r=t.texture,n=t.unit,i=t.target;0<=n&&(e.activeTexture(33984+n),e.bindTexture(i,null),xe[n]=null),e.deleteTexture(r),t.texture=null,t.params=null,t.pixels=null,t.refCount=0,delete ye[t.id],a.textureCount--}var L={"don't care":4352,"dont care":4352,nice:4354,fast:4353},M={repeat:10497,clamp:33071,mirror:33648},H={nearest:9728,linear:9729},W=R({mipmap:9987,"nearest mipmap nearest":9984,"linear mipmap nearest":9985,"nearest mipmap linear":9986,"linear mipmap linear":9987},H),U={none:0,browser:37444},N={uint8:5121,rgba4:32819,rgb565:33635,"rgb5 a1":32820},Q={alpha:6406,luminance:6409,"luminance alpha":6410,rgb:6407,rgba:6408,rgba4:32854,"rgb5 a1":32855,rgb565:36194},K={};t.ext_srgb&&(Q.srgb=35904,Q.srgba=35906),t.oes_texture_float&&(N.float32=N.float=5126),t.oes_texture_half_float&&(N.float16=N["half float"]=36193),t.webgl_depth_texture&&(R(Q,{depth:6402,"depth stencil":34041}),R(N,{uint16:5123,uint32:5125,"depth stencil":34042})),t.webgl_compressed_texture_s3tc&&R(K,{"rgb s3tc dxt1":33776,"rgba s3tc dxt1":33777,"rgba s3tc dxt3":33778,"rgba s3tc dxt5":33779}),t.webgl_compressed_texture_atc&&R(K,{"rgb atc":35986,"rgba atc explicit alpha":35987,"rgba atc interpolated alpha":34798}),t.webgl_compressed_texture_pvrtc&&R(K,{"rgb pvrtc 4bppv1":35840,"rgb pvrtc 2bppv1":35841,"rgba pvrtc 4bppv1":35842,"rgba pvrtc 2bppv1":35843}),t.webgl_compressed_texture_etc1&&(K["rgb etc1"]=36196);var Z=Array.prototype.slice.call(e.getParameter(34467));Object.keys(K).forEach(function(e){var t=K[e];0<=Z.indexOf(t)&&(Q[e]=t)});var $=Object.keys(Q);r.textureFormats=$;var ee=[];Object.keys(Q).forEach(function(e){ee[Q[e]]=e});var te=[];Object.keys(N).forEach(function(e){te[N[e]]=e});var re=[];Object.keys(H).forEach(function(e){re[H[e]]=e});var ne=[];Object.keys(W).forEach(function(e){ne[W[e]]=e});var ie=[];Object.keys(M).forEach(function(e){ie[M[e]]=e});var he=$.reduce(function(e,r){var n=Q[r];return 6409===n||6406===n||6409===n||6410===n||6402===n||34041===n||t.ext_srgb&&(35904===n||35906===n)?e[n]=n:32855===n||0<=r.indexOf("rgba")?e[n]=6408:e[n]=6407,e},{}),me=[],be=[],ge=0,ye={},ve=r.maxTextureUnits,xe=Array(ve).map(function(){return null});return R(B.prototype,{bind:function(){this.bindCount+=1;var t=this.unit;if(0>t){for(var r=0;r<ve;++r){var n=xe[r];if(n){if(0<n.bindCount)continue;n.unit=-1}xe[r]=this,t=r;break}f.profile&&a.maxTextureUnits<t+1&&(a.maxTextureUnits=t+1),this.unit=t,e.activeTexture(33984+t),e.bindTexture(this.target,this.texture)}return t},unbind:function(){--this.bindCount},decRef:function(){0>=--this.refCount&&P(this)}}),f.profile&&(a.getTotalTextureSize=function(){var e=0;return Object.keys(ye).forEach(function(t){e+=ye[t].stats.size}),e}),{create2D:function(t,r){function n(e,t){var r=i.texInfo;C.call(r);var a=S();return"number"==typeof e?E(a,0|e,"number"==typeof t?0|t:0|e):e?(V(r,e),D(a,e)):E(a,1,1),r.genMipmaps&&(a.mipmask=(a.width<<1)-1),i.mipmask=a.mipmask,s(i,a),i.internalformat=a.internalformat,n.width=a.width,n.height=a.height,z(i),T(a,3553),F(r,3553),I(),j(a),f.profile&&(i.stats.size=k(i.internalformat,i.type,a.width,a.height,r.genMipmaps,!1)),n.format=ee[i.internalformat],n.type=te[i.type],n.mag=re[r.magFilter],n.min=ne[r.minFilter],n.wrapS=ie[r.wrapS],n.wrapT=ie[r.wrapT],n}var i=new B(3553);return ye[i.id]=i,a.textureCount++,n(t,r),n.subimage=function(e,t,r,a){t|=0,r|=0,a|=0;var f=g();return s(f,i),f.width=0,f.height=0,d(f,e),f.width=f.width||(i.width>>a)-t,f.height=f.height||(i.height>>a)-r,z(i),h(f,3553,t,r,a),I(),_(f),n},n.resize=function(t,r){var a=0|t,o=0|r||a;if(a===i.width&&o===i.height)return n;n.width=i.width=a,n.height=i.height=o,z(i);for(var u=0;i.mipmask>>u;++u){var s=a>>u,c=o>>u;if(!s||!c)break;e.texImage2D(3553,u,i.format,s,c,0,i.format,i.type,null)}return I(),f.profile&&(i.stats.size=k(i.internalformat,i.type,a,o,!1,!1)),n},n._reglType="texture2d",n._texture=i,f.profile&&(n.stats=i.stats),n.destroy=function(){i.decRef()},n},createCube:function(t,r,n,i,o,u){function l(e,t,r,n,i,a){var o,u=p.texInfo;for(C.call(u),o=0;6>o;++o)m[o]=S();if("number"!=typeof e&&e){if("object"==typeof e)if(t)D(m[0],e),D(m[1],t),D(m[2],r),D(m[3],n),D(m[4],i),D(m[5],a);else if(V(u,e),c(p,e),"faces"in e)for(e=e.faces,o=0;6>o;++o)s(m[o],p),D(m[o],e[o]);else for(o=0;6>o;++o)D(m[o],e)}else for(e=0|e||1,o=0;6>o;++o)E(m[o],e,e);for(s(p,m[0]),p.mipmask=u.genMipmaps?(m[0].width<<1)-1:m[0].mipmask,p.internalformat=m[0].internalformat,l.width=m[0].width,l.height=m[0].height,z(p),o=0;6>o;++o)T(m[o],34069+o);for(F(u,34067),I(),f.profile&&(p.stats.size=k(p.internalformat,p.type,l.width,l.height,u.genMipmaps,!0)),l.format=ee[p.internalformat],l.type=te[p.type],l.mag=re[u.magFilter],l.min=ne[u.minFilter],l.wrapS=ie[u.wrapS],l.wrapT=ie[u.wrapT],o=0;6>o;++o)j(m[o]);return l}var p=new B(34067);ye[p.id]=p,a.cubeCount++;var m=Array(6);return l(t,r,n,i,o,u),l.subimage=function(e,t,r,n,i){r|=0,n|=0,i|=0;var a=g();return s(a,p),a.width=0,a.height=0,d(a,t),a.width=a.width||(p.width>>i)-r,a.height=a.height||(p.height>>i)-n,z(p),h(a,34069+e,r,n,i),I(),_(a),l},l.resize=function(t){if((t|=0)!==p.width){l.width=p.width=t,l.height=p.height=t,z(p);for(var r=0;6>r;++r)for(var n=0;p.mipmask>>n;++n)e.texImage2D(34069+r,n,p.format,t>>n,t>>n,0,p.format,p.type,null);return I(),f.profile&&(p.stats.size=k(p.internalformat,p.type,l.width,l.height,!1,!0)),l}},l._reglType="textureCube",l._texture=p,f.profile&&(l.stats=p.stats),l.destroy=function(){p.decRef()},l},clear:function(){for(var t=0;t<ve;++t)e.activeTexture(33984+t),e.bindTexture(3553,null),xe[t]=null;Y(ye).forEach(P),a.cubeCount=0,a.textureCount=0},getTexture:function(e){return null},restore:function(){for(var t=0;t<ve;++t){var r=xe[t];r&&(r.bindCount=0,r.unit=-1,xe[t]=null)}Y(ye).forEach(function(t){t.texture=e.createTexture(),e.bindTexture(t.target,t.texture);for(var r=0;32>r;++r)if(0!=(t.mipmask&1<<r))if(3553===t.target)e.texImage2D(3553,r,t.internalformat,t.width>>r,t.height>>r,0,t.internalformat,t.type,null);else for(var n=0;6>n;++n)e.texImage2D(34069+n,r,t.internalformat,t.width>>r,t.height>>r,0,t.internalformat,t.type,null);F(t.texInfo,t.target)})},refresh:function(){for(var t=0;t<ve;++t){var r=xe[t];r&&(r.bindCount=0,r.unit=-1,xe[t]=null),e.activeTexture(33984+t),e.bindTexture(3553,null),e.bindTexture(34067,null)}}}}function O(e,t,r,n,i,a){function f(e,t,r){this.target=e,this.texture=t,this.renderbuffer=r;var n=e=0;t?(e=t.width,n=t.height):r&&(e=r.width,n=r.height),this.width=e,this.height=n}function o(e){e&&(e.texture&&e.texture._texture.decRef(),e.renderbuffer&&e.renderbuffer._renderbuffer.decRef())}function u(e,t,r){e&&(e.texture?e.texture._texture.refCount+=1:e.renderbuffer._renderbuffer.refCount+=1)}function s(t,r){r&&(r.texture?e.framebufferTexture2D(36160,t,r.target,r.texture._texture.texture,0):e.framebufferRenderbuffer(36160,t,36161,r.renderbuffer._renderbuffer.renderbuffer))}function c(e){var t=3553,r=null,n=null,i=e;return"object"==typeof e&&(i=e.data,"target"in e&&(t=0|e.target)),"texture2d"===(e=i._reglType)?r=i:"textureCube"===e?r=i:"renderbuffer"===e&&(n=i,t=36161),new f(t,r,n)}function l(e,t,r,a,o){return r?((e=n.create2D({width:e,height:t,format:a,type:o}))._texture.refCount=0,new f(3553,e,null)):((e=i.create({width:e,height:t,format:a}))._renderbuffer.refCount=0,new f(36161,null,e))}function p(e){return e&&(e.texture||e.renderbuffer)}function d(e,t,r){e&&(e.texture?e.texture.resize(t,r):e.renderbuffer&&e.renderbuffer.resize(t,r),e.width=t,e.height=r)}function h(){this.id=k++,_[this.id]=this,this.framebuffer=e.createFramebuffer(),this.height=this.width=0,this.colorAttachments=[],this.depthStencilAttachment=this.stencilAttachment=this.depthAttachment=null}function m(e){e.colorAttachments.forEach(o),o(e.depthAttachment),o(e.stencilAttachment),o(e.depthStencilAttachment)}function b(t){e.deleteFramebuffer(t.framebuffer),t.framebuffer=null,a.framebufferCount--,delete _[t.id]}function g(t){var n;e.bindFramebuffer(36160,t.framebuffer);var i=t.colorAttachments;for(n=0;n<i.length;++n)s(36064+n,i[n]);for(n=i.length;n<r.maxColorAttachments;++n)e.framebufferTexture2D(36160,36064+n,3553,null,0);e.framebufferTexture2D(36160,33306,3553,null,0),e.framebufferTexture2D(36160,36096,3553,null,0),e.framebufferTexture2D(36160,36128,3553,null,0),s(36096,t.depthAttachment),s(36128,t.stencilAttachment),s(33306,t.depthStencilAttachment),e.checkFramebufferStatus(36160),e.isContextLost(),e.bindFramebuffer(36160,v.next?v.next.framebuffer:null),v.cur=v.next,e.getError()}function y(e,t){function r(e,t){var i,a=0,f=0,o=!0,s=!0;i=null;var d=!0,h="rgba",b="uint8",y=1,v=null,A=null,k=null,_=!1;"number"==typeof e?(a=0|e,f=0|t||a):e?("shape"in e?(a=(f=e.shape)[0],f=f[1]):("radius"in e&&(a=f=e.radius),"width"in e&&(a=e.width),"height"in e&&(f=e.height)),("color"in e||"colors"in e)&&(i=e.color||e.colors,Array.isArray(i)),i||("colorCount"in e&&(y=0|e.colorCount),"colorTexture"in e&&(d=!!e.colorTexture,h="rgba4"),"colorType"in e&&(b=e.colorType,!d)&&("half float"===b||"float16"===b?h="rgba16f":"float"!==b&&"float32"!==b||(h="rgba32f")),"colorFormat"in e&&(h=e.colorFormat,0<=x.indexOf(h)?d=!0:0<=w.indexOf(h)&&(d=!1))),("depthTexture"in e||"depthStencilTexture"in e)&&(_=!(!e.depthTexture&&!e.depthStencilTexture)),"depth"in e&&("boolean"==typeof e.depth?o=e.depth:(v=e.depth,s=!1)),"stencil"in e&&("boolean"==typeof e.stencil?s=e.stencil:(A=e.stencil,o=!1)),"depthStencil"in e&&("boolean"==typeof e.depthStencil?o=s=e.depthStencil:(k=e.depthStencil,s=o=!1))):a=f=1;var O=null,E=null,D=null,T=null;if(Array.isArray(i))O=i.map(c);else if(i)O=[c(i)];else for(O=Array(y),i=0;i<y;++i)O[i]=l(a,f,d,h,b);for(a=a||O[0].width,f=f||O[0].height,v?E=c(v):o&&!s&&(E=l(a,f,_,"depth","uint32")),A?D=c(A):s&&!o&&(D=l(a,f,!1,"stencil","uint8")),k?T=c(k):!v&&!A&&s&&o&&(T=l(a,f,_,"depth stencil","depth stencil")),o=null,i=0;i<O.length;++i)u(O[i]),O[i]&&O[i].texture&&(s=ve[O[i].texture._texture.format]*xe[O[i].texture._texture.type],null===o&&(o=s));return u(E),u(D),u(T),m(n),n.width=a,n.height=f,n.colorAttachments=O,n.depthAttachment=E,n.stencilAttachment=D,n.depthStencilAttachment=T,r.color=O.map(p),r.depth=p(E),r.stencil=p(D),r.depthStencil=p(T),r.width=n.width,r.height=n.height,g(n),r}var n=new h;return a.framebufferCount++,r(e,t),R(r,{resize:function(e,t){var i=Math.max(0|e,1),a=Math.max(0|t||i,1);if(i===n.width&&a===n.height)return r;for(var f=n.colorAttachments,o=0;o<f.length;++o)d(f[o],i,a);return d(n.depthAttachment,i,a),d(n.stencilAttachment,i,a),d(n.depthStencilAttachment,i,a),n.width=r.width=i,n.height=r.height=a,g(n),r},_reglType:"framebuffer",_framebuffer:n,destroy:function(){b(n),m(n)},use:function(e){v.setFBO({framebuffer:r},e)}})}var v={cur:null,next:null,dirty:!1,setFBO:null},x=["rgba"],w=["rgba4","rgb565","rgb5 a1"];t.ext_srgb&&w.push("srgba"),t.ext_color_buffer_half_float&&w.push("rgba16f","rgb16f"),t.webgl_color_buffer_float&&w.push("rgba32f");var A=["uint8"];t.oes_texture_half_float&&A.push("half float","float16"),t.oes_texture_float&&A.push("float","float32");var k=0,_={};return R(v,{getFramebuffer:function(e){return"function"==typeof e&&"framebuffer"===e._reglType&&(e=e._framebuffer)instanceof h?e:null},create:y,createCube:function(e){function t(e){var i,a={color:null},f=0,o=null;i="rgba";var u="uint8",s=1;if("number"==typeof e?f=0|e:e?("shape"in e?f=e.shape[0]:("radius"in e&&(f=0|e.radius),"width"in e?f=0|e.width:"height"in e&&(f=0|e.height)),("color"in e||"colors"in e)&&(o=e.color||e.colors,Array.isArray(o)),o||("colorCount"in e&&(s=0|e.colorCount),"colorType"in e&&(u=e.colorType),"colorFormat"in e&&(i=e.colorFormat)),"depth"in e&&(a.depth=e.depth),"stencil"in e&&(a.stencil=e.stencil),"depthStencil"in e&&(a.depthStencil=e.depthStencil)):f=1,o)if(Array.isArray(o))for(e=[],i=0;i<o.length;++i)e[i]=o[i];else e=[o];else for(e=Array(s),o={radius:f,format:i,type:u},i=0;i<s;++i)e[i]=n.createCube(o);for(a.color=Array(e.length),i=0;i<e.length;++i)s=e[i],f=f||s.width,a.color[i]={target:34069,data:e[i]};for(i=0;6>i;++i){for(s=0;s<e.length;++s)a.color[s].target=34069+i;0<i&&(a.depth=r[0].depth,a.stencil=r[0].stencil,a.depthStencil=r[0].depthStencil),r[i]?r[i](a):r[i]=y(a)}return R(t,{width:f,height:f,color:e})}var r=Array(6);return t(e),R(t,{faces:r,resize:function(e){var n=0|e;if(n===t.width)return t;var i=t.color;for(e=0;e<i.length;++e)i[e].resize(n);for(e=0;6>e;++e)r[e].resize(n);return t.width=t.height=n,t},_reglType:"framebufferCube",destroy:function(){r.forEach(function(e){e.destroy()})}})},clear:function(){Y(_).forEach(b)},restore:function(){v.cur=null,v.next=null,v.dirty=!0,Y(_).forEach(function(t){t.framebuffer=e.createFramebuffer(),g(t)})}})}function E(){this.w=this.z=this.y=this.x=this.state=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.divisor=this.stride=this.offset=0}function D(e,t,r,n,i,a,f){function o(){this.id=++l,this.attributes=[],this.elements=null,this.ownsElements=!1,this.offset=this.count=0,this.instances=-1,this.primitive=4;var e=t.oes_vertex_array_object;this.vao=e?e.createVertexArrayOES():null,p[this.id]=this,this.buffers=[]}var s=r.maxAttributes,c=Array(s);for(r=0;r<s;++r)c[r]=new E;var l=0,p={},d={Record:E,scope:{},state:c,currentVAO:null,targetVAO:null,restore:t.oes_vertex_array_object?function(){t.oes_vertex_array_object&&Y(p).forEach(function(e){e.refresh()})}:function(){},createVAO:function(e){function t(e){var n;Array.isArray(e)?(n=e,r.elements&&r.ownsElements&&r.elements.destroy(),r.elements=null,r.ownsElements=!1,r.offset=0,r.count=0,r.instances=-1,r.primitive=4):(e.elements?(n=e.elements,r.ownsElements?("function"==typeof n&&"elements"===n._reglType?r.elements.destroy():r.elements(n),r.ownsElements=!1):a.getElements(e.elements)?(r.elements=e.elements,r.ownsElements=!1):(r.elements=a.create(e.elements),r.ownsElements=!0)):(r.elements=null,r.ownsElements=!1),n=e.attributes,r.offset=0,r.count=-1,r.instances=-1,r.primitive=4,r.elements&&(r.count=r.elements._elements.vertCount,r.primitive=r.elements._elements.primType),"offset"in e&&(r.offset=0|e.offset),"count"in e&&(r.count=0|e.count),"instances"in e&&(r.instances=0|e.instances),"primitive"in e&&(r.primitive=re[e.primitive])),e={};var f=r.attributes;f.length=n.length;for(var o=0;o<n.length;++o){var s,c=n[o],l=f[o]=new E,p=c.data||c;if(Array.isArray(p)||G(p)||u(p))r.buffers[o]&&(s=r.buffers[o],G(p)&&s._buffer.byteLength>=p.byteLength?s.subdata(p):(s.destroy(),r.buffers[o]=null)),r.buffers[o]||(s=r.buffers[o]=i.create(c,34962,!1,!0)),l.buffer=i.getBuffer(s),l.size=0|l.buffer.dimension,l.normalized=!1,l.type=l.buffer.dtype,l.offset=0,l.stride=0,l.divisor=0,l.state=1,e[o]=1;else i.getBuffer(c)?(l.buffer=i.getBuffer(c),l.size=0|l.buffer.dimension,l.normalized=!1,l.type=l.buffer.dtype,l.offset=0,l.stride=0,l.divisor=0,l.state=1):i.getBuffer(c.buffer)?(l.buffer=i.getBuffer(c.buffer),l.size=0|(+c.size||l.buffer.dimension),l.normalized=!!c.normalized||!1,l.type="type"in c?K[c.type]:l.buffer.dtype,l.offset=0|(c.offset||0),l.stride=0|(c.stride||0),l.divisor=0|(c.divisor||0),l.state=1):"x"in c&&(l.x=+c.x||0,l.y=+c.y||0,l.z=+c.z||0,l.w=+c.w||0,l.state=2)}for(s=0;s<r.buffers.length;++s)!e[s]&&r.buffers[s]&&(r.buffers[s].destroy(),r.buffers[s]=null);return r.refresh(),t}var r=new o;return n.vaoCount+=1,t.destroy=function(){for(var e=0;e<r.buffers.length;++e)r.buffers[e]&&r.buffers[e].destroy();r.buffers.length=0,r.ownsElements&&(r.elements.destroy(),r.elements=null,r.ownsElements=!1),r.destroy()},t._vao=r,t._reglType="vao",t(e)},getVAO:function(e){return"function"==typeof e&&e._vao?e._vao:null},destroyBuffer:function(t){for(var r=0;r<c.length;++r){var n=c[r];n.buffer===t&&(e.disableVertexAttribArray(r),n.buffer=null)}},setVAO:t.oes_vertex_array_object?function(e){if(e!==d.currentVAO){var r=t.oes_vertex_array_object;e?r.bindVertexArrayOES(e.vao):r.bindVertexArrayOES(null),d.currentVAO=e}}:function(r){if(r!==d.currentVAO){if(r)r.bindAttrs();else{for(var n=t.angle_instanced_arrays,i=0;i<c.length;++i){var a=c[i];a.buffer?(e.enableVertexAttribArray(i),a.buffer.bind(),e.vertexAttribPointer(i,a.size,a.type,a.normalized,a.stride,a.offfset),n&&a.divisor&&n.vertexAttribDivisorANGLE(i,a.divisor)):(e.disableVertexAttribArray(i),e.vertexAttrib4f(i,a.x,a.y,a.z,a.w))}f.elements?e.bindBuffer(34963,f.elements.buffer.buffer):e.bindBuffer(34963,null)}d.currentVAO=r}},clear:t.oes_vertex_array_object?function(){Y(p).forEach(function(e){e.destroy()})}:function(){}};return o.prototype.bindAttrs=function(){for(var r=t.angle_instanced_arrays,n=this.attributes,i=0;i<n.length;++i){var f=n[i];f.buffer?(e.enableVertexAttribArray(i),e.bindBuffer(34962,f.buffer.buffer),e.vertexAttribPointer(i,f.size,f.type,f.normalized,f.stride,f.offset),r&&f.divisor&&r.vertexAttribDivisorANGLE(i,f.divisor)):(e.disableVertexAttribArray(i),e.vertexAttrib4f(i,f.x,f.y,f.z,f.w))}for(r=n.length;r<s;++r)e.disableVertexAttribArray(r);(r=a.getElements(this.elements))?e.bindBuffer(34963,r.buffer.buffer):e.bindBuffer(34963,null)},o.prototype.refresh=function(){var e=t.oes_vertex_array_object;e&&(e.bindVertexArrayOES(this.vao),this.bindAttrs(),d.currentVAO=null,e.bindVertexArrayOES(null))},o.prototype.destroy=function(){if(this.vao){var e=t.oes_vertex_array_object;this===d.currentVAO&&(d.currentVAO=null,e.bindVertexArrayOES(null)),e.deleteVertexArrayOES(this.vao),this.vao=null}this.ownsElements&&(this.elements.destroy(),this.elements=null,this.ownsElements=!1),p[this.id]&&(delete p[this.id],--n.vaoCount)},d}function T(e,t,r,n){function i(e,t,r,n){this.name=e,this.id=t,this.location=r,this.info=n}function a(e,t){for(var r=0;r<e.length;++r)if(e[r].id===t.id)return void(e[r].location=t.location);e.push(t)}function f(r,n,i){if(!(f=(i=35632===r?s:c)[n])){var a=t.str(n),f=e.createShader(r);e.shaderSource(f,a),e.compileShader(f),i[n]=f}return f}function o(e,t){this.id=d++,this.fragId=e,this.vertId=t,this.program=null,this.uniforms=[],this.attributes=[],this.refCount=1,n.profile&&(this.stats={uniformsCount:0,attributesCount:0})}function u(r,o,u){var s;s=f(35632,r.fragId);var c=f(35633,r.vertId);if(o=r.program=e.createProgram(),e.attachShader(o,s),e.attachShader(o,c),u)for(s=0;s<u.length;++s)c=u[s],e.bindAttribLocation(o,c[0],c[1]);e.linkProgram(o),c=e.getProgramParameter(o,35718),n.profile&&(r.stats.uniformsCount=c);var l=r.uniforms;for(s=0;s<c;++s)if(u=e.getActiveUniform(o,s)){if(1<u.size)for(var p=0;p<u.size;++p){var d=u.name.replace("[0]","["+p+"]");a(l,new i(d,t.id(d),e.getUniformLocation(o,d),u))}p=u.name,1<u.size&&(p=p.replace("[0]","")),a(l,new i(p,t.id(p),e.getUniformLocation(o,p),u))}for(c=e.getProgramParameter(o,35721),n.profile&&(r.stats.attributesCount=c),r=r.attributes,s=0;s<c;++s)(u=e.getActiveAttrib(o,s))&&a(r,new i(u.name,t.id(u.name),e.getAttribLocation(o,u.name),u))}var s={},c={},l={},p=[],d=0;return n.profile&&(r.getMaxUniformsCount=function(){var e=0;return p.forEach(function(t){t.stats.uniformsCount>e&&(e=t.stats.uniformsCount)}),e},r.getMaxAttributesCount=function(){var e=0;return p.forEach(function(t){t.stats.attributesCount>e&&(e=t.stats.attributesCount)}),e}),{clear:function(){var t=e.deleteShader.bind(e);Y(s).forEach(t),s={},Y(c).forEach(t),c={},p.forEach(function(t){e.deleteProgram(t.program)}),p.length=0,l={},r.shaderCount=0},program:function(t,n,i,a){var f=l[n];f||(f=l[n]={});var d=f[t];if(d&&(d.refCount++,!a))return d;var h=new o(n,t);return r.shaderCount++,u(h,i,a),d||(f[t]=h),p.push(h),R(h,{destroy:function(){if(h.refCount--,0>=h.refCount){e.deleteProgram(h.program);var t=p.indexOf(h);p.splice(t,1),r.shaderCount--}0>=f[h.vertId].refCount&&(e.deleteShader(c[h.vertId]),delete c[h.vertId],delete l[h.fragId][h.vertId]),Object.keys(l[h.fragId]).length||(e.deleteShader(s[h.fragId]),delete s[h.fragId],delete l[h.fragId])}})},restore:function(){s={},c={};for(var e=0;e<p.length;++e)u(p[e],null,p[e].attributes.map(function(e){return[e.location,e.name]}))},shader:f,frag:-1,vert:-1}}function S(e,t,r,n,i,a,f){function o(i){var a;a=null===t.next?5121:t.next.colorAttachments[0].texture._texture.type;var f=0,o=0,u=n.framebufferWidth,s=n.framebufferHeight,c=null;return G(i)?c=i:i&&(f=0|i.x,o=0|i.y,u=0|(i.width||n.framebufferWidth-f),s=0|(i.height||n.framebufferHeight-o),c=i.data||null),r(),i=u*s*4,c||(5121===a?c=new Uint8Array(i):5126===a&&(c=c||new Float32Array(i))),e.pixelStorei(3333,4),e.readPixels(f,o,u,s,6408,a,c),c}return function(e){return e&&"framebuffer"in e?function(e){var r;return t.setFBO({framebuffer:e.framebuffer},function(){r=o(e)}),r}(e):o(e)}}function j(e){return Array.prototype.slice.call(e)}function C(e){return j(e).join("")}function V(e){return Array.isArray(e)||G(e)||u(e)}function F(e){return e.sort(function(e,t){return"viewport"===e?-1:"viewport"===t?1:e<t?-1:1})}function B(e,t,r,n){this.thisDep=e,this.contextDep=t,this.propDep=r,this.append=n}function z(e){return e&&!(e.thisDep||e.contextDep||e.propDep)}function I(e){return new B(!1,!1,!1,e)}function P(e,t){var r=e.type;if(0===r)return new B(!0,1<=(r=e.data.length),2<=r,t);if(4===r)return new B((r=e.data).thisDep,r.contextDep,r.propDep,t);if(5===r)return new B(!1,!1,!1,t);if(6===r){for(var n=r=!1,i=!1,a=0;a<e.data.length;++a){var f=e.data[a];1===f.type?i=!0:2===f.type?n=!0:3===f.type?r=!0:0===f.type?(r=!0,1<=(f=f.data)&&(n=!0),2<=f&&(i=!0)):4===f.type&&(r=r||f.data.thisDep,n=n||f.data.contextDep,i=i||f.data.propDep)}return new B(r,n,i,t)}return new B(3===r,2===r,1===r,t)}function L(e,t,r,n,i,f,o,u,s,c,l,p,d,h,m){function g(e){return e.replace(".","_")}function y(e,t,r){var n=g(e);fe.push(e),ae[n]=ie[n]=!!r,oe[n]=t}function v(e,t,r){var n=g(e);fe.push(e),Array.isArray(r)?(ie[n]=r.slice(),ae[n]=r.slice()):ie[n]=ae[n]=r,ue[n]=t}function x(){var e=function(){function e(){var e=[],t=[];return R(function(){e.push.apply(e,j(arguments))},{def:function(){var n="v"+r++;return t.push(n),0<arguments.length&&(e.push(n,"="),e.push.apply(e,j(arguments)),e.push(";")),n},toString:function(){return C([0<t.length?"var "+t.join(",")+";":"",C(e)])}})}function t(){function t(e,t){n(e,t,"=",r.def(e,t),";")}var r=e(),n=e(),i=r.toString,a=n.toString;return R(function(){r.apply(r,j(arguments))},{def:r.def,entry:r,exit:n,save:t,set:function(e,n,i){t(e,n),r(e,n,"=",i,";")},toString:function(){return i()+a()}})}var r=0,n=[],i=[],a=e(),f={};return{global:a,link:function(e){for(var t=0;t<i.length;++t)if(i[t]===e)return n[t];return t="g"+r++,n.push(t),i.push(e),t},block:e,proc:function(e,r){function n(){var e="a"+i.length;return i.push(e),e}var i=[];r=r||0;for(var a=0;a<r;++a)n();var o=(a=t()).toString;return f[e]=R(a,{arg:n,toString:function(){return C(["function(",i.join(),"){",o(),"}"])}})},scope:t,cond:function(){var e=C(arguments),r=t(),n=t(),i=r.toString,a=n.toString;return R(r,{then:function(){return r.apply(r,j(arguments)),this},else:function(){return n.apply(n,j(arguments)),this},toString:function(){var t=a();return t&&(t="else{"+t+"}"),C(["if(",e,"){",i(),"}",t])}})},compile:function(){var e=['"use strict";',a,"return {"];Object.keys(f).forEach(function(t){e.push('"',t,'":',f[t].toString(),",")}),e.push("}");var t=C(e).replace(/;/g,";\n").replace(/}/g,"}\n").replace(/{/g,"{\n");return Function.apply(null,n.concat(t)).apply(null,i)}}}(),r=e.link,n=e.global;e.id=le++,e.batchId="0";var i=r(se),a=e.shared={props:"a0"};Object.keys(se).forEach(function(e){a[e]=n.def(i,".",e)});var f=e.next={},o=e.current={};Object.keys(ue).forEach(function(e){Array.isArray(ie[e])&&(f[e]=n.def(a.next,".",e),o[e]=n.def(a.current,".",e))});var u=e.constants={};Object.keys(ce).forEach(function(e){u[e]=n.def(JSON.stringify(ce[e]))}),e.invoke=function(t,n){switch(n.type){case 0:var i=["this",a.context,a.props,e.batchId];return t.def(r(n.data),".call(",i.slice(0,Math.max(n.data.length+1,4)),")");case 1:return t.def(a.props,n.data);case 2:return t.def(a.context,n.data);case 3:return t.def("this",n.data);case 4:return n.data.append(e,t),n.data.ref;case 5:return n.data.toString();case 6:return n.data.map(function(r){return e.invoke(t,r)})}},e.attribCache={};var s={};return e.scopeAttrib=function(e){if((e=t.id(e))in s)return s[e];var n=c.scope[e];return n||(n=c.scope[e]=new Z),s[e]=r(n)},e}function w(e,t){var r=e.static,n=e.dynamic;if("framebuffer"in r){var i=r.framebuffer;return i?(i=u.getFramebuffer(i),I(function(e,t){var r=e.link(i),n=e.shared;return t.set(n.framebuffer,".next",r),n=n.context,t.set(n,".framebufferWidth",r+".width"),t.set(n,".framebufferHeight",r+".height"),r})):I(function(e,t){var r=e.shared;return t.set(r.framebuffer,".next","null"),r=r.context,t.set(r,".framebufferWidth",r+".drawingBufferWidth"),t.set(r,".framebufferHeight",r+".drawingBufferHeight"),"null"})}if("framebuffer"in n){var a=n.framebuffer;return P(a,function(e,t){var r=e.invoke(t,a),n=e.shared,i=n.framebuffer;r=t.def(i,".getFramebuffer(",r,")");return t.set(i,".next",r),n=n.context,t.set(n,".framebufferWidth",r+"?"+r+".width:"+n+".drawingBufferWidth"),t.set(n,".framebufferHeight",r+"?"+r+".height:"+n+".drawingBufferHeight"),r})}return null}function A(e,r,n){function i(e){if(e in a){var r=t.id(a[e]);return(e=I(function(){return r})).id=r,e}if(e in f){var n=f[e];return P(n,function(e,t){var r=e.invoke(t,n);return t.def(e.shared.strings,".id(",r,")")})}return null}var a=e.static,f=e.dynamic,o=i("frag"),u=i("vert"),s=null;return z(o)&&z(u)?(s=l.program(u.id,o.id,null,n),e=I(function(e,t){return e.link(s)})):e=new B(o&&o.thisDep||u&&u.thisDep,o&&o.contextDep||u&&u.contextDep,o&&o.propDep||u&&u.propDep,function(e,t){var r,n,i=e.shared.shader;return r=o?o.append(e,t):t.def(i,".","frag"),n=u?u.append(e,t):t.def(i,".","vert"),t.def(i+".program("+n+","+r+")")}),{frag:o,vert:u,progVar:e,program:s}}function k(e,t){function r(e,t){if(e in n){var r=0|n[e];return t?a.offset=r:a.instances=r,I(function(e,n){return t&&(e.OFFSET=r),r})}if(e in i){var f=i[e];return P(f,function(e,r){var n=e.invoke(r,f);return t&&(e.OFFSET=n),n})}if(t){if(s)return I(function(e,t){return e.OFFSET=0});if(o)return new B(u.thisDep,u.contextDep,u.propDep,function(e,t){return t.def(e.shared.vao+".currentVAO?"+e.shared.vao+".currentVAO.offset:0")})}else if(o)return new B(u.thisDep,u.contextDep,u.propDep,function(e,t){return t.def(e.shared.vao+".currentVAO?"+e.shared.vao+".currentVAO.instances:-1")});return null}var n=e.static,i=e.dynamic,a={},o=!1,u=function(){if("vao"in n){var e=n.vao;return null!==e&&null===c.getVAO(e)&&(e=c.createVAO(e)),o=!0,a.vao=e,I(function(t){var r=c.getVAO(e);return r?t.link(r):"null"})}if("vao"in i){o=!0;var t=i.vao;return P(t,function(e,r){var n=e.invoke(r,t);return r.def(e.shared.vao+".getVAO("+n+")")})}return null}(),s=!1,l=function(){if("elements"in n){var e=n.elements;if(a.elements=e,V(e)){var t=a.elements=f.create(e,!0);e=f.getElements(t);s=!0}else e&&(e=f.getElements(e),s=!0);return(t=I(function(t,r){if(e){var n=t.link(e);return t.ELEMENTS=n}return t.ELEMENTS=null})).value=e,t}if("elements"in i){s=!0;var r=i.elements;return P(r,function(e,t){var n=(i=e.shared).isBufferArgs,i=i.elements,a=e.invoke(t,r),f=t.def("null");n=t.def(n,"(",a,")"),a=e.cond(n).then(f,"=",i,".createStream(",a,");").else(f,"=",i,".getElements(",a,");");return t.entry(a),t.exit(e.cond(n).then(i,".destroyStream(",f,");")),e.ELEMENTS=f})}return o?new B(u.thisDep,u.contextDep,u.propDep,function(e,t){return t.def(e.shared.vao+".currentVAO?"+e.shared.elements+".getElements("+e.shared.vao+".currentVAO.elements):null")}):null}(),p=r("offset",!0),d=function(){if("primitive"in n){var e=n.primitive;return a.primitive=e,I(function(t,r){return re[e]})}if("primitive"in i){var t=i.primitive;return P(t,function(e,r){var n=e.constants.primTypes,i=e.invoke(r,t);return r.def(n,"[",i,"]")})}return s?z(l)?l.value?I(function(e,t){return t.def(e.ELEMENTS,".primType")}):I(function(){return 4}):new B(l.thisDep,l.contextDep,l.propDep,function(e,t){var r=e.ELEMENTS;return t.def(r,"?",r,".primType:",4)}):o?new B(u.thisDep,u.contextDep,u.propDep,function(e,t){return t.def(e.shared.vao+".currentVAO?"+e.shared.vao+".currentVAO.primitive:4")}):null}(),h=function(){if("count"in n){var e=0|n.count;return a.count=e,I(function(){return e})}if("count"in i){var t=i.count;return P(t,function(e,r){return e.invoke(r,t)})}return s?z(l)?l?p?new B(p.thisDep,p.contextDep,p.propDep,function(e,t){return t.def(e.ELEMENTS,".vertCount-",e.OFFSET)}):I(function(e,t){return t.def(e.ELEMENTS,".vertCount")}):I(function(){return-1}):new B(l.thisDep||p.thisDep,l.contextDep||p.contextDep,l.propDep||p.propDep,function(e,t){var r=e.ELEMENTS;return e.OFFSET?t.def(r,"?",r,".vertCount-",e.OFFSET,":-1"):t.def(r,"?",r,".vertCount:-1")}):o?new B(u.thisDep,u.contextDep,u.propDep,function(e,t){return t.def(e.shared.vao,".currentVAO?",e.shared.vao,".currentVAO.count:-1")}):null}(),m=r("instances",!1);return{elements:l,primitive:d,count:h,instances:m,offset:p,vao:u,vaoActive:o,elementsActive:s,static:a}}function _(e,r){var n=e.static,a=e.dynamic,f={};return Object.keys(n).forEach(function(e){var r=n[e],a=t.id(e),o=new Z;if(V(r))o.state=1,o.buffer=i.getBuffer(i.create(r,34962,!1,!0)),o.type=0;else if(s=i.getBuffer(r))o.state=1,o.buffer=s,o.type=0;else if("constant"in r){var u=r.constant;o.buffer="null",o.state=2,"number"==typeof u?o.x=u:we.forEach(function(e,t){t<u.length&&(o[e]=u[t])})}else{var s=V(r.buffer)?i.getBuffer(i.create(r.buffer,34962,!1,!0)):i.getBuffer(r.buffer),c=0|r.offset,l=0|r.stride,p=0|r.size,d=!!r.normalized,h=0;"type"in r&&(h=K[r.type]),r=0|r.divisor,o.buffer=s,o.state=1,o.size=p,o.normalized=d,o.type=h||s.dtype,o.offset=c,o.stride=l,o.divisor=r}f[e]=I(function(e,t){var r=e.attribCache;if(a in r)return r[a];var n={isStream:!1};return Object.keys(o).forEach(function(e){n[e]=o[e]}),o.buffer&&(n.buffer=e.link(o.buffer),n.type=n.type||n.buffer+".dtype"),r[a]=n})}),Object.keys(a).forEach(function(e){var t=a[e];f[e]=P(t,function(e,r){function n(e){r(u[e],"=",i,".",e,"|0;")}var i=e.invoke(r,t),a=e.shared,f=e.constants,o=a.isBufferArgs,u=(a=a.buffer,{isStream:r.def(!1)}),s=new Z;s.state=1,Object.keys(s).forEach(function(e){u[e]=r.def(""+s[e])});var c=u.buffer,l=u.type;return r("if(",o,"(",i,")){",u.isStream,"=true;",c,"=",a,".createStream(",34962,",",i,");",l,"=",c,".dtype;","}else{",c,"=",a,".getBuffer(",i,");","if(",c,"){",l,"=",c,".dtype;",'}else if("constant" in ',i,"){",u.state,"=",2,";","if(typeof "+i+'.constant === "number"){',u[we[0]],"=",i,".constant;",we.slice(1).map(function(e){return u[e]}).join("="),"=0;","}else{",we.map(function(e,t){return u[e]+"="+i+".constant.length>"+t+"?"+i+".constant["+t+"]:0;"}).join(""),"}}else{","if(",o,"(",i,".buffer)){",c,"=",a,".createStream(",34962,",",i,".buffer);","}else{",c,"=",a,".getBuffer(",i,".buffer);","}",l,'="type" in ',i,"?",f.glTypes,"[",i,".type]:",c,".dtype;",u.normalized,"=!!",i,".normalized;"),n("size"),n("offset"),n("stride"),n("divisor"),r("}}"),r.exit("if(",u.isStream,"){",a,".destroyStream(",c,");","}"),u})}),f}function O(e,t,n,i,f){function o(e){var t=s[e];t&&(p[e]=t)}var u=function(e,t){if("string"==typeof(r=e.static).frag&&"string"==typeof r.vert){if(0<Object.keys(t.dynamic).length)return null;var r=t.static,n=Object.keys(r);if(0<n.length&&"number"==typeof r[n[0]]){for(var i=[],a=0;a<n.length;++a)i.push([0|r[n[a]],n[a]]);return i}}return null}(e,t),s=function(e,t,r){function n(e){if(e in i){var r=i[e];e=!0;var n,f,o=0|r.x,u=0|r.y;return"width"in r?n=0|r.width:e=!1,"height"in r?f=0|r.height:e=!1,new B(!e&&t&&t.thisDep,!e&&t&&t.contextDep,!e&&t&&t.propDep,function(e,t){var i=e.shared.context,a=n;"width"in r||(a=t.def(i,".","framebufferWidth","-",o));var s=f;return"height"in r||(s=t.def(i,".","framebufferHeight","-",u)),[o,u,a,s]})}if(e in a){var s=a[e];return e=P(s,function(e,t){var r=e.invoke(t,s),n=e.shared.context,i=t.def(r,".x|0"),a=t.def(r,".y|0");return[i,a,t.def('"width" in ',r,"?",r,".width|0:","(",n,".","framebufferWidth","-",i,")"),r=t.def('"height" in ',r,"?",r,".height|0:","(",n,".","framebufferHeight","-",a,")")]}),t&&(e.thisDep=e.thisDep||t.thisDep,e.contextDep=e.contextDep||t.contextDep,e.propDep=e.propDep||t.propDep),e}return t?new B(t.thisDep,t.contextDep,t.propDep,function(e,t){var r=e.shared.context;return[0,0,t.def(r,".","framebufferWidth"),t.def(r,".","framebufferHeight")]}):null}var i=e.static,a=e.dynamic;if(e=n("viewport")){var f=e;e=new B(e.thisDep,e.contextDep,e.propDep,function(e,t){var r=f.append(e,t),n=e.shared.context;return t.set(n,".viewportWidth",r[2]),t.set(n,".viewportHeight",r[3]),r})}return{viewport:e,scissor_box:n("scissor.box")}}(e,h=w(e)),l=k(e),p=function(e,t){var r=e.static,n=e.dynamic,i={};return fe.forEach(function(e){function t(t,a){if(e in r){var o=t(r[e]);i[f]=I(function(){return o})}else if(e in n){var u=n[e];i[f]=P(u,function(e,t){return a(e,t,e.invoke(t,u))})}}var f=g(e);switch(e){case"cull.enable":case"blend.enable":case"dither":case"stencil.enable":case"depth.enable":case"scissor.enable":case"polygonOffset.enable":case"sample.alpha":case"sample.enable":case"depth.mask":return t(function(e){return e},function(e,t,r){return r});case"depth.func":return t(function(e){return _e[e]},function(e,t,r){return t.def(e.constants.compareFuncs,"[",r,"]")});case"depth.range":return t(function(e){return e},function(e,t,r){return[t.def("+",r,"[0]"),t=t.def("+",r,"[1]")]});case"blend.func":return t(function(e){return[ke["srcRGB"in e?e.srcRGB:e.src],ke["dstRGB"in e?e.dstRGB:e.dst],ke["srcAlpha"in e?e.srcAlpha:e.src],ke["dstAlpha"in e?e.dstAlpha:e.dst]]},function(e,t,r){function n(e,n){return t.def('"',e,n,'" in ',r,"?",r,".",e,n,":",r,".",e)}e=e.constants.blendFuncs;var i=n("src","RGB"),a=n("dst","RGB"),f=(i=t.def(e,"[",i,"]"),t.def(e,"[",n("src","Alpha"),"]"));return[i,a=t.def(e,"[",a,"]"),f,e=t.def(e,"[",n("dst","Alpha"),"]")]});case"blend.equation":return t(function(e){return"string"==typeof e?[$[e],$[e]]:"object"==typeof e?[$[e.rgb],$[e.alpha]]:void 0},function(e,t,r){var n=e.constants.blendEquations,i=t.def(),a=t.def();return(e=e.cond("typeof ",r,'==="string"')).then(i,"=",a,"=",n,"[",r,"];"),e.else(i,"=",n,"[",r,".rgb];",a,"=",n,"[",r,".alpha];"),t(e),[i,a]});case"blend.color":return t(function(e){return a(4,function(t){return+e[t]})},function(e,t,r){return a(4,function(e){return t.def("+",r,"[",e,"]")})});case"stencil.mask":return t(function(e){return 0|e},function(e,t,r){return t.def(r,"|0")});case"stencil.func":return t(function(e){return[_e[e.cmp||"keep"],e.ref||0,"mask"in e?e.mask:-1]},function(e,t,r){return[e=t.def('"cmp" in ',r,"?",e.constants.compareFuncs,"[",r,".cmp]",":",7680),t.def(r,".ref|0"),t=t.def('"mask" in ',r,"?",r,".mask|0:-1")]});case"stencil.opFront":case"stencil.opBack":return t(function(t){return["stencil.opBack"===e?1029:1028,Oe[t.fail||"keep"],Oe[t.zfail||"keep"],Oe[t.zpass||"keep"]]},function(t,r,n){function i(e){return r.def('"',e,'" in ',n,"?",a,"[",n,".",e,"]:",7680)}var a=t.constants.stencilOps;return["stencil.opBack"===e?1029:1028,i("fail"),i("zfail"),i("zpass")]});case"polygonOffset.offset":return t(function(e){return[0|e.factor,0|e.units]},function(e,t,r){return[t.def(r,".factor|0"),t=t.def(r,".units|0")]});case"cull.face":return t(function(e){var t=0;return"front"===e?t=1028:"back"===e&&(t=1029),t},function(e,t,r){return t.def(r,'==="front"?',1028,":",1029)});case"lineWidth":return t(function(e){return e},function(e,t,r){return r});case"frontFace":return t(function(e){return Ee[e]},function(e,t,r){return t.def(r+'==="cw"?2304:2305')});case"colorMask":return t(function(e){return e.map(function(e){return!!e})},function(e,t,r){return a(4,function(e){return"!!"+r+"["+e+"]"})});case"sample.coverage":return t(function(e){return["value"in e?e.value:1,!!e.invert]},function(e,t,r){return[t.def('"value" in ',r,"?+",r,".value:1"),t=t.def("!!",r,".invert")]})}}),i}(e),d=A(e,0,u);o("viewport"),o(g("scissor.box"));var h,m=0<Object.keys(p).length;if((h={framebuffer:h,draw:l,shader:d,state:p,dirty:m,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}}).profile=function(e){var t,r=e.static;if(e=e.dynamic,"profile"in r){var n=!!r.profile;(t=I(function(e,t){return n})).enable=n}else if("profile"in e){var i=e.profile;t=P(i,function(e,t){return e.invoke(t,i)})}return t}(e),h.uniforms=function(e,t){var r=e.static,n=e.dynamic,i={};return Object.keys(r).forEach(function(e){var t,n=r[e];if("number"==typeof n||"boolean"==typeof n)t=I(function(){return n});else if("function"==typeof n){var f=n._reglType;"texture2d"===f||"textureCube"===f?t=I(function(e){return e.link(n)}):"framebuffer"!==f&&"framebufferCube"!==f||(t=I(function(e){return e.link(n.color[0])}))}else b(n)&&(t=I(function(e){return e.global.def("[",a(n.length,function(e){return n[e]}),"]")}));t.value=n,i[e]=t}),Object.keys(n).forEach(function(e){var t=n[e];i[e]=P(t,function(e,r){return e.invoke(r,t)})}),i}(n),h.drawVAO=h.scopeVAO=l.vao,!h.drawVAO&&d.program&&!u&&r.angle_instanced_arrays&&l.static.elements){var y=!0;if(e=d.program.attributes.map(function(e){return e=t.static[e],y=y&&!!e,e}),y&&0<e.length){var v=c.getVAO(c.createVAO({attributes:e,elements:l.static.elements}));h.drawVAO=new B(null,null,null,function(e,t){return e.link(v)}),h.useVAO=!0}}return u?h.useVAO=!0:h.attributes=_(t),h.context=function(e){var t=e.static,r=e.dynamic,n={};return Object.keys(t).forEach(function(e){var r=t[e];n[e]=I(function(e,t){return"number"==typeof r||"boolean"==typeof r?""+r:e.link(r)})}),Object.keys(r).forEach(function(e){var t=r[e];n[e]=P(t,function(e,r){return e.invoke(r,t)})}),n}(i),h}function E(e,t,r){var n=e.shared.context,i=e.scope();Object.keys(r).forEach(function(a){t.save(n,"."+a);var f=r[a].append(e,t);Array.isArray(f)?i(n,".",a,"=[",f.join(),"];"):i(n,".",a,"=",f,";")}),t(i)}function D(e,t,r,n){var i,a=(o=e.shared).gl,f=o.framebuffer;te&&(i=t.def(o.extensions,".webgl_draw_buffers"));var o=(u=e.constants).drawBuffer,u=u.backBuffer;e=r?r.append(e,t):t.def(f,".next"),n||t("if(",e,"!==",f,".cur){"),t("if(",e,"){",a,".bindFramebuffer(",36160,",",e,".framebuffer);"),te&&t(i,".drawBuffersWEBGL(",o,"[",e,".colorAttachments.length]);"),t("}else{",a,".bindFramebuffer(",36160,",null);"),te&&t(i,".drawBuffersWEBGL(",u,");"),t("}",f,".cur=",e,";"),n||t("}")}function T(e,t,r){var n=e.shared,i=n.gl,f=e.current,o=e.next,u=n.current,s=n.next,c=e.cond(u,".dirty");fe.forEach(function(t){var n,l;if(!((t=g(t))in r.state))if(t in o){n=o[t],l=f[t];var p=a(ie[t].length,function(e){return c.def(n,"[",e,"]")});c(e.cond(p.map(function(e,t){return e+"!=="+l+"["+t+"]"}).join("||")).then(i,".",ue[t],"(",p,");",p.map(function(e,t){return l+"["+t+"]="+e}).join(";"),";"))}else n=c.def(s,".",t),p=e.cond(n,"!==",u,".",t),c(p),t in oe?p(e.cond(n).then(i,".enable(",oe[t],");").else(i,".disable(",oe[t],");"),u,".",t,"=",n,";"):p(i,".",ue[t],"(",n,");",u,".",t,"=",n,";")}),0===Object.keys(r.state).length&&c(u,".dirty=false;"),t(c)}function S(e,t,r,n){var i=e.shared,a=e.current,f=i.current,o=i.gl;F(Object.keys(r)).forEach(function(i){var u=r[i];if(!n||n(u)){var s=u.append(e,t);if(oe[i]){var c=oe[i];z(u)?t(o,s?".enable(":".disable(",c,");"):t(e.cond(s).then(o,".enable(",c,");").else(o,".disable(",c,");")),t(f,".",i,"=",s,";")}else if(b(s)){var l=a[i];t(o,".",ue[i],"(",s,");",s.map(function(e,t){return l+"["+t+"]="+e}).join(";"),";")}else t(o,".",ue[i],"(",s,");",f,".",i,"=",s,";")}})}function L(e,t){ee&&(e.instancing=t.def(e.shared.extensions,".angle_instanced_arrays"))}function M(e,t,r,n,i){function a(){return"undefined"==typeof performance?"Date.now()":"performance.now()"}function f(e){e(s=t.def(),"=",a(),";"),"string"==typeof i?e(p,".count+=",i,";"):e(p,".count++;"),h&&(n?e(c=t.def(),"=",m,".getNumPendingQueries();"):e(m,".beginQuery(",p,");"))}function o(e){e(p,".cpuTime+=",a(),"-",s,";"),h&&(n?e(m,".pushScopeStats(",c,",",m,".getNumPendingQueries(),",p,");"):e(m,".endQuery();"))}function u(e){var r=t.def(d,".profile");t(d,".profile=",e,";"),t.exit(d,".profile=",r,";")}var s,c,l=e.shared,p=e.stats,d=l.current,m=l.timer;if(r=r.profile){if(z(r))return void(r.enable?(f(t),o(t.exit),u("true")):u("false"));u(r=r.append(e,t))}else r=t.def(d,".profile");f(l=e.block()),t("if(",r,"){",l,"}"),o(e=e.block()),t.exit("if(",r,"){",e,"}")}function H(e,t,r,n,i){function a(r,n,i){function a(){t("if(!",c,".buffer){",u,".enableVertexAttribArray(",s,");}");var r,a=i.type;r=i.size?t.def(i.size,"||",n):n,t("if(",c,".type!==",a,"||",c,".size!==",r,"||",d.map(function(e){return c+"."+e+"!=="+i[e]}).join("||"),"){",u,".bindBuffer(",34962,",",l,".buffer);",u,".vertexAttribPointer(",[s,r,a,i.normalized,i.stride,i.offset],");",c,".type=",a,";",c,".size=",r,";",d.map(function(e){return c+"."+e+"="+i[e]+";"}).join(""),"}"),ee&&(a=i.divisor,t("if(",c,".divisor!==",a,"){",e.instancing,".vertexAttribDivisorANGLE(",[s,a],");",c,".divisor=",a,";}"))}function o(){t("if(",c,".buffer){",u,".disableVertexAttribArray(",s,");",c,".buffer=null;","}if(",we.map(function(e,t){return c+"."+e+"!=="+p[t]}).join("||"),"){",u,".vertexAttrib4f(",s,",",p,");",we.map(function(e,t){return c+"."+e+"="+p[t]+";"}).join(""),"}")}var u=f.gl,s=t.def(r,".location"),c=t.def(f.attributes,"[",s,"]");r=i.state;var l=i.buffer,p=[i.x,i.y,i.z,i.w],d=["buffer","normalized","offset","stride"];1===r?a():2===r?o():(t("if(",r,"===",1,"){"),a(),t("}else{"),o(),t("}"))}var f=e.shared;n.forEach(function(n){var f,o=n.name,u=r.attributes[o];if(u){if(!i(u))return;f=u.append(e,t)}else{if(!i(De))return;var s=e.scopeAttrib(o);f={},Object.keys(new Z).forEach(function(e){f[e]=t.def(s,".",e)})}a(e.link(n),function(e){switch(e){case 35664:case 35667:case 35671:return 2;case 35665:case 35668:case 35672:return 3;case 35666:case 35669:case 35673:return 4;default:return 1}}(n.info.type),f)})}function U(e,r,n,i,f,o){for(var u,s=e.shared,c=s.gl,l={},p=0;p<i.length;++p){var d=(x=i[p]).name,h=x.info.type,m=x.info.size,g=n.uniforms[d];if(1<m){if(!g)continue;var y=d.replace("[0]","");if(l[y])continue;l[y]=1}var v,x=e.link(x)+".location";if(g){if(!f(g))continue;if(z(g)){if(d=g.value,35678===h||35680===h)r(c,".uniform1i(",x,",",(h=e.link(d._texture||d.color[0]._texture))+".bind());"),r.exit(h,".unbind();");else if(35674===h||35675===h||35676===h)m=e.global.def("new Float32Array(["+Array.prototype.slice.call(d)+"])"),d=2,35675===h?d=3:35676===h&&(d=4),r(c,".uniformMatrix",d,"fv(",x,",false,",m,");");else{switch(h){case 5126:u="1f";break;case 35664:u="2f";break;case 35665:u="3f";break;case 35666:u="4f";break;case 35670:case 5124:u="1i";break;case 35671:case 35667:u="2i";break;case 35672:case 35668:u="3i";break;case 35673:u="4i";break;case 35669:u="4i"}1<m?(u+="v",d=e.global.def("["+Array.prototype.slice.call(d)+"]")):d=b(d)?Array.prototype.slice.call(d):d,r(c,".uniform",u,"(",x,",",d,");")}continue}v=g.append(e,r)}else{if(!f(De))continue;v=r.def(s.uniforms,"[",t.id(d),"]")}switch(35678===h?r("if(",v,"&&",v,'._reglType==="framebuffer"){',v,"=",v,".color[0];","}"):35680===h&&r("if(",v,"&&",v,'._reglType==="framebufferCube"){',v,"=",v,".color[0];","}"),d=1,h){case 35678:case 35680:h=r.def(v,"._texture"),r(c,".uniform1i(",x,",",h,".bind());"),r.exit(h,".unbind();");continue;case 5124:case 35670:u="1i";break;case 35667:case 35671:u="2i",d=2;break;case 35668:case 35672:u="3i",d=3;break;case 35669:case 35673:u="4i",d=4;break;case 5126:u="1f";break;case 35664:u="2f",d=2;break;case 35665:u="3f",d=3;break;case 35666:u="4f",d=4;break;case 35674:u="Matrix2fv";break;case 35675:u="Matrix3fv";break;case 35676:u="Matrix4fv"}if(-1===u.indexOf("Matrix")&&1<m&&(u+="v",d=1),"M"===u.charAt(0)){r(c,".uniform",u,"(",x,",");x=Math.pow(h-35674+2,2);var w=e.global.def("new Float32Array(",x,")");Array.isArray(v)?r("false,(",a(x,function(e){return w+"["+e+"]="+v[e]}),",",w,")"):r("false,(Array.isArray(",v,")||",v," instanceof Float32Array)?",v,":(",a(x,function(e){return w+"["+e+"]="+v+"["+e+"]"}),",",w,")"),r(");")}else{if(1<d){h=[];var A=[];for(m=0;m<d;++m)Array.isArray(v)?A.push(v[m]):A.push(r.def(v+"["+m+"]")),o&&h.push(r.def());o&&r("if(!",e.batchId,"||",h.map(function(e,t){return e+"!=="+A[t]}).join("||"),"){",h.map(function(e,t){return e+"="+A[t]+";"}).join("")),r(c,".uniform",u,"(",x,",",A.join(","),");")}else o&&(h=r.def(),r("if(!",e.batchId,"||",h,"!==",v,"){",h,"=",v,";")),r(c,".uniform",u,"(",x,",",v,");");o&&r("}")}}}function N(e,t,r,n){function i(i){var a=p[i];return a?a.contextDep&&n.contextDynamic||a.propDep?a.append(e,r):a.append(e,t):t.def(l,".",i)}function a(){function e(){r(u,".drawElementsInstancedANGLE(",[h,b,g,m+"<<(("+g+"-5121)>>1)",o],");")}function t(){r(u,".drawArraysInstancedANGLE(",[h,m,b,o],");")}d&&"null"!==d?y?e():(r("if(",d,"){"),e(),r("}else{"),t(),r("}")):t()}function f(){function e(){r(c+".drawElements("+[h,b,g,m+"<<(("+g+"-5121)>>1)"]+");")}function t(){r(c+".drawArrays("+[h,m,b]+");")}d&&"null"!==d?y?e():(r("if(",d,"){"),e(),r("}else{"),t(),r("}")):t()}var o,u,s=e.shared,c=s.gl,l=s.draw,p=n.draw,d=function(){var i=p.elements,a=t;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(e,a),p.elementsActive&&a("if("+i+")"+c+".bindBuffer(34963,"+i+".buffer.buffer);")):(i=a.def(),a(i,"=",l,".","elements",";","if(",i,"){",c,".bindBuffer(",34963,",",i,".buffer.buffer);}","else if(",s.vao,".currentVAO){",i,"=",e.shared.elements+".getElements("+s.vao,".currentVAO.elements);",ne?"":"if("+i+")"+c+".bindBuffer(34963,"+i+".buffer.buffer);","}")),i}(),h=i("primitive"),m=i("offset"),b=function(){var i=p.count,a=t;return i?((i.contextDep&&n.contextDynamic||i.propDep)&&(a=r),i=i.append(e,a)):i=a.def(l,".","count"),i}();if("number"==typeof b){if(0===b)return}else r("if(",b,"){"),r.exit("}");ee&&(o=i("instances"),u=e.instancing);var g=d+".type",y=p.elements&&z(p.elements)&&!p.vaoActive;ee&&("number"!=typeof o||0<=o)?"string"==typeof o?(r("if(",o,">0){"),a(),r("}else if(",o,"<0){"),f(),r("}")):a():f()}function q(e,t,r,n,i){return i=(t=x()).proc("body",i),ee&&(t.instancing=i.def(t.shared.extensions,".angle_instanced_arrays")),e(t,i,r,n),t.compile().body}function Q(e,t,r,n){L(e,t),r.useVAO?r.drawVAO?t(e.shared.vao,".setVAO(",r.drawVAO.append(e,t),");"):t(e.shared.vao,".setVAO(",e.shared.vao,".targetVAO);"):(t(e.shared.vao,".setVAO(null);"),H(e,t,r,n.attributes,function(){return!0})),U(e,t,r,n.uniforms,function(){return!0},!1),N(e,t,t,r)}function G(e,t,r,n){function i(){return!0}e.batchId="a1",L(e,t),H(e,t,r,n.attributes,i),U(e,t,r,n.uniforms,i,!1),N(e,t,t,r)}function Y(e,t,r,n){function i(e){return e.contextDep&&f||e.propDep}function a(e){return!i(e)}L(e,t);var f=r.contextDep,o=t.def(),u=t.def();e.shared.props=u,e.batchId=o;var s=e.scope(),c=e.scope();t(s.entry,"for(",o,"=0;",o,"<","a1",";++",o,"){",u,"=","a0","[",o,"];",c,"}",s.exit),r.needsContext&&E(e,c,r.context),r.needsFramebuffer&&D(e,c,r.framebuffer),S(e,c,r.state,i),r.profile&&i(r.profile)&&M(e,c,r,!1,!0),n?(r.useVAO?r.drawVAO?i(r.drawVAO)?c(e.shared.vao,".setVAO(",r.drawVAO.append(e,c),");"):s(e.shared.vao,".setVAO(",r.drawVAO.append(e,s),");"):s(e.shared.vao,".setVAO(",e.shared.vao,".targetVAO);"):(s(e.shared.vao,".setVAO(null);"),H(e,s,r,n.attributes,a),H(e,c,r,n.attributes,i)),U(e,s,r,n.uniforms,a,!1),U(e,c,r,n.uniforms,i,!0),N(e,s,c,r)):(t=e.global.def("{}"),n=r.shader.progVar.append(e,c),u=c.def(n,".id"),s=c.def(t,"[",u,"]"),c(e.shared.gl,".useProgram(",n,".program);","if(!",s,"){",s,"=",t,"[",u,"]=",e.link(function(t){return q(G,e,r,t,2)}),"(",n,");}",s,".call(this,a0[",o,"],",o,");"))}function X(e,r){function n(t){var n=r.shader[t];n&&i.set(a.shader,"."+t,n.append(e,i))}var i=e.proc("scope",3);e.batchId="a2";var a=e.shared,f=a.current;E(e,i,r.context),r.framebuffer&&r.framebuffer.append(e,i),F(Object.keys(r.state)).forEach(function(t){var n=r.state[t].append(e,i);b(n)?n.forEach(function(r,n){i.set(e.next[t],"["+n+"]",r)}):i.set(a.next,"."+t,n)}),M(e,i,r,!0,!0),["elements","offset","count","instances","primitive"].forEach(function(t){var n=r.draw[t];n&&i.set(a.draw,"."+t,""+n.append(e,i))}),Object.keys(r.uniforms).forEach(function(n){var f=r.uniforms[n].append(e,i);Array.isArray(f)&&(f="["+f.join()+"]"),i.set(a.uniforms,"["+t.id(n)+"]",f)}),Object.keys(r.attributes).forEach(function(t){var n=r.attributes[t].append(e,i),a=e.scopeAttrib(t);Object.keys(new Z).forEach(function(e){i.set(a,"."+e,n[e])})}),r.scopeVAO&&i.set(a.vao,".targetVAO",r.scopeVAO.append(e,i)),n("vert"),n("frag"),0<Object.keys(r.state).length&&(i(f,".dirty=true;"),i.exit(f,".dirty=true;")),i("a1(",e.shared.context,",a0,",e.batchId,");")}function J(e,t,r){var n=t.static[r];if(n&&function(e){if("object"==typeof e&&!b(e)){for(var t=Object.keys(e),r=0;r<t.length;++r)if(W.isDynamic(e[t[r]]))return!0;return!1}}(n)){var i=e.global,a=Object.keys(n),f=!1,o=!1,u=!1,s=e.global.def("{}");a.forEach(function(t){var r=n[t];if(W.isDynamic(r))"function"==typeof r&&(r=n[t]=W.unbox(r)),t=P(r,null),f=f||t.thisDep,u=u||t.propDep,o=o||t.contextDep;else{switch(i(s,".",t,"="),typeof r){case"number":i(r);break;case"string":i('"',r,'"');break;case"object":Array.isArray(r)&&i("[",r.join(),"]");break;default:i(e.link(r))}i(";")}}),t.dynamic[r]=new W.DynamicVariable(4,{thisDep:f,contextDep:o,propDep:u,ref:s,append:function(e,t){a.forEach(function(r){var i=n[r];W.isDynamic(i)&&(i=e.invoke(t,i),t(s,".",r,"=",i,";"))})}}),delete t.static[r]}}var Z=c.Record,$={add:32774,subtract:32778,"reverse subtract":32779};r.ext_blend_minmax&&($.min=32775,$.max=32776);var ee=r.angle_instanced_arrays,te=r.webgl_draw_buffers,ne=r.oes_vertex_array_object,ie={dirty:!0,profile:m.profile},ae={},fe=[],oe={},ue={};y("dither",3024),y("blend.enable",3042),v("blend.color","blendColor",[0,0,0,0]),v("blend.equation","blendEquationSeparate",[32774,32774]),v("blend.func","blendFuncSeparate",[1,0,1,0]),y("depth.enable",2929,!0),v("depth.func","depthFunc",513),v("depth.range","depthRange",[0,1]),v("depth.mask","depthMask",!0),v("colorMask","colorMask",[!0,!0,!0,!0]),y("cull.enable",2884),v("cull.face","cullFace",1029),v("frontFace","frontFace",2305),v("lineWidth","lineWidth",1),y("polygonOffset.enable",32823),v("polygonOffset.offset","polygonOffset",[0,0]),y("sample.alpha",32926),y("sample.enable",32928),v("sample.coverage","sampleCoverage",[1,!1]),y("stencil.enable",2960),v("stencil.mask","stencilMask",-1),v("stencil.func","stencilFunc",[519,0,-1]),v("stencil.opFront","stencilOpSeparate",[1028,7680,7680,7680]),v("stencil.opBack","stencilOpSeparate",[1029,7680,7680,7680]),y("scissor.enable",3089),v("scissor.box","scissor",[0,0,e.drawingBufferWidth,e.drawingBufferHeight]),v("viewport","viewport",[0,0,e.drawingBufferWidth,e.drawingBufferHeight]);var se={gl:e,context:d,strings:t,next:ae,current:ie,draw:p,elements:f,buffer:i,shader:l,attributes:c.state,vao:c,uniforms:s,framebuffer:u,extensions:r,timer:h,isBufferArgs:V},ce={primTypes:re,compareFuncs:_e,blendFuncs:ke,blendEquations:$,stencilOps:Oe,glTypes:K,orientationType:Ee};te&&(ce.backBuffer=[1029],ce.drawBuffer=a(n.maxDrawbuffers,function(e){return 0===e?[0]:a(e,function(e){return 36064+e})}));var le=0;return{next:ae,current:ie,procs:function(){var e=x(),t=e.proc("poll"),i=e.proc("refresh"),f=e.block();t(f),i(f);var o,u=e.shared,s=u.gl,c=u.next,l=u.current;f(l,".dirty=false;"),D(e,t),D(e,i,null,!0),ee&&(o=e.link(ee)),r.oes_vertex_array_object&&i(e.link(r.oes_vertex_array_object),".bindVertexArrayOES(null);");for(var p=0;p<n.maxAttributes;++p){var d=i.def(u.attributes,"[",p,"]"),h=e.cond(d,".buffer");h.then(s,".enableVertexAttribArray(",p,");",s,".bindBuffer(",34962,",",d,".buffer.buffer);",s,".vertexAttribPointer(",p,",",d,".size,",d,".type,",d,".normalized,",d,".stride,",d,".offset);").else(s,".disableVertexAttribArray(",p,");",s,".vertexAttrib4f(",p,",",d,".x,",d,".y,",d,".z,",d,".w);",d,".buffer=null;"),i(h),ee&&i(o,".vertexAttribDivisorANGLE(",p,",",d,".divisor);")}return i(e.shared.vao,".currentVAO=null;",e.shared.vao,".setVAO(",e.shared.vao,".targetVAO);"),Object.keys(oe).forEach(function(r){var n=oe[r],a=f.def(c,".",r),o=e.block();o("if(",a,"){",s,".enable(",n,")}else{",s,".disable(",n,")}",l,".",r,"=",a,";"),i(o),t("if(",a,"!==",l,".",r,"){",o,"}")}),Object.keys(ue).forEach(function(r){var n,o,u=ue[r],p=ie[r],d=e.block();d(s,".",u,"("),b(p)?(u=p.length,n=e.global.def(c,".",r),o=e.global.def(l,".",r),d(a(u,function(e){return n+"["+e+"]"}),");",a(u,function(e){return o+"["+e+"]="+n+"["+e+"];"}).join("")),t("if(",a(u,function(e){return n+"["+e+"]!=="+o+"["+e+"]"}).join("||"),"){",d,"}")):(n=f.def(c,".",r),o=f.def(l,".",r),d(n,");",l,".",r,"=",n,";"),t("if(",n,"!==",o,"){",d,"}")),i(d)}),e.compile()}(),compile:function(e,t,r,n,i){var a=x();a.stats=a.link(i),Object.keys(t.static).forEach(function(e){J(a,t,e)}),Ae.forEach(function(t){J(a,e,t)});var f=O(e,t,r,n);return function(e,t){var r=e.proc("draw",1);L(e,r),E(e,r,t.context),D(e,r,t.framebuffer),T(e,r,t),S(e,r,t.state),M(e,r,t,!1,!0);var n=t.shader.progVar.append(e,r);if(r(e.shared.gl,".useProgram(",n,".program);"),t.shader.program)Q(e,r,t,t.shader.program);else{r(e.shared.vao,".setVAO(null);");var i=e.global.def("{}"),a=r.def(n,".id"),f=r.def(i,"[",a,"]");r(e.cond(f).then(f,".call(this,a0);").else(f,"=",i,"[",a,"]=",e.link(function(r){return q(Q,e,t,r,1)}),"(",n,");",f,".call(this,a0);"))}0<Object.keys(t.state).length&&r(e.shared.current,".dirty=true;"),e.shared.vao&&r(e.shared.vao,".setVAO(null);")}(a,f),X(a,f),function(e,t){function r(e){return e.contextDep&&i||e.propDep}var n=e.proc("batch",2);e.batchId="0",L(e,n);var i=!1,a=!0;Object.keys(t.context).forEach(function(e){i=i||t.context[e].propDep}),i||(E(e,n,t.context),a=!1);var f=!1;if((o=t.framebuffer)?(o.propDep?i=f=!0:o.contextDep&&i&&(f=!0),f||D(e,n,o)):D(e,n,null),t.state.viewport&&t.state.viewport.propDep&&(i=!0),T(e,n,t),S(e,n,t.state,function(e){return!r(e)}),t.profile&&r(t.profile)||M(e,n,t,!1,"a1"),t.contextDep=i,t.needsContext=a,t.needsFramebuffer=f,(a=t.shader.progVar).contextDep&&i||a.propDep)Y(e,n,t,null);else if(a=a.append(e,n),n(e.shared.gl,".useProgram(",a,".program);"),t.shader.program)Y(e,n,t,t.shader.program);else{n(e.shared.vao,".setVAO(null);");var o=e.global.def("{}"),u=(f=n.def(a,".id"),n.def(o,"[",f,"]"));n(e.cond(u).then(u,".call(this,a0,a1);").else(u,"=",o,"[",f,"]=",e.link(function(r){return q(Y,e,t,r,2)}),"(",a,");",u,".call(this,a0,a1);"))}0<Object.keys(t.state).length&&n(e.shared.current,".dirty=true;"),e.shared.vao&&n(e.shared.vao,".setVAO(null);")}(a,f),R(a.compile(),{destroy:function(){f.shader.program.destroy()}})}}}function M(e,t){for(var r=0;r<e.length;++r)if(e[r]===t)return r;return-1}var R=function(e,t){for(var r=Object.keys(t),n=0;n<r.length;++n)e[r[n]]=t[r[n]];return e},H=0,W={DynamicVariable:e,define:function(r,n){return new e(r,t(n+""))},isDynamic:function(t){return"function"==typeof t&&!t._reglType||t instanceof e},unbox:function t(r,n){return"function"==typeof r?new e(0,r):"number"==typeof r||"boolean"==typeof r?new e(5,r):Array.isArray(r)?new e(6,r.map(function(e,r){return t(e,n+"["+r+"]")})):r instanceof e?r:void 0},accessor:t},U={next:"function"==typeof requestAnimationFrame?function(e){return requestAnimationFrame(e)}:function(e){return setTimeout(e,16)},cancel:"function"==typeof cancelAnimationFrame?function(e){return cancelAnimationFrame(e)}:clearTimeout},N="undefined"!=typeof performance&&performance.now?function(){return performance.now()}:function(){return+new Date},q=o();q.zero=o();var Q=function(e,t){var r=1;t.ext_texture_filter_anisotropic&&(r=e.getParameter(34047));var n=1,i=1;t.webgl_draw_buffers&&(n=e.getParameter(34852),i=e.getParameter(36063));var a=!!t.oes_texture_float;if(a){a=e.createTexture(),e.bindTexture(3553,a),e.texImage2D(3553,0,6408,1,1,0,6408,5126,null);var f=e.createFramebuffer();if(e.bindFramebuffer(36160,f),e.framebufferTexture2D(36160,36064,3553,a,0),e.bindTexture(3553,null),36053!==e.checkFramebufferStatus(36160))a=!1;else{e.viewport(0,0,1,1),e.clearColor(1,0,0,1),e.clear(16384);var o=q.allocType(5126,4);e.readPixels(0,0,1,1,6408,5126,o),e.getError()?a=!1:(e.deleteFramebuffer(f),e.deleteTexture(a),a=1===o[0]),q.freeType(o)}}return o=!0,"undefined"!=typeof navigator&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent))||(o=e.createTexture(),f=q.allocType(5121,36),e.activeTexture(33984),e.bindTexture(34067,o),e.texImage2D(34069,0,6408,3,3,0,6408,5121,f),q.freeType(f),e.bindTexture(34067,null),e.deleteTexture(o),o=!e.getError()),{colorBits:[e.getParameter(3410),e.getParameter(3411),e.getParameter(3412),e.getParameter(3413)],depthBits:e.getParameter(3414),stencilBits:e.getParameter(3415),subpixelBits:e.getParameter(3408),extensions:Object.keys(t).filter(function(e){return!!t[e]}),maxAnisotropic:r,maxDrawbuffers:n,maxColorAttachments:i,pointSizeDims:e.getParameter(33901),lineWidthDims:e.getParameter(33902),maxViewportDims:e.getParameter(3386),maxCombinedTextureUnits:e.getParameter(35661),maxCubeMapSize:e.getParameter(34076),maxRenderbufferSize:e.getParameter(34024),maxTextureUnits:e.getParameter(34930),maxTextureSize:e.getParameter(3379),maxAttributes:e.getParameter(34921),maxVertexUniforms:e.getParameter(36347),maxVertexTextureUnits:e.getParameter(35660),maxVaryingVectors:e.getParameter(36348),maxFragmentUniforms:e.getParameter(36349),glsl:e.getParameter(35724),renderer:e.getParameter(7937),vendor:e.getParameter(7936),version:e.getParameter(7938),readFloat:a,npotTextureCube:o}},G=function(e){return e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Float32Array||e instanceof Float64Array||e instanceof Uint8ClampedArray},Y=function(e){return Object.keys(e).map(function(t){return e[t]})},X={shape:function(e){for(var t=[];e.length;e=e[0])t.push(e.length);return t},flatten:function(e,t,r,n){var i=1;if(t.length)for(var a=0;a<t.length;++a)i*=t[a];else i=0;switch(r=n||q.allocType(r,i),t.length){case 0:break;case 1:for(n=t[0],t=0;t<n;++t)r[t]=e[t];break;case 2:for(n=t[0],t=t[1],a=i=0;a<n;++a)for(var f=e[a],o=0;o<t;++o)r[i++]=f[o];break;case 3:s(e,t[0],t[1],t[2],r,0);break;default:!function e(t,r,n,i,a){for(var f=1,o=n+1;o<r.length;++o)f*=r[o];var u=r[n];if(4==r.length-n){var c=r[n+1],l=r[n+2];for(r=r[n+3],o=0;o<u;++o)s(t[o],c,l,r,i,a),a+=f}else for(o=0;o<u;++o)e(t[o],r,n+1,i,a),a+=f}(e,t,0,r,0)}return r}},J={"[object Int8Array]":5120,"[object Int16Array]":5122,"[object Int32Array]":5124,"[object Uint8Array]":5121,"[object Uint8ClampedArray]":5121,"[object Uint16Array]":5123,"[object Uint32Array]":5125,"[object Float32Array]":5126,"[object Float64Array]":5121,"[object ArrayBuffer]":5121},K={int8:5120,int16:5122,int32:5124,uint8:5121,uint16:5123,uint32:5125,float:5126,float32:5126},Z={dynamic:35048,stream:35040,static:35044},$=X.flatten,ee=X.shape,te=[];te[5120]=1,te[5122]=2,te[5124]=4,te[5121]=1,te[5123]=2,te[5125]=4,te[5126]=4;var re={points:0,point:0,lines:1,line:1,triangles:4,triangle:4,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},ne=new Float32Array(1),ie=new Uint32Array(ne.buffer),ae=[9984,9986,9985,9987],fe=[0,6409,6410,6407,6408],oe={};oe[6409]=oe[6406]=oe[6402]=1,oe[34041]=oe[6410]=2,oe[6407]=oe[35904]=3,oe[6408]=oe[35906]=4;var ue=g("HTMLCanvasElement"),se=g("OffscreenCanvas"),ce=g("CanvasRenderingContext2D"),le=g("ImageBitmap"),pe=g("HTMLImageElement"),de=g("HTMLVideoElement"),he=Object.keys(J).concat([ue,se,ce,le,pe,de]),me=[];me[5121]=1,me[5126]=4,me[36193]=2,me[5123]=2,me[5125]=4;var be=[];be[32854]=2,be[32855]=2,be[36194]=2,be[34041]=4,be[33776]=.5,be[33777]=.5,be[33778]=1,be[33779]=1,be[35986]=.5,be[35987]=1,be[34798]=1,be[35840]=.5,be[35841]=.25,be[35842]=.5,be[35843]=.25,be[36196]=.5;var ge=[];ge[32854]=2,ge[32855]=2,ge[36194]=2,ge[33189]=2,ge[36168]=1,ge[34041]=4,ge[35907]=4,ge[34836]=16,ge[34842]=8,ge[34843]=6;var ye=function(e,t,r,n,i){function a(e){this.id=s++,this.refCount=1,this.renderbuffer=e,this.format=32854,this.height=this.width=0,i.profile&&(this.stats={size:0})}function f(t){var r=t.renderbuffer;e.bindRenderbuffer(36161,null),e.deleteRenderbuffer(r),t.renderbuffer=null,t.refCount=0,delete c[t.id],n.renderbufferCount--}var o={rgba4:32854,rgb565:36194,"rgb5 a1":32855,depth:33189,stencil:36168,"depth stencil":34041};t.ext_srgb&&(o.srgba=35907),t.ext_color_buffer_half_float&&(o.rgba16f=34842,o.rgb16f=34843),t.webgl_color_buffer_float&&(o.rgba32f=34836);var u=[];Object.keys(o).forEach(function(e){u[o[e]]=e});var s=0,c={};return a.prototype.decRef=function(){0>=--this.refCount&&f(this)},i.profile&&(n.getTotalRenderbufferSize=function(){var e=0;return Object.keys(c).forEach(function(t){e+=c[t].stats.size}),e}),{create:function(t,r){function f(t,r){var n=0,a=0,c=32854;if("object"==typeof t&&t?("shape"in t?(n=0|(a=t.shape)[0],a=0|a[1]):("radius"in t&&(n=a=0|t.radius),"width"in t&&(n=0|t.width),"height"in t&&(a=0|t.height)),"format"in t&&(c=o[t.format])):"number"==typeof t?(n=0|t,a="number"==typeof r?0|r:n):t||(n=a=1),n!==s.width||a!==s.height||c!==s.format)return f.width=s.width=n,f.height=s.height=a,s.format=c,e.bindRenderbuffer(36161,s.renderbuffer),e.renderbufferStorage(36161,c,n,a),i.profile&&(s.stats.size=ge[s.format]*s.width*s.height),f.format=u[s.format],f}var s=new a(e.createRenderbuffer());return c[s.id]=s,n.renderbufferCount++,f(t,r),f.resize=function(t,r){var n=0|t,a=0|r||n;return n===s.width&&a===s.height?f:(f.width=s.width=n,f.height=s.height=a,e.bindRenderbuffer(36161,s.renderbuffer),e.renderbufferStorage(36161,s.format,n,a),i.profile&&(s.stats.size=ge[s.format]*s.width*s.height),f)},f._reglType="renderbuffer",f._renderbuffer=s,i.profile&&(f.stats=s.stats),f.destroy=function(){s.decRef()},f},clear:function(){Y(c).forEach(f)},restore:function(){Y(c).forEach(function(t){t.renderbuffer=e.createRenderbuffer(),e.bindRenderbuffer(36161,t.renderbuffer),e.renderbufferStorage(36161,t.format,t.width,t.height)}),e.bindRenderbuffer(36161,null)}}},ve=[];ve[6408]=4,ve[6407]=3;var xe=[];xe[5121]=1,xe[5126]=4,xe[36193]=2;var we=["x","y","z","w"],Ae="blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset".split(" "),ke={0:0,1:1,zero:0,one:1,"src color":768,"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},_e={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},Oe={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},Ee={cw:2304,ccw:2305},De=new B(!1,!1,!1,function(){});return function(e){function t(){if(0===J.length)A&&A.update(),ee=null;else{ee=U.next(t),l();for(var e=J.length-1;0<=e;--e){var r=J[e];r&&r(C,null,0)}b.flush(),A&&A.update()}}function r(){!ee&&0<J.length&&(ee=U.next(t))}function n(){ee&&(U.cancel(t),ee=null)}function a(e){e.preventDefault(),n(),K.forEach(function(e){e()})}function f(e){b.getError(),y.restore(),I.restore(),F.restore(),P.restore(),H.restore(),q.restore(),z.restore(),A&&A.restore(),G.procs.refresh(),r(),Z.forEach(function(e){e()})}function o(e){function t(e,t){var r={},n={};return Object.keys(e).forEach(function(i){var a=e[i];if(W.isDynamic(a))n[i]=W.unbox(a,i);else{if(t&&Array.isArray(a))for(var f=0;f<a.length;++f)if(W.isDynamic(a[f]))return void(n[i]=W.unbox(a,i));r[i]=a}}),{dynamic:n,static:r}}var r=t(e.context||{},!0),n=t(e.uniforms||{},!0),i=t(e.attributes||{},!1);e=t(function(e){function t(e){if(e in r){var t=r[e];delete r[e],Object.keys(t).forEach(function(n){r[e+"."+n]=t[n]})}}var r=R({},e);return delete r.uniforms,delete r.attributes,delete r.context,delete r.vao,"stencil"in r&&r.stencil.op&&(r.stencil.opBack=r.stencil.opFront=r.stencil.op,delete r.stencil.op),t("blend"),t("depth"),t("cull"),t("stencil"),t("polygonOffset"),t("scissor"),t("sample"),"vao"in e&&(r.vao=e.vao),r}(e),!1);var a={gpuTime:0,cpuTime:0,count:0},f=G.compile(e,i,n,r,a),o=f.draw,u=f.batch,s=f.scope,c=[];return R(function(e,t){var r;if("function"==typeof e)return s.call(this,null,e,0);if("function"==typeof t)if("number"==typeof e)for(r=0;r<e;++r)s.call(this,null,t,r);else{if(!Array.isArray(e))return s.call(this,e,t,0);for(r=0;r<e.length;++r)s.call(this,e[r],t,r)}else if("number"==typeof e){if(0<e)return u.call(this,function(e){for(;c.length<e;)c.push(null);return c}(0|e),0|e)}else{if(!Array.isArray(e))return o.call(this,e);if(e.length)return u.call(this,e,e.length)}},{stats:a,destroy:function(){f.destroy()}})}function u(e,t){var r=0;G.procs.poll();var n=t.color;n&&(b.clearColor(+n[0]||0,+n[1]||0,+n[2]||0,+n[3]||0),r|=16384),"depth"in t&&(b.clearDepth(+t.depth),r|=256),"stencil"in t&&(b.clearStencil(0|t.stencil),r|=1024),b.clear(r)}function s(e){return J.push(e),r(),{cancel:function(){var t=M(J,e);J[t]=function e(){var t=M(J,e);J[t]=J[J.length-1],--J.length,0>=J.length&&n()}}}}function c(){var e=Y.viewport,t=Y.scissor_box;e[0]=e[1]=t[0]=t[1]=0,C.viewportWidth=C.framebufferWidth=C.drawingBufferWidth=e[2]=t[2]=b.drawingBufferWidth,C.viewportHeight=C.framebufferHeight=C.drawingBufferHeight=e[3]=t[3]=b.drawingBufferHeight}function l(){C.tick+=1,C.time=m(),c(),G.procs.poll()}function p(){P.refresh(),c(),G.procs.refresh(),A&&A.update()}function m(){return(N()-k)/1e3}if(!(e=i(e)))return null;var b=e.gl,g=b.getContextAttributes();b.isContextLost();var y=function(e,t){function r(t){var r;t=t.toLowerCase();try{r=n[t]=e.getExtension(t)}catch(e){}return!!r}for(var n={},i=0;i<t.extensions.length;++i){var a=t.extensions[i];if(!r(a))return t.onDestroy(),t.onDone('"'+a+'" extension is not supported by the current WebGL context, try upgrading your system or a different browser'),null}return t.optionalExtensions.forEach(r),{extensions:n,restore:function(){Object.keys(n).forEach(function(e){if(n[e]&&!r(e))throw Error("(regl): error restoring extension "+e)})}}}(b,e);if(!y)return null;var v=function(){var e={"":0},t=[""];return{id:function(r){var n=e[r];return n||(n=e[r]=t.length,t.push(r),n)},str:function(e){return t[e]}}}(),x={vaoCount:0,bufferCount:0,elementsCount:0,framebufferCount:0,shaderCount:0,textureCount:0,cubeCount:0,renderbufferCount:0,maxTextureUnits:0},w=y.extensions,A=function(e,t){function r(){this.endQueryIndex=this.startQueryIndex=-1,this.sum=0,this.stats=null}function n(e,t,n){var i=f.pop()||new r;i.startQueryIndex=e,i.endQueryIndex=t,i.sum=0,i.stats=n,o.push(i)}if(!t.ext_disjoint_timer_query)return null;var i=[],a=[],f=[],o=[],u=[],s=[];return{beginQuery:function(e){var r=i.pop()||t.ext_disjoint_timer_query.createQueryEXT();t.ext_disjoint_timer_query.beginQueryEXT(35007,r),a.push(r),n(a.length-1,a.length,e)},endQuery:function(){t.ext_disjoint_timer_query.endQueryEXT(35007)},pushScopeStats:n,update:function(){var e,r;if(0!==(e=a.length)){s.length=Math.max(s.length,e+1),u.length=Math.max(u.length,e+1),u[0]=0;var n=s[0]=0;for(r=e=0;r<a.length;++r){var c=a[r];t.ext_disjoint_timer_query.getQueryObjectEXT(c,34919)?(n+=t.ext_disjoint_timer_query.getQueryObjectEXT(c,34918),i.push(c)):a[e++]=c,u[r+1]=n,s[r+1]=e}for(a.length=e,r=e=0;r<o.length;++r){var l=(n=o[r]).startQueryIndex;c=n.endQueryIndex,n.sum+=u[c]-u[l],l=s[l],(c=s[c])===l?(n.stats.gpuTime+=n.sum/1e6,f.push(n)):(n.startQueryIndex=l,n.endQueryIndex=c,o[e++]=n)}o.length=e}},getNumPendingQueries:function(){return a.length},clear:function(){i.push.apply(i,a);for(var e=0;e<i.length;e++)t.ext_disjoint_timer_query.deleteQueryEXT(i[e]);a.length=0,i.length=0},restore:function(){a.length=0,i.length=0}}}(0,w),k=N(),E=b.drawingBufferWidth,j=b.drawingBufferHeight,C={tick:0,time:0,viewportWidth:E,viewportHeight:j,framebufferWidth:E,framebufferHeight:j,drawingBufferWidth:E,drawingBufferHeight:j,pixelRatio:e.pixelRatio},V=(E={elements:null,primitive:4,count:-1,offset:0,instances:-1},Q(b,w)),F=d(b,x,e,function(e){return z.destroyBuffer(e)}),B=h(b,w,F,x),z=D(b,w,V,x,F,B,E),I=T(b,v,x,e),P=_(b,w,V,function(){G.procs.poll()},C,x,e),H=ye(b,w,0,x,e),q=O(b,w,V,P,H,x),G=L(b,v,w,V,F,B,0,q,{},z,I,E,C,A,e),Y=(v=S(b,q,G.procs.poll,C),G.next),X=b.canvas,J=[],K=[],Z=[],$=[e.onDestroy],ee=null;X&&(X.addEventListener("webglcontextlost",a,!1),X.addEventListener("webglcontextrestored",f,!1));var te=q.setFBO=o({framebuffer:W.define.call(null,1,"framebuffer")});return p(),g=R(o,{clear:function(e){if("framebuffer"in e)if(e.framebuffer&&"framebufferCube"===e.framebuffer_reglType)for(var t=0;6>t;++t)te(R({framebuffer:e.framebuffer.faces[t]},e),u);else te(e,u);else u(0,e)},prop:W.define.bind(null,1),context:W.define.bind(null,2),this:W.define.bind(null,3),draw:o({}),buffer:function(e){return F.create(e,34962,!1,!1)},elements:function(e){return B.create(e,!1)},texture:P.create2D,cube:P.createCube,renderbuffer:H.create,framebuffer:q.create,framebufferCube:q.createCube,vao:z.createVAO,attributes:g,frame:s,on:function(e,t){var r;switch(e){case"frame":return s(t);case"lost":r=K;break;case"restore":r=Z;break;case"destroy":r=$}return r.push(t),{cancel:function(){for(var e=0;e<r.length;++e)if(r[e]===t){r[e]=r[r.length-1],r.pop();break}}}},limits:V,hasExtension:function(e){return 0<=V.extensions.indexOf(e.toLowerCase())},read:v,destroy:function(){J.length=0,n(),X&&(X.removeEventListener("webglcontextlost",a),X.removeEventListener("webglcontextrestored",f)),I.clear(),q.clear(),H.clear(),z.clear(),P.clear(),B.clear(),F.clear(),A&&A.clear(),$.forEach(function(e){e()})},_gl:b,_refresh:p,poll:function(){l(),A&&A.update()},now:m,stats:x}),e.onDone(null,g),g}});
2187
2190
 
2188
- },{}],604:[function(require,module,exports){
2191
+ },{}],605:[function(require,module,exports){
2189
2192
  const boundingBox=r=>{if(0===r.length)return[[0,0,0],[0,0,0]];const e=Array.isArray(r)&&Array.isArray(r[0]),n=e?r[0].length:3,o=new Array(n),t=new Array(n);for(let r=0;r<n;r+=1)o[r]=1/0,t[r]=-1/0;if(e)r.forEach(r=>{for(let l=0;l<n;l+=1){const n=e?r[l]:r;t[l]=n>t[l]?n:t[l],o[l]=n<o[l]?n:o[l]}});else for(let e=0;e<r.length;e+=n)for(let l=0;l<n;l+=1){const n=r[l+e];t[l]=n>t[l]?n:t[l],o[l]=n<o[l]?n:o[l]}return[o,t]};module.exports=boundingBox;
2190
2193
 
2191
- },{}],605:[function(require,module,exports){
2194
+ },{}],606:[function(require,module,exports){
2192
2195
  const vec3=require("gl-vec3"),{flatten:flatten}=require("@jscad/array-utils"),boundingBox=require("./boundingBox"),computeBounds=(...e)=>{let c;(e=flatten(e)).forEach(e=>{let t=boundingBox(e.positions);t=t.map(c=>vec3.transformMat4(c,c,e.transforms)),c?(vec3.min(c[0],c[0],t[0]),vec3.max(c[1],c[1],t[1])):c=t});const t=vec3.min(vec3.create(),c[1],c[0]),a=vec3.max(vec3.create(),c[1],c[0]),n=vec3.subtract(vec3.create(),a,t);let r=vec3.scale(vec3.create(),n,.5);return r=vec3.add(r,t,r),{dia:vec3.distance(r,a),center:[...r],min:[...t],max:[...a],size:[...n]}};module.exports=computeBounds;
2193
2196
 
2194
- },{"./boundingBox":604,"@jscad/array-utils":520,"gl-vec3":575}],606:[function(require,module,exports){
2197
+ },{"./boundingBox":605,"@jscad/array-utils":521,"gl-vec3":576}],607:[function(require,module,exports){
2195
2198
  const vec3=require("gl-vec3"),mat4=require("gl-mat4"),fromOrthographicToPerspective=e=>{const{near:t,far:r,fov:o,zoom:a}=e,{viewport:i}=e,c=require("./perspectiveCamera").setProjection(e,{width:i[2],height:i[3]}),{projectionType:p}=require("./perspectiveCamera").cameraState;return Object.assign({},e,c,{projectionType:p},{near:t,far:r,fov:o})},fromPerspectiveToOrthographic=e=>{const{fov:t,aspect:r}=e,o=.3*vec3.length(vec3.subtract([],e.position,e.target)),a=Math.tan(t)*o*r,i=Math.tan(t)*o,{near:c,far:p,viewport:s}=e,n={zoom:1,near:c,far:p},v=require("./orthographicCamera").cameraState,h=require("./orthographicCamera").setProjection(n,{width:a,height:i});return Object.assign({},v,e,h,{projectionType:v.projectionType,viewport:s})},toPerspectiveView=({camera:e})=>{const t=vec3.distance(e.position,e.target),r=[t,t,t];return{view:mat4.lookAt(mat4.create(),r,e.target,e.up),position:r}},toPresetView=(e,{camera:t})=>{const r=vec3.distance(t.position,t.target),o=vec3.add(vec3.create(),{top:[0,-1e-6,1],bottom:[0,0,-1],front:[0,1,0],back:[0,-1,0],left:[-1,0,0],right:[1,0,0],undefined:[0,0,0]}[e].map(e=>e*r),t.target);return{view:mat4.lookAt(mat4.create(),o,t.target,t.up),position:o}};module.exports={toPerspectiveView:toPerspectiveView,toPresetView:toPresetView,fromOrthographicToPerspective:fromOrthographicToPerspective,fromPerspectiveToOrthographic:fromPerspectiveToOrthographic};
2196
2199
 
2197
- },{"./orthographicCamera":607,"./perspectiveCamera":608,"gl-mat4":542,"gl-vec3":575}],607:[function(require,module,exports){
2200
+ },{"./orthographicCamera":608,"./perspectiveCamera":609,"gl-mat4":543,"gl-vec3":576}],608:[function(require,module,exports){
2198
2201
  const mat4=require("gl-mat4"),cameraState={view:mat4.identity(new Float32Array(16)),projection:mat4.identity(new Float32Array(16)),matrix:mat4.identity(new Float32Array(16)),near:1,far:1300,up:[0,0,1],eye:new Float32Array(3),position:[150,250,200],target:[0,0,0],fov:Math.PI/4,aspect:1,viewport:[0,0,0,0],zoom:1,projectionType:"orthographic"},cameraProps={},setProjection=(t,e)=>{const{width:a,height:r}=e,o=a/r,i=[0,0,a,r],n=t.zoom,c=-a*n,m=a*n,p=-r*n,s=r*n;return{projection:mat4.ortho([],c,m,p,s,t.near,t.far),aspect:o,viewport:i}};module.exports={cameraState:cameraState,cameraProps:cameraProps,setProjection:setProjection};
2199
2202
 
2200
- },{"gl-mat4":542}],608:[function(require,module,exports){
2203
+ },{"gl-mat4":543}],609:[function(require,module,exports){
2201
2204
  const mat4=require("gl-mat4"),vec3=require("gl-vec3"),cameraState={view:mat4.identity(new Float32Array(16)),projection:mat4.identity(new Float32Array(16)),matrix:mat4.identity(new Float32Array(16)),near:1,far:18e3,up:[0,0,1],eye:new Float32Array(3),position:[450,550,700],target:[0,0,0],fov:Math.PI/4,aspect:1,viewport:[0,0,0,0],projectionType:"perspective"},cameraProps={},defaults=Object.assign({},cameraState,cameraProps),setProjection=(e,t,a)=>{const r=a.width/a.height,o=mat4.perspective(mat4.identity([]),t.fov,r,t.near,t.far),i=[0,0,a.width,a.height],c=e||{};return c.projection=o,c.aspect=r,c.viewport=i,c},update=(e,t)=>{t||(t=e);const{position:a,target:r,up:o}=t,i=vec3.subtract([],a,r),c=vec3.add(vec3.create(),r,i),n=mat4.lookAt(mat4.create(),c,r,o),p=e||{};return p.position=c,p.view=n,p};module.exports={cameraState:cameraState,cameraProps:cameraProps,defaults:defaults,setProjection:setProjection,update:update};
2202
2205
 
2203
- },{"gl-mat4":542,"gl-vec3":575}],609:[function(require,module,exports){
2206
+ },{"gl-mat4":543,"gl-vec3":576}],610:[function(require,module,exports){
2204
2207
  const vec3=require("gl-vec3"),mat4=require("gl-mat4"),{max:max,min:min,sqrt:sqrt,PI:PI,sin:sin,cos:cos,atan2:atan2}=Math,computeBounds=require("../bound-utils/computeBounds"),controlsProps={limits:{minDistance:.01,maxDistance:1e4},drag:.27,EPS:1e-6,zoomToFit:{auto:!0,targets:"all",tightness:1.5},userControl:{zoom:!0,zoomSpeed:1,rotate:!0,rotateSpeed:1,pan:!0,panSpeed:1},autoRotate:{enabled:!1,speed:1},autoAdjustPlanes:!0},controlsState={thetaDelta:0,phiDelta:0,scale:1},defaults=Object.assign({},controlsState,controlsProps),update=({controls:t,camera:e},a)=>{const{EPS:o,drag:s}=t,{position:r,target:n}=e,c=t.up?t.up:e.up;let i=t.thetaDelta;const l=t.phiDelta,m=t.scale,p=vec3.subtract([],r,n);let u,d;1===c[2]?(u=atan2(p[0],p[1]),d=atan2(sqrt(p[0]*p[0]+p[1]*p[1]),p[2])):(u=atan2(p[0],p[2]),d=atan2(sqrt(p[0]*p[0]+p[2]*p[2]),p[1])),t.autoRotate.enabled&&t.userControl.rotate&&(i+=2*Math.PI/60/60*t.autoRotate.speed),u+=i,d=max(o,min(PI-o,d+=l));const h=max(t.limits.minDistance,min(t.limits.maxDistance,vec3.length(p)*m));1===c[2]?(p[0]=h*sin(d)*sin(u),p[2]=h*cos(d),p[1]=h*sin(d)*cos(u)):(p[0]=h*sin(d)*sin(u),p[1]=h*cos(d),p[2]=h*sin(d)*cos(u));const g=vec3.add(vec3.create(),n,p),v=mat4.lookAt(mat4.create(),g,n,c),D=1-max(min(s,1),.01);return{controls:{thetaDelta:i*D,phiDelta:l*D,scale:1,changed:vec3.distance(r,g)>.001},camera:{position:g,view:v}}},rotate=({controls:t,camera:e,speed:a=1},o)=>{let{thetaDelta:s,phiDelta:r}=t;return t.userControl.rotate&&(s+=o[0]*a,r+=o[1]*a),{controls:{thetaDelta:s,phiDelta:r},camera:e}},zoom=({controls:t,camera:e,speed:a=1},o=0)=>{let{scale:s}=t;if(t.userControl.zoom&&e&&void 0!==o&&0!==o&&!isNaN(o)){const r=(o=o/o*(0===Math.sign(o)?1:Math.sign(o))*a)+t.scale,n=vec3.distance(e.position,e.target)*r;if(n>t.limits.minDistance&&n<t.limits.maxDistance&&(s+=o),"orthographic"===e.projectionType){const t=.3*vec3.length(vec3.subtract([],e.position,e.target)),a=Math.tan(e.fov)*t*e.aspect,o=Math.tan(e.fov)*t;e=require("../cameras/orthographicCamera").setProjection(e,{width:a,height:o})}}return{controls:{scale:s},camera:e}},pan=({controls:t,camera:e,speed:a=1},o)=>{const s=require("camera-unproject"),{projection:r,view:n,viewport:c}=e,i=mat4.multiply([],r,n),l=mat4.invert([],i),m=[c[2],c[3],0],p=[c[2]-o[0],c[3]+o[1],0],u=s([],m,c,l),d=s([],p,c,l),h=vec3.distance(e.position,e.eye),g=vec3.subtract([],u,d).map(e=>e*a*h*t.scale);return{controls:t,camera:{position:vec3.add(vec3.create(),e.position,g),target:vec3.add(vec3.create(),e.target,g)}}},zoomToFit=({controls:t,camera:e,entities:a})=>{const{zoomToFit:o}=t;if("all"!==o.targets)return{controls:t,camera:e};if(0===a.length)return{controls:t,camera:e};const s=a.map(t=>t.geometry),r=computeBounds(s),{fov:n,target:c,position:i}=e,{tightness:l}=Object.assign({},o,controlsProps.zoomToFit),m=r.dia*l/Math.tan(n/2)/vec3.distance(c,i);return{camera:{target:r.center},controls:{scale:m}}},reset=({controls:t,camera:e},a)=>{return{camera:{position:a.camera.position,target:a.camera.target,projection:mat4.perspective([],e.fov,e.aspect,e.near,e.far),view:a.camera.view},controls:{thetaDelta:a.controls.thetaDelta,phiDelta:a.controls.phiDelta,scale:a.controls.scale}}};module.exports={controlsProps:controlsProps,controlsState:controlsState,defaults:defaults,update:update,rotate:rotate,zoom:zoom,pan:pan,zoomToFit:zoomToFit,reset:reset};
2205
2208
 
2206
- },{"../bound-utils/computeBounds":605,"../cameras/orthographicCamera":607,"camera-unproject":525,"gl-mat4":542,"gl-vec3":575}],610:[function(require,module,exports){
2209
+ },{"../bound-utils/computeBounds":606,"../cameras/orthographicCamera":608,"camera-unproject":526,"gl-mat4":543,"gl-vec3":576}],611:[function(require,module,exports){
2207
2210
  const{flatten:flatten,toArray:toArray}=require("@jscad/array-utils"),{meshColor:meshColor}=require("../rendering/renderDefaults"),geom2ToGeometries=require("./geom2ToGeometries"),geom3ToGeometries=require("./geom3ToGeometries"),path2ToGeometries=require("./path2ToGeometries"),assembleEntities=e=>{return e.map(e=>{return{geometry:e,visuals:{drawCmd:"2d"===e.type?"drawLines":"drawMesh",show:!0,transparent:e.isTransparent,useVertexColors:!0}}})},entitiesFromSolids=(e,...o)=>{const r={color:meshColor,smoothNormals:!0},{color:t,smoothNormals:s}=Object.assign({},r,e);o=(o=flatten(toArray(o))).filter(e=>e&&e instanceof Object);const i=[];return o.forEach(e=>{let o=[];"sides"in e?o=geom2ToGeometries({color:t},e):"points"in e?o=path2ToGeometries({color:t},e):"polygons"in e&&(o=geom3ToGeometries({smoothLighting:s,normalThreshold:.3,color:t},e)),i.push(...assembleEntities(o))}),i};module.exports=entitiesFromSolids;
2208
2211
 
2209
- },{"../rendering/renderDefaults":627,"./geom2ToGeometries":611,"./geom3ToGeometries":612,"./path2ToGeometries":613,"@jscad/array-utils":520}],611:[function(require,module,exports){
2212
+ },{"../rendering/renderDefaults":628,"./geom2ToGeometries":612,"./geom3ToGeometries":613,"./path2ToGeometries":614,"@jscad/array-utils":521}],612:[function(require,module,exports){
2210
2213
  const mat4=require("gl-mat4"),maxIndex=Math.floor(32767.5),geom2ToGeometries=(o,e)=>{let{color:t}=o;const n=e.sides;if(0===n.length)return[];"color"in e&&(t=e.color);const r=t[3]<1,s=[],l=Math.floor(n.length/maxIndex)+1,a=(o,e)=>{s.push(o,e||o)},m=[];for(let o=0;o<l;o++){const l=o*maxIndex,c=Math.min(l+maxIndex,n.length),h=[];for(let o=l;o<c;o++){const e=n[o];if(e.color){if(0===s.length&&h.length>0){const o=h.length;for(let e=0;e<o;e++)s.push(t)}a(e.color,e.endColor)}else s.length&&a(t);h.push([e[0][0],e[0][1],0]),h.push([e[1][0],e[1][1],0])}const i=h.map(o=>[0,0,-1]),f=h.map((o,e)=>e),p=e.transforms?mat4.clone(e.transforms):mat4.create();m.push({type:"2d",positions:h,normals:i,indices:f,transforms:p,color:t,colors:s,isTransparent:r})}return m};module.exports=geom2ToGeometries;
2211
2214
 
2212
- },{"gl-mat4":542}],612:[function(require,module,exports){
2215
+ },{"gl-mat4":543}],613:[function(require,module,exports){
2213
2216
  const vec3=require("gl-vec3"),mat4=require("gl-mat4"),maxIndex=65535,geom3ToGeometries=(o,e)=>{let{color:t,smoothLighting:n}=o;"color"in e&&(t=e.color);const r=e.polygons,l=e.transforms?mat4.clone(e.transforms):mat4.create(),s=[];let c=0;for(;c<r.length;){let o=0,e=c;for(let t=c;t<r.length&&!((o+=r[t].vertices.length)>65535);t++)e++;const n=[],i=[],a=[],p=[],m=!0;for(let o=c;o<e;o++){const e=r[o],l=e.vertices,s=calculateNormal(e),c=polygonColor(e,t),m=[];for(let o=0;o<l.length;o++){const e=l[o];n.push(e),i.push(s),p.push(c);const t=n.length-1;m.push(t)}for(let o=2;o<m.length;o++)a.push([m[0],m[o-1],m[o]])}const u={type:"3d",positions:n,normals:i,indices:a,colors:p,transforms:l,isTransparent:m};s.push(u),c=e}return s},smoothing=()=>{const o=[],e=[];let t=!0;const n=[],r=[],l=[],s=[],c=[];let i=0;for(let a=0;a<o.length;a++){const p=o[a],m=p.vertices,u=polygonColor(p,e),h=calculateNormal(p);u&&1!==u[3]&&(t=!0);const g=[];for(let o=0;o<m.length;o++){let e;const t=m[o];{const o={normal:h,position:t},l=fuzyNormalAndPositionLookup(c,o,.5);if(l)e=l.index;else{const l=c[o.position],a=[{normal:o.normal,index:i}];c[o.position]=l?c[o.position].concat(a):a,e=i,u&&s.push(u),r.push(h),n.push(t),i+=1}}g.push(e)}for(let o=2;o<g.length;o++)l.push([g[0],g[o-1],g[o]])}},polygonColor=(o,e)=>{let t=e;return o.color&&(t=o.color),t&&t.length<4&&t.push(1),t},calculateNormal=o=>{if(o.plane)return vec3.clone(o.plane);const e=o.vertices,t=vec3.create();vec3.subtract(t,e[1],e[0]);const n=vec3.create();vec3.subtract(n,e[2],e[0]);const r=vec3.create();return vec3.cross(r,t,n),vec3.normalize(r,r),r},areNormalsSimilar=(o,e,t)=>vec3.distance(o,e)<=t,fuzyNormalAndPositionLookup=(o,e,t)=>{const n=o[e.position];if(n)for(let o=0;o<n.length;o++){const r=n[o].normal;if(areNormalsSimilar(r,e.normal,t))return{tupple:{position:e.position,normal:r},index:n[o].index}}};module.exports=geom3ToGeometries;
2214
2217
 
2215
- },{"gl-mat4":542,"gl-vec3":575}],613:[function(require,module,exports){
2218
+ },{"gl-mat4":543,"gl-vec3":576}],614:[function(require,module,exports){
2216
2219
  const mat4=require("gl-mat4"),maxIndex=Math.floor(32767.5)-2,path2ToGeometries=(o,t)=>{let{color:e}=o;const s=t.points;if(0===s.length)return[];"color"in t&&(e=t.color);const n=e[3]<1,r=Math.floor(s.length/maxIndex)+1,a=[];for(let o=0;o<r;o++){const l=o*maxIndex,m=Math.min(l+maxIndex,s.length),c=[];let i;for(let o=l;o<m;o++){const t=s[o];i&&(c.push([i[0],i[1],0]),c.push([t[0],t[1],0])),i=t}if(o+1===r&&t.isClosed&&i){const o=s[0];c.push([i[0],i[1],0]),c.push([o[0],o[1],0])}const p=c.map(o=>[0,0,-1]),h=c.map((o,t)=>t),f=t.transforms?mat4.clone(t.transforms):mat4.create();a.push({type:"2d",positions:c,normals:p,indices:h,transforms:f,color:e,isTransparent:n})}return a};module.exports=path2ToGeometries;
2217
2220
 
2218
- },{"gl-mat4":542}],614:[function(require,module,exports){
2221
+ },{"gl-mat4":543}],615:[function(require,module,exports){
2219
2222
  module.exports={prepareRender:require("./rendering/render"),drawCommands:{drawGrid:require("./rendering/commands/drawGrid/multi.js"),drawAxis:require("./rendering/commands/drawAxis"),drawMesh:require("./rendering/commands/drawMesh"),drawLines:require("./rendering/commands/drawLines")},cameras:{camera:require("./cameras/camera"),orthographic:require("./cameras/orthographicCamera"),perspective:require("./cameras/perspectiveCamera")},controls:{orbit:require("./controls/orbitControls")},entitiesFromSolids:require("./geometry-utils-V2/entitiesFromSolids")};
2220
2223
 
2221
- },{"./cameras/camera":606,"./cameras/orthographicCamera":607,"./cameras/perspectiveCamera":608,"./controls/orbitControls":609,"./geometry-utils-V2/entitiesFromSolids":610,"./rendering/commands/drawAxis":615,"./rendering/commands/drawGrid/multi.js":617,"./rendering/commands/drawLines":619,"./rendering/commands/drawMesh":622,"./rendering/render":625}],615:[function(require,module,exports){
2224
+ },{"./cameras/camera":607,"./cameras/orthographicCamera":608,"./cameras/perspectiveCamera":609,"./controls/orbitControls":610,"./geometry-utils-V2/entitiesFromSolids":611,"./rendering/commands/drawAxis":616,"./rendering/commands/drawGrid/multi.js":618,"./rendering/commands/drawLines":620,"./rendering/commands/drawMesh":623,"./rendering/render":626}],616:[function(require,module,exports){
2222
2225
  const mat4=require("gl-mat4"),drawAxis=(t,i)=>{let{size:o,xColor:e,yColor:l,zColor:m,lineWidth:a,alwaysVisible:n}=Object.assign({},{xColor:[1,0,0,1],yColor:[0,1,0,1],zColor:[0,0,1,1],size:10,lineWidth:3,alwaysVisible:!0},i);a>t.limits.lineWidthDims[1]&&(a=t.limits.lineWidthDims[1]);const r=[0,0,0,o,0,0],d={frag:"precision mediump float;\n uniform vec4 color;\n void main() {\n gl_FragColor = color;\n }",vert:"\n precision mediump float;\n attribute vec3 position;\n uniform mat4 model, view, projection;\n void main() {\n gl_Position = projection * view * model * vec4(position, 1);\n }",uniforms:{model:(t,i)=>i&&i.model?i.model:mat4.identity([]),color:(t,i)=>i.color,angle:(t,i)=>i.angle},attributes:{position:r},count:r.length/3,primitive:"line loop",lineWidth:a,depth:{enable:!n}},s=mat4.identity([]),c=mat4.rotateZ(mat4.create(),mat4.identity([]),Math.PI/2),p=mat4.rotateY(mat4.create(),mat4.identity([]),-Math.PI/2),u=t(d);return t=>{const i={model:mat4.identity([])};return t=Object.assign({},i,t),u([{color:e,model:mat4.multiply(mat4.create(),t.model,s)},{color:l,model:mat4.multiply(mat4.create(),t.model,c)},{color:m,model:mat4.multiply(mat4.create(),t.model,p)}])}};module.exports=drawAxis;
2223
2226
 
2224
- },{"gl-mat4":542}],616:[function(require,module,exports){
2227
+ },{"gl-mat4":543}],617:[function(require,module,exports){
2225
2228
  const mat4=require("gl-mat4"),makeDrawGrid=(o,i={})=>{const n=[],t={visuals:{color:[0,0,1,1],fadeOut:!1},ticks:1,size:[16,16],centered:!1,lineWidth:2},e=Object.assign({},t.visuals,i.visuals||{}),{fadeOut:r,color:s}=e,{size:l,ticks:a,centered:c,lineWidth:d}=Object.assign({},t,i),f=l[0],u=l[1];if(c){const o=.5*f,i=.5*u,t=-o+o%a,e=-t,r=-i+i%a,s=-r,l=0;for(let o=t,i=0;o<=e;o+=a,i+=1)i%l!=0&&(n.push(r,o,0),n.push(s,o,0),n.push(r,o,0));for(let o=r,i=0;o<=s;o+=a,i+=1)i%l!=0&&(n.push(o,t,0),n.push(o,e,0),n.push(o,t,0))}else{for(let o=.5*-f;o<=.5*f;o+=a)n.push(.5*-u,o,0),n.push(.5*u,o,0),n.push(.5*-u,o,0);for(let o=.5*-u;o<=.5*u;o+=a)n.push(o,.5*-f,0),n.push(o,.5*f,0),n.push(o,.5*-f,0)}return o({vert:"precision mediump float;\n\n uniform float camNear, camFar;\n uniform mat4 model, view, projection;\n\n attribute vec3 position;\n varying vec3 fragNormal, fragPosition;\n varying vec4 worldPosition;\n\n void main() {\n fragPosition = position;\n worldPosition = model * vec4(position, 1);\n vec4 glPosition = projection * view * worldPosition;\n gl_Position = glPosition;\n }",frag:"precision mediump float;\n uniform vec4 color;\n varying vec3 fragNormal, fragPosition;\n varying vec4 worldPosition;\n\n uniform vec4 fogColor;\n uniform bool fadeOut;\n void main() {\n float dist = .5;\n if(fadeOut){\n dist = distance( vec2(0.,0.), vec2(worldPosition.x, worldPosition.y));\n dist *= 0.0025;\n dist = sqrt(dist);\n }\n\n gl_FragColor = mix(color, fogColor, dist);\n }\n ",attributes:{position:o.buffer(n)},count:n.length/3,uniforms:{model:(o,i)=>i&&i.model?i.model:mat4.identity([]),color:(o,i)=>i&&i.color?i.color:s,fogColor:(o,i)=>i&&i.color?[i.color[0],i.color[1],i.color[2],0]:[s[0],s[1],s[2],0],fadeOut:(o,i)=>i&&void 0!==i.fadeOut?i.fadeOut:r},lineWidth:(i,n)=>Math.min(n&&n.lineWidth?n.lineWidth:d,o.limits.lineWidthDims[1]),primitive:"lines",cull:{enable:!0,face:"front"},polygonOffset:{enable:!0,offset:{factor:1,units:10*Math.random()}},blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"}}})};module.exports=makeDrawGrid;
2226
2229
 
2227
- },{"gl-mat4":542}],617:[function(require,module,exports){
2230
+ },{"gl-mat4":543}],618:[function(require,module,exports){
2228
2231
  const makeDrawMultiGrid=(e,i)=>{const{size:s,ticks:r}=Object.assign({},{size:[50,50],ticks:[10,1]},i),t=require("./index")(e,{size:s,ticks:r[0]}),u=require("./index")(e,{size:s,ticks:r[1]});return e=>{t(e),u({color:e.subColor,fadeOut:e.fadeOut})}};module.exports=makeDrawMultiGrid;
2229
2232
 
2230
- },{"./index":616}],618:[function(require,module,exports){
2233
+ },{"./index":617}],619:[function(require,module,exports){
2231
2234
  const vColorFrag="\nprecision mediump float;\nuniform vec4 ucolor;\n\nvoid main () {\n gl_FragColor = ucolor;\n}\n";module.exports={frag:vColorFrag};
2232
2235
 
2233
- },{}],619:[function(require,module,exports){
2236
+ },{}],620:[function(require,module,exports){
2234
2237
  const mat4=require("gl-mat4"),{meshColor:meshColor}=require("../../renderDefaults"),drawLines=(e,r={})=>{const t={color:meshColor,geometry:void 0};let{geometry:o,color:s,transparent:a}=Object.assign({},t,r);"color"in o&&(s=o.color);const l=!!(o.indices&&o.indices.length>0),n=!!(o.normals&&o.normals.length>0),i=!!(o.colors&&o.colors.length>0),c={primitive:"lines",vert:i?require("./vColorShaders").vert:require("./meshShaders").vert,frag:i?require("./vColorShaders").frag:require("./colorOnlyShaders").frag,uniforms:{model:(e,r)=>r.model||o.transforms||mat4.create(),ucolor:(e,r)=>r&&r.color?r.color:s},attributes:{position:e.buffer({usage:"static",type:"float",data:o.positions})},depth:{enable:!a}};return a&&(c.blend={enable:!0,func:{src:"src alpha",dst:"one minus src alpha"}}),i&&(c.attributes.color=e.buffer({usage:"static",type:"float",data:o.colors})),l&&(c.elements=e.elements({usage:"static",type:"uint16",data:o.indices})),n&&(c.attributes.normal=e.buffer({usage:"static",type:"float",data:o.normals})),e(c)};module.exports=drawLines;
2235
2238
 
2236
- },{"../../renderDefaults":627,"./colorOnlyShaders":618,"./meshShaders":620,"./vColorShaders":621,"gl-mat4":542}],620:[function(require,module,exports){
2239
+ },{"../../renderDefaults":628,"./colorOnlyShaders":619,"./meshShaders":621,"./vColorShaders":622,"gl-mat4":543}],621:[function(require,module,exports){
2237
2240
  const meshVert="\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection;\n\nattribute vec3 position, normal;\n\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\n\n\nvoid main() {\n\n\n surfacePosition = position;\n surfaceNormal = normal;\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n}\n",meshFrag="\nprecision mediump float;\nvarying vec3 surfaceNormal;\nuniform float ambientLightAmount;\nuniform float diffuseLightAmount;\nuniform vec4 ucolor;\nuniform vec3 lightDirection;\nuniform vec3 opacity;\n\nvarying vec4 _worldSpacePosition;\n\nuniform vec2 printableArea;\n\nvec4 errorColor = vec4(0.15, 0.15, 0.15, 0.3);\n\nvoid main () {\n vec4 depth = gl_FragCoord;\n\n float v = 0.8; // shadow value\n vec4 endColor = ucolor;\n\n vec3 ambient = ambientLightAmount * endColor.rgb;\n float cosTheta = dot(surfaceNormal, lightDirection);\n vec3 diffuse = diffuseLightAmount * endColor.rgb * clamp(cosTheta , 0.0, 1.0 );\n\n float cosTheta2 = dot(surfaceNormal, vec3(-lightDirection.x, -lightDirection.y, lightDirection.z));\n vec3 diffuse2 = diffuseLightAmount * endColor.rgb * clamp(cosTheta2 , 0.0, 1.0 );\n\n gl_FragColor = vec4((ambient + diffuse + diffuse2 * v), endColor.a);\n}";module.exports={vert:meshVert,frag:meshFrag};
2238
2241
 
2239
- },{}],621:[function(require,module,exports){
2242
+ },{}],622:[function(require,module,exports){
2240
2243
  const vColorVert="\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection;\n\nattribute vec3 position, normal;\nattribute vec4 color;\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\nvarying vec4 vColor;\n\nvoid main() {\n vColor = color;\n\n surfacePosition = position;\n surfaceNormal = normal;\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n}\n",vColorFrag="\nprecision mediump float;\nvarying vec4 vColor;\n\nvoid main () {\n gl_FragColor = vColor;\n}\n";module.exports={frag:vColorFrag,vert:vColorVert};
2241
2244
 
2242
- },{}],622:[function(require,module,exports){
2245
+ },{}],623:[function(require,module,exports){
2243
2246
  const mat4=require("gl-mat4"),{meshColor:meshColor}=require("../../renderDefaults"),drawMesh=(e,r={extras:{}})=>{const t={useVertexColors:!0,dynamicCulling:!0,geometry:void 0,color:meshColor},{geometry:a,dynamicCulling:s,useVertexColors:o,color:l,transparent:n}=Object.assign({},t,r),i=e.buffer([]),c=!!(a.indices&&a.indices.length>0),m=!!(a.normals&&a.normals.length>0),u=!!(o&&a.colors&&a.colors.length>0),d=a.transforms||mat4.create(),g=mat4.determinant(d)<0,f=s&&g?"front":"back",h=u?require("./vColorShaders").vert:require("./meshShaders").vert,p=u?require("./vColorShaders").frag:require("./meshShaders").frag,b=mat4.invert(mat4.create(),d);let C={primitive:"triangles",vert:h,frag:p,uniforms:{model:(e,r)=>d,ucolor:(e,r)=>r&&r.color?r.color:l,vColorToggler:(e,r)=>r&&r.useVertexColors&&!0===r.useVertexColors?1:0,unormal:(e,r)=>{const t=mat4.invert(mat4.create(),r.camera.view);return mat4.multiply(t,b,t),mat4.transpose(t,t),t}},attributes:{position:e.buffer({usage:"static",type:"float",data:a.positions}),ao:i},cull:{enable:!0,face:f},depth:{enable:!n}};return n&&(C.blend={enable:!0,func:{src:"src alpha",dst:"one minus src alpha"}}),a.cells?C.elements=a.cells:c?C.elements=e.elements({usage:"static",type:"uint16",data:a.indices}):a.triangles?C.elements=a.triangles:C.count=a.positions.length/3,m&&(C.attributes.normal=e.buffer({usage:"static",type:"float",data:a.normals})),u&&(C.attributes.color=e.buffer({usage:"static",type:"float",data:a.colors})),e(C=Object.assign({},C,r.extras))};module.exports=drawMesh;
2244
2247
 
2245
- },{"../../renderDefaults":627,"./meshShaders":623,"./vColorShaders":624,"gl-mat4":542}],623:[function(require,module,exports){
2248
+ },{"../../renderDefaults":628,"./meshShaders":624,"./vColorShaders":625,"gl-mat4":543}],624:[function(require,module,exports){
2246
2249
  const meshFrag="\nprecision mediump float;\nvarying vec3 surfaceNormal;\nuniform float ambientLightAmount;\nuniform float diffuseLightAmount;\nuniform vec4 ucolor;\nuniform vec3 lightDirection;\nuniform vec3 opacity;\n\nvarying vec4 _worldSpacePosition;\n\nuniform vec2 printableArea;\n\nvec4 errorColor = vec4(0.15, 0.15, 0.15, 0.3);\n\nvoid main () {\n vec4 depth = gl_FragCoord;\n\n float v = 0.8; // shadow value\n vec4 endColor = ucolor;\n\n vec3 ambient = ambientLightAmount * endColor.rgb;\n float cosTheta = dot(surfaceNormal, lightDirection);\n vec3 diffuse = diffuseLightAmount * endColor.rgb * clamp(cosTheta , 0.0, 1.0 );\n\n float cosTheta2 = dot(surfaceNormal, vec3(-lightDirection.x, -lightDirection.y, lightDirection.z));\n vec3 diffuse2 = diffuseLightAmount * endColor.rgb * clamp(cosTheta2 , 0.0, 1.0 );\n\n gl_FragColor = vec4((ambient + diffuse + diffuse2 * v), endColor.a);\n}",meshVert="\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection;\n\nattribute vec3 position, normal;\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\n\nvoid main() {\n surfacePosition = position;\n surfaceNormal = normal;\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n}\n";module.exports={vert:meshVert,frag:meshFrag};
2247
2250
 
2248
- },{}],624:[function(require,module,exports){
2251
+ },{}],625:[function(require,module,exports){
2249
2252
  const vColorVert="\nprecision mediump float;\n\nuniform float camNear, camFar;\nuniform mat4 model, view, projection, unormal;\n\nattribute vec3 position, normal;\nattribute vec4 color;\n\nattribute float ao;\nvarying float ambientAo;\n\nvarying vec3 surfaceNormal, surfacePosition;\nvarying vec4 _worldSpacePosition;\nvarying vec4 vColor;\n\nvoid main() {\n surfacePosition = (unormal * vec4(position, 1.0)).xyz;\n surfaceNormal = normalize((unormal * vec4(normal, 1.0)).xyz); //vec4 transformedNormal = uNormalMatrix * vec4(aVertexNormal, 1.0);\n vec4 worldSpacePosition = model * vec4(position, 1);\n _worldSpacePosition = worldSpacePosition;\n //gl_Position = projection * view * worldSpacePosition;\n\n vColor = color;\n\n //ambientAo = (1. - ao) * (0.5 * max(normal.x, 0.) + 0.5);\n\n vec4 glPosition = projection * view * model * vec4(position, 1);\n gl_Position = glPosition;\n //gl_Position = zBufferAdjust(glPosition, camNear, camFar);\n}\n",vColorFrag="\nprecision mediump float;\nvarying vec3 surfaceNormal, surfacePosition;\n\nuniform float ambientLightAmount;\nuniform float diffuseLightAmount;\nuniform float specularLightAmount;\n\nuniform vec3 lightDirection;\nuniform vec4 lightColor;\nuniform vec3 opacity;\nuniform float uMaterialShininess;\n\nvarying vec4 vColor;\nuniform vec4 ucolor;\nuniform float vColorToggler;\n\nuniform vec2 printableArea;\nvec4 errorColor = vec4(0.15, 0.15, 0.15, 0.3);//vec4(0.15, 0.15, 0.15, 0.3);\nvarying vec4 _worldSpacePosition;\nvarying float ambientAo;\n\nvoid main () {\n vec4 depth = gl_FragCoord;\n vec4 endColor = vColor * vColorToggler + ucolor * (1.0 - vColorToggler);\n\n vec3 ambient = ambientLightAmount * endColor.rgb ; //ambientAo * \n\n float diffuseWeight = dot(surfaceNormal, lightDirection);\n vec3 diffuse = diffuseLightAmount * endColor.rgb * clamp(diffuseWeight , 0.0, 1.0 );\n\n //specular\n \n vec4 specularColor = vec4(lightColor);\n vec3 eyeDirection = normalize(surfacePosition.xyz);\n vec3 reflectionDirection = reflect(-lightDirection, -surfaceNormal);\n float specularLightWeight = pow(max(dot(reflectionDirection, eyeDirection), 0.0), uMaterialShininess);\n vec3 specular = specularColor.rgb * specularLightWeight * specularLightAmount;\n\n gl_FragColor = vec4((ambient + diffuse + specular), endColor.a);\n}\n";module.exports={frag:vColorFrag,vert:vColorVert};
2250
2253
 
2251
- },{}],625:[function(require,module,exports){
2254
+ },{}],626:[function(require,module,exports){
2252
2255
  const renderContext=require("./renderContext"),renderDefaults=require("./renderDefaults"),prepareRender=e=>{const r=Object.assign({},{},e.glOptions,{onDone:(e,r)=>{if(e)throw e}}),n=require("regl")(r),a=new Map;return function(e){var r;n.poll(),(r=e).rendering=Object.assign({},renderDefaults,r.rendering),renderContext(n)(r,e=>{n.clear({color:r.rendering.background,depth:1}),r.entities&&r.entities.sort((e,r)=>{const n="transparent"in e.visuals&&e.visuals.transparent;return n===("transparent"in r.visuals&&r.visuals.transparent)?0:n?1:-1}).forEach(e=>{const{visuals:t}=e;if((!("show"in t)||t.show)&&t.drawCmd&&r.drawCommands[t.drawCmd]){let s;t.cacheId?s=a.get(t.cacheId):(t.cacheId=a.size,s=r.drawCommands[t.drawCmd](n,e),a.set(t.cacheId,s)),s({...e,...t,camera:r.camera})}})})}};module.exports=prepareRender;
2253
2256
 
2254
- },{"./renderContext":626,"./renderDefaults":627,"regl":603}],626:[function(require,module,exports){
2257
+ },{"./renderContext":627,"./renderDefaults":628,"regl":604}],627:[function(require,module,exports){
2255
2258
  const mat4=require("gl-mat4"),renderWrapper=(e,i={})=>{const{fbo:r}=i,n={cull:{enable:!0},context:{lightDirection:[.2,.2,1]},uniforms:{view:(e,i)=>i.camera.view,eye:(e,i)=>i.camera.position,projection:(e,i)=>i.camera.projection,camNear:(e,i)=>i.camera.near,camFar:(e,i)=>i.camera.far,invertedView:(e,i)=>mat4.invert([],i.camera.view),lightPosition:(e,i)=>i&&i.rendering&&i.rendering.lightPosition?i.rendering.lightPosition:[100,200,100],lightDirection:(e,i)=>i&&i.rendering&&i.rendering.lightDirection?i.rendering.lightDirection:e.lightDirection||[0,0,0],lightView:e=>mat4.lookAt([],e.lightDirection,[0,0,0],[0,0,1]),lightProjection:mat4.ortho([],-25,-25,-20,20,-25,25),lightColor:(e,i)=>i&&i.rendering&&i.rendering.lightColor?i.rendering.lightColor:[1,.8,0],ambientLightAmount:(e,i)=>i&&i.rendering&&i.rendering.ambientLightAmount?i.rendering.ambientLightAmount:.3,diffuseLightAmount:(e,i)=>i&&i.rendering&&i.rendering.diffuseLightAmount?i&&i.rendering&&i.rendering.diffuseLightAmount:.89,specularLightAmount:(e,i)=>i&&i.rendering&&i.rendering.specularLightAmount?i.rendering.specularLightAmount:.16,uMaterialShininess:(e,i)=>i&&i.rendering&&i.rendering.materialShininess?i.rendering.materialShininess:8,materialAmbient:[.5,.8,.3],materialDiffuse:[.5,.8,.3],materialSpecular:[.5,.8,.3]},framebuffer:r};return e(Object.assign({},n,i.extras))};module.exports=renderWrapper;
2256
2259
 
2257
- },{"gl-mat4":542}],627:[function(require,module,exports){
2260
+ },{"gl-mat4":543}],628:[function(require,module,exports){
2258
2261
  module.exports={background:[1,1,1,1],meshColor:[0,.6,1,1],lightColor:[1,1,1,1],lightDirection:[.2,.2,1],lightPosition:[100,200,100],ambientLightAmount:.3,diffuseLightAmount:.89,specularLightAmount:.16,materialShininess:8};
2259
2262
 
2260
- },{}],628:[function(require,module,exports){
2263
+ },{}],629:[function(require,module,exports){
2261
2264
  module.exports=[
2262
2265
  {"key": "f", "command": "toPresetView", "args": "front" },
2263
2266
  {"key": "b", "command": "toPresetView", "args": "back" },
@@ -2273,29 +2276,29 @@ module.exports=[
2273
2276
  {"key": "shift+enter", "command": "editorCommand", "args": "reevaluate"}
2274
2277
  ]
2275
2278
 
2276
- },{}],629:[function(require,module,exports){
2279
+ },{}],630:[function(require,module,exports){
2277
2280
  module.exports={
2278
2281
  "livereloadUrl": "ws://127.0.0.1:35729/livereload"
2279
2282
  }
2280
- },{}],630:[function(require,module,exports){
2281
- module.exports={"name":"Arctic Sunrise","viewer":{"rendering":{"background":[1,0.8,0.7333333333333333,1],"meshColor":[0.43137254901960786,0.7098039215686275,0.7529411764705882,1]},"grid":{"color":[0,0.4235294117647059,0.5176470588235295,1],"subColor":[0.8862745098039215,0.9098039215686274,0.8941176470588236,1]}},"mainTextColor":[0,0.4235294117647059,0.5176470588235295,1],"secondaryTextColor":"#000000"}
2282
2283
  },{}],631:[function(require,module,exports){
2283
- module.exports={"name":"Back to School","viewer":{"rendering":{"background":[0.5058823529411764,0.44313725490196076,0.3686274509803922,1],"meshColor":[0.9803921568627451,0.6823529411764706,0.23921568627450981,1]},"grid":{"color":[0.9215686274509803,0.5411764705882353,0.26666666666666666,1],"subColor":[0.9176470588235294,0.3254901960784314,0.3686274509803922,1]}},"mainTextColor":[0.9215686274509803,0.5411764705882353,0.26666666666666666,1],"secondaryTextColor":"#000000"}
2284
+ module.exports={"name":"Arctic Sunrise","viewer":{"rendering":{"background":[1,0.8,0.7333333333333333,1],"meshColor":[0.43137254901960786,0.7098039215686275,0.7529411764705882,1]},"grid":{"color":[0,0.4235294117647059,0.5176470588235295,1],"subColor":[0.8862745098039215,0.9098039215686274,0.8941176470588236,1]}},"mainTextColor":[0,0.4235294117647059,0.5176470588235295,1],"secondaryTextColor":"#000000"}
2284
2285
  },{}],632:[function(require,module,exports){
2285
- module.exports={"name":"Beyond Black & White","viewer":{"rendering":{"background":[0.3568627450980392,0.7843137254901961,0.6745098039215687,1],"meshColor":[0.6862745098039216,0.10980392156862745,0.10980392156862745,1]},"grid":{"color":[0.9411764705882353,0.9372549019607843,0.996078431372549,1],"subColor":[0.00784313725490196,0.0196078431372549,0.03529411764705882,1]}},"mainTextColor":[0.9411764705882353,0.9372549019607843,0.996078431372549,1],"secondaryTextColor":"#000000"}
2286
+ module.exports={"name":"Back to School","viewer":{"rendering":{"background":[0.5058823529411764,0.44313725490196076,0.3686274509803922,1],"meshColor":[0.9803921568627451,0.6823529411764706,0.23921568627450981,1]},"grid":{"color":[0.9215686274509803,0.5411764705882353,0.26666666666666666,1],"subColor":[0.9176470588235294,0.3254901960784314,0.3686274509803922,1]}},"mainTextColor":[0.9215686274509803,0.5411764705882353,0.26666666666666666,1],"secondaryTextColor":"#000000"}
2286
2287
  },{}],633:[function(require,module,exports){
2287
- module.exports={"name":"Bold Berries","viewer":{"rendering":{"background":[0.3137254901960784,0.19215686274509805,0.1843137254901961,1],"meshColor":[0.796078431372549,0,0,1]},"grid":{"color":[0.8941176470588236,0.9176470588235294,0.5490196078431373,1],"subColor":[0.24705882352941178,0.4235294117647059,0.27058823529411763,1]}},"mainTextColor":[0.8941176470588236,0.9176470588235294,0.5490196078431373,1],"secondaryTextColor":"#000000"}
2288
+ module.exports={"name":"Beyond Black & White","viewer":{"rendering":{"background":[0.3568627450980392,0.7843137254901961,0.6745098039215687,1],"meshColor":[0.6862745098039216,0.10980392156862745,0.10980392156862745,1]},"grid":{"color":[0.9411764705882353,0.9372549019607843,0.996078431372549,1],"subColor":[0.00784313725490196,0.0196078431372549,0.03529411764705882,1]}},"mainTextColor":[0.9411764705882353,0.9372549019607843,0.996078431372549,1],"secondaryTextColor":"#000000"}
2288
2289
  },{}],634:[function(require,module,exports){
2289
- module.exports={"name":"Candy-coated Brights","viewer":{"rendering":{"background":[0.9215686274509803,0.5411764705882353,0.26666666666666666,1],"meshColor":[0.8823529411764706,0.19215686274509805,0.34509803921568627,1]},"grid":{"color":[1,0.9254901960784314,0.3607843137254902,1],"subColor":[0,0.5529411764705883,0.796078431372549,1]}},"mainTextColor":[1,0.9254901960784314,0.3607843137254902,1],"secondaryTextColor":"#000000"}
2290
+ module.exports={"name":"Bold Berries","viewer":{"rendering":{"background":[0.3137254901960784,0.19215686274509805,0.1843137254901961,1],"meshColor":[0.796078431372549,0,0,1]},"grid":{"color":[0.8941176470588236,0.9176470588235294,0.5490196078431373,1],"subColor":[0.24705882352941178,0.4235294117647059,0.27058823529411763,1]}},"mainTextColor":[0.8941176470588236,0.9176470588235294,0.5490196078431373,1],"secondaryTextColor":"#000000"}
2290
2291
  },{}],635:[function(require,module,exports){
2291
- module.exports={"name":"Cheerful & Friendly","viewer":{"rendering":{"background":[0.16862745098039217,0.3803921568627451,0.42745098039215684,1],"meshColor":[0.6980392156862745,0.8588235294117647,0.8352941176470589,1]},"grid":{"color":[1,1,1,1],"subColor":[0.9803921568627451,0.5529411764705883,0.3843137254901961,1]}},"mainTextColor":[1,1,1,1],"secondaryTextColor":"#000000"}
2292
+ module.exports={"name":"Candy-coated Brights","viewer":{"rendering":{"background":[0.9215686274509803,0.5411764705882353,0.26666666666666666,1],"meshColor":[0.8823529411764706,0.19215686274509805,0.34509803921568627,1]},"grid":{"color":[1,0.9254901960784314,0.3607843137254902,1],"subColor":[0,0.5529411764705883,0.796078431372549,1]}},"mainTextColor":[1,0.9254901960784314,0.3607843137254902,1],"secondaryTextColor":"#000000"}
2292
2293
  },{}],636:[function(require,module,exports){
2293
- module.exports={"name":"Classic Metallics","viewer":{"rendering":{"background":[0.03137254901960784,0.027450980392156862,0.023529411764705882,1],"meshColor":[0.9568627450980393,0.9568627450980393,0.9372549019607843,1]},"grid":{"color":[0.8196078431372549,0.6980392156862745,0.5019607843137255,1],"subColor":[0.34901960784313724,0.30196078431372547,0.27450980392156865,1]}},"mainTextColor":[0.8196078431372549,0.6980392156862745,0.5019607843137255,1],"secondaryTextColor":"#000000"}
2294
+ module.exports={"name":"Cheerful & Friendly","viewer":{"rendering":{"background":[0.16862745098039217,0.3803921568627451,0.42745098039215684,1],"meshColor":[0.6980392156862745,0.8588235294117647,0.8352941176470589,1]},"grid":{"color":[1,1,1,1],"subColor":[0.9803921568627451,0.5529411764705883,0.3843137254901961,1]}},"mainTextColor":[1,1,1,1],"secondaryTextColor":"#000000"}
2294
2295
  },{}],637:[function(require,module,exports){
2295
- module.exports={"name":"Cozy & Warm","viewer":{"rendering":{"background":[0.4,0.13333333333333333,0.1450980392156863,1],"meshColor":[0.7098039215686275,0.11372549019607843,0.0392156862745098,1]},"grid":{"color":[0.9176470588235294,0.8274509803921568,0.611764705882353,1],"subColor":[0.49019607843137253,0.3686274509803922,0.23529411764705882,1]}},"mainTextColor":[0.9176470588235294,0.8274509803921568,0.611764705882353,1],"secondaryTextColor":"#000000"}
2296
+ module.exports={"name":"Classic Metallics","viewer":{"rendering":{"background":[0.03137254901960784,0.027450980392156862,0.023529411764705882,1],"meshColor":[0.9568627450980393,0.9568627450980393,0.9372549019607843,1]},"grid":{"color":[0.8196078431372549,0.6980392156862745,0.5019607843137255,1],"subColor":[0.34901960784313724,0.30196078431372547,0.27450980392156865,1]}},"mainTextColor":[0.8196078431372549,0.6980392156862745,0.5019607843137255,1],"secondaryTextColor":"#000000"}
2296
2297
  },{}],638:[function(require,module,exports){
2297
- module.exports={"name":"Crisp & Dramatic","viewer":{"rendering":{"background":[0.3137254901960784,0.3176470588235294,0.3764705882352941,1],"meshColor":[0.40784313725490196,0.5098039215686274,0.6196078431372549,1]},"grid":{"color":[0.6823529411764706,0.7411764705882353,0.2196078431372549,1],"subColor":[0.34901960784313724,0.5098039215686274,0.20392156862745098,1]}},"mainTextColor":[0.6823529411764706,0.7411764705882353,0.2196078431372549,1],"secondaryTextColor":"#000000"}
2298
+ module.exports={"name":"Cozy & Warm","viewer":{"rendering":{"background":[0.4,0.13333333333333333,0.1450980392156863,1],"meshColor":[0.7098039215686275,0.11372549019607843,0.0392156862745098,1]},"grid":{"color":[0.9176470588235294,0.8274509803921568,0.611764705882353,1],"subColor":[0.49019607843137253,0.3686274509803922,0.23529411764705882,1]}},"mainTextColor":[0.9176470588235294,0.8274509803921568,0.611764705882353,1],"secondaryTextColor":"#000000"}
2298
2299
  },{}],639:[function(require,module,exports){
2300
+ module.exports={"name":"Crisp & Dramatic","viewer":{"rendering":{"background":[0.3137254901960784,0.3176470588235294,0.3764705882352941,1],"meshColor":[0.40784313725490196,0.5098039215686274,0.6196078431372549,1]},"grid":{"color":[0.6823529411764706,0.7411764705882353,0.2196078431372549,1],"subColor":[0.34901960784313724,0.5098039215686274,0.20392156862745098,1]}},"mainTextColor":[0.6823529411764706,0.7411764705882353,0.2196078431372549,1],"secondaryTextColor":"#000000"}
2301
+ },{}],640:[function(require,module,exports){
2299
2302
  module.exports={
2300
2303
  "name": "Dark",
2301
2304
  "viewer": {
@@ -2312,13 +2315,13 @@ module.exports={
2312
2315
  "secondaryTextColor": "#000"
2313
2316
  }
2314
2317
 
2315
- },{}],640:[function(require,module,exports){
2316
- module.exports={"name":"Distinctive & Unexpected","viewer":{"rendering":{"background":[0.3568627450980392,0.7843137254901961,0.6745098039215687,1],"meshColor":[0.6941176470588235,0.8431372549019608,0.8235294117647058,1]},"grid":{"color":[0.2627450980392157,0.1803921568627451,0.2,1],"subColor":[0.9058823529411765,0.2784313725490196,0.1803921568627451,1]}},"mainTextColor":[0.2627450980392157,0.1803921568627451,0.2,1],"secondaryTextColor":"#000000"}
2317
2318
  },{}],641:[function(require,module,exports){
2318
- module.exports={"name":"Exotic & High-impact","viewer":{"rendering":{"background":[0.058823529411764705,0.12156862745098039,0.2196078431372549,1],"meshColor":[0.45098039215686275,0.3764705882352941,0.3568627450980392,1]},"grid":{"color":[0.9607843137254902,0.32941176470588235,0.28627450980392155,1],"subColor":[0.10588235294117647,0.29411764705882354,0.35294117647058826,1]}},"mainTextColor":[0.9607843137254902,0.32941176470588235,0.28627450980392155,1],"secondaryTextColor":"#000000"}
2319
+ module.exports={"name":"Distinctive & Unexpected","viewer":{"rendering":{"background":[0.3568627450980392,0.7843137254901961,0.6745098039215687,1],"meshColor":[0.6941176470588235,0.8431372549019608,0.8235294117647058,1]},"grid":{"color":[0.2627450980392157,0.1803921568627451,0.2,1],"subColor":[0.9058823529411765,0.2784313725490196,0.1803921568627451,1]}},"mainTextColor":[0.2627450980392157,0.1803921568627451,0.2,1],"secondaryTextColor":"#000000"}
2319
2320
  },{}],642:[function(require,module,exports){
2320
- module.exports={"name":"Golden Afternoon","viewer":{"rendering":{"background":[0.5333333333333333,0.1411764705882353,0.14901960784313725,1],"meshColor":[0.803921568627451,0.7450980392156863,0.6549019607843137,1]},"grid":{"color":[0.19607843137254902,0.18823529411764706,0.18823529411764706,1],"subColor":[0.7607843137254902,0.5843137254901961,0.27058823529411763,1]}},"mainTextColor":[0.19607843137254902,0.18823529411764706,0.18823529411764706,1],"secondaryTextColor":"#000000"}
2321
+ module.exports={"name":"Exotic & High-impact","viewer":{"rendering":{"background":[0.058823529411764705,0.12156862745098039,0.2196078431372549,1],"meshColor":[0.45098039215686275,0.3764705882352941,0.3568627450980392,1]},"grid":{"color":[0.9607843137254902,0.32941176470588235,0.28627450980392155,1],"subColor":[0.10588235294117647,0.29411764705882354,0.35294117647058826,1]}},"mainTextColor":[0.9607843137254902,0.32941176470588235,0.28627450980392155,1],"secondaryTextColor":"#000000"}
2321
2322
  },{}],643:[function(require,module,exports){
2323
+ module.exports={"name":"Golden Afternoon","viewer":{"rendering":{"background":[0.5333333333333333,0.1411764705882353,0.14901960784313725,1],"meshColor":[0.803921568627451,0.7450980392156863,0.6549019607843137,1]},"grid":{"color":[0.19607843137254902,0.18823529411764706,0.18823529411764706,1],"subColor":[0.7607843137254902,0.5843137254901961,0.27058823529411763,1]}},"mainTextColor":[0.19607843137254902,0.18823529411764706,0.18823529411764706,1],"secondaryTextColor":"#000000"}
2324
+ },{}],644:[function(require,module,exports){
2322
2325
  module.exports={
2323
2326
  "name": "Grass",
2324
2327
  "viewer": {
@@ -2335,13 +2338,13 @@ module.exports={
2335
2338
  "secondaryTextColor": "#000"
2336
2339
  }
2337
2340
 
2338
- },{}],644:[function(require,module,exports){
2339
- module.exports={"name":"Grecian Holiday","viewer":{"rendering":{"background":[0.1607843137254902,0.5333333333333333,0.7372549019607844,1],"meshColor":[0.12549019607843137,0.5803921568627451,0.5450980392156862,1]},"grid":{"color":[0.9568627450980393,0.9176470588235294,0.8705882352941177,1],"subColor":[0.9294117647058824,0.5490196078431373,0.4470588235294118,1]}},"mainTextColor":[0.9568627450980393,0.9176470588235294,0.8705882352941177,1],"secondaryTextColor":"#000000"}
2340
2341
  },{}],645:[function(require,module,exports){
2341
- module.exports={"name":"Green Fields","viewer":{"rendering":{"background":[0.5686274509803921,0.5882352941176471,0.21176470588235294,1],"meshColor":[0.3215686274509804,0.2901960784313726,0.22745098039215686,1]},"grid":{"color":[1,0.9803921568627451,0.8823529411764706,1],"subColor":[0.35294117647058826,0.37254901960784315,0.21568627450980393,1]}},"mainTextColor":[1,0.9803921568627451,0.8823529411764706,1],"secondaryTextColor":"#000000"}
2342
+ module.exports={"name":"Grecian Holiday","viewer":{"rendering":{"background":[0.1607843137254902,0.5333333333333333,0.7372549019607844,1],"meshColor":[0.12549019607843137,0.5803921568627451,0.5450980392156862,1]},"grid":{"color":[0.9568627450980393,0.9176470588235294,0.8705882352941177,1],"subColor":[0.9294117647058824,0.5490196078431373,0.4470588235294118,1]}},"mainTextColor":[0.9568627450980393,0.9176470588235294,0.8705882352941177,1],"secondaryTextColor":"#000000"}
2342
2343
  },{}],646:[function(require,module,exports){
2343
- module.exports={"name":"Icy Blues and Grays","viewer":{"rendering":{"background":[0.9450980392156862,0.9450980392156862,0.9490196078431372,1],"meshColor":[0.7372549019607844,0.7294117647058823,0.7450980392156863,1]},"grid":{"color":[0.6313725490196078,0.8392156862745098,0.8862745098039215,1],"subColor":[0.09803921568627451,0.5843137254901961,0.6784313725490196,1]}},"mainTextColor":[0.6313725490196078,0.8392156862745098,0.8862745098039215,1],"secondaryTextColor":"#000000"}
2344
+ module.exports={"name":"Green Fields","viewer":{"rendering":{"background":[0.5686274509803921,0.5882352941176471,0.21176470588235294,1],"meshColor":[0.3215686274509804,0.2901960784313726,0.22745098039215686,1]},"grid":{"color":[1,0.9803921568627451,0.8823529411764706,1],"subColor":[0.35294117647058826,0.37254901960784315,0.21568627450980393,1]}},"mainTextColor":[1,0.9803921568627451,0.8823529411764706,1],"secondaryTextColor":"#000000"}
2344
2345
  },{}],647:[function(require,module,exports){
2346
+ module.exports={"name":"Icy Blues and Grays","viewer":{"rendering":{"background":[0.9450980392156862,0.9450980392156862,0.9490196078431372,1],"meshColor":[0.7372549019607844,0.7294117647058823,0.7450980392156863,1]},"grid":{"color":[0.6313725490196078,0.8392156862745098,0.8862745098039215,1],"subColor":[0.09803921568627451,0.5843137254901961,0.6784313725490196,1]}},"mainTextColor":[0.6313725490196078,0.8392156862745098,0.8862745098039215,1],"secondaryTextColor":"#000000"}
2347
+ },{}],648:[function(require,module,exports){
2345
2348
  module.exports={
2346
2349
  "name": "Light",
2347
2350
  "viewer": {
@@ -2358,17 +2361,17 @@ module.exports={
2358
2361
  "secondaryTextColor": "#000"
2359
2362
  }
2360
2363
 
2361
- },{}],648:[function(require,module,exports){
2362
- module.exports={"name":"Light & Natural","viewer":{"rendering":{"background":[0.2,0.4196078431372549,0.5294117647058824,1],"meshColor":[0.6313725490196078,0.7450980392156863,0.5843137254901961,1]},"grid":{"color":[0.9803921568627451,0.9372549019607843,0.8313725490196079,1],"subColor":[0.6470588235294118,0.48627450980392156,0.396078431372549,1]}},"mainTextColor":[0.9803921568627451,0.9372549019607843,0.8313725490196079,1],"secondaryTextColor":"#000000"}
2363
2364
  },{}],649:[function(require,module,exports){
2364
- module.exports={"name":"Modern & Urban","viewer":{"rendering":{"background":[0.9764705882352941,0.7294117647058823,0.19607843137254902,1],"meshColor":[0.25882352941176473,0.43137254901960786,0.5254901960784314,1]},"grid":{"color":[0.9725490196078431,0.9450980392156862,0.8980392156862745,1],"subColor":[0.1843137254901961,0.19215686274509805,0.19215686274509805,1]}},"mainTextColor":[0.9725490196078431,0.9450980392156862,0.8980392156862745,1],"secondaryTextColor":"#000000"}
2365
+ module.exports={"name":"Light & Natural","viewer":{"rendering":{"background":[0.2,0.4196078431372549,0.5294117647058824,1],"meshColor":[0.6313725490196078,0.7450980392156863,0.5843137254901961,1]},"grid":{"color":[0.9803921568627451,0.9372549019607843,0.8313725490196079,1],"subColor":[0.6470588235294118,0.48627450980392156,0.396078431372549,1]}},"mainTextColor":[0.9803921568627451,0.9372549019607843,0.8313725490196079,1],"secondaryTextColor":"#000000"}
2365
2366
  },{}],650:[function(require,module,exports){
2366
- module.exports={"name":"Naturally Elegant","viewer":{"rendering":{"background":[0.9215686274509803,0.8745098039215686,0,1],"meshColor":[0.49411764705882355,0.4823529411764706,0.08235294117647059,1]},"grid":{"color":[0.33725490196078434,0.24313725490196078,0.12549019607843137,1],"subColor":[0.788235294117647,0.6196078431372549,0.06274509803921569,1]}},"mainTextColor":[0.33725490196078434,0.24313725490196078,0.12549019607843137,1],"secondaryTextColor":"#000000"}
2367
+ module.exports={"name":"Modern & Urban","viewer":{"rendering":{"background":[0.9764705882352941,0.7294117647058823,0.19607843137254902,1],"meshColor":[0.25882352941176473,0.43137254901960786,0.5254901960784314,1]},"grid":{"color":[0.9725490196078431,0.9450980392156862,0.8980392156862745,1],"subColor":[0.1843137254901961,0.19215686274509805,0.19215686274509805,1]}},"mainTextColor":[0.9725490196078431,0.9450980392156862,0.8980392156862745,1],"secondaryTextColor":"#000000"}
2367
2368
  },{}],651:[function(require,module,exports){
2368
- module.exports={"name":"Neon Night","viewer":{"rendering":{"background":[0.9686274509803922,0.4627450980392157,0.01568627450980392,1],"meshColor":[0.1450980392156863,0.5019607843137255,0.2235294117647059,1]},"grid":{"color":[0.9607843137254902,0.4235294117647059,0.3411764705882353,1],"subColor":[0.13725490196078433,0.10588235294117647,0.07058823529411765,1]}},"mainTextColor":[0.9607843137254902,0.4235294117647059,0.3411764705882353,1],"secondaryTextColor":"#000000"}
2369
+ module.exports={"name":"Naturally Elegant","viewer":{"rendering":{"background":[0.9215686274509803,0.8745098039215686,0,1],"meshColor":[0.49411764705882355,0.4823529411764706,0.08235294117647059,1]},"grid":{"color":[0.33725490196078434,0.24313725490196078,0.12549019607843137,1],"subColor":[0.788235294117647,0.6196078431372549,0.06274509803921569,1]}},"mainTextColor":[0.33725490196078434,0.24313725490196078,0.12549019607843137,1],"secondaryTextColor":"#000000"}
2369
2370
  },{}],652:[function(require,module,exports){
2370
- module.exports={"name":"Nightlife","viewer":{"rendering":{"background":[0,0.8117647058823529,0.9803921568627451,1],"meshColor":[1,0,0.2196078431372549,1]},"grid":{"color":[0.9764705882352941,0.8627450980392157,0.1411764705882353,1],"subColor":[0.00784313725490196,0.0196078431372549,0.03529411764705882,1]}},"mainTextColor":[0.9764705882352941,0.8627450980392157,0.1411764705882353,1],"secondaryTextColor":"#000000"}
2371
+ module.exports={"name":"Neon Night","viewer":{"rendering":{"background":[0.9686274509803922,0.4627450980392157,0.01568627450980392,1],"meshColor":[0.1450980392156863,0.5019607843137255,0.2235294117647059,1]},"grid":{"color":[0.9607843137254902,0.4235294117647059,0.3411764705882353,1],"subColor":[0.13725490196078433,0.10588235294117647,0.07058823529411765,1]}},"mainTextColor":[0.9607843137254902,0.4235294117647059,0.3411764705882353,1],"secondaryTextColor":"#000000"}
2371
2372
  },{}],653:[function(require,module,exports){
2373
+ module.exports={"name":"Nightlife","viewer":{"rendering":{"background":[0,0.8117647058823529,0.9803921568627451,1],"meshColor":[1,0,0.2196078431372549,1]},"grid":{"color":[0.9764705882352941,0.8627450980392157,0.1411764705882353,1],"subColor":[0.00784313725490196,0.0196078431372549,0.03529411764705882,1]}},"mainTextColor":[0.9764705882352941,0.8627450980392157,0.1411764705882353,1],"secondaryTextColor":"#000000"}
2374
+ },{}],654:[function(require,module,exports){
2372
2375
  module.exports={
2373
2376
  "name": "Ocean",
2374
2377
  "viewer": {
@@ -2385,44 +2388,44 @@ module.exports={
2385
2388
  "secondaryTextColor": "#000"
2386
2389
  }
2387
2390
 
2388
- },{}],654:[function(require,module,exports){
2389
- module.exports={"name":"Outdoorsy & Natural","viewer":{"rendering":{"background":[0.1803921568627451,0.27450980392156865,0,1],"meshColor":[0.2823529411764706,0.4196078431372549,0,1]},"grid":{"color":[0.6352941176470588,0.7725490196078432,0.13725490196078433,1],"subColor":[0.49019607843137253,0.26666666666666666,0.15294117647058825,1]}},"mainTextColor":[0.6352941176470588,0.7725490196078432,0.13725490196078433,1],"secondaryTextColor":"#000000"}
2390
2391
  },{}],655:[function(require,module,exports){
2391
- module.exports={"name":"Pool Party","viewer":{"rendering":{"background":[0.20392156862745098,0.30196078431372547,0.5647058823529412,1],"meshColor":[0.3607843137254902,0.7725490196078432,0.9372549019607843,1]},"grid":{"color":[0.9764705882352941,0.6509803921568628,0.011764705882352941,1],"subColor":[0.9058823529411765,0.3333333333333333,0.17254901960784313,1]}},"mainTextColor":[0.9764705882352941,0.6509803921568628,0.011764705882352941,1],"secondaryTextColor":"#000000"}
2392
+ module.exports={"name":"Outdoorsy & Natural","viewer":{"rendering":{"background":[0.1803921568627451,0.27450980392156865,0,1],"meshColor":[0.2823529411764706,0.4196078431372549,0,1]},"grid":{"color":[0.6352941176470588,0.7725490196078432,0.13725490196078433,1],"subColor":[0.49019607843137253,0.26666666666666666,0.15294117647058825,1]}},"mainTextColor":[0.6352941176470588,0.7725490196078432,0.13725490196078433,1],"secondaryTextColor":"#000000"}
2392
2393
  },{}],656:[function(require,module,exports){
2393
- module.exports={"name":"Primary Colors","viewer":{"rendering":{"background":[0.21568627450980393,0.3686274509803922,0.592156862745098,1],"meshColor":[0.984313725490196,0.396078431372549,0.25882352941176473,1]},"grid":{"color":[1,0.7333333333333333,0,1],"subColor":[0.2823529411764706,0.4196078431372549,0,1]}},"mainTextColor":[1,0.7333333333333333,0,1],"secondaryTextColor":"#000000"}
2394
+ module.exports={"name":"Pool Party","viewer":{"rendering":{"background":[0.20392156862745098,0.30196078431372547,0.5647058823529412,1],"meshColor":[0.3607843137254902,0.7725490196078432,0.9372549019607843,1]},"grid":{"color":[0.9764705882352941,0.6509803921568628,0.011764705882352941,1],"subColor":[0.9058823529411765,0.3333333333333333,0.17254901960784313,1]}},"mainTextColor":[0.9764705882352941,0.6509803921568628,0.011764705882352941,1],"secondaryTextColor":"#000000"}
2394
2395
  },{}],657:[function(require,module,exports){
2395
- module.exports={"name":"Serene & Spa-like","viewer":{"rendering":{"background":[0.6313725490196078,0.7450980392156863,0.5843137254901961,1],"meshColor":[0.8862745098039215,0.8745098039215686,0.6352941176470588,1]},"grid":{"color":[0.5725490196078431,0.6666666666666666,0.7803921568627451,1],"subColor":[0.9294117647058824,0.3411764705882353,0.3215686274509804,1]}},"mainTextColor":[0.5725490196078431,0.6666666666666666,0.7803921568627451,1],"secondaryTextColor":"#000000"}
2396
+ module.exports={"name":"Primary Colors","viewer":{"rendering":{"background":[0.21568627450980393,0.3686274509803922,0.592156862745098,1],"meshColor":[0.984313725490196,0.396078431372549,0.25882352941176473,1]},"grid":{"color":[1,0.7333333333333333,0,1],"subColor":[0.2823529411764706,0.4196078431372549,0,1]}},"mainTextColor":[1,0.7333333333333333,0,1],"secondaryTextColor":"#000000"}
2396
2397
  },{}],658:[function(require,module,exports){
2397
- module.exports={"name":"Shades of Citrus","viewer":{"rendering":{"background":[0.9215686274509803,0.5411764705882353,0.26666666666666666,1],"meshColor":[0.9764705882352941,0.8627450980392157,0.1411764705882353,1]},"grid":{"color":[0.29411764705882354,0.4549019607843137,0.2784313725490196,1],"subColor":[0.6352941176470588,0.7725490196078432,0.13725490196078433,1]}},"mainTextColor":[0.29411764705882354,0.4549019607843137,0.2784313725490196,1],"secondaryTextColor":"#000000"}
2398
+ module.exports={"name":"Serene & Spa-like","viewer":{"rendering":{"background":[0.6313725490196078,0.7450980392156863,0.5843137254901961,1],"meshColor":[0.8862745098039215,0.8745098039215686,0.6352941176470588,1]},"grid":{"color":[0.5725490196078431,0.6666666666666666,0.7803921568627451,1],"subColor":[0.9294117647058824,0.3411764705882353,0.3215686274509804,1]}},"mainTextColor":[0.5725490196078431,0.6666666666666666,0.7803921568627451,1],"secondaryTextColor":"#000000"}
2398
2399
  },{}],659:[function(require,module,exports){
2399
- module.exports={"name":"Sleek & Modern","viewer":{"rendering":{"background":[0.00784313725490196,0.10980392156862745,0.11764705882352941,1],"meshColor":[0.6941176470588235,0.8431372549019608,0.8235294117647058,1]},"grid":{"color":[1,1,1,1],"subColor":[0.22745098039215686,0.3176470588235294,0.6,1]}},"mainTextColor":[1,1,1,1],"secondaryTextColor":"#000000"}
2400
+ module.exports={"name":"Shades of Citrus","viewer":{"rendering":{"background":[0.9215686274509803,0.5411764705882353,0.26666666666666666,1],"meshColor":[0.9764705882352941,0.8627450980392157,0.1411764705882353,1]},"grid":{"color":[0.29411764705882354,0.4549019607843137,0.2784313725490196,1],"subColor":[0.6352941176470588,0.7725490196078432,0.13725490196078433,1]}},"mainTextColor":[0.29411764705882354,0.4549019607843137,0.2784313725490196,1],"secondaryTextColor":"#000000"}
2400
2401
  },{}],660:[function(require,module,exports){
2401
- module.exports={"name":"Smoky Purples","viewer":{"rendering":{"background":[0.7372549019607844,0.7294117647058823,0.7450980392156863,1],"meshColor":[0.4470588235294118,0.4392156862745098,0.4666666666666667,1]},"grid":{"color":[0.9333333333333333,0.8470588235294118,0.788235294117647,1],"subColor":[0.9137254901960784,0.592156862745098,0.5294117647058824,1]}},"mainTextColor":[0.9333333333333333,0.8470588235294118,0.788235294117647,1],"secondaryTextColor":"#000000"}
2402
+ module.exports={"name":"Sleek & Modern","viewer":{"rendering":{"background":[0.00784313725490196,0.10980392156862745,0.11764705882352941,1],"meshColor":[0.6941176470588235,0.8431372549019608,0.8235294117647058,1]},"grid":{"color":[1,1,1,1],"subColor":[0.22745098039215686,0.3176470588235294,0.6,1]}},"mainTextColor":[1,1,1,1],"secondaryTextColor":"#000000"}
2402
2403
  },{}],661:[function(require,module,exports){
2403
- module.exports={"name":"Subtle & Versatile","viewer":{"rendering":{"background":[0.17254901960784313,0.2901960784313726,0.3215686274509804,1],"meshColor":[0.7490196078431373,0.8627450980392157,0.8117647058823529,1]},"grid":{"color":[0.8784313725490196,0.34509803921568627,0.34509803921568627,1],"subColor":[0.8352941176470589,0.788235294117647,0.6941176470588235,1]}},"mainTextColor":[0.8784313725490196,0.34509803921568627,0.34509803921568627,1],"secondaryTextColor":"#000000"}
2404
+ module.exports={"name":"Smoky Purples","viewer":{"rendering":{"background":[0.7372549019607844,0.7294117647058823,0.7450980392156863,1],"meshColor":[0.4470588235294118,0.4392156862745098,0.4666666666666667,1]},"grid":{"color":[0.9333333333333333,0.8470588235294118,0.788235294117647,1],"subColor":[0.9137254901960784,0.592156862745098,0.5294117647058824,1]}},"mainTextColor":[0.9333333333333333,0.8470588235294118,0.788235294117647,1],"secondaryTextColor":"#000000"}
2404
2405
  },{}],662:[function(require,module,exports){
2405
- module.exports={"name":"Summer Barbeque","viewer":{"rendering":{"background":[0.3607843137254902,0.5607843137254902,0.13333333333333333,1],"meshColor":[0.4588235294117647,0.16470588235294117,0.027450980392156862,1]},"grid":{"color":[0.984313725490196,0.796078431372549,0.4823529411764706,1],"subColor":[0.8117647058823529,0.21568627450980393,0.12941176470588237,1]}},"mainTextColor":[0.984313725490196,0.796078431372549,0.4823529411764706,1],"secondaryTextColor":"#000000"}
2406
+ module.exports={"name":"Subtle & Versatile","viewer":{"rendering":{"background":[0.17254901960784313,0.2901960784313726,0.3215686274509804,1],"meshColor":[0.7490196078431373,0.8627450980392157,0.8117647058823529,1]},"grid":{"color":[0.8784313725490196,0.34509803921568627,0.34509803921568627,1],"subColor":[0.8352941176470589,0.788235294117647,0.6941176470588235,1]}},"mainTextColor":[0.8784313725490196,0.34509803921568627,0.34509803921568627,1],"secondaryTextColor":"#000000"}
2406
2407
  },{}],663:[function(require,module,exports){
2407
- module.exports={"name":"Summer Sunflower","viewer":{"rendering":{"background":[0.30196078431372547,0.5215686274509804,0.7411764705882353,1],"meshColor":[0.48627450980392156,0.6666666666666666,0.17647058823529413,1]},"grid":{"color":[1,0.7333333333333333,0,1],"subColor":[0.796078431372549,0.38823529411764707,0.09411764705882353,1]}},"mainTextColor":[1,0.7333333333333333,0,1],"secondaryTextColor":"#000000"}
2408
+ module.exports={"name":"Summer Barbeque","viewer":{"rendering":{"background":[0.3607843137254902,0.5607843137254902,0.13333333333333333,1],"meshColor":[0.4588235294117647,0.16470588235294117,0.027450980392156862,1]},"grid":{"color":[0.984313725490196,0.796078431372549,0.4823529411764706,1],"subColor":[0.8117647058823529,0.21568627450980393,0.12941176470588237,1]}},"mainTextColor":[0.984313725490196,0.796078431372549,0.4823529411764706,1],"secondaryTextColor":"#000000"}
2408
2409
  },{}],664:[function(require,module,exports){
2409
- module.exports={"name":"Surf & Turf","viewer":{"rendering":{"background":[0.9568627450980393,0.8,0.4392156862745098,1],"meshColor":[0.8705882352941177,0.47843137254901963,0.13333333333333333,1]},"grid":{"color":[0.12549019607843137,0.5803921568627451,0.5450980392156862,1],"subColor":[0.41568627450980394,0.6941176470588235,0.5294117647058824,1]}},"mainTextColor":[0.12549019607843137,0.5803921568627451,0.5450980392156862,1],"secondaryTextColor":"#000000"}
2410
+ module.exports={"name":"Summer Sunflower","viewer":{"rendering":{"background":[0.30196078431372547,0.5215686274509804,0.7411764705882353,1],"meshColor":[0.48627450980392156,0.6666666666666666,0.17647058823529413,1]},"grid":{"color":[1,0.7333333333333333,0,1],"subColor":[0.796078431372549,0.38823529411764707,0.09411764705882353,1]}},"mainTextColor":[1,0.7333333333333333,0,1],"secondaryTextColor":"#000000"}
2410
2411
  },{}],665:[function(require,module,exports){
2411
- module.exports={"name":"Technology Meets Nature","viewer":{"rendering":{"background":[0.984313725490196,0.803921568627451,0.29411764705882354,1],"meshColor":[0.6392156862745098,0.6470588235294118,0.6,1]},"grid":{"color":[0.11764705882352941,0,0,1],"subColor":[0.3607843137254902,0.5607843137254902,0.13333333333333333,1]}},"mainTextColor":[0.11764705882352941,0,0,1],"secondaryTextColor":"#000000"}
2412
+ module.exports={"name":"Surf & Turf","viewer":{"rendering":{"background":[0.9568627450980393,0.8,0.4392156862745098,1],"meshColor":[0.8705882352941177,0.47843137254901963,0.13333333333333333,1]},"grid":{"color":[0.12549019607843137,0.5803921568627451,0.5450980392156862,1],"subColor":[0.41568627450980394,0.6941176470588235,0.5294117647058824,1]}},"mainTextColor":[0.12549019607843137,0.5803921568627451,0.5450980392156862,1],"secondaryTextColor":"#000000"}
2412
2413
  },{}],666:[function(require,module,exports){
2413
- module.exports={"name":"Understated & Versatile","viewer":{"rendering":{"background":[0.2,0.3215686274509804,0.3215686274509804,1],"meshColor":[0.788235294117647,0.8196078431372549,0.7843137254901961,1]},"grid":{"color":[0.6078431372549019,0.30980392156862746,0.058823529411764705,1],"subColor":[0.17647058823529413,0.18823529411764706,0.2,1]}},"mainTextColor":[0.6078431372549019,0.30980392156862746,0.058823529411764705,1],"secondaryTextColor":"#000000"}
2414
+ module.exports={"name":"Technology Meets Nature","viewer":{"rendering":{"background":[0.984313725490196,0.803921568627451,0.29411764705882354,1],"meshColor":[0.6392156862745098,0.6470588235294118,0.6,1]},"grid":{"color":[0.11764705882352941,0,0,1],"subColor":[0.3607843137254902,0.5607843137254902,0.13333333333333333,1]}},"mainTextColor":[0.11764705882352941,0,0,1],"secondaryTextColor":"#000000"}
2414
2415
  },{}],667:[function(require,module,exports){
2415
- module.exports={"name":"Warm & Cool","viewer":{"rendering":{"background":[0.26666666666666666,0.2980392156862745,0.3607843137254902,1],"meshColor":[0.807843137254902,0.35294117647058826,0.3411764705882353,1]},"grid":{"color":[0.47058823529411764,0.6470588235294118,0.6392156862745098,1],"subColor":[0.8823529411764706,0.6941176470588235,0.41568627450980394,1]}},"mainTextColor":[0.47058823529411764,0.6470588235294118,0.6392156862745098,1],"secondaryTextColor":"#000000"}
2416
+ module.exports={"name":"Understated & Versatile","viewer":{"rendering":{"background":[0.2,0.3215686274509804,0.3215686274509804,1],"meshColor":[0.788235294117647,0.8196078431372549,0.7843137254901961,1]},"grid":{"color":[0.6078431372549019,0.30980392156862746,0.058823529411764705,1],"subColor":[0.17647058823529413,0.18823529411764706,0.2,1]}},"mainTextColor":[0.6078431372549019,0.30980392156862746,0.058823529411764705,1],"secondaryTextColor":"#000000"}
2416
2417
  },{}],668:[function(require,module,exports){
2417
- module.exports={"name":"Warm & Rustic","viewer":{"rendering":{"background":[0.996078431372549,0.9490196078431372,0.8941176470588236,1],"meshColor":[0.9921568627450981,0.592156862745098,0.30980392156862746,1]},"grid":{"color":[0.7764705882352941,0,0,1],"subColor":[0.5019607843137255,0.35294117647058826,0.23137254901960785,1]}},"mainTextColor":[0.7764705882352941,0,0,1],"secondaryTextColor":"#000000"}
2418
+ module.exports={"name":"Warm & Cool","viewer":{"rendering":{"background":[0.26666666666666666,0.2980392156862745,0.3607843137254902,1],"meshColor":[0.807843137254902,0.35294117647058826,0.3411764705882353,1]},"grid":{"color":[0.47058823529411764,0.6470588235294118,0.6392156862745098,1],"subColor":[0.8823529411764706,0.6941176470588235,0.41568627450980394,1]}},"mainTextColor":[0.47058823529411764,0.6470588235294118,0.6392156862745098,1],"secondaryTextColor":"#000000"}
2418
2419
  },{}],669:[function(require,module,exports){
2419
- module.exports={"name":"Wintery Reds","viewer":{"rendering":{"background":[0.9254901960784314,0.5882352941176471,0.6431372549019608,1],"meshColor":[0.8431372549019608,0.17254901960784313,0.08627450980392157,1]},"grid":{"color":[0.9411764705882353,0.9372549019607843,0.9176470588235294,1],"subColor":[0.7529411764705882,0.6980392156862745,0.7098039215686275,1]}},"mainTextColor":[0.9411764705882353,0.9372549019607843,0.9176470588235294,1],"secondaryTextColor":"#000000"}
2420
+ module.exports={"name":"Warm & Rustic","viewer":{"rendering":{"background":[0.996078431372549,0.9490196078431372,0.8941176470588236,1],"meshColor":[0.9921568627450981,0.592156862745098,0.30980392156862746,1]},"grid":{"color":[0.7764705882352941,0,0,1],"subColor":[0.5019607843137255,0.35294117647058826,0.23137254901960785,1]}},"mainTextColor":[0.7764705882352941,0,0,1],"secondaryTextColor":"#000000"}
2420
2421
  },{}],670:[function(require,module,exports){
2422
+ module.exports={"name":"Wintery Reds","viewer":{"rendering":{"background":[0.9254901960784314,0.5882352941176471,0.6431372549019608,1],"meshColor":[0.8431372549019608,0.17254901960784313,0.08627450980392157,1]},"grid":{"color":[0.9411764705882353,0.9372549019607843,0.9176470588235294,1],"subColor":[0.7529411764705882,0.6980392156862745,0.7098039215686275,1]}},"mainTextColor":[0.9411764705882353,0.9372549019607843,0.9176470588235294,1],"secondaryTextColor":"#000000"}
2423
+ },{}],671:[function(require,module,exports){
2421
2424
  module.exports={dark:require("./theme.dark.json"),grass:require("./theme.grass.json"),light:require("./theme.light.json"),ocean:require("./theme.ocean.json"),arcticsunrise:require("./theme.arcticsunrise.json"),backtoschool:require("./theme.backtoschool.json"),beyondblackwhite:require("./theme.beyondblackwhite.json"),boldberries:require("./theme.boldberries.json"),candycoatedbrights:require("./theme.candycoatedbrights.json"),cheerfulfriendly:require("./theme.cheerfulfriendly.json"),classicmetallics:require("./theme.classicmetallics.json"),cozywarm:require("./theme.cozywarm.json"),crispdramatic:require("./theme.crispdramatic.json"),distinctiveunexpected:require("./theme.distinctiveunexpected.json"),exotichighimpact:require("./theme.exotichighimpact.json"),goldenafternoon:require("./theme.goldenafternoon.json"),grecianholiday:require("./theme.grecianholiday.json"),greenfields:require("./theme.greenfields.json"),icybluesandgrays:require("./theme.icybluesandgrays.json"),lightnatural:require("./theme.lightnatural.json"),modernurban:require("./theme.modernurban.json"),naturallyelegant:require("./theme.naturallyelegant.json"),neonnight:require("./theme.neonnight.json"),nightlife:require("./theme.nightlife.json"),outdoorsynatural:require("./theme.outdoorsynatural.json"),poolparty:require("./theme.poolparty.json"),primarycolors:require("./theme.primarycolors.json"),serenespalike:require("./theme.serenespalike.json"),shadesofcitrus:require("./theme.shadesofcitrus.json"),sleekmodern:require("./theme.sleekmodern.json"),smokypurples:require("./theme.smokypurples.json"),subtleversatile:require("./theme.subtleversatile.json"),summerbarbeque:require("./theme.summerbarbeque.json"),summersunflower:require("./theme.summersunflower.json"),surfturf:require("./theme.surfturf.json"),technologymeetsnature:require("./theme.technologymeetsnature.json"),understatedversatile:require("./theme.understatedversatile.json"),warmcool:require("./theme.warmcool.json"),warmrustic:require("./theme.warmrustic.json"),winteryreds:require("./theme.winteryreds.json")};
2422
2425
 
2423
- },{"./theme.arcticsunrise.json":630,"./theme.backtoschool.json":631,"./theme.beyondblackwhite.json":632,"./theme.boldberries.json":633,"./theme.candycoatedbrights.json":634,"./theme.cheerfulfriendly.json":635,"./theme.classicmetallics.json":636,"./theme.cozywarm.json":637,"./theme.crispdramatic.json":638,"./theme.dark.json":639,"./theme.distinctiveunexpected.json":640,"./theme.exotichighimpact.json":641,"./theme.goldenafternoon.json":642,"./theme.grass.json":643,"./theme.grecianholiday.json":644,"./theme.greenfields.json":645,"./theme.icybluesandgrays.json":646,"./theme.light.json":647,"./theme.lightnatural.json":648,"./theme.modernurban.json":649,"./theme.naturallyelegant.json":650,"./theme.neonnight.json":651,"./theme.nightlife.json":652,"./theme.ocean.json":653,"./theme.outdoorsynatural.json":654,"./theme.poolparty.json":655,"./theme.primarycolors.json":656,"./theme.serenespalike.json":657,"./theme.shadesofcitrus.json":658,"./theme.sleekmodern.json":659,"./theme.smokypurples.json":660,"./theme.subtleversatile.json":661,"./theme.summerbarbeque.json":662,"./theme.summersunflower.json":663,"./theme.surfturf.json":664,"./theme.technologymeetsnature.json":665,"./theme.understatedversatile.json":666,"./theme.warmcool.json":667,"./theme.warmrustic.json":668,"./theme.winteryreds.json":669}],671:[function(require,module,exports){
2426
+ },{"./theme.arcticsunrise.json":631,"./theme.backtoschool.json":632,"./theme.beyondblackwhite.json":633,"./theme.boldberries.json":634,"./theme.candycoatedbrights.json":635,"./theme.cheerfulfriendly.json":636,"./theme.classicmetallics.json":637,"./theme.cozywarm.json":638,"./theme.crispdramatic.json":639,"./theme.dark.json":640,"./theme.distinctiveunexpected.json":641,"./theme.exotichighimpact.json":642,"./theme.goldenafternoon.json":643,"./theme.grass.json":644,"./theme.grecianholiday.json":645,"./theme.greenfields.json":646,"./theme.icybluesandgrays.json":647,"./theme.light.json":648,"./theme.lightnatural.json":649,"./theme.modernurban.json":650,"./theme.naturallyelegant.json":651,"./theme.neonnight.json":652,"./theme.nightlife.json":653,"./theme.ocean.json":654,"./theme.outdoorsynatural.json":655,"./theme.poolparty.json":656,"./theme.primarycolors.json":657,"./theme.serenespalike.json":658,"./theme.shadesofcitrus.json":659,"./theme.sleekmodern.json":660,"./theme.smokypurples.json":661,"./theme.subtleversatile.json":662,"./theme.summerbarbeque.json":663,"./theme.summersunflower.json":664,"./theme.surfturf.json":665,"./theme.technologymeetsnature.json":666,"./theme.understatedversatile.json":667,"./theme.warmcool.json":668,"./theme.warmrustic.json":669,"./theme.winteryreds.json":670}],672:[function(require,module,exports){
2424
2427
  module.exports={"Creating Shapes":[{"title":"2D Primitives Demonstration","filePath":"examples/core/primitives/primitives2D.js","sort":1,"description":"Demonstrating the basics of a variety of 2D primitives"},{"title":"3D Primitives Demonstration","filePath":"examples/core/primitives/primitives3D.js","sort":1,"description":"Demonstrating the basics of a variety of 3D primitives"},{"title":"Rounded Cuboid","filePath":"examples/core/primitives/roundedCuboid.js","sort":1,"description":"Demonstrating the roundedCuboid() functiom"},{"title":"Spheres of all sorts","filePath":"examples/core/primitives/sphere.js","sort":1,"description":"Demonstrating the sphere() and geodesicSphere() functions"},{"title":"Building a Dodecahedron","filePath":"examples/core/primitives/dodecahedron.js","sort":2,"description":"building dodecahedron() from cuboids"},{"title":"Torus Variety","filePath":"examples/core/primitives/torus.js","sort":2,"description":"Demonstrating the capabilities and variations of the torus() primitive"},{"title":"Building a Polyhedron from scratch","filePath":"examples/core/primitives/polyhedron.js","sort":4,"description":"Demonstrating the polyhedron() function"},{"title":"Basic Extrude Functions","filePath":"examples/core/extrusions/basicExtrusions.js","sort":5,"description":"Demonstrating the basic types of extrusions, and the variety of objects they can create."},{"title":"Extrude Along a Bezier Path","filePath":"examples/core/curves/bezier/extrudeAlongPath.js","sort":5,"description":"Using a 3D bezier path to create a solid tube"},{"title":"Extrude From Slices","filePath":"examples/core/extrusions/extrudeFromSlices.js","sort":5,"description":"Demonstrating the advanced extrusion using slices with varying numbers of points."},{"title":"Simple Bezier Extrude","filePath":"examples/core/curves/bezier/simpleExtrude.js","sort":5,"description":"Using a 1D bezier function to create a non-uniform extrusion"},{"title":"Hull and HullChain 2D example","filePath":"examples/core/hulls/hull2D.js","sort":8,"description":"Demonstrating the basics of Hulls in two dimensions"},{"title":"Hull and HullChain 3D example","filePath":"examples/core/hulls/hull3D.js","sort":8,"description":"Demonstrating the basics of Hulls in three dimensions"},{"title":"Nuts and Bolts","filePath":"examples/core/extrusions/nutsAndBolts.js","sort":8,"description":"Demonstrating the advanced extrusion using slices to generate screw threads."},{"title":"Basic Text Creation","filePath":"examples/core/text/text.js","sort":10,"description":"Demonstrating methods of building 3D text"}],"Manipulating Shapes":[{"title":"Basic Booleans Demonstration","filePath":"examples/core/booleans/basicBooleans.js","sort":2,"description":"Demonstrating the basics of boolean shape combinations"},{"title":"Align function demonstration","filePath":"examples/core/transforms/align.js","sort":3,"description":"Demonstrating aligning shapes using the align function"},{"title":"Expanding 2D and 3D Shapes","filePath":"examples/core/expansions/expand.js","sort":5,"description":"Exploring the expand() function on 2D and 3D geometries"},{"title":"Offsetting 2D Shapes","filePath":"examples/core/expansions/offset.js","sort":5,"description":"Demonstrating the offset() function. Moves all points in a 2d path or 2D geometry perpendicular to the line&#39;s tangent."},{"title":"Center function demonstration","filePath":"examples/core/transforms/center.js","sort":10,"description":"Using center() to translate objects"},{"title":"Measure Aggregate Bounding Box","filePath":"examples/core/measurements/measureAggregateBounds.js","sort":10,"description":"Examples of measureAggregateBoundingBox function"},{"title":"Measure Area and Volume","filePath":"examples/core/measurements/measureAreaAndVolume.js","sort":10,"description":"Examples of measureArea() and measureVolume() function"},{"title":"Measure Bounding Box","filePath":"examples/core/measurements/measureBounds.js","sort":10,"description":"Examples of measureBoundingBox function"}],"Colors":[{"title":"Basic Colors","filePath":"examples/core/colors/basicColors.js","sort":1,"description":"showing various color functions"},{"title":"Color Cube","filePath":"examples/core/colors/colorCube.js","sort":2,"description":"looking at the different ways to specify a color"},{"title":"Transparency","filePath":"examples/core/colors/transparency.js","sort":2,"description":"showing transparent objects"}],"Parameters":[{"title":"All Parameter Types Demo","filePath":"examples/parameters/allParamTypes.js","sort":1,"description":"Example of interactive parameters"},{"title":"Birthday Balloons","filePath":"examples/parameters/balloons.js","sort":1,"description":"Example of building models from interactive parameters"},{"title":"Parametric Involute Gear","filePath":"examples/parameters/gear.js","sort":1,"description":"Build a proper involute gear, demonstrating parameters, and how they can be used in complex math."}],"Other":[{"title":"Coordinate system and Rotation demonstration","filePath":"examples/core/other/orientation.js","sort":1,"description":"Demonstrating rotation about the three axes."}]}
2425
- },{}],672:[function(require,module,exports){
2428
+ },{}],673:[function(require,module,exports){
2426
2429
  module.exports={
2427
2430
  "language":"german",
2428
2431
 
@@ -2486,7 +2489,7 @@ module.exports={
2486
2489
  "always":"Immer"
2487
2490
  }
2488
2491
 
2489
- },{}],673:[function(require,module,exports){
2492
+ },{}],674:[function(require,module,exports){
2490
2493
  module.exports={
2491
2494
  "language":"english",
2492
2495
 
@@ -2550,7 +2553,7 @@ module.exports={
2550
2553
  "always":"Always"
2551
2554
  }
2552
2555
 
2553
- },{}],674:[function(require,module,exports){
2556
+ },{}],675:[function(require,module,exports){
2554
2557
  module.exports={
2555
2558
  "language":"french",
2556
2559
 
@@ -2614,7 +2617,7 @@ module.exports={
2614
2617
  "always":"Toujours"
2615
2618
  }
2616
2619
 
2617
- },{}],675:[function(require,module,exports){
2620
+ },{}],676:[function(require,module,exports){
2618
2621
  module.exports={
2619
2622
  "language":"croatian",
2620
2623
 
@@ -2678,7 +2681,7 @@ module.exports={
2678
2681
  "always":"Uvijek"
2679
2682
  }
2680
2683
 
2681
- },{}],676:[function(require,module,exports){
2684
+ },{}],677:[function(require,module,exports){
2682
2685
  module.exports={
2683
2686
  "language":"japanese",
2684
2687
 
@@ -2754,7 +2757,7 @@ module.exports={
2754
2757
  "always":"いつも"
2755
2758
  }
2756
2759
 
2757
- },{}],677:[function(require,module,exports){
2760
+ },{}],678:[function(require,module,exports){
2758
2761
  module.exports={
2759
2762
  "language":"chinese",
2760
2763
 
@@ -2818,337 +2821,337 @@ module.exports={
2818
2821
  "always":"永远"
2819
2822
  }
2820
2823
 
2821
- },{}],678:[function(require,module,exports){
2824
+ },{}],679:[function(require,module,exports){
2822
2825
  !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("most"),require("@most/multicast")):"function"==typeof define&&define.amd?define(["exports","most","@most/multicast"],e):e(t.mostCreate=t.mostCreate||{},t.most,t.mostMulticast)}(this,function(t,e,i){"use strict";function n(t){return Promise.resolve(t).then(s)}function s(t){try{return t.run()}catch(e){return t.error(e)}}var r=function(t,e,i){this.sink=t,this.time=e,this.events=i};r.prototype.run=function(){for(var t,e=this.events,i=this.sink,n=0,s=e.length;n<s;++n)t=e[n],this.time=t.time,i.event(t.time,t.value);e.length=0},r.prototype.error=function(t){this.sink.error(this.time,t)};var o=function(t,e,i){this.time=t,this.value=e,this.sink=i};o.prototype.run=function(){this.sink.end(this.time,this.value)},o.prototype.error=function(t){this.sink.error(this.time,t)};var u=function(t,e,i){this.time=t,this.value=e,this.sink=i};u.prototype.run=function(){this.sink.error(this.time,this.value)},u.prototype.error=function(t){throw t};var h=function(t){this.sink=t,this.events=[],this.active=!0};h.prototype.event=function(t,e){this.active&&(0===this.events.length&&n(new r(this.sink,t,this.events)),this.events.push({time:t,value:e}))},h.prototype.end=function(t,e){this.active&&this._end(new o(t,e,this.sink))},h.prototype.error=function(t,e){this._end(new u(t,e,this.sink))},h.prototype._end=function(t){this.active=!1,n(t)};var c=function(t,e,i){this.sink=t,this.scheduler=e,this._unsubscribe=this._init(i)};c.prototype._init=function(t){var e=this,i=function(t){return e.sink.error(e.scheduler.now(),t)};try{return t(function(t){return e.sink.event(e.scheduler.now(),t)},function(t){return e.sink.end(e.scheduler.now(),t)},i)}catch(t){i(t)}},c.prototype.dispose=function(){if("function"==typeof this._unsubscribe)return this._unsubscribe.call(void 0)};var f=function(t){this._subscribe=t};f.prototype.run=function(t,e){return new c(new h(t),e,this._subscribe)},t.create=function(t){return new e.Stream(new i.MulticastSource(new f(t)))},Object.defineProperty(t,"__esModule",{value:!0})});
2823
2826
 
2824
- },{"@most/multicast":679,"most":740}],679:[function(require,module,exports){
2827
+ },{"@most/multicast":680,"most":741}],680:[function(require,module,exports){
2825
2828
  !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@most/prelude")):"function"==typeof define&&define.amd?define(["exports","@most/prelude"],e):e(t.mostMulticast=t.mostMulticast||{},t.mostPrelude)}(this,function(t,e){"use strict";var s=function(t,e){this.source=t,this.sink=e,this.disposed=!1};function i(t,e,s){try{s.event(t,e)}catch(e){s.error(t,e)}}function n(t,e,s){try{s.end(t,e)}catch(e){s.error(t,e)}}s.prototype.dispose=function(){if(!this.disposed)return this.disposed=!0,0===this.source.remove(this.sink)&&this.source._dispose()};var o=function(t){return t.dispose()},r={dispose:function(){}},u=function(t){this.source=t,this.sinks=[],this._disposable=r};u.prototype.run=function(t,e){return 1===this.add(t)&&(this._disposable=this.source.run(this,e)),new s(this,t)},u.prototype._dispose=function(){var t=this._disposable;return this._disposable=r,Promise.resolve(t).then(o)},u.prototype.add=function(t){return this.sinks=e.append(t,this.sinks),this.sinks.length},u.prototype.remove=function(t){var s=e.findIndex(t,this.sinks);return s>=0&&(this.sinks=e.remove(s,this.sinks)),this.sinks.length},u.prototype.event=function(t,e){var s=this.sinks;if(1===s.length)return s[0].event(t,e);for(var n=0;n<s.length;++n)i(t,e,s[n])},u.prototype.end=function(t,e){for(var s=this.sinks,i=0;i<s.length;++i)n(t,e,s[i])},u.prototype.error=function(t,e){for(var s=this.sinks,i=0;i<s.length;++i)s[i].error(t,e)},t.default=function(t){var e=t.source;return e instanceof u?t:new t.constructor(new u(e))},t.MulticastSource=u,Object.defineProperty(t,"__esModule",{value:!0})});
2826
2829
 
2827
- },{"@most/prelude":680}],680:[function(require,module,exports){
2830
+ },{"@most/prelude":681}],681:[function(require,module,exports){
2828
2831
  !function(r,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((r=r||self).mostPrelude={})}(this,function(r){"use strict";function n(r,n){if(r<0)throw new TypeError("n must be >= 0");var e=n.length;return 0===r||0===e?n:r>=e?[]:function(r,n,e){for(var t=new Array(e),u=0;u<e;++u)t[u]=n[r+u];return t}(r,n,e-r)}function e(r){return function n(e,t){switch(arguments.length){case 0:return n;case 1:return function(n){return r(e,n)};default:return r(e,t)}}}function t(r){return function n(t,u,o){switch(arguments.length){case 0:return n;case 1:return e(function(n,e){return r(t,n,e)});case 2:return function(n){return r(t,u,n)};default:return r(t,u,o)}}}r.append=function(r,n){for(var e=n.length,t=new Array(e+1),u=0;u<e;++u)t[u]=n[u];return t[e]=r,t},r.apply=function(r,n){return r(n)},r.compose=function(r,n){return function(e){return r(n(e))}},r.concat=function(r,n){var e=r.length,t=n.length,u=new Array(e+t),o=0;for(o=0;o<e;o++)u[o]=r[o];for(var f=0;f<t;f++)u[o++]=n[f];return u},r.cons=function(r,n){var e=n.length,t=new Array(e+1);t[0]=r;for(var u=0;u<e;++u)t[u+1]=n[u];return t},r.copy=function(r){for(var n=r.length,e=new Array(n),t=0;t<n;++t)e[t]=r[t];return e},r.curry2=e,r.curry3=t,r.curry4=function(r){return function n(u,o,f,c){switch(arguments.length){case 0:return n;case 1:return t(function(n,e,t){return r(u,n,e,t)});case 2:return e(function(n,e){return r(u,o,n,e)});case 3:return function(n){return r(u,o,f,n)};default:return r(u,o,f,c)}}},r.drop=n,r.findIndex=function(r,n){for(var e=0,t=n.length;e<t;++e)if(r===n[e])return e;return-1},r.id=function(r){return r},r.isArrayLike=function(r){return null!=r&&"number"==typeof r.length&&"function"!=typeof r},r.map=function(r,n){for(var e=n.length,t=new Array(e),u=0;u<e;++u)t[u]=r(n[u]);return t},r.reduce=function(r,n,e){for(var t=n,u=0,o=e.length;u<o;++u)t=r(t,e[u],u);return t},r.remove=function(r,n){if(r<0)throw new TypeError("i must be >= 0");var e=n.length;return 0===e||r>=e?n:1===e?[]:function(r,n,e){var t,u=new Array(e);for(t=0;t<r;++t)u[t]=n[t];for(t=r;t<e;++t)u[t]=n[t+1];return u}(r,n,e-1)},r.removeAll=function(r,n){for(var e=n.length,t=new Array(e),u=0,o=void 0,f=0;f<e;++f)r(o=n[f])||(t[u]=o,++u);return t.length=u,t},r.replace=function(r,n,e){if(n<0)throw new TypeError("i must be >= 0");for(var t=e.length,u=new Array(t),o=0;o<t;++o)u[o]=n===o?r:e[o];return u},r.tail=function(r){return n(1,r)},Object.defineProperty(r,"__esModule",{value:!0})});
2829
2832
 
2830
- },{}],681:[function(require,module,exports){
2833
+ },{}],682:[function(require,module,exports){
2831
2834
  "use strict";exports.byteLength=byteLength,exports.toByteArray=toByteArray,exports.fromByteArray=fromByteArray;for(var lookup=[],revLookup=[],Arr="undefined"!=typeof Uint8Array?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,len=code.length;i<len;++i)lookup[i]=code[i],revLookup[code.charCodeAt(i)]=i;function getLens(o){var r=o.length;if(r%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var e=o.indexOf("=");return-1===e&&(e=r),[e,e===r?0:4-e%4]}function byteLength(o){var r=getLens(o),e=r[0],t=r[1];return 3*(e+t)/4-t}function _byteLength(o,r,e){return 3*(r+e)/4-e}function toByteArray(o){var r,e,t=getLens(o),n=t[0],u=t[1],p=new Arr(_byteLength(o,n,u)),a=0,h=u>0?n-4:n;for(e=0;e<h;e+=4)r=revLookup[o.charCodeAt(e)]<<18|revLookup[o.charCodeAt(e+1)]<<12|revLookup[o.charCodeAt(e+2)]<<6|revLookup[o.charCodeAt(e+3)],p[a++]=r>>16&255,p[a++]=r>>8&255,p[a++]=255&r;return 2===u&&(r=revLookup[o.charCodeAt(e)]<<2|revLookup[o.charCodeAt(e+1)]>>4,p[a++]=255&r),1===u&&(r=revLookup[o.charCodeAt(e)]<<10|revLookup[o.charCodeAt(e+1)]<<4|revLookup[o.charCodeAt(e+2)]>>2,p[a++]=r>>8&255,p[a++]=255&r),p}function tripletToBase64(o){return lookup[o>>18&63]+lookup[o>>12&63]+lookup[o>>6&63]+lookup[63&o]}function encodeChunk(o,r,e){for(var t,n=[],u=r;u<e;u+=3)t=(o[u]<<16&16711680)+(o[u+1]<<8&65280)+(255&o[u+2]),n.push(tripletToBase64(t));return n.join("")}function fromByteArray(o){for(var r,e=o.length,t=e%3,n=[],u=0,p=e-t;u<p;u+=16383)n.push(encodeChunk(o,u,u+16383>p?p:u+16383));return 1===t?(r=o[e-1],n.push(lookup[r>>2]+lookup[r<<4&63]+"==")):2===t&&(r=(o[e-2]<<8)+o[e-1],n.push(lookup[r>>10]+lookup[r>>4&63]+lookup[r<<2&63]+"=")),n.join("")}revLookup["-".charCodeAt(0)]=62,revLookup["_".charCodeAt(0)]=63;
2832
2835
 
2833
- },{}],682:[function(require,module,exports){
2836
+ },{}],683:[function(require,module,exports){
2834
2837
  (function (Buffer){(function (){
2835
2838
  "use strict";var base64=require("base64-js"),ieee754=require("ieee754");exports.Buffer=Buffer,exports.SlowBuffer=SlowBuffer,exports.INSPECT_MAX_BYTES=50;var K_MAX_LENGTH=2147483647;function typedArraySupport(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}function createBuffer(e){if(e>K_MAX_LENGTH)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return t.__proto__=Buffer.prototype,t}function Buffer(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return allocUnsafe(e)}return from(e,t,r)}function from(e,t,r){if("string"==typeof e)return fromString(e,t);if(ArrayBuffer.isView(e))return fromArrayLike(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(isInstance(e,ArrayBuffer)||e&&isInstance(e.buffer,ArrayBuffer))return fromArrayBuffer(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return Buffer.from(n,t,r);var f=fromObject(e);if(f)return f;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return Buffer.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function assertSize(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function alloc(e,t,r){return assertSize(e),e<=0?createBuffer(e):void 0!==t?"string"==typeof r?createBuffer(e).fill(t,r):createBuffer(e).fill(t):createBuffer(e)}function allocUnsafe(e){return assertSize(e),createBuffer(e<0?0:0|checked(e))}function fromString(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!Buffer.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var r=0|byteLength(e,t),n=createBuffer(r),f=n.write(e,t);return f!==r&&(n=n.slice(0,f)),n}function fromArrayLike(e){for(var t=e.length<0?0:0|checked(e.length),r=createBuffer(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function fromArrayBuffer(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return(n=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r)).__proto__=Buffer.prototype,n}function fromObject(e){if(Buffer.isBuffer(e)){var t=0|checked(e.length),r=createBuffer(t);return 0===r.length?r:(e.copy(r,0,0,t),r)}return void 0!==e.length?"number"!=typeof e.length||numberIsNaN(e.length)?createBuffer(0):fromArrayLike(e):"Buffer"===e.type&&Array.isArray(e.data)?fromArrayLike(e.data):void 0}function checked(e){if(e>=K_MAX_LENGTH)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+K_MAX_LENGTH.toString(16)+" bytes");return 0|e}function SlowBuffer(e){return+e!=e&&(e=0),Buffer.alloc(+e)}function byteLength(e,t){if(Buffer.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||isInstance(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var f=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return utf8ToBytes(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return base64ToBytes(e).length;default:if(f)return n?-1:utf8ToBytes(e).length;t=(""+t).toLowerCase(),f=!0}}function slowToString(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return hexSlice(this,t,r);case"utf8":case"utf-8":return utf8Slice(this,t,r);case"ascii":return asciiSlice(this,t,r);case"latin1":case"binary":return latin1Slice(this,t,r);case"base64":return base64Slice(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function swap(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function bidirectionalIndexOf(e,t,r,n,f){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),numberIsNaN(r=+r)&&(r=f?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(f)return-1;r=e.length-1}else if(r<0){if(!f)return-1;r=0}if("string"==typeof t&&(t=Buffer.from(t,n)),Buffer.isBuffer(t))return 0===t.length?-1:arrayIndexOf(e,t,r,n,f);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?f?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):arrayIndexOf(e,[t],r,n,f);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(e,t,r,n,f){var i,o=1,u=e.length,s=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;o=2,u/=2,s/=2,r/=2}function a(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(f){var h=-1;for(i=r;i<u;i++)if(a(e,i)===a(t,-1===h?0:i-h)){if(-1===h&&(h=i),i-h+1===s)return h*o}else-1!==h&&(i-=i-h),h=-1}else for(r+s>u&&(r=u-s),i=r;i>=0;i--){for(var c=!0,l=0;l<s;l++)if(a(e,i+l)!==a(t,l)){c=!1;break}if(c)return i}return-1}function hexWrite(e,t,r,n){r=Number(r)||0;var f=e.length-r;n?(n=Number(n))>f&&(n=f):n=f;var i=t.length;n>i/2&&(n=i/2);for(var o=0;o<n;++o){var u=parseInt(t.substr(2*o,2),16);if(numberIsNaN(u))return o;e[r+o]=u}return o}function utf8Write(e,t,r,n){return blitBuffer(utf8ToBytes(t,e.length-r),e,r,n)}function asciiWrite(e,t,r,n){return blitBuffer(asciiToBytes(t),e,r,n)}function latin1Write(e,t,r,n){return asciiWrite(e,t,r,n)}function base64Write(e,t,r,n){return blitBuffer(base64ToBytes(t),e,r,n)}function ucs2Write(e,t,r,n){return blitBuffer(utf16leToBytes(t,e.length-r),e,r,n)}function base64Slice(e,t,r){return 0===t&&r===e.length?base64.fromByteArray(e):base64.fromByteArray(e.slice(t,r))}function utf8Slice(e,t,r){r=Math.min(e.length,r);for(var n=[],f=t;f<r;){var i,o,u,s,a=e[f],h=null,c=a>239?4:a>223?3:a>191?2:1;if(f+c<=r)switch(c){case 1:a<128&&(h=a);break;case 2:128==(192&(i=e[f+1]))&&(s=(31&a)<<6|63&i)>127&&(h=s);break;case 3:i=e[f+1],o=e[f+2],128==(192&i)&&128==(192&o)&&(s=(15&a)<<12|(63&i)<<6|63&o)>2047&&(s<55296||s>57343)&&(h=s);break;case 4:i=e[f+1],o=e[f+2],u=e[f+3],128==(192&i)&&128==(192&o)&&128==(192&u)&&(s=(15&a)<<18|(63&i)<<12|(63&o)<<6|63&u)>65535&&s<1114112&&(h=s)}null===h?(h=65533,c=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),f+=c}return decodeCodePointsArray(n)}exports.kMaxLength=K_MAX_LENGTH,Buffer.TYPED_ARRAY_SUPPORT=typedArraySupport(),Buffer.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(Buffer.prototype,"parent",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.buffer}}),Object.defineProperty(Buffer.prototype,"offset",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.byteOffset}}),"undefined"!=typeof Symbol&&null!=Symbol.species&&Buffer[Symbol.species]===Buffer&&Object.defineProperty(Buffer,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),Buffer.poolSize=8192,Buffer.from=function(e,t,r){return from(e,t,r)},Buffer.prototype.__proto__=Uint8Array.prototype,Buffer.__proto__=Uint8Array,Buffer.alloc=function(e,t,r){return alloc(e,t,r)},Buffer.allocUnsafe=function(e){return allocUnsafe(e)},Buffer.allocUnsafeSlow=function(e){return allocUnsafe(e)},Buffer.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==Buffer.prototype},Buffer.compare=function(e,t){if(isInstance(e,Uint8Array)&&(e=Buffer.from(e,e.offset,e.byteLength)),isInstance(t,Uint8Array)&&(t=Buffer.from(t,t.offset,t.byteLength)),!Buffer.isBuffer(e)||!Buffer.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,f=0,i=Math.min(r,n);f<i;++f)if(e[f]!==t[f]){r=e[f],n=t[f];break}return r<n?-1:n<r?1:0},Buffer.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Buffer.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return Buffer.alloc(0);var r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=Buffer.allocUnsafe(t),f=0;for(r=0;r<e.length;++r){var i=e[r];if(isInstance(i,Uint8Array)&&(i=Buffer.from(i)),!Buffer.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(n,f),f+=i.length}return n},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)swap(this,t,t+1);return this},Buffer.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)swap(this,t,t+3),swap(this,t+1,t+2);return this},Buffer.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)swap(this,t,t+7),swap(this,t+1,t+6),swap(this,t+2,t+5),swap(this,t+3,t+4);return this},Buffer.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?utf8Slice(this,0,e):slowToString.apply(this,arguments)},Buffer.prototype.toLocaleString=Buffer.prototype.toString,Buffer.prototype.equals=function(e){if(!Buffer.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===Buffer.compare(this,e)},Buffer.prototype.inspect=function(){var e="",t=exports.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},Buffer.prototype.compare=function(e,t,r,n,f){if(isInstance(e,Uint8Array)&&(e=Buffer.from(e,e.offset,e.byteLength)),!Buffer.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===f&&(f=this.length),t<0||r>e.length||n<0||f>this.length)throw new RangeError("out of range index");if(n>=f&&t>=r)return 0;if(n>=f)return-1;if(t>=r)return 1;if(this===e)return 0;for(var i=(f>>>=0)-(n>>>=0),o=(r>>>=0)-(t>>>=0),u=Math.min(i,o),s=this.slice(n,f),a=e.slice(t,r),h=0;h<u;++h)if(s[h]!==a[h]){i=s[h],o=a[h];break}return i<o?-1:o<i?1:0},Buffer.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},Buffer.prototype.indexOf=function(e,t,r){return bidirectionalIndexOf(this,e,t,r,!0)},Buffer.prototype.lastIndexOf=function(e,t,r){return bidirectionalIndexOf(this,e,t,r,!1)},Buffer.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var f=this.length-t;if((void 0===r||r>f)&&(r=f),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return hexWrite(this,e,t,r);case"utf8":case"utf-8":return utf8Write(this,e,t,r);case"ascii":return asciiWrite(this,e,t,r);case"latin1":case"binary":return latin1Write(this,e,t,r);case"base64":return base64Write(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},Buffer.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(e){var t=e.length;if(t<=MAX_ARGUMENTS_LENGTH)return String.fromCharCode.apply(String,e);for(var r="",n=0;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=MAX_ARGUMENTS_LENGTH));return r}function asciiSlice(e,t,r){var n="";r=Math.min(e.length,r);for(var f=t;f<r;++f)n+=String.fromCharCode(127&e[f]);return n}function latin1Slice(e,t,r){var n="";r=Math.min(e.length,r);for(var f=t;f<r;++f)n+=String.fromCharCode(e[f]);return n}function hexSlice(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var f="",i=t;i<r;++i)f+=toHex(e[i]);return f}function utf16leSlice(e,t,r){for(var n=e.slice(t,r),f="",i=0;i<n.length;i+=2)f+=String.fromCharCode(n[i]+256*n[i+1]);return f}function checkOffset(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function checkInt(e,t,r,n,f,i){if(!Buffer.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>f||t<i)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function checkIEEE754(e,t,r,n,f,i){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function writeFloat(e,t,r,n,f){return t=+t,r>>>=0,f||checkIEEE754(e,t,r,4,3.4028234663852886e38,-3.4028234663852886e38),ieee754.write(e,t,r,n,23,4),r+4}function writeDouble(e,t,r,n,f){return t=+t,r>>>=0,f||checkIEEE754(e,t,r,8,1.7976931348623157e308,-1.7976931348623157e308),ieee754.write(e,t,r,n,52,8),r+8}Buffer.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);var n=this.subarray(e,t);return n.__proto__=Buffer.prototype,n},Buffer.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||checkOffset(e,t,this.length);for(var n=this[e],f=1,i=0;++i<t&&(f*=256);)n+=this[e+i]*f;return n},Buffer.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||checkOffset(e,t,this.length);for(var n=this[e+--t],f=1;t>0&&(f*=256);)n+=this[e+--t]*f;return n},Buffer.prototype.readUInt8=function(e,t){return e>>>=0,t||checkOffset(e,1,this.length),this[e]},Buffer.prototype.readUInt16LE=function(e,t){return e>>>=0,t||checkOffset(e,2,this.length),this[e]|this[e+1]<<8},Buffer.prototype.readUInt16BE=function(e,t){return e>>>=0,t||checkOffset(e,2,this.length),this[e]<<8|this[e+1]},Buffer.prototype.readUInt32LE=function(e,t){return e>>>=0,t||checkOffset(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Buffer.prototype.readUInt32BE=function(e,t){return e>>>=0,t||checkOffset(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Buffer.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||checkOffset(e,t,this.length);for(var n=this[e],f=1,i=0;++i<t&&(f*=256);)n+=this[e+i]*f;return n>=(f*=128)&&(n-=Math.pow(2,8*t)),n},Buffer.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||checkOffset(e,t,this.length);for(var n=t,f=1,i=this[e+--n];n>0&&(f*=256);)i+=this[e+--n]*f;return i>=(f*=128)&&(i-=Math.pow(2,8*t)),i},Buffer.prototype.readInt8=function(e,t){return e>>>=0,t||checkOffset(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Buffer.prototype.readInt16LE=function(e,t){e>>>=0,t||checkOffset(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt16BE=function(e,t){e>>>=0,t||checkOffset(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt32LE=function(e,t){return e>>>=0,t||checkOffset(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Buffer.prototype.readInt32BE=function(e,t){return e>>>=0,t||checkOffset(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Buffer.prototype.readFloatLE=function(e,t){return e>>>=0,t||checkOffset(e,4,this.length),ieee754.read(this,e,!0,23,4)},Buffer.prototype.readFloatBE=function(e,t){return e>>>=0,t||checkOffset(e,4,this.length),ieee754.read(this,e,!1,23,4)},Buffer.prototype.readDoubleLE=function(e,t){return e>>>=0,t||checkOffset(e,8,this.length),ieee754.read(this,e,!0,52,8)},Buffer.prototype.readDoubleBE=function(e,t){return e>>>=0,t||checkOffset(e,8,this.length),ieee754.read(this,e,!1,52,8)},Buffer.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||checkInt(this,e,t,r,Math.pow(2,8*r)-1,0);var f=1,i=0;for(this[t]=255&e;++i<r&&(f*=256);)this[t+i]=e/f&255;return t+r},Buffer.prototype.writeUIntBE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||checkInt(this,e,t,r,Math.pow(2,8*r)-1,0);var f=r-1,i=1;for(this[t+f]=255&e;--f>=0&&(i*=256);)this[t+f]=e/i&255;return t+r},Buffer.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,1,255,0),this[t]=255&e,t+1},Buffer.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},Buffer.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},Buffer.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},Buffer.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Buffer.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var f=Math.pow(2,8*r-1);checkInt(this,e,t,r,f-1,-f)}var i=0,o=1,u=0;for(this[t]=255&e;++i<r&&(o*=256);)e<0&&0===u&&0!==this[t+i-1]&&(u=1),this[t+i]=(e/o>>0)-u&255;return t+r},Buffer.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var f=Math.pow(2,8*r-1);checkInt(this,e,t,r,f-1,-f)}var i=r-1,o=1,u=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===u&&0!==this[t+i+1]&&(u=1),this[t+i]=(e/o>>0)-u&255;return t+r},Buffer.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},Buffer.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},Buffer.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},Buffer.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},Buffer.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Buffer.prototype.writeFloatLE=function(e,t,r){return writeFloat(this,e,t,!0,r)},Buffer.prototype.writeFloatBE=function(e,t,r){return writeFloat(this,e,t,!1,r)},Buffer.prototype.writeDoubleLE=function(e,t,r){return writeDouble(this,e,t,!0,r)},Buffer.prototype.writeDoubleBE=function(e,t,r){return writeDouble(this,e,t,!1,r)},Buffer.prototype.copy=function(e,t,r,n){if(!Buffer.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var f=n-r;if(this===e&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(t,r,n);else if(this===e&&r<t&&t<n)for(var i=f-1;i>=0;--i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return f},Buffer.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!Buffer.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){var f=e.charCodeAt(0);("utf8"===n&&f<128||"latin1"===n)&&(e=f)}}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;var i;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i<r;++i)this[i]=e;else{var o=Buffer.isBuffer(e)?e:Buffer.from(e,n),u=o.length;if(0===u)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(i=0;i<r-t;++i)this[i+t]=o[i%u]}return this};var INVALID_BASE64_RE=/[^+/0-9A-Za-z-_]/g;function base64clean(e){if((e=(e=e.split("=")[0]).trim().replace(INVALID_BASE64_RE,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}function toHex(e){return e<16?"0"+e.toString(16):e.toString(16)}function utf8ToBytes(e,t){var r;t=t||1/0;for(var n=e.length,f=null,i=[],o=0;o<n;++o){if((r=e.charCodeAt(o))>55295&&r<57344){if(!f){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&i.push(239,191,189);continue}f=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),f=r;continue}r=65536+(f-55296<<10|r-56320)}else f&&(t-=3)>-1&&i.push(239,191,189);if(f=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function asciiToBytes(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}function utf16leToBytes(e,t){for(var r,n,f,i=[],o=0;o<e.length&&!((t-=2)<0);++o)n=(r=e.charCodeAt(o))>>8,f=r%256,i.push(f),i.push(n);return i}function base64ToBytes(e){return base64.toByteArray(base64clean(e))}function blitBuffer(e,t,r,n){for(var f=0;f<n&&!(f+r>=t.length||f>=e.length);++f)t[f+r]=e[f];return f}function isInstance(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function numberIsNaN(e){return e!=e}
2836
2839
 
2837
2840
  }).call(this)}).call(this,require("buffer").Buffer)
2838
- },{"base64-js":681,"buffer":682,"ieee754":683}],683:[function(require,module,exports){
2841
+ },{"base64-js":682,"buffer":683,"ieee754":684}],684:[function(require,module,exports){
2839
2842
  exports.read=function(a,o,t,r,h){var M,p,w=8*h-r-1,f=(1<<w)-1,e=f>>1,i=-7,N=t?h-1:0,n=t?-1:1,s=a[o+N];for(N+=n,M=s&(1<<-i)-1,s>>=-i,i+=w;i>0;M=256*M+a[o+N],N+=n,i-=8);for(p=M&(1<<-i)-1,M>>=-i,i+=r;i>0;p=256*p+a[o+N],N+=n,i-=8);if(0===M)M=1-e;else{if(M===f)return p?NaN:1/0*(s?-1:1);p+=Math.pow(2,r),M-=e}return(s?-1:1)*p*Math.pow(2,M-r)},exports.write=function(a,o,t,r,h,M){var p,w,f,e=8*M-h-1,i=(1<<e)-1,N=i>>1,n=23===h?Math.pow(2,-24)-Math.pow(2,-77):0,s=r?0:M-1,u=r?1:-1,l=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(w=isNaN(o)?1:0,p=i):(p=Math.floor(Math.log(o)/Math.LN2),o*(f=Math.pow(2,-p))<1&&(p--,f*=2),(o+=p+N>=1?n/f:n*Math.pow(2,1-N))*f>=2&&(p++,f/=2),p+N>=i?(w=0,p=i):p+N>=1?(w=(o*f-1)*Math.pow(2,h),p+=N):(w=o*Math.pow(2,N-1)*Math.pow(2,h),p=0));h>=8;a[t+s]=255&w,s+=u,w/=256,h-=8);for(p=p<<h|w,e+=h;e>0;a[t+s]=255&p,s+=u,p/=256,e-=8);a[t+s-u]|=128*l};
2840
2843
 
2841
- },{}],684:[function(require,module,exports){
2844
+ },{}],685:[function(require,module,exports){
2842
2845
  (function (process){(function (){
2843
2846
  function normalizeArray(r,t){for(var e=0,n=r.length-1;n>=0;n--){var o=r[n];"."===o?r.splice(n,1):".."===o?(r.splice(n,1),e++):e&&(r.splice(n,1),e--)}if(t)for(;e--;e)r.unshift("..");return r}function basename(r){"string"!=typeof r&&(r+="");var t,e=0,n=-1,o=!0;for(t=r.length-1;t>=0;--t)if(47===r.charCodeAt(t)){if(!o){e=t+1;break}}else-1===n&&(o=!1,n=t+1);return-1===n?"":r.slice(e,n)}function filter(r,t){if(r.filter)return r.filter(t);for(var e=[],n=0;n<r.length;n++)t(r[n],n,r)&&e.push(r[n]);return e}exports.resolve=function(){for(var r="",t=!1,e=arguments.length-1;e>=-1&&!t;e--){var n=e>=0?arguments[e]:process.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");n&&(r=n+"/"+r,t="/"===n.charAt(0))}return(t?"/":"")+(r=normalizeArray(filter(r.split("/"),function(r){return!!r}),!t).join("/"))||"."},exports.normalize=function(r){var t=exports.isAbsolute(r),e="/"===substr(r,-1);return(r=normalizeArray(filter(r.split("/"),function(r){return!!r}),!t).join("/"))||t||(r="."),r&&e&&(r+="/"),(t?"/":"")+r},exports.isAbsolute=function(r){return"/"===r.charAt(0)},exports.join=function(){var r=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(r,function(r,t){if("string"!=typeof r)throw new TypeError("Arguments to path.join must be strings");return r}).join("/"))},exports.relative=function(r,t){function e(r){for(var t=0;t<r.length&&""===r[t];t++);for(var e=r.length-1;e>=0&&""===r[e];e--);return t>e?[]:r.slice(t,e-t+1)}r=exports.resolve(r).substr(1),t=exports.resolve(t).substr(1);for(var n=e(r.split("/")),o=e(t.split("/")),s=Math.min(n.length,o.length),i=s,u=0;u<s;u++)if(n[u]!==o[u]){i=u;break}var l=[];for(u=i;u<n.length;u++)l.push("..");return(l=l.concat(o.slice(i))).join("/")},exports.sep="/",exports.delimiter=":",exports.dirname=function(r){if("string"!=typeof r&&(r+=""),0===r.length)return".";for(var t=r.charCodeAt(0),e=47===t,n=-1,o=!0,s=r.length-1;s>=1;--s)if(47===(t=r.charCodeAt(s))){if(!o){n=s;break}}else o=!1;return-1===n?e?"/":".":e&&1===n?"/":r.slice(0,n)},exports.basename=function(r,t){var e=basename(r);return t&&e.substr(-1*t.length)===t&&(e=e.substr(0,e.length-t.length)),e},exports.extname=function(r){"string"!=typeof r&&(r+="");for(var t=-1,e=0,n=-1,o=!0,s=0,i=r.length-1;i>=0;--i){var u=r.charCodeAt(i);if(47!==u)-1===n&&(o=!1,n=i+1),46===u?-1===t?t=i:1!==s&&(s=1):-1!==t&&(s=-1);else if(!o){e=i+1;break}}return-1===t||-1===n||0===s||1===s&&t===n-1&&t===e+1?"":r.slice(t,n)};var substr="b"==="ab".substr(-1)?function(r,t,e){return r.substr(t,e)}:function(r,t,e){return t<0&&(t=r.length+t),r.substr(t,e)};
2844
2847
 
2845
2848
  }).call(this)}).call(this,require('_process'))
2846
- },{"_process":685}],685:[function(require,module,exports){
2849
+ },{"_process":686}],686:[function(require,module,exports){
2847
2850
  var cachedSetTimeout,cachedClearTimeout,process=module.exports={};function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}function runTimeout(e){if(cachedSetTimeout===setTimeout)return setTimeout(e,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(e,0);try{return cachedSetTimeout(e,0)}catch(t){try{return cachedSetTimeout.call(null,e,0)}catch(t){return cachedSetTimeout.call(this,e,0)}}}function runClearTimeout(e){if(cachedClearTimeout===clearTimeout)return clearTimeout(e);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(e);try{return cachedClearTimeout(e)}catch(t){try{return cachedClearTimeout.call(null,e)}catch(t){return cachedClearTimeout.call(this,e)}}}!function(){try{cachedSetTimeout="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(e){cachedSetTimeout=defaultSetTimout}try{cachedClearTimeout="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(e){cachedClearTimeout=defaultClearTimeout}}();var currentQueue,queue=[],draining=!1,queueIndex=-1;function cleanUpNextTick(){draining&&currentQueue&&(draining=!1,currentQueue.length?queue=currentQueue.concat(queue):queueIndex=-1,queue.length&&drainQueue())}function drainQueue(){if(!draining){var e=runTimeout(cleanUpNextTick);draining=!0;for(var t=queue.length;t;){for(currentQueue=queue,queue=[];++queueIndex<t;)currentQueue&&currentQueue[queueIndex].run();queueIndex=-1,t=queue.length}currentQueue=null,draining=!1,runClearTimeout(e)}}function Item(e,t){this.fun=e,this.array=t}function noop(){}process.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];queue.push(new Item(e,t)),1!==queue.length||draining||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},process.title="browser",process.browser=!0,process.env={},process.argv=[],process.version="",process.versions={},process.on=noop,process.addListener=noop,process.once=noop,process.off=noop,process.removeListener=noop,process.removeAllListeners=noop,process.emit=noop,process.prependListener=noop,process.prependOnceListener=noop,process.listeners=function(e){return[]},process.binding=function(e){throw new Error("process.binding is not supported")},process.cwd=function(){return"/"},process.chdir=function(e){throw new Error("process.chdir is not supported")},process.umask=function(){return 0};
2848
2851
 
2849
- },{}],686:[function(require,module,exports){
2852
+ },{}],687:[function(require,module,exports){
2850
2853
  (function (global){(function (){
2851
2854
  !function(e){var o="object"==typeof exports&&exports&&!exports.nodeType&&exports,n="object"==typeof module&&module&&!module.nodeType&&module,t="object"==typeof global&&global;t.global!==t&&t.window!==t&&t.self!==t||(e=t);var r,u,i=2147483647,f=36,c=1,l=26,s=38,d=700,p=72,a=128,h="-",v=/^xn--/,g=/[^\x20-\x7E]/,w=/[\x2E\u3002\uFF0E\uFF61]/g,x={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},b=f-c,y=Math.floor,C=String.fromCharCode;function m(e){throw new RangeError(x[e])}function j(e,o){for(var n=e.length,t=[];n--;)t[n]=o(e[n]);return t}function A(e,o){var n=e.split("@"),t="";return n.length>1&&(t=n[0]+"@",e=n[1]),t+j((e=e.replace(w,".")).split("."),o).join(".")}function I(e){for(var o,n,t=[],r=0,u=e.length;r<u;)(o=e.charCodeAt(r++))>=55296&&o<=56319&&r<u?56320==(64512&(n=e.charCodeAt(r++)))?t.push(((1023&o)<<10)+(1023&n)+65536):(t.push(o),r--):t.push(o);return t}function E(e){return j(e,function(e){var o="";return e>65535&&(o+=C((e-=65536)>>>10&1023|55296),e=56320|1023&e),o+=C(e)}).join("")}function F(e,o){return e+22+75*(e<26)-((0!=o)<<5)}function O(e,o,n){var t=0;for(e=n?y(e/d):e>>1,e+=y(e/o);e>b*l>>1;t+=f)e=y(e/b);return y(t+(b+1)*e/(e+s))}function S(e){var o,n,t,r,u,s,d,v,g,w,x,b=[],C=e.length,j=0,A=a,I=p;for((n=e.lastIndexOf(h))<0&&(n=0),t=0;t<n;++t)e.charCodeAt(t)>=128&&m("not-basic"),b.push(e.charCodeAt(t));for(r=n>0?n+1:0;r<C;){for(u=j,s=1,d=f;r>=C&&m("invalid-input"),((v=(x=e.charCodeAt(r++))-48<10?x-22:x-65<26?x-65:x-97<26?x-97:f)>=f||v>y((i-j)/s))&&m("overflow"),j+=v*s,!(v<(g=d<=I?c:d>=I+l?l:d-I));d+=f)s>y(i/(w=f-g))&&m("overflow"),s*=w;I=O(j-u,o=b.length+1,0==u),y(j/o)>i-A&&m("overflow"),A+=y(j/o),j%=o,b.splice(j++,0,A)}return E(b)}function T(e){var o,n,t,r,u,s,d,v,g,w,x,b,j,A,E,S=[];for(b=(e=I(e)).length,o=a,n=0,u=p,s=0;s<b;++s)(x=e[s])<128&&S.push(C(x));for(t=r=S.length,r&&S.push(h);t<b;){for(d=i,s=0;s<b;++s)(x=e[s])>=o&&x<d&&(d=x);for(d-o>y((i-n)/(j=t+1))&&m("overflow"),n+=(d-o)*j,o=d,s=0;s<b;++s)if((x=e[s])<o&&++n>i&&m("overflow"),x==o){for(v=n,g=f;!(v<(w=g<=u?c:g>=u+l?l:g-u));g+=f)E=v-w,A=f-w,S.push(C(F(w+E%A,0))),v=y(E/A);S.push(C(F(v,0))),u=O(n,j,t==r),n=0,++t}++n,++o}return S.join("")}if(r={version:"1.4.1",ucs2:{decode:I,encode:E},decode:S,encode:T,toASCII:function(e){return A(e,function(e){return g.test(e)?"xn--"+T(e):e})},toUnicode:function(e){return A(e,function(e){return v.test(e)?S(e.slice(4).toLowerCase()):e})}},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return r});else if(o&&n)if(module.exports==o)n.exports=r;else for(u in r)r.hasOwnProperty(u)&&(o[u]=r[u]);else e.punycode=r}(this);
2852
2855
 
2853
2856
  }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
2854
- },{}],687:[function(require,module,exports){
2857
+ },{}],688:[function(require,module,exports){
2855
2858
  "use strict";function hasOwnProperty(r,e){return Object.prototype.hasOwnProperty.call(r,e)}module.exports=function(r,e,t,n){e=e||"&",t=t||"=";var o={};if("string"!=typeof r||0===r.length)return o;var a=/\+/g;r=r.split(e);var s=1e3;n&&"number"==typeof n.maxKeys&&(s=n.maxKeys);var p=r.length;s>0&&p>s&&(p=s);for(var y=0;y<p;++y){var u,c,i,l,f=r[y].replace(a,"%20"),v=f.indexOf(t);v>=0?(u=f.substr(0,v),c=f.substr(v+1)):(u=f,c=""),i=decodeURIComponent(u),l=decodeURIComponent(c),hasOwnProperty(o,i)?isArray(o[i])?o[i].push(l):o[i]=[o[i],l]:o[i]=l}return o};var isArray=Array.isArray||function(r){return"[object Array]"===Object.prototype.toString.call(r)};
2856
2859
 
2857
- },{}],688:[function(require,module,exports){
2860
+ },{}],689:[function(require,module,exports){
2858
2861
  "use strict";var stringifyPrimitive=function(r){switch(typeof r){case"string":return r;case"boolean":return r?"true":"false";case"number":return isFinite(r)?r:"";default:return""}};module.exports=function(r,e,t,n){return e=e||"&",t=t||"=",null===r&&(r=void 0),"object"==typeof r?map(objectKeys(r),function(n){var i=encodeURIComponent(stringifyPrimitive(n))+t;return isArray(r[n])?map(r[n],function(r){return i+encodeURIComponent(stringifyPrimitive(r))}).join(e):i+encodeURIComponent(stringifyPrimitive(r[n]))}).join(e):n?encodeURIComponent(stringifyPrimitive(n))+t+encodeURIComponent(stringifyPrimitive(r)):""};var isArray=Array.isArray||function(r){return"[object Array]"===Object.prototype.toString.call(r)};function map(r,e){if(r.map)return r.map(e);for(var t=[],n=0;n<r.length;n++)t.push(e(r[n],n));return t}var objectKeys=Object.keys||function(r){var e=[];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&e.push(t);return e};
2859
2862
 
2860
- },{}],689:[function(require,module,exports){
2863
+ },{}],690:[function(require,module,exports){
2861
2864
  "use strict";exports.decode=exports.parse=require("./decode"),exports.encode=exports.stringify=require("./encode");
2862
2865
 
2863
- },{"./decode":687,"./encode":688}],690:[function(require,module,exports){
2866
+ },{"./decode":688,"./encode":689}],691:[function(require,module,exports){
2864
2867
  "use strict";var punycode=require("punycode"),util=require("./util");function Url(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}exports.parse=urlParse,exports.resolve=urlResolve,exports.resolveObject=urlResolveObject,exports.format=urlFormat,exports.Url=Url;var protocolPattern=/^([a-z0-9.+-]+:)/i,portPattern=/:[0-9]*$/,simplePathPattern=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,delims=["<",">",'"',"`"," ","\r","\n","\t"],unwise=["{","}","|","\\","^","`"].concat(delims),autoEscape=["'"].concat(unwise),nonHostChars=["%","/","?",";","#"].concat(autoEscape),hostEndingChars=["/","?","#"],hostnameMaxLen=255,hostnamePartPattern=/^[+a-z0-9A-Z_-]{0,63}$/,hostnamePartStart=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,unsafeProtocol={javascript:!0,"javascript:":!0},hostlessProtocol={javascript:!0,"javascript:":!0},slashedProtocol={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},querystring=require("querystring");function urlParse(t,s,e){if(t&&util.isObject(t)&&t instanceof Url)return t;var h=new Url;return h.parse(t,s,e),h}function urlFormat(t){return util.isString(t)&&(t=urlParse(t)),t instanceof Url?t.format():Url.prototype.format.call(t)}function urlResolve(t,s){return urlParse(t,!1,!0).resolve(s)}function urlResolveObject(t,s){return t?urlParse(t,!1,!0).resolveObject(s):s}Url.prototype.parse=function(t,s,e){if(!util.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var h=t.indexOf("?"),r=-1!==h&&h<t.indexOf("#")?"?":"#",a=t.split(r);a[0]=a[0].replace(/\\/g,"/");var o=t=a.join(r);if(o=o.trim(),!e&&1===t.split("#").length){var n=simplePathPattern.exec(o);if(n)return this.path=o,this.href=o,this.pathname=n[1],n[2]?(this.search=n[2],this.query=s?querystring.parse(this.search.substr(1)):this.search.substr(1)):s&&(this.search="",this.query={}),this}var i=protocolPattern.exec(o);if(i){var l=(i=i[0]).toLowerCase();this.protocol=l,o=o.substr(i.length)}if(e||i||o.match(/^\/\/[^@\/]+@[^@\/]+/)){var u="//"===o.substr(0,2);!u||i&&hostlessProtocol[i]||(o=o.substr(2),this.slashes=!0)}if(!hostlessProtocol[i]&&(u||i&&!slashedProtocol[i])){for(var p,c,f=-1,m=0;m<hostEndingChars.length;m++){-1!==(v=o.indexOf(hostEndingChars[m]))&&(-1===f||v<f)&&(f=v)}-1!==(c=-1===f?o.lastIndexOf("@"):o.lastIndexOf("@",f))&&(p=o.slice(0,c),o=o.slice(c+1),this.auth=decodeURIComponent(p)),f=-1;for(m=0;m<nonHostChars.length;m++){var v;-1!==(v=o.indexOf(nonHostChars[m]))&&(-1===f||v<f)&&(f=v)}-1===f&&(f=o.length),this.host=o.slice(0,f),o=o.slice(f),this.parseHost(),this.hostname=this.hostname||"";var g="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!g)for(var y=this.hostname.split(/\./),P=(m=0,y.length);m<P;m++){var d=y[m];if(d&&!d.match(hostnamePartPattern)){for(var b="",q=0,O=d.length;q<O;q++)d.charCodeAt(q)>127?b+="x":b+=d[q];if(!b.match(hostnamePartPattern)){var j=y.slice(0,m),x=y.slice(m+1),U=d.match(hostnamePartStart);U&&(j.push(U[1]),x.unshift(U[2])),x.length&&(o="/"+x.join(".")+o),this.hostname=j.join(".");break}}}this.hostname.length>hostnameMaxLen?this.hostname="":this.hostname=this.hostname.toLowerCase(),g||(this.hostname=punycode.toASCII(this.hostname));var C=this.port?":"+this.port:"",A=this.hostname||"";this.host=A+C,this.href+=this.host,g&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==o[0]&&(o="/"+o))}if(!unsafeProtocol[l])for(m=0,P=autoEscape.length;m<P;m++){var w=autoEscape[m];if(-1!==o.indexOf(w)){var E=encodeURIComponent(w);E===w&&(E=escape(w)),o=o.split(w).join(E)}}var I=o.indexOf("#");-1!==I&&(this.hash=o.substr(I),o=o.slice(0,I));var R=o.indexOf("?");if(-1!==R?(this.search=o.substr(R),this.query=o.substr(R+1),s&&(this.query=querystring.parse(this.query)),o=o.slice(0,R)):s&&(this.search="",this.query={}),o&&(this.pathname=o),slashedProtocol[l]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){C=this.pathname||"";var S=this.search||"";this.path=C+S}return this.href=this.format(),this},Url.prototype.format=function(){var t=this.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var s=this.protocol||"",e=this.pathname||"",h=this.hash||"",r=!1,a="";this.host?r=t+this.host:this.hostname&&(r=t+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(r+=":"+this.port)),this.query&&util.isObject(this.query)&&Object.keys(this.query).length&&(a=querystring.stringify(this.query));var o=this.search||a&&"?"+a||"";return s&&":"!==s.substr(-1)&&(s+=":"),this.slashes||(!s||slashedProtocol[s])&&!1!==r?(r="//"+(r||""),e&&"/"!==e.charAt(0)&&(e="/"+e)):r||(r=""),h&&"#"!==h.charAt(0)&&(h="#"+h),o&&"?"!==o.charAt(0)&&(o="?"+o),s+r+(e=e.replace(/[?#]/g,function(t){return encodeURIComponent(t)}))+(o=o.replace("#","%23"))+h},Url.prototype.resolve=function(t){return this.resolveObject(urlParse(t,!1,!0)).format()},Url.prototype.resolveObject=function(t){if(util.isString(t)){var s=new Url;s.parse(t,!1,!0),t=s}for(var e=new Url,h=Object.keys(this),r=0;r<h.length;r++){var a=h[r];e[a]=this[a]}if(e.hash=t.hash,""===t.href)return e.href=e.format(),e;if(t.slashes&&!t.protocol){for(var o=Object.keys(t),n=0;n<o.length;n++){var i=o[n];"protocol"!==i&&(e[i]=t[i])}return slashedProtocol[e.protocol]&&e.hostname&&!e.pathname&&(e.path=e.pathname="/"),e.href=e.format(),e}if(t.protocol&&t.protocol!==e.protocol){if(!slashedProtocol[t.protocol]){for(var l=Object.keys(t),u=0;u<l.length;u++){var p=l[u];e[p]=t[p]}return e.href=e.format(),e}if(e.protocol=t.protocol,t.host||hostlessProtocol[t.protocol])e.pathname=t.pathname;else{for(var c=(t.pathname||"").split("/");c.length&&!(t.host=c.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),""!==c[0]&&c.unshift(""),c.length<2&&c.unshift(""),e.pathname=c.join("/")}if(e.search=t.search,e.query=t.query,e.host=t.host||"",e.auth=t.auth,e.hostname=t.hostname||t.host,e.port=t.port,e.pathname||e.search){var f=e.pathname||"",m=e.search||"";e.path=f+m}return e.slashes=e.slashes||t.slashes,e.href=e.format(),e}var v=e.pathname&&"/"===e.pathname.charAt(0),g=t.host||t.pathname&&"/"===t.pathname.charAt(0),y=g||v||e.host&&t.pathname,P=y,d=e.pathname&&e.pathname.split("/")||[],b=(c=t.pathname&&t.pathname.split("/")||[],e.protocol&&!slashedProtocol[e.protocol]);if(b&&(e.hostname="",e.port=null,e.host&&(""===d[0]?d[0]=e.host:d.unshift(e.host)),e.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(""===c[0]?c[0]=t.host:c.unshift(t.host)),t.host=null),y=y&&(""===c[0]||""===d[0])),g)e.host=t.host||""===t.host?t.host:e.host,e.hostname=t.hostname||""===t.hostname?t.hostname:e.hostname,e.search=t.search,e.query=t.query,d=c;else if(c.length)d||(d=[]),d.pop(),d=d.concat(c),e.search=t.search,e.query=t.query;else if(!util.isNullOrUndefined(t.search)){if(b)e.hostname=e.host=d.shift(),(U=!!(e.host&&e.host.indexOf("@")>0)&&e.host.split("@"))&&(e.auth=U.shift(),e.host=e.hostname=U.shift());return e.search=t.search,e.query=t.query,util.isNull(e.pathname)&&util.isNull(e.search)||(e.path=(e.pathname?e.pathname:"")+(e.search?e.search:"")),e.href=e.format(),e}if(!d.length)return e.pathname=null,e.search?e.path="/"+e.search:e.path=null,e.href=e.format(),e;for(var q=d.slice(-1)[0],O=(e.host||t.host||d.length>1)&&("."===q||".."===q)||""===q,j=0,x=d.length;x>=0;x--)"."===(q=d[x])?d.splice(x,1):".."===q?(d.splice(x,1),j++):j&&(d.splice(x,1),j--);if(!y&&!P)for(;j--;j)d.unshift("..");!y||""===d[0]||d[0]&&"/"===d[0].charAt(0)||d.unshift(""),O&&"/"!==d.join("/").substr(-1)&&d.push("");var U,C=""===d[0]||d[0]&&"/"===d[0].charAt(0);b&&(e.hostname=e.host=C?"":d.length?d.shift():"",(U=!!(e.host&&e.host.indexOf("@")>0)&&e.host.split("@"))&&(e.auth=U.shift(),e.host=e.hostname=U.shift()));return(y=y||e.host&&d.length)&&!C&&d.unshift(""),d.length?e.pathname=d.join("/"):(e.pathname=null,e.path=null),util.isNull(e.pathname)&&util.isNull(e.search)||(e.path=(e.pathname?e.pathname:"")+(e.search?e.search:"")),e.auth=t.auth||e.auth,e.slashes=e.slashes||t.slashes,e.href=e.format(),e},Url.prototype.parseHost=function(){var t=this.host,s=portPattern.exec(t);s&&(":"!==(s=s[0])&&(this.port=s.substr(1)),t=t.substr(0,t.length-s.length)),t&&(this.hostname=t)};
2865
2868
 
2866
- },{"./util":691,"punycode":686,"querystring":689}],691:[function(require,module,exports){
2869
+ },{"./util":692,"punycode":687,"querystring":690}],692:[function(require,module,exports){
2867
2870
  "use strict";module.exports={isString:function(n){return"string"==typeof n},isObject:function(n){return"object"==typeof n&&null!==n},isNull:function(n){return null===n},isNullOrUndefined:function(n){return null==n}};
2868
2871
 
2869
- },{}],692:[function(require,module,exports){
2872
+ },{}],693:[function(require,module,exports){
2870
2873
  !function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],t):t(CodeMirror)}(function(t){var e=t.Pos;function r(t,e){for(var r=0,n=t.length;r<n;++r)e(t[r])}function n(r,n,i,o){var s=r.getCursor(),a=i(r,s);if(!/\b(?:string|comment)\b/.test(a.type)){var l=t.innerMode(r.getMode(),a.state);if("json"!==l.mode.helperType){a.state=l.state,/^[\w$_]*$/.test(a.string)?a.end>s.ch&&(a.end=s.ch,a.string=a.string.slice(0,s.ch-a.start)):a={start:s.ch,end:s.ch,string:"",state:a.state,type:"."==a.string?"property":null};for(var f=a;"property"==f.type;){if("."!=(f=i(r,e(s.line,f.start))).string)return;if(f=i(r,e(s.line,f.start)),!p)var p=[];p.push(f)}return{list:c(a,p,n,o),from:e(s.line,a.start),to:e(s.line,a.end)}}}}function i(t,e){var r=t.getTokenAt(e);return e.ch==r.start+1&&"."==r.string.charAt(0)?(r.end=r.start,r.string=".",r.type="property"):/^\.[\w$_]*$/.test(r.string)&&(r.type="property",r.start++,r.string=r.string.replace(/\./,"")),r}t.registerHelper("hint","javascript",function(t,e){return n(t,l,function(t,e){return t.getTokenAt(e)},e)}),t.registerHelper("hint","coffeescript",function(t,e){return n(t,f,i,e)});var o="charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight toUpperCase toLowerCase split concat match replace search".split(" "),s="length concat join splice push pop shift unshift slice reverse sort indexOf lastIndexOf every some filter forEach map reduce reduceRight ".split(" "),a="prototype apply call bind".split(" "),l="break case catch class const continue debugger default delete do else export extends false finally for function if in import instanceof new null return super switch this throw true try typeof var void while with yield".split(" "),f="and break catch class continue delete do else extends false finally for if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes".split(" ");function c(t,e,n,i){var l=[],f=t.string,c=i&&i.globalScope||window;function p(t){0!=t.lastIndexOf(f,0)||function(t,e){if(!Array.prototype.indexOf){for(var r=t.length;r--;)if(t[r]===e)return!0;return!1}return-1!=t.indexOf(e)}(l,t)||l.push(t)}function u(t){"string"==typeof t?r(o,p):t instanceof Array?r(s,p):t instanceof Function&&r(a,p),function(t,e){if(Object.getOwnPropertyNames&&Object.getPrototypeOf)for(var r=t;r;r=Object.getPrototypeOf(r))Object.getOwnPropertyNames(r).forEach(e);else for(var n in t)e(n)}(t,p)}if(e&&e.length){var d,g=e.pop();for(g.type&&0===g.type.indexOf("variable")?(i&&i.additionalContext&&(d=i.additionalContext[g.string]),i&&!1===i.useGlobalScope||(d=d||c[g.string])):"string"==g.type?d="":"atom"==g.type?d=1:"function"==g.type&&(null==c.jQuery||"$"!=g.string&&"jQuery"!=g.string||"function"!=typeof c.jQuery?null!=c._&&"_"==g.string&&"function"==typeof c._&&(d=c._()):d=c.jQuery());null!=d&&e.length;)d=d[e.pop().string];null!=d&&u(d)}else{for(var y=t.state.localVars;y;y=y.next)p(y.name);for(var h=t.state.context;h;h=h.prev)for(y=h.vars;y;y=y.next)p(y.name);for(y=t.state.globalVars;y;y=y.next)p(y.name);if(i&&null!=i.additionalContext)for(var v in i.additionalContext)p(v);i&&!1===i.useGlobalScope||u(c),r(n,p)}return l}});
2871
2874
 
2872
- },{"../../lib/codemirror":693}],693:[function(require,module,exports){
2875
+ },{"../../lib/codemirror":694}],694:[function(require,module,exports){
2873
2876
  !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).CodeMirror=t()}(this,function(){"use strict";var e=navigator.userAgent,t=navigator.platform,r=/gecko\/\d/i.test(e),n=/MSIE \d/.test(e),i=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),o=/Edge\/(\d+)/.exec(e),l=n||i||o,s=l&&(n?document.documentMode||6:+(o||i)[1]),a=!o&&/WebKit\//.test(e),u=a&&/Qt\/\d+\.\d+/.test(e),c=!o&&/Chrome\//.test(e),h=/Opera\//.test(e),f=/Apple Computer/.test(navigator.vendor),d=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),p=/PhantomJS/.test(e),g=f&&(/Mobile\/\w+/.test(e)||navigator.maxTouchPoints>2),v=/Android/.test(e),m=g||v||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),y=g||/Mac/.test(t),b=/\bCrOS\b/.test(e),w=/win/i.test(t),x=h&&e.match(/Version\/(\d*\.\d*)/);x&&(x=Number(x[1])),x&&x>=15&&(h=!1,a=!0);var C=y&&(u||h&&(null==x||x<12.11)),S=r||l&&s>=9;function L(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var k,T=function(e,t){var r=e.className,n=L(t).exec(r);if(n){var i=r.slice(n.index+n[0].length);e.className=r.slice(0,n.index)+(i?n[1]+i:"")}};function M(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function N(e,t){return M(e).appendChild(t)}function O(e,t,r,n){var i=document.createElement(e);if(r&&(i.className=r),n&&(i.style.cssText=n),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o<t.length;++o)i.appendChild(t[o]);return i}function A(e,t,r,n){var i=O(e,t,r,n);return i.setAttribute("role","presentation"),i}function D(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.contains(t);do{if(11==t.nodeType&&(t=t.host),t==e)return!0}while(t=t.parentNode)}function W(){var e;try{e=document.activeElement}catch(t){e=document.body||null}for(;e&&e.shadowRoot&&e.shadowRoot.activeElement;)e=e.shadowRoot.activeElement;return e}function H(e,t){var r=e.className;L(t).test(r)||(e.className+=(r?" ":"")+t)}function F(e,t){for(var r=e.split(" "),n=0;n<r.length;n++)r[n]&&!L(r[n]).test(t)&&(t+=" "+r[n]);return t}k=document.createRange?function(e,t,r,n){var i=document.createRange();return i.setEnd(n||e,r),i.setStart(e,t),i}:function(e,t,r){var n=document.body.createTextRange();try{n.moveToElementText(e.parentNode)}catch(e){return n}return n.collapse(!0),n.moveEnd("character",r),n.moveStart("character",t),n};var P=function(e){e.select()};function E(e){var t=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,t)}}function I(e,t,r){for(var n in t||(t={}),e)!e.hasOwnProperty(n)||!1===r&&t.hasOwnProperty(n)||(t[n]=e[n]);return t}function R(e,t,r,n,i){null==t&&-1==(t=e.search(/[^\s\u00a0]/))&&(t=e.length);for(var o=n||0,l=i||0;;){var s=e.indexOf("\t",o);if(s<0||s>=t)return l+(t-o);l+=s-o,l+=r-l%r,o=s+1}}g?P=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:l&&(P=function(e){try{e.select()}catch(e){}});var z=function(){this.id=null,this.f=null,this.time=0,this.handler=E(this.onTimeout,this)};function B(e,t){for(var r=0;r<e.length;++r)if(e[r]==t)return r;return-1}z.prototype.onTimeout=function(e){e.id=0,e.time<=+new Date?e.f():setTimeout(e.handler,e.time-+new Date)},z.prototype.set=function(e,t){this.f=t;var r=+new Date+e;(!this.id||r<this.time)&&(clearTimeout(this.id),this.id=setTimeout(this.handler,e),this.time=r)};var G=50,U={toString:function(){return"CodeMirror.Pass"}},V={scroll:!1},K={origin:"*mouse"},j={origin:"+move"};function X(e,t,r){for(var n=0,i=0;;){var o=e.indexOf("\t",n);-1==o&&(o=e.length);var l=o-n;if(o==e.length||i+l>=t)return n+Math.min(l,t-i);if(i+=o-n,n=o+1,(i+=r-i%r)>=t)return n}}var Y=[""];function $(e){for(;Y.length<=e;)Y.push(_(Y)+" ");return Y[e]}function _(e){return e[e.length-1]}function q(e,t){for(var r=[],n=0;n<e.length;n++)r[n]=t(e[n],n);return r}function Z(){}function Q(e,t){var r;return Object.create?r=Object.create(e):(Z.prototype=e,r=new Z),t&&I(t,r),r}var J=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;function ee(e){return/\w/.test(e)||e>"€"&&(e.toUpperCase()!=e.toLowerCase()||J.test(e))}function te(e,t){return t?!!(t.source.indexOf("\\w")>-1&&ee(e))||t.test(e):ee(e)}function re(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var ne=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function ie(e){return e.charCodeAt(0)>=768&&ne.test(e)}function oe(e,t,r){for(;(r<0?t>0:t<e.length)&&ie(e.charAt(t));)t+=r;return t}function le(e,t,r){for(var n=t>r?-1:1;;){if(t==r)return t;var i=(t+r)/2,o=n<0?Math.ceil(i):Math.floor(i);if(o==t)return e(o)?t:r;e(o)?r=o:t=o+n}}var se=null;function ae(e,t,r){var n;se=null;for(var i=0;i<e.length;++i){var o=e[i];if(o.from<t&&o.to>t)return i;o.to==t&&(o.from!=o.to&&"before"==r?n=i:se=i),o.from==t&&(o.from!=o.to&&"before"!=r?n=i:se=i)}return null!=n?n:se}var ue=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";var r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,n=/[stwN]/,i=/[LRr]/,o=/[Lb1n]/,l=/[1n]/;function s(e,t,r){this.level=e,this.from=t,this.to=r}return function(a,u){var c="ltr"==u?"L":"R";if(0==a.length||"ltr"==u&&!r.test(a))return!1;for(var h,f=a.length,d=[],p=0;p<f;++p)d.push((h=a.charCodeAt(p))<=247?e.charAt(h):1424<=h&&h<=1524?"R":1536<=h&&h<=1785?t.charAt(h-1536):1774<=h&&h<=2220?"r":8192<=h&&h<=8203?"w":8204==h?"b":"L");for(var g=0,v=c;g<f;++g){var m=d[g];"m"==m?d[g]=v:v=m}for(var y=0,b=c;y<f;++y){var w=d[y];"1"==w&&"r"==b?d[y]="n":i.test(w)&&(b=w,"r"==w&&(d[y]="R"))}for(var x=1,C=d[0];x<f-1;++x){var S=d[x];"+"==S&&"1"==C&&"1"==d[x+1]?d[x]="1":","!=S||C!=d[x+1]||"1"!=C&&"n"!=C||(d[x]=C),C=S}for(var L=0;L<f;++L){var k=d[L];if(","==k)d[L]="N";else if("%"==k){var T=void 0;for(T=L+1;T<f&&"%"==d[T];++T);for(var M=L&&"!"==d[L-1]||T<f&&"1"==d[T]?"1":"N",N=L;N<T;++N)d[N]=M;L=T-1}}for(var O=0,A=c;O<f;++O){var D=d[O];"L"==A&&"1"==D?d[O]="L":i.test(D)&&(A=D)}for(var W=0;W<f;++W)if(n.test(d[W])){var H=void 0;for(H=W+1;H<f&&n.test(d[H]);++H);for(var F="L"==(W?d[W-1]:c),P=F==("L"==(H<f?d[H]:c))?F?"L":"R":c,E=W;E<H;++E)d[E]=P;W=H-1}for(var I,R=[],z=0;z<f;)if(o.test(d[z])){var B=z;for(++z;z<f&&o.test(d[z]);++z);R.push(new s(0,B,z))}else{var G=z,U=R.length,V="rtl"==u?1:0;for(++z;z<f&&"L"!=d[z];++z);for(var K=G;K<z;)if(l.test(d[K])){G<K&&(R.splice(U,0,new s(1,G,K)),U+=V);var j=K;for(++K;K<z&&l.test(d[K]);++K);R.splice(U,0,new s(2,j,K)),U+=V,G=K}else++K;G<z&&R.splice(U,0,new s(1,G,z))}return"ltr"==u&&(1==R[0].level&&(I=a.match(/^\s+/))&&(R[0].from=I[0].length,R.unshift(new s(0,0,I[0].length))),1==_(R).level&&(I=a.match(/\s+$/))&&(_(R).to-=I[0].length,R.push(new s(0,f-I[0].length,f)))),"rtl"==u?R.reverse():R}}();function ce(e,t){var r=e.order;return null==r&&(r=e.order=ue(e.text,t)),r}var he=[],fe=function(e,t,r){if(e.addEventListener)e.addEventListener(t,r,!1);else if(e.attachEvent)e.attachEvent("on"+t,r);else{var n=e._handlers||(e._handlers={});n[t]=(n[t]||he).concat(r)}};function de(e,t){return e._handlers&&e._handlers[t]||he}function pe(e,t,r){if(e.removeEventListener)e.removeEventListener(t,r,!1);else if(e.detachEvent)e.detachEvent("on"+t,r);else{var n=e._handlers,i=n&&n[t];if(i){var o=B(i,r);o>-1&&(n[t]=i.slice(0,o).concat(i.slice(o+1)))}}}function ge(e,t){var r=de(e,t);if(r.length)for(var n=Array.prototype.slice.call(arguments,2),i=0;i<r.length;++i)r[i].apply(null,n)}function ve(e,t,r){return"string"==typeof t&&(t={type:t,preventDefault:function(){this.defaultPrevented=!0}}),ge(e,r||t.type,e,t),Ce(t)||t.codemirrorIgnore}function me(e){var t=e._handlers&&e._handlers.cursorActivity;if(t)for(var r=e.curOp.cursorActivityHandlers||(e.curOp.cursorActivityHandlers=[]),n=0;n<t.length;++n)-1==B(r,t[n])&&r.push(t[n])}function ye(e,t){return de(e,t).length>0}function be(e){e.prototype.on=function(e,t){fe(this,e,t)},e.prototype.off=function(e,t){pe(this,e,t)}}function we(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function xe(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function Ce(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function Se(e){we(e),xe(e)}function Le(e){return e.target||e.srcElement}function ke(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),y&&e.ctrlKey&&1==t&&(t=3),t}var Te,Me,Ne=function(){if(l&&s<9)return!1;var e=O("div");return"draggable"in e||"dragDrop"in e}();function Oe(e){if(null==Te){var t=O("span","​");N(e,O("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(Te=t.offsetWidth<=1&&t.offsetHeight>2&&!(l&&s<8))}var r=Te?O("span","​"):O("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function Ae(e){if(null!=Me)return Me;var t=N(e,document.createTextNode("AخA")),r=k(t,0,1).getBoundingClientRect(),n=k(t,1,2).getBoundingClientRect();return M(e),!(!r||r.left==r.right)&&(Me=n.right-r.right<3)}var De,We=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,r=[],n=e.length;t<=n;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),l=o.indexOf("\r");-1!=l?(r.push(o.slice(0,l)),t+=l+1):(r.push(o),t=i+1)}return r}:function(e){return e.split(/\r\n?|\n/)},He=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(e){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(e){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints("StartToEnd",t)},Fe="oncopy"in(De=O("div"))||(De.setAttribute("oncopy","return;"),"function"==typeof De.oncopy),Pe=null;var Ee={},Ie={};function Re(e){if("string"==typeof e&&Ie.hasOwnProperty(e))e=Ie[e];else if(e&&"string"==typeof e.name&&Ie.hasOwnProperty(e.name)){var t=Ie[e.name];"string"==typeof t&&(t={name:t}),(e=Q(t,e)).name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return Re("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return Re("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function ze(e,t){t=Re(t);var r=Ee[t.name];if(!r)return ze(e,"text/plain");var n=r(e,t);if(Be.hasOwnProperty(t.name)){var i=Be[t.name];for(var o in i)i.hasOwnProperty(o)&&(n.hasOwnProperty(o)&&(n["_"+o]=n[o]),n[o]=i[o])}if(n.name=t.name,t.helperType&&(n.helperType=t.helperType),t.modeProps)for(var l in t.modeProps)n[l]=t.modeProps[l];return n}var Be={};function Ge(e,t){I(t,Be.hasOwnProperty(e)?Be[e]:Be[e]={})}function Ue(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var r={};for(var n in t){var i=t[n];i instanceof Array&&(i=i.concat([])),r[n]=i}return r}function Ve(e,t){for(var r;e.innerMode&&(r=e.innerMode(t))&&r.mode!=e;)t=r.state,e=r.mode;return r||{mode:e,state:t}}function Ke(e,t,r){return!e.startState||e.startState(t,r)}var je=function(e,t,r){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=r};function Xe(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var r=e;!r.lines;)for(var n=0;;++n){var i=r.children[n],o=i.chunkSize();if(t<o){r=i;break}t-=o}return r.lines[t]}function Ye(e,t,r){var n=[],i=t.line;return e.iter(t.line,r.line+1,function(e){var o=e.text;i==r.line&&(o=o.slice(0,r.ch)),i==t.line&&(o=o.slice(t.ch)),n.push(o),++i}),n}function $e(e,t,r){var n=[];return e.iter(t,r,function(e){n.push(e.text)}),n}function _e(e,t){var r=t-e.height;if(r)for(var n=e;n;n=n.parent)n.height+=r}function qe(e){if(null==e.parent)return null;for(var t=e.parent,r=B(t.lines,e),n=t.parent;n;t=n,n=n.parent)for(var i=0;n.children[i]!=t;++i)r+=n.children[i].chunkSize();return r+t.first}function Ze(e,t){var r=e.first;e:do{for(var n=0;n<e.children.length;++n){var i=e.children[n],o=i.height;if(t<o){e=i;continue e}t-=o,r+=i.chunkSize()}return r}while(!e.lines);for(var l=0;l<e.lines.length;++l){var s=e.lines[l].height;if(t<s)break;t-=s}return r+l}function Qe(e,t){return t>=e.first&&t<e.first+e.size}function Je(e,t){return String(e.lineNumberFormatter(t+e.firstLineNumber))}function et(e,t,r){if(void 0===r&&(r=null),!(this instanceof et))return new et(e,t,r);this.line=e,this.ch=t,this.sticky=r}function tt(e,t){return e.line-t.line||e.ch-t.ch}function rt(e,t){return e.sticky==t.sticky&&0==tt(e,t)}function nt(e){return et(e.line,e.ch)}function it(e,t){return tt(e,t)<0?t:e}function ot(e,t){return tt(e,t)<0?e:t}function lt(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function st(e,t){if(t.line<e.first)return et(e.first,0);var r=e.first+e.size-1;return t.line>r?et(r,Xe(e,r).text.length):function(e,t){var r=e.ch;return null==r||r>t?et(e.line,t):r<0?et(e.line,0):e}(t,Xe(e,t.line).text.length)}function at(e,t){for(var r=[],n=0;n<t.length;n++)r[n]=st(e,t[n]);return r}je.prototype.eol=function(){return this.pos>=this.string.length},je.prototype.sol=function(){return this.pos==this.lineStart},je.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},je.prototype.next=function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},je.prototype.eat=function(e){var t=this.string.charAt(this.pos);if("string"==typeof e?t==e:t&&(e.test?e.test(t):e(t)))return++this.pos,t},je.prototype.eatWhile=function(e){for(var t=this.pos;this.eat(e););return this.pos>t},je.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},je.prototype.skipToEnd=function(){this.pos=this.string.length},je.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},je.prototype.backUp=function(e){this.pos-=e},je.prototype.column=function(){return this.lastColumnPos<this.start&&(this.lastColumnValue=R(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue-(this.lineStart?R(this.string,this.lineStart,this.tabSize):0)},je.prototype.indentation=function(){return R(this.string,null,this.tabSize)-(this.lineStart?R(this.string,this.lineStart,this.tabSize):0)},je.prototype.match=function(e,t,r){if("string"!=typeof e){var n=this.string.slice(this.pos).match(e);return n&&n.index>0?null:(n&&!1!==t&&(this.pos+=n[0].length),n)}var i=function(e){return r?e.toLowerCase():e};if(i(this.string.substr(this.pos,e.length))==i(e))return!1!==t&&(this.pos+=e.length),!0},je.prototype.current=function(){return this.string.slice(this.start,this.pos)},je.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},je.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},je.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var ut=function(e,t){this.state=e,this.lookAhead=t},ct=function(e,t,r,n){this.state=t,this.doc=e,this.line=r,this.maxLookAhead=n||0,this.baseTokens=null,this.baseTokenPos=1};function ht(e,t,r,n){var i=[e.state.modeGen],o={};wt(e,t.text,e.doc.mode,r,function(e,t){return i.push(e,t)},o,n);for(var l=r.state,s=function(n){r.baseTokens=i;var s=e.state.overlays[n],a=1,u=0;r.state=!0,wt(e,t.text,s.mode,r,function(e,t){for(var r=a;u<e;){var n=i[a];n>e&&i.splice(a,1,e,i[a+1],n),a+=2,u=Math.min(e,n)}if(t)if(s.opaque)i.splice(r,a-r,e,"overlay "+t),a=r+2;else for(;r<a;r+=2){var o=i[r+1];i[r+1]=(o?o+" ":"")+"overlay "+t}},o),r.state=l,r.baseTokens=null,r.baseTokenPos=1},a=0;a<e.state.overlays.length;++a)s(a);return{styles:i,classes:o.bgClass||o.textClass?o:null}}function ft(e,t,r){if(!t.styles||t.styles[0]!=e.state.modeGen){var n=dt(e,qe(t)),i=t.text.length>e.options.maxHighlightLength&&Ue(e.doc.mode,n.state),o=ht(e,t,n);i&&(n.state=i),t.stateAfter=n.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),r===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function dt(e,t,r){var n=e.doc,i=e.display;if(!n.mode.startState)return new ct(n,!0,t);var o=function(e,t,r){for(var n,i,o=e.doc,l=r?-1:t-(e.doc.mode.innerMode?1e3:100),s=t;s>l;--s){if(s<=o.first)return o.first;var a=Xe(o,s-1),u=a.stateAfter;if(u&&(!r||s+(u instanceof ut?u.lookAhead:0)<=o.modeFrontier))return s;var c=R(a.text,null,e.options.tabSize);(null==i||n>c)&&(i=s-1,n=c)}return i}(e,t,r),l=o>n.first&&Xe(n,o-1).stateAfter,s=l?ct.fromSaved(n,l,o):new ct(n,Ke(n.mode),o);return n.iter(o,t,function(r){pt(e,r.text,s);var n=s.line;r.stateAfter=n==t-1||n%5==0||n>=i.viewFrom&&n<i.viewTo?s.save():null,s.nextLine()}),r&&(n.modeFrontier=s.line),s}function pt(e,t,r,n){var i=e.doc.mode,o=new je(t,e.options.tabSize,r);for(o.start=o.pos=n||0,""==t&&gt(i,r.state);!o.eol();)vt(i,o,r.state),o.start=o.pos}function gt(e,t){if(e.blankLine)return e.blankLine(t);if(e.innerMode){var r=Ve(e,t);return r.mode.blankLine?r.mode.blankLine(r.state):void 0}}function vt(e,t,r,n){for(var i=0;i<10;i++){n&&(n[0]=Ve(e,r).mode);var o=e.token(t,r);if(t.pos>t.start)return o}throw new Error("Mode "+e.name+" failed to advance stream.")}ct.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},ct.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},ct.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},ct.fromSaved=function(e,t,r){return t instanceof ut?new ct(e,Ue(e.mode,t.state),r,t.lookAhead):new ct(e,Ue(e.mode,t),r)},ct.prototype.save=function(e){var t=!1!==e?Ue(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new ut(t,this.maxLookAhead):t};var mt=function(e,t,r){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=r};function yt(e,t,r,n){var i,o,l=e.doc,s=l.mode,a=Xe(l,(t=st(l,t)).line),u=dt(e,t.line,r),c=new je(a.text,e.options.tabSize,u);for(n&&(o=[]);(n||c.pos<t.ch)&&!c.eol();)c.start=c.pos,i=vt(s,c,u.state),n&&o.push(new mt(c,i,Ue(l.mode,u.state)));return n?o:new mt(c,i,u.state)}function bt(e,t){if(e)for(;;){var r=e.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!r)break;e=e.slice(0,r.index)+e.slice(r.index+r[0].length);var n=r[1]?"bgClass":"textClass";null==t[n]?t[n]=r[2]:new RegExp("(?:^|\\s)"+r[2]+"(?:$|\\s)").test(t[n])||(t[n]+=" "+r[2])}return e}function wt(e,t,r,n,i,o,l){var s=r.flattenSpans;null==s&&(s=e.options.flattenSpans);var a,u=0,c=null,h=new je(t,e.options.tabSize,n),f=e.options.addModeClass&&[null];for(""==t&&bt(gt(r,n.state),o);!h.eol();){if(h.pos>e.options.maxHighlightLength?(s=!1,l&&pt(e,t,n,h.pos),h.pos=t.length,a=null):a=bt(vt(r,h,n.state,f),o),f){var d=f[0].name;d&&(a="m-"+(a?d+" "+a:d))}if(!s||c!=a){for(;u<h.start;)i(u=Math.min(h.start,u+5e3),c);c=a}h.start=h.pos}for(;u<h.pos;){var p=Math.min(h.pos,u+5e3);i(p,c),u=p}}var xt=!1,Ct=!1;function St(e,t,r){this.marker=e,this.from=t,this.to=r}function Lt(e,t){if(e)for(var r=0;r<e.length;++r){var n=e[r];if(n.marker==t)return n}}function kt(e,t){for(var r,n=0;n<e.length;++n)e[n]!=t&&(r||(r=[])).push(e[n]);return r}function Tt(e,t){if(t.full)return null;var r=Qe(e,t.from.line)&&Xe(e,t.from.line).markedSpans,n=Qe(e,t.to.line)&&Xe(e,t.to.line).markedSpans;if(!r&&!n)return null;var i=t.from.ch,o=t.to.ch,l=0==tt(t.from,t.to),s=function(e,t,r){var n;if(e)for(var i=0;i<e.length;++i){var o=e[i],l=o.marker;if(null==o.from||(l.inclusiveLeft?o.from<=t:o.from<t)||o.from==t&&"bookmark"==l.type&&(!r||!o.marker.insertLeft)){var s=null==o.to||(l.inclusiveRight?o.to>=t:o.to>t);(n||(n=[])).push(new St(l,o.from,s?null:o.to))}}return n}(r,i,l),a=function(e,t,r){var n;if(e)for(var i=0;i<e.length;++i){var o=e[i],l=o.marker;if(null==o.to||(l.inclusiveRight?o.to>=t:o.to>t)||o.from==t&&"bookmark"==l.type&&(!r||o.marker.insertLeft)){var s=null==o.from||(l.inclusiveLeft?o.from<=t:o.from<t);(n||(n=[])).push(new St(l,s?null:o.from-t,null==o.to?null:o.to-t))}}return n}(n,o,l),u=1==t.text.length,c=_(t.text).length+(u?i:0);if(s)for(var h=0;h<s.length;++h){var f=s[h];if(null==f.to){var d=Lt(a,f.marker);d?u&&(f.to=null==d.to?null:d.to+c):f.to=i}}if(a)for(var p=0;p<a.length;++p){var g=a[p];if(null!=g.to&&(g.to+=c),null==g.from)Lt(s,g.marker)||(g.from=c,u&&(s||(s=[])).push(g));else g.from+=c,u&&(s||(s=[])).push(g)}s&&(s=Mt(s)),a&&a!=s&&(a=Mt(a));var v=[s];if(!u){var m,y=t.text.length-2;if(y>0&&s)for(var b=0;b<s.length;++b)null==s[b].to&&(m||(m=[])).push(new St(s[b].marker,null,null));for(var w=0;w<y;++w)v.push(m);v.push(a)}return v}function Mt(e){for(var t=0;t<e.length;++t){var r=e[t];null!=r.from&&r.from==r.to&&!1!==r.marker.clearWhenEmpty&&e.splice(t--,1)}return e.length?e:null}function Nt(e){var t=e.markedSpans;if(t){for(var r=0;r<t.length;++r)t[r].marker.detachLine(e);e.markedSpans=null}}function Ot(e,t){if(t){for(var r=0;r<t.length;++r)t[r].marker.attachLine(e);e.markedSpans=t}}function At(e){return e.inclusiveLeft?-1:0}function Dt(e){return e.inclusiveRight?1:0}function Wt(e,t){var r=e.lines.length-t.lines.length;if(0!=r)return r;var n=e.find(),i=t.find(),o=tt(n.from,i.from)||At(e)-At(t);if(o)return-o;var l=tt(n.to,i.to)||Dt(e)-Dt(t);return l||t.id-e.id}function Ht(e,t){var r,n=Ct&&e.markedSpans;if(n)for(var i=void 0,o=0;o<n.length;++o)(i=n[o]).marker.collapsed&&null==(t?i.from:i.to)&&(!r||Wt(r,i.marker)<0)&&(r=i.marker);return r}function Ft(e){return Ht(e,!0)}function Pt(e){return Ht(e,!1)}function Et(e,t){var r,n=Ct&&e.markedSpans;if(n)for(var i=0;i<n.length;++i){var o=n[i];o.marker.collapsed&&(null==o.from||o.from<t)&&(null==o.to||o.to>t)&&(!r||Wt(r,o.marker)<0)&&(r=o.marker)}return r}function It(e,t,r,n,i){var o=Xe(e,t),l=Ct&&o.markedSpans;if(l)for(var s=0;s<l.length;++s){var a=l[s];if(a.marker.collapsed){var u=a.marker.find(0),c=tt(u.from,r)||At(a.marker)-At(i),h=tt(u.to,n)||Dt(a.marker)-Dt(i);if(!(c>=0&&h<=0||c<=0&&h>=0)&&(c<=0&&(a.marker.inclusiveRight&&i.inclusiveLeft?tt(u.to,r)>=0:tt(u.to,r)>0)||c>=0&&(a.marker.inclusiveRight&&i.inclusiveLeft?tt(u.from,n)<=0:tt(u.from,n)<0)))return!0}}}function Rt(e){for(var t;t=Ft(e);)e=t.find(-1,!0).line;return e}function zt(e,t){var r=Xe(e,t),n=Rt(r);return r==n?t:qe(n)}function Bt(e,t){if(t>e.lastLine())return t;var r,n=Xe(e,t);if(!Gt(e,n))return t;for(;r=Pt(n);)n=r.find(1,!0).line;return qe(n)+1}function Gt(e,t){var r=Ct&&t.markedSpans;if(r)for(var n=void 0,i=0;i<r.length;++i)if((n=r[i]).marker.collapsed){if(null==n.from)return!0;if(!n.marker.widgetNode&&0==n.from&&n.marker.inclusiveLeft&&Ut(e,t,n))return!0}}function Ut(e,t,r){if(null==r.to){var n=r.marker.find(1,!0);return Ut(e,n.line,Lt(n.line.markedSpans,r.marker))}if(r.marker.inclusiveRight&&r.to==t.text.length)return!0;for(var i=void 0,o=0;o<t.markedSpans.length;++o)if((i=t.markedSpans[o]).marker.collapsed&&!i.marker.widgetNode&&i.from==r.to&&(null==i.to||i.to!=r.from)&&(i.marker.inclusiveLeft||r.marker.inclusiveRight)&&Ut(e,t,i))return!0}function Vt(e){for(var t=0,r=(e=Rt(e)).parent,n=0;n<r.lines.length;++n){var i=r.lines[n];if(i==e)break;t+=i.height}for(var o=r.parent;o;o=(r=o).parent)for(var l=0;l<o.children.length;++l){var s=o.children[l];if(s==r)break;t+=s.height}return t}function Kt(e){if(0==e.height)return 0;for(var t,r=e.text.length,n=e;t=Ft(n);){var i=t.find(0,!0);n=i.from.line,r+=i.from.ch-i.to.ch}for(n=e;t=Pt(n);){var o=t.find(0,!0);r-=n.text.length-o.from.ch,r+=(n=o.to.line).text.length-o.to.ch}return r}function jt(e){var t=e.display,r=e.doc;t.maxLine=Xe(r,r.first),t.maxLineLength=Kt(t.maxLine),t.maxLineChanged=!0,r.iter(function(e){var r=Kt(e);r>t.maxLineLength&&(t.maxLineLength=r,t.maxLine=e)})}var Xt=function(e,t,r){this.text=e,Ot(this,t),this.height=r?r(this):1};function Yt(e){e.parent=null,Nt(e)}Xt.prototype.lineNo=function(){return qe(this)},be(Xt);var $t={},_t={};function qt(e,t){if(!e||/^\s*$/.test(e))return null;var r=t.addModeClass?_t:$t;return r[e]||(r[e]=e.replace(/\S+/g,"cm-$&"))}function Zt(e,t){var r=A("span",null,null,a?"padding-right: .1px":null),n={pre:A("pre",[r],"CodeMirror-line"),content:r,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,l=void 0;n.pos=0,n.addToken=Jt,Ae(e.display.measure)&&(l=ce(o,e.doc.direction))&&(n.addToken=er(n.addToken,l)),n.map=[],rr(o,n,ft(e,o,t!=e.display.externalMeasured&&qe(o))),o.styleClasses&&(o.styleClasses.bgClass&&(n.bgClass=F(o.styleClasses.bgClass,n.bgClass||"")),o.styleClasses.textClass&&(n.textClass=F(o.styleClasses.textClass,n.textClass||""))),0==n.map.length&&n.map.push(0,0,n.content.appendChild(Oe(e.display.measure))),0==i?(t.measure.map=n.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(n.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(a){var s=n.content.lastChild;(/\bcm-tab\b/.test(s.className)||s.querySelector&&s.querySelector(".cm-tab"))&&(n.content.className="cm-tab-wrap-hack")}return ge(e,"renderLine",e,t.line,n.pre),n.pre.className&&(n.textClass=F(n.pre.className,n.textClass||"")),n}function Qt(e){var t=O("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Jt(e,t,r,n,i,o,a){if(t){var u,c=e.splitSpaces?function(e,t){if(e.length>1&&!/ /.test(e))return e;for(var r=t,n="",i=0;i<e.length;i++){var o=e.charAt(i);" "!=o||!r||i!=e.length-1&&32!=e.charCodeAt(i+1)||(o=" "),n+=o,r=" "==o}return n}(t,e.trailingSpace):t,h=e.cm.state.specialChars,f=!1;if(h.test(t)){u=document.createDocumentFragment();for(var d=0;;){h.lastIndex=d;var p=h.exec(t),g=p?p.index-d:t.length-d;if(g){var v=document.createTextNode(c.slice(d,d+g));l&&s<9?u.appendChild(O("span",[v])):u.appendChild(v),e.map.push(e.pos,e.pos+g,v),e.col+=g,e.pos+=g}if(!p)break;d+=g+1;var m=void 0;if("\t"==p[0]){var y=e.cm.options.tabSize,b=y-e.col%y;(m=u.appendChild(O("span",$(b),"cm-tab"))).setAttribute("role","presentation"),m.setAttribute("cm-text","\t"),e.col+=b}else"\r"==p[0]||"\n"==p[0]?((m=u.appendChild(O("span","\r"==p[0]?"␍":"␤","cm-invalidchar"))).setAttribute("cm-text",p[0]),e.col+=1):((m=e.cm.options.specialCharPlaceholder(p[0])).setAttribute("cm-text",p[0]),l&&s<9?u.appendChild(O("span",[m])):u.appendChild(m),e.col+=1);e.map.push(e.pos,e.pos+1,m),e.pos++}}else e.col+=t.length,u=document.createTextNode(c),e.map.push(e.pos,e.pos+t.length,u),l&&s<9&&(f=!0),e.pos+=t.length;if(e.trailingSpace=32==c.charCodeAt(t.length-1),r||n||i||f||o||a){var w=r||"";n&&(w+=n),i&&(w+=i);var x=O("span",[u],w,o);if(a)for(var C in a)a.hasOwnProperty(C)&&"style"!=C&&"class"!=C&&x.setAttribute(C,a[C]);return e.content.appendChild(x)}e.content.appendChild(u)}}function er(e,t){return function(r,n,i,o,l,s,a){i=i?i+" cm-force-border":"cm-force-border";for(var u=r.pos,c=u+n.length;;){for(var h=void 0,f=0;f<t.length&&!((h=t[f]).to>u&&h.from<=u);f++);if(h.to>=c)return e(r,n,i,o,l,s,a);e(r,n.slice(0,h.to-u),i,o,null,s,a),o=null,n=n.slice(h.to-u),u=h.to}}}function tr(e,t,r,n){var i=!n&&r.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!n&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",r.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function rr(e,t,r){var n=e.markedSpans,i=e.text,o=0;if(n)for(var l,s,a,u,c,h,f,d=i.length,p=0,g=1,v="",m=0;;){if(m==p){a=u=c=s="",f=null,h=null,m=1/0;for(var y=[],b=void 0,w=0;w<n.length;++w){var x=n[w],C=x.marker;if("bookmark"==C.type&&x.from==p&&C.widgetNode)y.push(C);else if(x.from<=p&&(null==x.to||x.to>p||C.collapsed&&x.to==p&&x.from==p)){if(null!=x.to&&x.to!=p&&m>x.to&&(m=x.to,u=""),C.className&&(a+=" "+C.className),C.css&&(s=(s?s+";":"")+C.css),C.startStyle&&x.from==p&&(c+=" "+C.startStyle),C.endStyle&&x.to==m&&(b||(b=[])).push(C.endStyle,x.to),C.title&&((f||(f={})).title=C.title),C.attributes)for(var S in C.attributes)(f||(f={}))[S]=C.attributes[S];C.collapsed&&(!h||Wt(h.marker,C)<0)&&(h=x)}else x.from>p&&m>x.from&&(m=x.from)}if(b)for(var L=0;L<b.length;L+=2)b[L+1]==m&&(u+=" "+b[L]);if(!h||h.from==p)for(var k=0;k<y.length;++k)tr(t,0,y[k]);if(h&&(h.from||0)==p){if(tr(t,(null==h.to?d+1:h.to)-p,h.marker,null==h.from),null==h.to)return;h.to==p&&(h=!1)}}if(p>=d)break;for(var T=Math.min(d,m);;){if(v){var M=p+v.length;if(!h){var N=M>T?v.slice(0,T-p):v;t.addToken(t,N,l?l+a:a,c,p+N.length==m?u:"",s,f)}if(M>=T){v=v.slice(T-p),p=T;break}p=M,c=""}v=i.slice(o,o=r[g++]),l=qt(r[g++],t.cm.options)}}else for(var O=1;O<r.length;O+=2)t.addToken(t,i.slice(o,o=r[O]),qt(r[O+1],t.cm.options))}function nr(e,t,r){this.line=t,this.rest=function(e){for(var t,r;t=Pt(e);)e=t.find(1,!0).line,(r||(r=[])).push(e);return r}(t),this.size=this.rest?qe(_(this.rest))-r+1:1,this.node=this.text=null,this.hidden=Gt(e,t)}function ir(e,t,r){for(var n,i=[],o=t;o<r;o=n){var l=new nr(e.doc,Xe(e.doc,o),o);n=o+l.size,i.push(l)}return i}var or=null;var lr=null;function sr(e,t){var r=de(e,t);if(r.length){var n,i=Array.prototype.slice.call(arguments,2);or?n=or.delayedCallbacks:lr?n=lr:(n=lr=[],setTimeout(ar,0));for(var o=function(e){n.push(function(){return r[e].apply(null,i)})},l=0;l<r.length;++l)o(l)}}function ar(){var e=lr;lr=null;for(var t=0;t<e.length;++t)e[t]()}function ur(e,t,r,n){for(var i=0;i<t.changes.length;i++){var o=t.changes[i];"text"==o?fr(e,t):"gutter"==o?pr(e,t,r,n):"class"==o?dr(e,t):"widget"==o&&gr(e,t,n)}t.changes=null}function cr(e){return e.node==e.text&&(e.node=O("div",null,null,"position: relative"),e.text.parentNode&&e.text.parentNode.replaceChild(e.node,e.text),e.node.appendChild(e.text),l&&s<8&&(e.node.style.zIndex=2)),e.node}function hr(e,t){var r=e.display.externalMeasured;return r&&r.line==t.line?(e.display.externalMeasured=null,t.measure=r.measure,r.built):Zt(e,t)}function fr(e,t){var r=t.text.className,n=hr(e,t);t.text==t.node&&(t.node=n.pre),t.text.parentNode.replaceChild(n.pre,t.text),t.text=n.pre,n.bgClass!=t.bgClass||n.textClass!=t.textClass?(t.bgClass=n.bgClass,t.textClass=n.textClass,dr(e,t)):r&&(t.text.className=r)}function dr(e,t){!function(e,t){var r=t.bgClass?t.bgClass+" "+(t.line.bgClass||""):t.line.bgClass;if(r&&(r+=" CodeMirror-linebackground"),t.background)r?t.background.className=r:(t.background.parentNode.removeChild(t.background),t.background=null);else if(r){var n=cr(t);t.background=n.insertBefore(O("div",null,r),n.firstChild),e.display.input.setUneditable(t.background)}}(e,t),t.line.wrapClass?cr(t).className=t.line.wrapClass:t.node!=t.text&&(t.node.className="");var r=t.textClass?t.textClass+" "+(t.line.textClass||""):t.line.textClass;t.text.className=r||""}function pr(e,t,r,n){if(t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null),t.gutterBackground&&(t.node.removeChild(t.gutterBackground),t.gutterBackground=null),t.line.gutterClass){var i=cr(t);t.gutterBackground=O("div",null,"CodeMirror-gutter-background "+t.line.gutterClass,"left: "+(e.options.fixedGutter?n.fixedPos:-n.gutterTotalWidth)+"px; width: "+n.gutterTotalWidth+"px"),e.display.input.setUneditable(t.gutterBackground),i.insertBefore(t.gutterBackground,t.text)}var o=t.line.gutterMarkers;if(e.options.lineNumbers||o){var l=cr(t),s=t.gutter=O("div",null,"CodeMirror-gutter-wrapper","left: "+(e.options.fixedGutter?n.fixedPos:-n.gutterTotalWidth)+"px");if(s.setAttribute("aria-hidden","true"),e.display.input.setUneditable(s),l.insertBefore(s,t.text),t.line.gutterClass&&(s.className+=" "+t.line.gutterClass),!e.options.lineNumbers||o&&o["CodeMirror-linenumbers"]||(t.lineNumber=s.appendChild(O("div",Je(e.options,r),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+n.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+e.display.lineNumInnerWidth+"px"))),o)for(var a=0;a<e.display.gutterSpecs.length;++a){var u=e.display.gutterSpecs[a].className,c=o.hasOwnProperty(u)&&o[u];c&&s.appendChild(O("div",[c],"CodeMirror-gutter-elt","left: "+n.gutterLeft[u]+"px; width: "+n.gutterWidth[u]+"px"))}}}function gr(e,t,r){t.alignable&&(t.alignable=null);for(var n=L("CodeMirror-linewidget"),i=t.node.firstChild,o=void 0;i;i=o)o=i.nextSibling,n.test(i.className)&&t.node.removeChild(i);mr(e,t,r)}function vr(e,t,r,n){var i=hr(e,t);return t.text=t.node=i.pre,i.bgClass&&(t.bgClass=i.bgClass),i.textClass&&(t.textClass=i.textClass),dr(e,t),pr(e,t,r,n),mr(e,t,n),t.node}function mr(e,t,r){if(yr(e,t.line,t,r,!0),t.rest)for(var n=0;n<t.rest.length;n++)yr(e,t.rest[n],t,r,!1)}function yr(e,t,r,n,i){if(t.widgets)for(var o=cr(r),l=0,s=t.widgets;l<s.length;++l){var a=s[l],u=O("div",[a.node],"CodeMirror-linewidget"+(a.className?" "+a.className:""));a.handleMouseEvents||u.setAttribute("cm-ignore-events","true"),br(a,u,r,n),e.display.input.setUneditable(u),i&&a.above?o.insertBefore(u,r.gutter||r.text):o.appendChild(u),sr(a,"redraw")}}function br(e,t,r,n){if(e.noHScroll){(r.alignable||(r.alignable=[])).push(t);var i=n.wrapperWidth;t.style.left=n.fixedPos+"px",e.coverGutter||(i-=n.gutterTotalWidth,t.style.paddingLeft=n.gutterTotalWidth+"px"),t.style.width=i+"px"}e.coverGutter&&(t.style.zIndex=5,t.style.position="relative",e.noHScroll||(t.style.marginLeft=-n.gutterTotalWidth+"px"))}function wr(e){if(null!=e.height)return e.height;var t=e.doc.cm;if(!t)return 0;if(!D(document.body,e.node)){var r="position: relative;";e.coverGutter&&(r+="margin-left: -"+t.display.gutters.offsetWidth+"px;"),e.noHScroll&&(r+="width: "+t.display.wrapper.clientWidth+"px;"),N(t.display.measure,O("div",[e.node],null,r))}return e.height=e.node.parentNode.offsetHeight}function xr(e,t){for(var r=Le(t);r!=e.wrapper;r=r.parentNode)if(!r||1==r.nodeType&&"true"==r.getAttribute("cm-ignore-events")||r.parentNode==e.sizer&&r!=e.mover)return!0}function Cr(e){return e.lineSpace.offsetTop}function Sr(e){return e.mover.offsetHeight-e.lineSpace.offsetHeight}function Lr(e){if(e.cachedPaddingH)return e.cachedPaddingH;var t=N(e.measure,O("pre","x","CodeMirror-line-like")),r=window.getComputedStyle?window.getComputedStyle(t):t.currentStyle,n={left:parseInt(r.paddingLeft),right:parseInt(r.paddingRight)};return isNaN(n.left)||isNaN(n.right)||(e.cachedPaddingH=n),n}function kr(e){return G-e.display.nativeBarWidth}function Tr(e){return e.display.scroller.clientWidth-kr(e)-e.display.barWidth}function Mr(e){return e.display.scroller.clientHeight-kr(e)-e.display.barHeight}function Nr(e,t,r){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};if(e.rest){for(var n=0;n<e.rest.length;n++)if(e.rest[n]==t)return{map:e.measure.maps[n],cache:e.measure.caches[n]};for(var i=0;i<e.rest.length;i++)if(qe(e.rest[i])>r)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}}function Or(e,t,r,n){return Wr(e,Dr(e,t),r,n)}function Ar(e,t){if(t>=e.display.viewFrom&&t<e.display.viewTo)return e.display.view[an(e,t)];var r=e.display.externalMeasured;return r&&t>=r.lineN&&t<r.lineN+r.size?r:void 0}function Dr(e,t){var r=qe(t),n=Ar(e,r);n&&!n.text?n=null:n&&n.changes&&(ur(e,n,r,rn(e)),e.curOp.forceUpdate=!0),n||(n=function(e,t){var r=qe(t=Rt(t)),n=e.display.externalMeasured=new nr(e.doc,t,r);n.lineN=r;var i=n.built=Zt(e,n);return n.text=i.pre,N(e.display.lineMeasure,i.pre),n}(e,t));var i=Nr(n,t,r);return{line:t,view:n,rect:null,map:i.map,cache:i.cache,before:i.before,hasHeights:!1}}function Wr(e,t,r,n,i){t.before&&(r=-1);var o,a=r+(n||"");return t.cache.hasOwnProperty(a)?o=t.cache[a]:(t.rect||(t.rect=t.view.text.getBoundingClientRect()),t.hasHeights||(!function(e,t,r){var n=e.options.lineWrapping,i=n&&Tr(e);if(!t.measure.heights||n&&t.measure.width!=i){var o=t.measure.heights=[];if(n){t.measure.width=i;for(var l=t.text.firstChild.getClientRects(),s=0;s<l.length-1;s++){var a=l[s],u=l[s+1];Math.abs(a.bottom-u.bottom)>2&&o.push((a.bottom+u.top)/2-r.top)}}o.push(r.bottom-r.top)}}(e,t.view,t.rect),t.hasHeights=!0),(o=function(e,t,r,n){var i,o=Pr(t.map,r,n),a=o.node,u=o.start,c=o.end,h=o.collapse;if(3==a.nodeType){for(var f=0;f<4;f++){for(;u&&ie(t.line.text.charAt(o.coverStart+u));)--u;for(;o.coverStart+c<o.coverEnd&&ie(t.line.text.charAt(o.coverStart+c));)++c;if((i=l&&s<9&&0==u&&c==o.coverEnd-o.coverStart?a.parentNode.getBoundingClientRect():Er(k(a,u,c).getClientRects(),n)).left||i.right||0==u)break;c=u,u-=1,h="right"}l&&s<11&&(i=function(e,t){if(!window.screen||null==screen.logicalXDPI||screen.logicalXDPI==screen.deviceXDPI||!function(e){if(null!=Pe)return Pe;var t=N(e,O("span","x")),r=t.getBoundingClientRect(),n=k(t,0,1).getBoundingClientRect();return Pe=Math.abs(r.left-n.left)>1}(e))return t;var r=screen.logicalXDPI/screen.deviceXDPI,n=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*r,right:t.right*r,top:t.top*n,bottom:t.bottom*n}}(e.display.measure,i))}else{var d;u>0&&(h=n="right"),i=e.options.lineWrapping&&(d=a.getClientRects()).length>1?d["right"==n?d.length-1:0]:a.getBoundingClientRect()}if(l&&s<9&&!u&&(!i||!i.left&&!i.right)){var p=a.parentNode.getClientRects()[0];i=p?{left:p.left,right:p.left+tn(e.display),top:p.top,bottom:p.bottom}:Fr}for(var g=i.top-t.rect.top,v=i.bottom-t.rect.top,m=(g+v)/2,y=t.view.measure.heights,b=0;b<y.length-1&&!(m<y[b]);b++);var w=b?y[b-1]:0,x=y[b],C={left:("right"==h?i.right:i.left)-t.rect.left,right:("left"==h?i.left:i.right)-t.rect.left,top:w,bottom:x};i.left||i.right||(C.bogus=!0);e.options.singleCursorHeightPerLine||(C.rtop=g,C.rbottom=v);return C}(e,t,r,n)).bogus||(t.cache[a]=o)),{left:o.left,right:o.right,top:i?o.rtop:o.top,bottom:i?o.rbottom:o.bottom}}var Hr,Fr={left:0,right:0,top:0,bottom:0};function Pr(e,t,r){for(var n,i,o,l,s,a,u=0;u<e.length;u+=3)if(s=e[u],a=e[u+1],t<s?(i=0,o=1,l="left"):t<a?o=(i=t-s)+1:(u==e.length-3||t==a&&e[u+3]>t)&&(i=(o=a-s)-1,t>=a&&(l="right")),null!=i){if(n=e[u+2],s==a&&r==(n.insertLeft?"left":"right")&&(l=r),"left"==r&&0==i)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)n=e[2+(u-=3)],l="left";if("right"==r&&i==a-s)for(;u<e.length-3&&e[u+3]==e[u+4]&&!e[u+5].insertLeft;)n=e[(u+=3)+2],l="right";break}return{node:n,start:i,end:o,collapse:l,coverStart:s,coverEnd:a}}function Er(e,t){var r=Fr;if("left"==t)for(var n=0;n<e.length&&(r=e[n]).left==r.right;n++);else for(var i=e.length-1;i>=0&&(r=e[i]).left==r.right;i--);return r}function Ir(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t<e.rest.length;t++)e.measure.caches[t]={}}function Rr(e){e.display.externalMeasure=null,M(e.display.lineMeasure);for(var t=0;t<e.display.view.length;t++)Ir(e.display.view[t])}function zr(e){Rr(e),e.display.cachedCharWidth=e.display.cachedTextHeight=e.display.cachedPaddingH=null,e.options.lineWrapping||(e.display.maxLineChanged=!0),e.display.lineNumChars=null}function Br(){return c&&v?-(document.body.getBoundingClientRect().left-parseInt(getComputedStyle(document.body).marginLeft)):window.pageXOffset||(document.documentElement||document.body).scrollLeft}function Gr(){return c&&v?-(document.body.getBoundingClientRect().top-parseInt(getComputedStyle(document.body).marginTop)):window.pageYOffset||(document.documentElement||document.body).scrollTop}function Ur(e){var t=Rt(e).widgets,r=0;if(t)for(var n=0;n<t.length;++n)t[n].above&&(r+=wr(t[n]));return r}function Vr(e,t,r,n,i){if(!i){var o=Ur(t);r.top+=o,r.bottom+=o}if("line"==n)return r;n||(n="local");var l=Vt(t);if("local"==n?l+=Cr(e.display):l-=e.display.viewOffset,"page"==n||"window"==n){var s=e.display.lineSpace.getBoundingClientRect();l+=s.top+("window"==n?0:Gr());var a=s.left+("window"==n?0:Br());r.left+=a,r.right+=a}return r.top+=l,r.bottom+=l,r}function Kr(e,t,r){if("div"==r)return t;var n=t.left,i=t.top;if("page"==r)n-=Br(),i-=Gr();else if("local"==r||!r){var o=e.display.sizer.getBoundingClientRect();n+=o.left,i+=o.top}var l=e.display.lineSpace.getBoundingClientRect();return{left:n-l.left,top:i-l.top}}function jr(e,t,r,n,i){return n||(n=Xe(e.doc,t.line)),Vr(e,n,Or(e,n,t.ch,i),r)}function Xr(e,t,r,n,i,o){function l(t,l){var s=Wr(e,i,t,l?"right":"left",o);return l?s.left=s.right:s.right=s.left,Vr(e,n,s,r)}n=n||Xe(e.doc,t.line),i||(i=Dr(e,n));var s=ce(n,e.doc.direction),a=t.ch,u=t.sticky;if(a>=n.text.length?(a=n.text.length,u="before"):a<=0&&(a=0,u="after"),!s)return l("before"==u?a-1:a,"before"==u);function c(e,t,r){return l(r?e-1:e,1==s[t].level!=r)}var h=ae(s,a,u),f=se,d=c(a,h,"before"==u);return null!=f&&(d.other=c(a,f,"before"!=u)),d}function Yr(e,t){var r=0;t=st(e.doc,t),e.options.lineWrapping||(r=tn(e.display)*t.ch);var n=Xe(e.doc,t.line),i=Vt(n)+Cr(e.display);return{left:r,right:r,top:i,bottom:i+n.height}}function $r(e,t,r,n,i){var o=et(e,t,r);return o.xRel=i,n&&(o.outside=n),o}function _r(e,t,r){var n=e.doc;if((r+=e.display.viewOffset)<0)return $r(n.first,0,null,-1,-1);var i=Ze(n,r),o=n.first+n.size-1;if(i>o)return $r(n.first+n.size-1,Xe(n,o).text.length,null,1,1);t<0&&(t=0);for(var l=Xe(n,i);;){var s=Jr(e,l,i,t,r),a=Et(l,s.ch+(s.xRel>0||s.outside>0?1:0));if(!a)return s;var u=a.find(1);if(u.line==i)return u;l=Xe(n,i=u.line)}}function qr(e,t,r,n){n-=Ur(t);var i=t.text.length,o=le(function(t){return Wr(e,r,t-1).bottom<=n},i,0);return{begin:o,end:i=le(function(t){return Wr(e,r,t).top>n},o,i)}}function Zr(e,t,r,n){return r||(r=Dr(e,t)),qr(e,t,r,Vr(e,t,Wr(e,r,n),"line").top)}function Qr(e,t,r,n){return!(e.bottom<=r)&&(e.top>r||(n?e.left:e.right)>t)}function Jr(e,t,r,n,i){i-=Vt(t);var o=Dr(e,t),l=Ur(t),s=0,a=t.text.length,u=!0,c=ce(t,e.doc.direction);if(c){var h=(e.options.lineWrapping?function(e,t,r,n,i,o,l){var s=qr(e,t,n,l),a=s.begin,u=s.end;/\s/.test(t.text.charAt(u-1))&&u--;for(var c=null,h=null,f=0;f<i.length;f++){var d=i[f];if(!(d.from>=u||d.to<=a)){var p=1!=d.level,g=Wr(e,n,p?Math.min(u,d.to)-1:Math.max(a,d.from)).right,v=g<o?o-g+1e9:g-o;(!c||h>v)&&(c=d,h=v)}}c||(c=i[i.length-1]);c.from<a&&(c={from:a,to:c.to,level:c.level});c.to>u&&(c={from:c.from,to:u,level:c.level});return c}:function(e,t,r,n,i,o,l){var s=le(function(s){var a=i[s],u=1!=a.level;return Qr(Xr(e,et(r,u?a.to:a.from,u?"before":"after"),"line",t,n),o,l,!0)},0,i.length-1),a=i[s];if(s>0){var u=1!=a.level,c=Xr(e,et(r,u?a.from:a.to,u?"after":"before"),"line",t,n);Qr(c,o,l,!0)&&c.top>l&&(a=i[s-1])}return a})(e,t,r,o,c,n,i);s=(u=1!=h.level)?h.from:h.to-1,a=u?h.to:h.from-1}var f,d,p=null,g=null,v=le(function(t){var r=Wr(e,o,t);return r.top+=l,r.bottom+=l,!!Qr(r,n,i,!1)&&(r.top<=i&&r.left<=n&&(p=t,g=r),!0)},s,a),m=!1;if(g){var y=n-g.left<g.right-n,b=y==u;v=p+(b?0:1),d=b?"after":"before",f=y?g.left:g.right}else{u||v!=a&&v!=s||v++,d=0==v?"after":v==t.text.length?"before":Wr(e,o,v-(u?1:0)).bottom+l<=i==u?"after":"before";var w=Xr(e,et(r,v,d),"line",t,o);f=w.left,m=i<w.top?-1:i>=w.bottom?1:0}return $r(r,v=oe(t.text,v,1),d,m,n-f)}function en(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Hr){Hr=O("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)Hr.appendChild(document.createTextNode("x")),Hr.appendChild(O("br"));Hr.appendChild(document.createTextNode("x"))}N(e.measure,Hr);var r=Hr.offsetHeight/50;return r>3&&(e.cachedTextHeight=r),M(e.measure),r||1}function tn(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=O("span","xxxxxxxxxx"),r=O("pre",[t],"CodeMirror-line-like");N(e.measure,r);var n=t.getBoundingClientRect(),i=(n.right-n.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function rn(e){for(var t=e.display,r={},n={},i=t.gutters.clientLeft,o=t.gutters.firstChild,l=0;o;o=o.nextSibling,++l){var s=e.display.gutterSpecs[l].className;r[s]=o.offsetLeft+o.clientLeft+i,n[s]=o.clientWidth}return{fixedPos:nn(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:r,gutterWidth:n,wrapperWidth:t.wrapper.clientWidth}}function nn(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function on(e){var t=en(e.display),r=e.options.lineWrapping,n=r&&Math.max(5,e.display.scroller.clientWidth/tn(e.display)-3);return function(i){if(Gt(e.doc,i))return 0;var o=0;if(i.widgets)for(var l=0;l<i.widgets.length;l++)i.widgets[l].height&&(o+=i.widgets[l].height);return r?o+(Math.ceil(i.text.length/n)||1)*t:o+t}}function ln(e){var t=e.doc,r=on(e);t.iter(function(e){var t=r(e);t!=e.height&&_e(e,t)})}function sn(e,t,r,n){var i=e.display;if(!r&&"true"==Le(t).getAttribute("cm-not-content"))return null;var o,l,s=i.lineSpace.getBoundingClientRect();try{o=t.clientX-s.left,l=t.clientY-s.top}catch(e){return null}var a,u=_r(e,o,l);if(n&&u.xRel>0&&(a=Xe(e.doc,u.line).text).length==u.ch){var c=R(a,a.length,e.options.tabSize)-a.length;u=et(u.line,Math.max(0,Math.round((o-Lr(e.display).left)/tn(e.display))-c))}return u}function an(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var r=e.display.view,n=0;n<r.length;n++)if((t-=r[n].size)<0)return n}function un(e,t,r,n){null==t&&(t=e.doc.first),null==r&&(r=e.doc.first+e.doc.size),n||(n=0);var i=e.display;if(n&&r<i.viewTo&&(null==i.updateLineNumbers||i.updateLineNumbers>t)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)Ct&&zt(e.doc,t)<i.viewTo&&hn(e);else if(r<=i.viewFrom)Ct&&Bt(e.doc,r+n)>i.viewFrom?hn(e):(i.viewFrom+=n,i.viewTo+=n);else if(t<=i.viewFrom&&r>=i.viewTo)hn(e);else if(t<=i.viewFrom){var o=fn(e,r,r+n,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=n):hn(e)}else if(r>=i.viewTo){var l=fn(e,t,t,-1);l?(i.view=i.view.slice(0,l.index),i.viewTo=l.lineN):hn(e)}else{var s=fn(e,t,t,-1),a=fn(e,r,r+n,1);s&&a?(i.view=i.view.slice(0,s.index).concat(ir(e,s.lineN,a.lineN)).concat(i.view.slice(a.index)),i.viewTo+=n):hn(e)}var u=i.externalMeasured;u&&(r<u.lineN?u.lineN+=n:t<u.lineN+u.size&&(i.externalMeasured=null))}function cn(e,t,r){e.curOp.viewChanged=!0;var n=e.display,i=e.display.externalMeasured;if(i&&t>=i.lineN&&t<i.lineN+i.size&&(n.externalMeasured=null),!(t<n.viewFrom||t>=n.viewTo)){var o=n.view[an(e,t)];if(null!=o.node){var l=o.changes||(o.changes=[]);-1==B(l,r)&&l.push(r)}}}function hn(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function fn(e,t,r,n){var i,o=an(e,t),l=e.display.view;if(!Ct||r==e.doc.first+e.doc.size)return{index:o,lineN:r};for(var s=e.display.viewFrom,a=0;a<o;a++)s+=l[a].size;if(s!=t){if(n>0){if(o==l.length-1)return null;i=s+l[o].size-t,o++}else i=s-t;t+=i,r+=i}for(;zt(e.doc,r)!=r;){if(o==(n<0?0:l.length-1))return null;r+=n*l[o-(n<0?1:0)].size,o+=n}return{index:o,lineN:r}}function dn(e){for(var t=e.display.view,r=0,n=0;n<t.length;n++){var i=t[n];i.hidden||i.node&&!i.changes||++r}return r}function pn(e){e.display.input.showSelection(e.display.input.prepareSelection())}function gn(e,t){void 0===t&&(t=!0);var r=e.doc,n={},i=n.cursors=document.createDocumentFragment(),o=n.selection=document.createDocumentFragment(),l=e.options.$customCursor;l&&(t=!0);for(var s=0;s<r.sel.ranges.length;s++)if(t||s!=r.sel.primIndex){var a=r.sel.ranges[s];if(!(a.from().line>=e.display.viewTo||a.to().line<e.display.viewFrom)){var u=a.empty();if(l){var c=l(e,a);c&&vn(e,c,i)}else(u||e.options.showCursorWhenSelecting)&&vn(e,a.head,i);u||yn(e,a,o)}}return n}function vn(e,t,r){var n=Xr(e,t,"div",null,null,!e.options.singleCursorHeightPerLine),i=r.appendChild(O("div"," ","CodeMirror-cursor"));if(i.style.left=n.left+"px",i.style.top=n.top+"px",i.style.height=Math.max(0,n.bottom-n.top)*e.options.cursorHeight+"px",/\bcm-fat-cursor\b/.test(e.getWrapperElement().className)){var o=jr(e,t,"div",null,null),l=o.right-o.left;i.style.width=(l>0?l:e.defaultCharWidth())+"px"}if(n.other){var s=r.appendChild(O("div"," ","CodeMirror-cursor CodeMirror-secondarycursor"));s.style.display="",s.style.left=n.other.left+"px",s.style.top=n.other.top+"px",s.style.height=.85*(n.other.bottom-n.other.top)+"px"}}function mn(e,t){return e.top-t.top||e.left-t.left}function yn(e,t,r){var n=e.display,i=e.doc,o=document.createDocumentFragment(),l=Lr(e.display),s=l.left,a=Math.max(n.sizerWidth,Tr(e)-n.sizer.offsetLeft)-l.right,u="ltr"==i.direction;function c(e,t,r,n){t<0&&(t=0),t=Math.round(t),n=Math.round(n),o.appendChild(O("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px;\n top: "+t+"px; width: "+(null==r?a-e:r)+"px;\n height: "+(n-t)+"px"))}function h(t,r,n){var o,l,h=Xe(i,t),f=h.text.length;function d(r,n){return jr(e,et(t,r),"div",h,n)}function p(t,r,n){var i=Zr(e,h,null,t),o="ltr"==r==("after"==n)?"left":"right";return d("after"==n?i.begin:i.end-(/\s/.test(h.text.charAt(i.end-1))?2:1),o)[o]}var g=ce(h,i.direction);return function(e,t,r,n){if(!e)return n(t,r,"ltr",0);for(var i=!1,o=0;o<e.length;++o){var l=e[o];(l.from<r&&l.to>t||t==r&&l.to==t)&&(n(Math.max(l.from,t),Math.min(l.to,r),1==l.level?"rtl":"ltr",o),i=!0)}i||n(t,r,"ltr")}(g,r||0,null==n?f:n,function(e,t,i,h){var v="ltr"==i,m=d(e,v?"left":"right"),y=d(t-1,v?"right":"left"),b=null==r&&0==e,w=null==n&&t==f,x=0==h,C=!g||h==g.length-1;if(y.top-m.top<=3){var S=(u?w:b)&&C,L=(u?b:w)&&x?s:(v?m:y).left,k=S?a:(v?y:m).right;c(L,m.top,k-L,m.bottom)}else{var T,M,N,O;v?(T=u&&b&&x?s:m.left,M=u?a:p(e,i,"before"),N=u?s:p(t,i,"after"),O=u&&w&&C?a:y.right):(T=u?p(e,i,"before"):s,M=!u&&b&&x?a:m.right,N=!u&&w&&C?s:y.left,O=u?p(t,i,"after"):a),c(T,m.top,M-T,m.bottom),m.bottom<y.top&&c(s,m.bottom,null,y.top),c(N,y.top,O-N,y.bottom)}(!o||mn(m,o)<0)&&(o=m),mn(y,o)<0&&(o=y),(!l||mn(m,l)<0)&&(l=m),mn(y,l)<0&&(l=y)}),{start:o,end:l}}var f=t.from(),d=t.to();if(f.line==d.line)h(f.line,f.ch,d.ch);else{var p=Xe(i,f.line),g=Xe(i,d.line),v=Rt(p)==Rt(g),m=h(f.line,f.ch,v?p.text.length+1:null).end,y=h(d.line,v?0:null,d.ch).start;v&&(m.top<y.top-2?(c(m.right,m.top,null,m.bottom),c(s,y.top,y.left,y.bottom)):c(m.right,m.top,y.left-m.right,m.bottom)),m.bottom<y.top&&c(s,m.bottom,null,y.top)}r.appendChild(o)}function bn(e){if(e.state.focused){var t=e.display;clearInterval(t.blinker);var r=!0;t.cursorDiv.style.visibility="",e.options.cursorBlinkRate>0?t.blinker=setInterval(function(){e.hasFocus()||Sn(e),t.cursorDiv.style.visibility=(r=!r)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function wn(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||Cn(e))}function xn(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&Sn(e))},100)}function Cn(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(ge(e,"focus",e,t),e.state.focused=!0,H(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),a&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),bn(e))}function Sn(e,t){e.state.delayingBlurEvent||(e.state.focused&&(ge(e,"blur",e,t),e.state.focused=!1,T(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function Ln(e){for(var t=e.display,r=t.lineDiv.offsetTop,n=Math.max(0,t.scroller.getBoundingClientRect().top),i=t.lineDiv.getBoundingClientRect().top,o=0,a=0;a<t.view.length;a++){var u=t.view[a],c=e.options.lineWrapping,h=void 0,f=0;if(!u.hidden){if(i+=u.line.height,l&&s<8){var d=u.node.offsetTop+u.node.offsetHeight;h=d-r,r=d}else{var p=u.node.getBoundingClientRect();h=p.bottom-p.top,!c&&u.text.firstChild&&(f=u.text.firstChild.getBoundingClientRect().right-p.left-1)}var g=u.line.height-h;if((g>.005||g<-.005)&&(i<n&&(o-=g),_e(u.line,h),kn(u.line),u.rest))for(var v=0;v<u.rest.length;v++)kn(u.rest[v]);if(f>e.display.sizerWidth){var m=Math.ceil(f/tn(e.display));m>e.display.maxLineLength&&(e.display.maxLineLength=m,e.display.maxLine=u.line,e.display.maxLineChanged=!0)}}}Math.abs(o)>2&&(t.scroller.scrollTop+=o)}function kn(e){if(e.widgets)for(var t=0;t<e.widgets.length;++t){var r=e.widgets[t],n=r.node.parentNode;n&&(r.height=n.offsetHeight)}}function Tn(e,t,r){var n=r&&null!=r.top?Math.max(0,r.top):e.scroller.scrollTop;n=Math.floor(n-Cr(e));var i=r&&null!=r.bottom?r.bottom:n+e.wrapper.clientHeight,o=Ze(t,n),l=Ze(t,i);if(r&&r.ensure){var s=r.ensure.from.line,a=r.ensure.to.line;s<o?(o=s,l=Ze(t,Vt(Xe(t,s))+e.wrapper.clientHeight)):Math.min(a,t.lastLine())>=l&&(o=Ze(t,Vt(Xe(t,a))-e.wrapper.clientHeight),l=a)}return{from:o,to:Math.max(l,o+1)}}function Mn(e,t){var r=e.display,n=en(e.display);t.top<0&&(t.top=0);var i=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:r.scroller.scrollTop,o=Mr(e),l={};t.bottom-t.top>o&&(t.bottom=t.top+o);var s=e.doc.height+Sr(r),a=t.top<n,u=t.bottom>s-n;if(t.top<i)l.scrollTop=a?0:t.top;else if(t.bottom>i+o){var c=Math.min(t.top,(u?s:t.bottom)-o);c!=i&&(l.scrollTop=c)}var h=e.options.fixedGutter?0:r.gutters.offsetWidth,f=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:r.scroller.scrollLeft-h,d=Tr(e)-r.gutters.offsetWidth,p=t.right-t.left>d;return p&&(t.right=t.left+d),t.left<10?l.scrollLeft=0:t.left<f?l.scrollLeft=Math.max(0,t.left+h-(p?0:10)):t.right>d+f-3&&(l.scrollLeft=t.right+(p?0:10)-d),l}function Nn(e,t){null!=t&&(Dn(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function On(e){Dn(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function An(e,t,r){null==t&&null==r||Dn(e),null!=t&&(e.curOp.scrollLeft=t),null!=r&&(e.curOp.scrollTop=r)}function Dn(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Wn(e,Yr(e,t.from),Yr(e,t.to),t.margin))}function Wn(e,t,r,n){var i=Mn(e,{left:Math.min(t.left,r.left),top:Math.min(t.top,r.top)-n,right:Math.max(t.right,r.right),bottom:Math.max(t.bottom,r.bottom)+n});An(e,i.scrollLeft,i.scrollTop)}function Hn(e,t){Math.abs(e.doc.scrollTop-t)<2||(r||oi(e,{top:t}),Fn(e,t,!0),r&&oi(e),ei(e,100))}function Fn(e,t,r){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),(e.display.scroller.scrollTop!=t||r)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function Pn(e,t,r,n){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),(r?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!n||(e.doc.scrollLeft=t,ai(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function En(e){var t=e.display,r=t.gutters.offsetWidth,n=Math.round(e.doc.height+Sr(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?r:0,docHeight:n,scrollHeight:n+kr(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:r}}var In=function(e,t,r){this.cm=r;var n=this.vert=O("div",[O("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=O("div",[O("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");n.tabIndex=i.tabIndex=-1,e(n),e(i),fe(n,"scroll",function(){n.clientHeight&&t(n.scrollTop,"vertical")}),fe(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,l&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};In.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,n=e.nativeBarWidth;if(r){this.vert.style.display="block",this.vert.style.bottom=t?n+"px":"0";var i=e.viewHeight-(t?n:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=r?n+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(r?n:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==n&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:r?n:0,bottom:t?n:0}},In.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},In.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},In.prototype.zeroWidthHack=function(){var e=y&&!d?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new z,this.disableVert=new z},In.prototype.enableZeroWidthBar=function(e,t,r){e.style.pointerEvents="auto",t.set(1e3,function n(){var i=e.getBoundingClientRect();("vert"==r?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1))!=e?e.style.pointerEvents="none":t.set(1e3,n)})},In.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var Rn=function(){};function zn(e,t){t||(t=En(e));var r=e.display.barWidth,n=e.display.barHeight;Bn(e,t);for(var i=0;i<4&&r!=e.display.barWidth||n!=e.display.barHeight;i++)r!=e.display.barWidth&&e.options.lineWrapping&&Ln(e),Bn(e,En(e)),r=e.display.barWidth,n=e.display.barHeight}function Bn(e,t){var r=e.display,n=r.scrollbars.update(t);r.sizer.style.paddingRight=(r.barWidth=n.right)+"px",r.sizer.style.paddingBottom=(r.barHeight=n.bottom)+"px",r.heightForcer.style.borderBottom=n.bottom+"px solid transparent",n.right&&n.bottom?(r.scrollbarFiller.style.display="block",r.scrollbarFiller.style.height=n.bottom+"px",r.scrollbarFiller.style.width=n.right+"px"):r.scrollbarFiller.style.display="",n.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(r.gutterFiller.style.display="block",r.gutterFiller.style.height=n.bottom+"px",r.gutterFiller.style.width=t.gutterWidth+"px"):r.gutterFiller.style.display=""}Rn.prototype.update=function(){return{bottom:0,right:0}},Rn.prototype.setScrollLeft=function(){},Rn.prototype.setScrollTop=function(){},Rn.prototype.clear=function(){};var Gn={native:In,null:Rn};function Un(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&T(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new Gn[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),fe(t,"mousedown",function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute("cm-not-content","true")},function(t,r){"horizontal"==r?Pn(e,t):Hn(e,t)},e),e.display.scrollbars.addClass&&H(e.display.wrapper,e.display.scrollbars.addClass)}var Vn=0;function Kn(e){var t;e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Vn,markArrays:null},t=e.curOp,or?or.ops.push(t):t.ownsGroup=or={ops:[t],delayedCallbacks:[]}}function jn(e){var t=e.curOp;t&&function(e,t){var r=e.ownsGroup;if(r)try{!function(e){var t=e.delayedCallbacks,r=0;do{for(;r<t.length;r++)t[r].call(null);for(var n=0;n<e.ops.length;n++){var i=e.ops[n];if(i.cursorActivityHandlers)for(;i.cursorActivityCalled<i.cursorActivityHandlers.length;)i.cursorActivityHandlers[i.cursorActivityCalled++].call(null,i.cm)}}while(r<t.length)}(r)}finally{or=null,t(r)}}(t,function(e){for(var t=0;t<e.ops.length;t++)e.ops[t].cm.curOp=null;!function(e){for(var t=e.ops,r=0;r<t.length;r++)Xn(t[r]);for(var n=0;n<t.length;n++)(i=t[n]).updatedDisplay=i.mustUpdate&&ni(i.cm,i.update);var i;for(var o=0;o<t.length;o++)Yn(t[o]);for(var l=0;l<t.length;l++)$n(t[l]);for(var s=0;s<t.length;s++)_n(t[s])}(e)})}function Xn(e){var t=e.cm,r=t.display;!function(e){var t=e.display;!t.scrollbarsClipped&&t.scroller.offsetWidth&&(t.nativeBarWidth=t.scroller.offsetWidth-t.scroller.clientWidth,t.heightForcer.style.height=kr(e)+"px",t.sizer.style.marginBottom=-t.nativeBarWidth+"px",t.sizer.style.borderRightWidth=kr(e)+"px",t.scrollbarsClipped=!0)}(t),e.updateMaxLine&&jt(t),e.mustUpdate=e.viewChanged||e.forceUpdate||null!=e.scrollTop||e.scrollToPos&&(e.scrollToPos.from.line<r.viewFrom||e.scrollToPos.to.line>=r.viewTo)||r.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new ri(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Yn(e){var t=e.cm,r=t.display;e.updatedDisplay&&Ln(t),e.barMeasure=En(t),r.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Or(t,r.maxLine,r.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(r.scroller.clientWidth,r.sizer.offsetLeft+e.adjustWidthTo+kr(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,r.sizer.offsetLeft+e.adjustWidthTo-Tr(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=r.input.prepareSelection())}function $n(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft<t.doc.scrollLeft&&Pn(t,Math.min(t.display.scroller.scrollLeft,e.maxScrollLeft),!0),t.display.maxLineChanged=!1);var r=e.focus&&e.focus==W();e.preparedSelection&&t.display.input.showSelection(e.preparedSelection,r),(e.updatedDisplay||e.startHeight!=t.doc.height)&&zn(t,e.barMeasure),e.updatedDisplay&&si(t,e.barMeasure),e.selectionChanged&&bn(t),t.state.focused&&e.updateInput&&t.display.input.reset(e.typing),r&&wn(e.cm)}function _n(e){var t=e.cm,r=t.display,n=t.doc;(e.updatedDisplay&&ii(t,e.update),null==r.wheelStartX||null==e.scrollTop&&null==e.scrollLeft&&!e.scrollToPos||(r.wheelStartX=r.wheelStartY=null),null!=e.scrollTop&&Fn(t,e.scrollTop,e.forceScroll),null!=e.scrollLeft&&Pn(t,e.scrollLeft,!0,!0),e.scrollToPos)&&function(e,t){if(!ve(e,"scrollCursorIntoView")){var r=e.display,n=r.sizer.getBoundingClientRect(),i=null;if(t.top+n.top<0?i=!0:t.bottom+n.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!p){var o=O("div","​",null,"position: absolute;\n top: "+(t.top-r.viewOffset-Cr(e.display))+"px;\n height: "+(t.bottom-t.top+kr(e)+r.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}(t,function(e,t,r,n){var i;null==n&&(n=0),e.options.lineWrapping||t!=r||(r="before"==t.sticky?et(t.line,t.ch+1,"before"):t,t=t.ch?et(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t);for(var o=0;o<5;o++){var l=!1,s=Xr(e,t),a=r&&r!=t?Xr(e,r):s,u=Mn(e,i={left:Math.min(s.left,a.left),top:Math.min(s.top,a.top)-n,right:Math.max(s.left,a.left),bottom:Math.max(s.bottom,a.bottom)+n}),c=e.doc.scrollTop,h=e.doc.scrollLeft;if(null!=u.scrollTop&&(Hn(e,u.scrollTop),Math.abs(e.doc.scrollTop-c)>1&&(l=!0)),null!=u.scrollLeft&&(Pn(e,u.scrollLeft),Math.abs(e.doc.scrollLeft-h)>1&&(l=!0)),!l)break}return i}(t,st(n,e.scrollToPos.from),st(n,e.scrollToPos.to),e.scrollToPos.margin));var i=e.maybeHiddenMarkers,o=e.maybeUnhiddenMarkers;if(i)for(var l=0;l<i.length;++l)i[l].lines.length||ge(i[l],"hide");if(o)for(var s=0;s<o.length;++s)o[s].lines.length&&ge(o[s],"unhide");r.wrapper.offsetHeight&&(n.scrollTop=t.display.scroller.scrollTop),e.changeObjs&&ge(t,"changes",t,e.changeObjs),e.update&&e.update.finish()}function qn(e,t){if(e.curOp)return t();Kn(e);try{return t()}finally{jn(e)}}function Zn(e,t){return function(){if(e.curOp)return t.apply(e,arguments);Kn(e);try{return t.apply(e,arguments)}finally{jn(e)}}}function Qn(e){return function(){if(this.curOp)return e.apply(this,arguments);Kn(this);try{return e.apply(this,arguments)}finally{jn(this)}}}function Jn(e){return function(){var t=this.cm;if(!t||t.curOp)return e.apply(this,arguments);Kn(t);try{return e.apply(this,arguments)}finally{jn(t)}}}function ei(e,t){e.doc.highlightFrontier<e.display.viewTo&&e.state.highlight.set(t,E(ti,e))}function ti(e){var t=e.doc;if(!(t.highlightFrontier>=e.display.viewTo)){var r=+new Date+e.options.workTime,n=dt(e,t.highlightFrontier),i=[];t.iter(n.line,Math.min(t.first+t.size,e.display.viewTo+500),function(o){if(n.line>=e.display.viewFrom){var l=o.styles,s=o.text.length>e.options.maxHighlightLength?Ue(t.mode,n.state):null,a=ht(e,o,n,!0);s&&(n.state=s),o.styles=a.styles;var u=o.styleClasses,c=a.classes;c?o.styleClasses=c:u&&(o.styleClasses=null);for(var h=!l||l.length!=o.styles.length||u!=c&&(!u||!c||u.bgClass!=c.bgClass||u.textClass!=c.textClass),f=0;!h&&f<l.length;++f)h=l[f]!=o.styles[f];h&&i.push(n.line),o.stateAfter=n.save(),n.nextLine()}else o.text.length<=e.options.maxHighlightLength&&pt(e,o.text,n),o.stateAfter=n.line%5==0?n.save():null,n.nextLine();if(+new Date>r)return ei(e,e.options.workDelay),!0}),t.highlightFrontier=n.line,t.modeFrontier=Math.max(t.modeFrontier,n.line),i.length&&qn(e,function(){for(var t=0;t<i.length;t++)cn(e,i[t],"text")})}}var ri=function(e,t,r){var n=e.display;this.viewport=t,this.visible=Tn(n,e.doc,t),this.editorIsHidden=!n.wrapper.offsetWidth,this.wrapperHeight=n.wrapper.clientHeight,this.wrapperWidth=n.wrapper.clientWidth,this.oldDisplayWidth=Tr(e),this.force=r,this.dims=rn(e),this.events=[]};function ni(e,t){var r=e.display,n=e.doc;if(t.editorIsHidden)return hn(e),!1;if(!t.force&&t.visible.from>=r.viewFrom&&t.visible.to<=r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo)&&r.renderedView==r.view&&0==dn(e))return!1;ui(e)&&(hn(e),t.dims=rn(e));var i=n.first+n.size,o=Math.max(t.visible.from-e.options.viewportMargin,n.first),l=Math.min(i,t.visible.to+e.options.viewportMargin);r.viewFrom<o&&o-r.viewFrom<20&&(o=Math.max(n.first,r.viewFrom)),r.viewTo>l&&r.viewTo-l<20&&(l=Math.min(i,r.viewTo)),Ct&&(o=zt(e.doc,o),l=Bt(e.doc,l));var s=o!=r.viewFrom||l!=r.viewTo||r.lastWrapHeight!=t.wrapperHeight||r.lastWrapWidth!=t.wrapperWidth;!function(e,t,r){var n=e.display;0==n.view.length||t>=n.viewTo||r<=n.viewFrom?(n.view=ir(e,t,r),n.viewFrom=t):(n.viewFrom>t?n.view=ir(e,t,n.viewFrom).concat(n.view):n.viewFrom<t&&(n.view=n.view.slice(an(e,t))),n.viewFrom=t,n.viewTo<r?n.view=n.view.concat(ir(e,n.viewTo,r)):n.viewTo>r&&(n.view=n.view.slice(0,an(e,r)))),n.viewTo=r}(e,o,l),r.viewOffset=Vt(Xe(e.doc,r.viewFrom)),e.display.mover.style.top=r.viewOffset+"px";var u=dn(e);if(!s&&0==u&&!t.force&&r.renderedView==r.view&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo))return!1;var c=function(e){if(e.hasFocus())return null;var t=W();if(!t||!D(e.display.lineDiv,t))return null;var r={activeElt:t};if(window.getSelection){var n=window.getSelection();n.anchorNode&&n.extend&&D(e.display.lineDiv,n.anchorNode)&&(r.anchorNode=n.anchorNode,r.anchorOffset=n.anchorOffset,r.focusNode=n.focusNode,r.focusOffset=n.focusOffset)}return r}(e);return u>4&&(r.lineDiv.style.display="none"),function(e,t,r){var n=e.display,i=e.options.lineNumbers,o=n.lineDiv,l=o.firstChild;function s(t){var r=t.nextSibling;return a&&y&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),r}for(var u=n.view,c=n.viewFrom,h=0;h<u.length;h++){var f=u[h];if(f.hidden);else if(f.node&&f.node.parentNode==o){for(;l!=f.node;)l=s(l);var d=i&&null!=t&&t<=c&&f.lineNumber;f.changes&&(B(f.changes,"gutter")>-1&&(d=!1),ur(e,f,c,r)),d&&(M(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(Je(e.options,c)))),l=f.node.nextSibling}else{var p=vr(e,f,c,r);o.insertBefore(p,l)}c+=f.size}for(;l;)l=s(l)}(e,r.updateLineNumbers,t.dims),u>4&&(r.lineDiv.style.display=""),r.renderedView=r.view,function(e){if(e&&e.activeElt&&e.activeElt!=W()&&(e.activeElt.focus(),!/^(INPUT|TEXTAREA)$/.test(e.activeElt.nodeName)&&e.anchorNode&&D(document.body,e.anchorNode)&&D(document.body,e.focusNode))){var t=window.getSelection(),r=document.createRange();r.setEnd(e.anchorNode,e.anchorOffset),r.collapse(!1),t.removeAllRanges(),t.addRange(r),t.extend(e.focusNode,e.focusOffset)}}(c),M(r.cursorDiv),M(r.selectionDiv),r.gutters.style.height=r.sizer.style.minHeight=0,s&&(r.lastWrapHeight=t.wrapperHeight,r.lastWrapWidth=t.wrapperWidth,ei(e,400)),r.updateLineNumbers=null,!0}function ii(e,t){for(var r=t.viewport,n=!0;;n=!1){if(n&&e.options.lineWrapping&&t.oldDisplayWidth!=Tr(e))n&&(t.visible=Tn(e.display,e.doc,r));else if(r&&null!=r.top&&(r={top:Math.min(e.doc.height+Sr(e.display)-Mr(e),r.top)}),t.visible=Tn(e.display,e.doc,r),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break;if(!ni(e,t))break;Ln(e);var i=En(e);pn(e),zn(e,i),si(e,i),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function oi(e,t){var r=new ri(e,t);if(ni(e,r)){Ln(e),ii(e,r);var n=En(e);pn(e),zn(e,n),si(e,n),r.finish()}}function li(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px",sr(e,"gutterChanged",e)}function si(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+kr(e)+"px"}function ai(e){var t=e.display,r=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var n=nn(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=n+"px",l=0;l<r.length;l++)if(!r[l].hidden){e.options.fixedGutter&&(r[l].gutter&&(r[l].gutter.style.left=o),r[l].gutterBackground&&(r[l].gutterBackground.style.left=o));var s=r[l].alignable;if(s)for(var a=0;a<s.length;a++)s[a].style.left=o}e.options.fixedGutter&&(t.gutters.style.left=n+i+"px")}}function ui(e){if(!e.options.lineNumbers)return!1;var t=e.doc,r=Je(e.options,t.first+t.size-1),n=e.display;if(r.length!=n.lineNumChars){var i=n.measure.appendChild(O("div",[O("div",r)],"CodeMirror-linenumber CodeMirror-gutter-elt")),o=i.firstChild.offsetWidth,l=i.offsetWidth-o;return n.lineGutter.style.width="",n.lineNumInnerWidth=Math.max(o,n.lineGutter.offsetWidth-l)+1,n.lineNumWidth=n.lineNumInnerWidth+l,n.lineNumChars=n.lineNumInnerWidth?r.length:-1,n.lineGutter.style.width=n.lineNumWidth+"px",li(e.display),!0}return!1}function ci(e,t){for(var r=[],n=!1,i=0;i<e.length;i++){var o=e[i],l=null;if("string"!=typeof o&&(l=o.style,o=o.className),"CodeMirror-linenumbers"==o){if(!t)continue;n=!0}r.push({className:o,style:l})}return t&&!n&&r.push({className:"CodeMirror-linenumbers",style:null}),r}function hi(e){var t=e.gutters,r=e.gutterSpecs;M(t),e.lineGutter=null;for(var n=0;n<r.length;++n){var i=r[n],o=i.className,l=i.style,s=t.appendChild(O("div",null,"CodeMirror-gutter "+o));l&&(s.style.cssText=l),"CodeMirror-linenumbers"==o&&(e.lineGutter=s,s.style.width=(e.lineNumWidth||1)+"px")}t.style.display=r.length?"":"none",li(e)}function fi(e){hi(e.display),un(e),ai(e)}function di(e,t,n,i){var o=this;this.input=n,o.scrollbarFiller=O("div",null,"CodeMirror-scrollbar-filler"),o.scrollbarFiller.setAttribute("cm-not-content","true"),o.gutterFiller=O("div",null,"CodeMirror-gutter-filler"),o.gutterFiller.setAttribute("cm-not-content","true"),o.lineDiv=A("div",null,"CodeMirror-code"),o.selectionDiv=O("div",null,null,"position: relative; z-index: 1"),o.cursorDiv=O("div",null,"CodeMirror-cursors"),o.measure=O("div",null,"CodeMirror-measure"),o.lineMeasure=O("div",null,"CodeMirror-measure"),o.lineSpace=A("div",[o.measure,o.lineMeasure,o.selectionDiv,o.cursorDiv,o.lineDiv],null,"position: relative; outline: none");var u=A("div",[o.lineSpace],"CodeMirror-lines");o.mover=O("div",[u],null,"position: relative"),o.sizer=O("div",[o.mover],"CodeMirror-sizer"),o.sizerWidth=null,o.heightForcer=O("div",null,null,"position: absolute; height: "+G+"px; width: 1px;"),o.gutters=O("div",null,"CodeMirror-gutters"),o.lineGutter=null,o.scroller=O("div",[o.sizer,o.heightForcer,o.gutters],"CodeMirror-scroll"),o.scroller.setAttribute("tabIndex","-1"),o.wrapper=O("div",[o.scrollbarFiller,o.gutterFiller,o.scroller],"CodeMirror"),o.wrapper.setAttribute("translate","no"),l&&s<8&&(o.gutters.style.zIndex=-1,o.scroller.style.paddingRight=0),a||r&&m||(o.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(o.wrapper):e(o.wrapper)),o.viewFrom=o.viewTo=t.first,o.reportedViewFrom=o.reportedViewTo=t.first,o.view=[],o.renderedView=null,o.externalMeasured=null,o.viewOffset=0,o.lastWrapHeight=o.lastWrapWidth=0,o.updateLineNumbers=null,o.nativeBarWidth=o.barHeight=o.barWidth=0,o.scrollbarsClipped=!1,o.lineNumWidth=o.lineNumInnerWidth=o.lineNumChars=null,o.alignWidgets=!1,o.cachedCharWidth=o.cachedTextHeight=o.cachedPaddingH=null,o.maxLine=null,o.maxLineLength=0,o.maxLineChanged=!1,o.wheelDX=o.wheelDY=o.wheelStartX=o.wheelStartY=null,o.shift=!1,o.selForContextMenu=null,o.activeTouch=null,o.gutterSpecs=ci(i.gutters,i.lineNumbers),hi(o),n.init(o)}ri.prototype.signal=function(e,t){ye(e,t)&&this.events.push(arguments)},ri.prototype.finish=function(){for(var e=0;e<this.events.length;e++)ge.apply(null,this.events[e])};var pi=0,gi=null;function vi(e){var t=e.wheelDeltaX,r=e.wheelDeltaY;return null==t&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),null==r&&e.detail&&e.axis==e.VERTICAL_AXIS?r=e.detail:null==r&&(r=e.wheelDelta),{x:t,y:r}}function mi(e){var t=vi(e);return t.x*=gi,t.y*=gi,t}function yi(e,t){var n=vi(t),i=n.x,o=n.y,l=gi;0===t.deltaMode&&(i=t.deltaX,o=t.deltaY,l=1);var s=e.display,u=s.scroller,c=u.scrollWidth>u.clientWidth,f=u.scrollHeight>u.clientHeight;if(i&&c||o&&f){if(o&&y&&a)e:for(var d=t.target,p=s.view;d!=u;d=d.parentNode)for(var g=0;g<p.length;g++)if(p[g].node==d){e.display.currentWheelTarget=d;break e}if(i&&!r&&!h&&null!=l)return o&&f&&Hn(e,Math.max(0,u.scrollTop+o*l)),Pn(e,Math.max(0,u.scrollLeft+i*l)),(!o||o&&f)&&we(t),void(s.wheelStartX=null);if(o&&null!=l){var v=o*l,m=e.doc.scrollTop,b=m+s.wrapper.clientHeight;v<0?m=Math.max(0,m+v-50):b=Math.min(e.doc.height,b+v+50),oi(e,{top:m,bottom:b})}pi<20&&0!==t.deltaMode&&(null==s.wheelStartX?(s.wheelStartX=u.scrollLeft,s.wheelStartY=u.scrollTop,s.wheelDX=i,s.wheelDY=o,setTimeout(function(){if(null!=s.wheelStartX){var e=u.scrollLeft-s.wheelStartX,t=u.scrollTop-s.wheelStartY,r=t&&s.wheelDY&&t/s.wheelDY||e&&s.wheelDX&&e/s.wheelDX;s.wheelStartX=s.wheelStartY=null,r&&(gi=(gi*pi+r)/(pi+1),++pi)}},200)):(s.wheelDX+=i,s.wheelDY+=o))}}l?gi=-.53:r?gi=15:c?gi=-.7:f&&(gi=-1/3);var bi=function(e,t){this.ranges=e,this.primIndex=t};bi.prototype.primary=function(){return this.ranges[this.primIndex]},bi.prototype.equals=function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t<this.ranges.length;t++){var r=this.ranges[t],n=e.ranges[t];if(!rt(r.anchor,n.anchor)||!rt(r.head,n.head))return!1}return!0},bi.prototype.deepCopy=function(){for(var e=[],t=0;t<this.ranges.length;t++)e[t]=new wi(nt(this.ranges[t].anchor),nt(this.ranges[t].head));return new bi(e,this.primIndex)},bi.prototype.somethingSelected=function(){for(var e=0;e<this.ranges.length;e++)if(!this.ranges[e].empty())return!0;return!1},bi.prototype.contains=function(e,t){t||(t=e);for(var r=0;r<this.ranges.length;r++){var n=this.ranges[r];if(tt(t,n.from())>=0&&tt(e,n.to())<=0)return r}return-1};var wi=function(e,t){this.anchor=e,this.head=t};function xi(e,t,r){var n=e&&e.options.selectionsMayTouch,i=t[r];t.sort(function(e,t){return tt(e.from(),t.from())}),r=B(t,i);for(var o=1;o<t.length;o++){var l=t[o],s=t[o-1],a=tt(s.to(),l.from());if(n&&!l.empty()?a>0:a>=0){var u=ot(s.from(),l.from()),c=it(s.to(),l.to()),h=s.empty()?l.from()==l.head:s.from()==s.head;o<=r&&--r,t.splice(--o,2,new wi(h?c:u,h?u:c))}}return new bi(t,r)}function Ci(e,t){return new bi([new wi(e,t||e)],0)}function Si(e){return e.text?et(e.from.line+e.text.length-1,_(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function Li(e,t){if(tt(e,t.from)<0)return e;if(tt(e,t.to)<=0)return Si(t);var r=e.line+t.text.length-(t.to.line-t.from.line)-1,n=e.ch;return e.line==t.to.line&&(n+=Si(t).ch-t.to.ch),et(r,n)}function ki(e,t){for(var r=[],n=0;n<e.sel.ranges.length;n++){var i=e.sel.ranges[n];r.push(new wi(Li(i.anchor,t),Li(i.head,t)))}return xi(e.cm,r,e.sel.primIndex)}function Ti(e,t,r){return e.line==t.line?et(r.line,e.ch-t.ch+r.ch):et(r.line+(e.line-t.line),e.ch)}function Mi(e){e.doc.mode=ze(e.options,e.doc.modeOption),Ni(e)}function Ni(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.modeFrontier=e.doc.highlightFrontier=e.doc.first,ei(e,100),e.state.modeGen++,e.curOp&&un(e)}function Oi(e,t){return 0==t.from.ch&&0==t.to.ch&&""==_(t.text)&&(!e.cm||e.cm.options.wholeLineUpdateBefore)}function Ai(e,t,r,n){function i(e){return r?r[e]:null}function o(e,r,i){!function(e,t,r,n){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),null!=e.order&&(e.order=null),Nt(e),Ot(e,r);var i=n?n(e):1;i!=e.height&&_e(e,i)}(e,r,i,n),sr(e,"change",e,t)}function l(e,t){for(var r=[],o=e;o<t;++o)r.push(new Xt(u[o],i(o),n));return r}var s=t.from,a=t.to,u=t.text,c=Xe(e,s.line),h=Xe(e,a.line),f=_(u),d=i(u.length-1),p=a.line-s.line;if(t.full)e.insert(0,l(0,u.length)),e.remove(u.length,e.size-u.length);else if(Oi(e,t)){var g=l(0,u.length-1);o(h,h.text,d),p&&e.remove(s.line,p),g.length&&e.insert(s.line,g)}else if(c==h)if(1==u.length)o(c,c.text.slice(0,s.ch)+f+c.text.slice(a.ch),d);else{var v=l(1,u.length-1);v.push(new Xt(f+c.text.slice(a.ch),d,n)),o(c,c.text.slice(0,s.ch)+u[0],i(0)),e.insert(s.line+1,v)}else if(1==u.length)o(c,c.text.slice(0,s.ch)+u[0]+h.text.slice(a.ch),i(0)),e.remove(s.line+1,p);else{o(c,c.text.slice(0,s.ch)+u[0],i(0)),o(h,f+h.text.slice(a.ch),d);var m=l(1,u.length-1);p>1&&e.remove(s.line+1,p-1),e.insert(s.line+1,m)}sr(e,"change",e,t)}function Di(e,t,r){!function e(n,i,o){if(n.linked)for(var l=0;l<n.linked.length;++l){var s=n.linked[l];if(s.doc!=i){var a=o&&s.sharedHist;r&&!a||(t(s.doc,a),e(s.doc,n,a))}}}(e,null,!0)}function Wi(e,t){if(t.cm)throw new Error("This document is already in use.");e.doc=t,t.cm=e,ln(e),Mi(e),Hi(e),e.options.direction=t.direction,e.options.lineWrapping||jt(e),e.options.mode=t.modeOption,un(e)}function Hi(e){("rtl"==e.doc.direction?H:T)(e.display.lineDiv,"CodeMirror-rtl")}function Fi(e){this.done=[],this.undone=[],this.undoDepth=e?e.undoDepth:1/0,this.lastModTime=this.lastSelTime=0,this.lastOp=this.lastSelOp=null,this.lastOrigin=this.lastSelOrigin=null,this.generation=this.maxGeneration=e?e.maxGeneration:1}function Pi(e,t){var r={from:nt(t.from),to:Si(t),text:Ye(e,t.from,t.to)};return Bi(e,r,t.from.line,t.to.line+1),Di(e,function(e){return Bi(e,r,t.from.line,t.to.line+1)},!0),r}function Ei(e){for(;e.length;){if(!_(e).ranges)break;e.pop()}}function Ii(e,t,r,n){var i=e.history;i.undone.length=0;var o,l,s=+new Date;if((i.lastOp==n||i.lastOrigin==t.origin&&t.origin&&("+"==t.origin.charAt(0)&&i.lastModTime>s-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(o=function(e,t){return t?(Ei(e.done),_(e.done)):e.done.length&&!_(e.done).ranges?_(e.done):e.done.length>1&&!e.done[e.done.length-2].ranges?(e.done.pop(),_(e.done)):void 0}(i,i.lastOp==n)))l=_(o.changes),0==tt(t.from,t.to)&&0==tt(t.from,l.to)?l.to=Si(t):o.changes.push(Pi(e,t));else{var a=_(i.done);for(a&&a.ranges||zi(e.sel,i.done),o={changes:[Pi(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(r),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=s,i.lastOp=i.lastSelOp=n,i.lastOrigin=i.lastSelOrigin=t.origin,l||ge(e,"historyAdded")}function Ri(e,t,r,n){var i=e.history,o=n&&n.origin;r==i.lastSelOp||o&&i.lastSelOrigin==o&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==o||function(e,t,r,n){var i=t.charAt(0);return"*"==i||"+"==i&&r.ranges.length==n.ranges.length&&r.somethingSelected()==n.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}(e,o,_(i.done),t))?i.done[i.done.length-1]=t:zi(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=o,i.lastSelOp=r,n&&!1!==n.clearRedo&&Ei(i.undone)}function zi(e,t){var r=_(t);r&&r.ranges&&r.equals(e)||t.push(e)}function Bi(e,t,r,n){var i=t["spans_"+e.id],o=0;e.iter(Math.max(e.first,r),Math.min(e.first+e.size,n),function(r){r.markedSpans&&((i||(i=t["spans_"+e.id]={}))[o]=r.markedSpans),++o})}function Gi(e){if(!e)return null;for(var t,r=0;r<e.length;++r)e[r].marker.explicitlyCleared?t||(t=e.slice(0,r)):t&&t.push(e[r]);return t?t.length?t:null:e}function Ui(e,t){var r=function(e,t){var r=t["spans_"+e.id];if(!r)return null;for(var n=[],i=0;i<t.text.length;++i)n.push(Gi(r[i]));return n}(e,t),n=Tt(e,t);if(!r)return n;if(!n)return r;for(var i=0;i<r.length;++i){var o=r[i],l=n[i];if(o&&l)e:for(var s=0;s<l.length;++s){for(var a=l[s],u=0;u<o.length;++u)if(o[u].marker==a.marker)continue e;o.push(a)}else l&&(r[i]=l)}return r}function Vi(e,t,r){for(var n=[],i=0;i<e.length;++i){var o=e[i];if(o.ranges)n.push(r?bi.prototype.deepCopy.call(o):o);else{var l=o.changes,s=[];n.push({changes:s});for(var a=0;a<l.length;++a){var u=l[a],c=void 0;if(s.push({from:u.from,to:u.to,text:u.text}),t)for(var h in u)(c=h.match(/^spans_(\d+)$/))&&B(t,Number(c[1]))>-1&&(_(s)[h]=u[h],delete u[h])}}}return n}function Ki(e,t,r,n){if(n){var i=e.anchor;if(r){var o=tt(t,i)<0;o!=tt(r,i)<0?(i=t,t=r):o!=tt(t,r)<0&&(t=r)}return new wi(i,t)}return new wi(r||t,t)}function ji(e,t,r,n,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),qi(e,new bi([Ki(e.sel.primary(),t,r,i)],0),n)}function Xi(e,t,r){for(var n=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o<e.sel.ranges.length;o++)n[o]=Ki(e.sel.ranges[o],t[o],null,i);qi(e,xi(e.cm,n,e.sel.primIndex),r)}function Yi(e,t,r,n){var i=e.sel.ranges.slice(0);i[t]=r,qi(e,xi(e.cm,i,e.sel.primIndex),n)}function $i(e,t,r,n){qi(e,Ci(t,r),n)}function _i(e,t,r){var n=e.history.done,i=_(n);i&&i.ranges?(n[n.length-1]=t,Zi(e,t,r)):qi(e,t,r)}function qi(e,t,r){Zi(e,t,r),Ri(e,e.sel,e.cm?e.cm.curOp.id:NaN,r)}function Zi(e,t,r){(ye(e,"beforeSelectionChange")||e.cm&&ye(e.cm,"beforeSelectionChange"))&&(t=function(e,t,r){var n={ranges:t.ranges,update:function(t){this.ranges=[];for(var r=0;r<t.length;r++)this.ranges[r]=new wi(st(e,t[r].anchor),st(e,t[r].head))},origin:r&&r.origin};return ge(e,"beforeSelectionChange",e,n),e.cm&&ge(e.cm,"beforeSelectionChange",e.cm,n),n.ranges!=t.ranges?xi(e.cm,n.ranges,n.ranges.length-1):t}(e,t,r));var n=r&&r.bias||(tt(t.primary().head,e.sel.primary().head)<0?-1:1);Qi(e,eo(e,t,n,!0)),r&&!1===r.scroll||!e.cm||"nocursor"==e.cm.getOption("readOnly")||On(e.cm)}function Qi(e,t){t.equals(e.sel)||(e.sel=t,e.cm&&(e.cm.curOp.updateInput=1,e.cm.curOp.selectionChanged=!0,me(e.cm)),sr(e,"cursorActivity",e))}function Ji(e){Qi(e,eo(e,e.sel,null,!1))}function eo(e,t,r,n){for(var i,o=0;o<t.ranges.length;o++){var l=t.ranges[o],s=t.ranges.length==e.sel.ranges.length&&e.sel.ranges[o],a=ro(e,l.anchor,s&&s.anchor,r,n),u=ro(e,l.head,s&&s.head,r,n);(i||a!=l.anchor||u!=l.head)&&(i||(i=t.ranges.slice(0,o)),i[o]=new wi(a,u))}return i?xi(e.cm,i,t.primIndex):t}function to(e,t,r,n,i){var o=Xe(e,t.line);if(o.markedSpans)for(var l=0;l<o.markedSpans.length;++l){var s=o.markedSpans[l],a=s.marker,u="selectLeft"in a?!a.selectLeft:a.inclusiveLeft,c="selectRight"in a?!a.selectRight:a.inclusiveRight;if((null==s.from||(u?s.from<=t.ch:s.from<t.ch))&&(null==s.to||(c?s.to>=t.ch:s.to>t.ch))){if(i&&(ge(a,"beforeCursorEnter"),a.explicitlyCleared)){if(o.markedSpans){--l;continue}break}if(!a.atomic)continue;if(r){var h=a.find(n<0?1:-1),f=void 0;if((n<0?c:u)&&(h=no(e,h,-n,h&&h.line==t.line?o:null)),h&&h.line==t.line&&(f=tt(h,r))&&(n<0?f<0:f>0))return to(e,h,t,n,i)}var d=a.find(n<0?-1:1);return(n<0?u:c)&&(d=no(e,d,n,d.line==t.line?o:null)),d?to(e,d,t,n,i):null}}return t}function ro(e,t,r,n,i){var o=n||1,l=to(e,t,r,o,i)||!i&&to(e,t,r,o,!0)||to(e,t,r,-o,i)||!i&&to(e,t,r,-o,!0);return l||(e.cantEdit=!0,et(e.first,0))}function no(e,t,r,n){return r<0&&0==t.ch?t.line>e.first?st(e,et(t.line-1)):null:r>0&&t.ch==(n||Xe(e,t.line)).text.length?t.line<e.first+e.size-1?et(t.line+1,0):null:new et(t.line,t.ch+r)}function io(e){e.setSelection(et(e.firstLine(),0),et(e.lastLine()),V)}function oo(e,t,r){var n={canceled:!1,from:t.from,to:t.to,text:t.text,origin:t.origin,cancel:function(){return n.canceled=!0}};return r&&(n.update=function(t,r,i,o){t&&(n.from=st(e,t)),r&&(n.to=st(e,r)),i&&(n.text=i),void 0!==o&&(n.origin=o)}),ge(e,"beforeChange",e,n),e.cm&&ge(e.cm,"beforeChange",e.cm,n),n.canceled?(e.cm&&(e.cm.curOp.updateInput=2),null):{from:n.from,to:n.to,text:n.text,origin:n.origin}}function lo(e,t,r){if(e.cm){if(!e.cm.curOp)return Zn(e.cm,lo)(e,t,r);if(e.cm.state.suppressEdits)return}if(!(ye(e,"beforeChange")||e.cm&&ye(e.cm,"beforeChange"))||(t=oo(e,t,!0))){var n=xt&&!r&&function(e,t,r){var n=null;if(e.iter(t.line,r.line+1,function(e){if(e.markedSpans)for(var t=0;t<e.markedSpans.length;++t){var r=e.markedSpans[t].marker;!r.readOnly||n&&-1!=B(n,r)||(n||(n=[])).push(r)}}),!n)return null;for(var i=[{from:t,to:r}],o=0;o<n.length;++o)for(var l=n[o],s=l.find(0),a=0;a<i.length;++a){var u=i[a];if(!(tt(u.to,s.from)<0||tt(u.from,s.to)>0)){var c=[a,1],h=tt(u.from,s.from),f=tt(u.to,s.to);(h<0||!l.inclusiveLeft&&!h)&&c.push({from:u.from,to:s.from}),(f>0||!l.inclusiveRight&&!f)&&c.push({from:s.to,to:u.to}),i.splice.apply(i,c),a+=c.length-3}}return i}(e,t.from,t.to);if(n)for(var i=n.length-1;i>=0;--i)so(e,{from:n[i].from,to:n[i].to,text:i?[""]:t.text,origin:t.origin});else so(e,t)}}function so(e,t){if(1!=t.text.length||""!=t.text[0]||0!=tt(t.from,t.to)){var r=ki(e,t);Ii(e,t,r,e.cm?e.cm.curOp.id:NaN),co(e,t,r,Tt(e,t));var n=[];Di(e,function(e,r){r||-1!=B(n,e.history)||(go(e.history,t),n.push(e.history)),co(e,t,null,Tt(e,t))})}}function ao(e,t,r){var n=e.cm&&e.cm.state.suppressEdits;if(!n||r){for(var i,o=e.history,l=e.sel,s="undo"==t?o.done:o.undone,a="undo"==t?o.undone:o.done,u=0;u<s.length&&(i=s[u],r?!i.ranges||i.equals(e.sel):i.ranges);u++);if(u!=s.length){for(o.lastOrigin=o.lastSelOrigin=null;;){if(!(i=s.pop()).ranges){if(n)return void s.push(i);break}if(zi(i,a),r&&!i.equals(e.sel))return void qi(e,i,{clearRedo:!1});l=i}var c=[];zi(l,a),a.push({changes:c,generation:o.generation}),o.generation=i.generation||++o.maxGeneration;for(var h=ye(e,"beforeChange")||e.cm&&ye(e.cm,"beforeChange"),f=function(r){var n=i.changes[r];if(n.origin=t,h&&!oo(e,n,!1))return s.length=0,{};c.push(Pi(e,n));var o=r?ki(e,n):_(s);co(e,n,o,Ui(e,n)),!r&&e.cm&&e.cm.scrollIntoView({from:n.from,to:Si(n)});var l=[];Di(e,function(e,t){t||-1!=B(l,e.history)||(go(e.history,n),l.push(e.history)),co(e,n,null,Ui(e,n))})},d=i.changes.length-1;d>=0;--d){var p=f(d);if(p)return p.v}}}}function uo(e,t){if(0!=t&&(e.first+=t,e.sel=new bi(q(e.sel.ranges,function(e){return new wi(et(e.anchor.line+t,e.anchor.ch),et(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){un(e.cm,e.first,e.first-t,t);for(var r=e.cm.display,n=r.viewFrom;n<r.viewTo;n++)cn(e.cm,n,"gutter")}}function co(e,t,r,n){if(e.cm&&!e.cm.curOp)return Zn(e.cm,co)(e,t,r,n);if(t.to.line<e.first)uo(e,t.text.length-1-(t.to.line-t.from.line));else if(!(t.from.line>e.lastLine())){if(t.from.line<e.first){var i=t.text.length-1-(e.first-t.from.line);uo(e,i),t={from:et(e.first,0),to:et(t.to.line+i,t.to.ch),text:[_(t.text)],origin:t.origin}}var o=e.lastLine();t.to.line>o&&(t={from:t.from,to:et(o,Xe(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=Ye(e,t.from,t.to),r||(r=ki(e,t)),e.cm?function(e,t,r){var n=e.doc,i=e.display,o=t.from,l=t.to,s=!1,a=o.line;e.options.lineWrapping||(a=qe(Rt(Xe(n,o.line))),n.iter(a,l.line+1,function(e){if(e==i.maxLine)return s=!0,!0}));n.sel.contains(t.from,t.to)>-1&&me(e);Ai(n,t,r,on(e)),e.options.lineWrapping||(n.iter(a,o.line+t.text.length,function(e){var t=Kt(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,s=!1)}),s&&(e.curOp.updateMaxLine=!0));(function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontier<t-10)){for(var r=e.first,n=t-1;n>r;n--){var i=Xe(e,n).stateAfter;if(i&&(!(i instanceof ut)||n+i.lookAhead<t)){r=n+1;break}}e.highlightFrontier=Math.min(e.highlightFrontier,r)}})(n,o.line),ei(e,400);var u=t.text.length-(l.line-o.line)-1;t.full?un(e):o.line!=l.line||1!=t.text.length||Oi(e.doc,t)?un(e,o.line,l.line+1,u):cn(e,o.line,"text");var c=ye(e,"changes"),h=ye(e,"change");if(h||c){var f={from:o,to:l,text:t.text,removed:t.removed,origin:t.origin};h&&sr(e,"change",e,f),c&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(f)}e.display.selForContextMenu=null}(e.cm,t,n):Ai(e,t,n),Zi(e,r,V),e.cantEdit&&ro(e,et(e.firstLine(),0))&&(e.cantEdit=!1)}}function ho(e,t,r,n,i){var o;n||(n=r),tt(n,r)<0&&(r=(o=[n,r])[0],n=o[1]),"string"==typeof t&&(t=e.splitLines(t)),lo(e,{from:r,to:n,text:t,origin:i})}function fo(e,t,r,n){r<e.line?e.line+=n:t<e.line&&(e.line=t,e.ch=0)}function po(e,t,r,n){for(var i=0;i<e.length;++i){var o=e[i],l=!0;if(o.ranges){o.copied||((o=e[i]=o.deepCopy()).copied=!0);for(var s=0;s<o.ranges.length;s++)fo(o.ranges[s].anchor,t,r,n),fo(o.ranges[s].head,t,r,n)}else{for(var a=0;a<o.changes.length;++a){var u=o.changes[a];if(r<u.from.line)u.from=et(u.from.line+n,u.from.ch),u.to=et(u.to.line+n,u.to.ch);else if(t<=u.to.line){l=!1;break}}l||(e.splice(0,i+1),i=0)}}}function go(e,t){var r=t.from.line,n=t.to.line,i=t.text.length-(n-r)-1;po(e.done,r,n,i),po(e.undone,r,n,i)}function vo(e,t,r,n){var i=t,o=t;return"number"==typeof t?o=Xe(e,lt(e,t)):i=qe(t),null==i?null:(n(o,i)&&e.cm&&cn(e.cm,i,r),o)}function mo(e){this.lines=e,this.parent=null;for(var t=0,r=0;r<e.length;++r)e[r].parent=this,t+=e[r].height;this.height=t}function yo(e){this.children=e;for(var t=0,r=0,n=0;n<e.length;++n){var i=e[n];t+=i.chunkSize(),r+=i.height,i.parent=this}this.size=t,this.height=r,this.parent=null}wi.prototype.from=function(){return ot(this.anchor,this.head)},wi.prototype.to=function(){return it(this.anchor,this.head)},wi.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},mo.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var r=e,n=e+t;r<n;++r){var i=this.lines[r];this.height-=i.height,Yt(i),sr(i,"delete")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,r){this.height+=r,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var n=0;n<t.length;++n)t[n].parent=this},iterN:function(e,t,r){for(var n=e+t;e<n;++e)if(r(this.lines[e]))return!0}},yo.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var r=0;r<this.children.length;++r){var n=this.children[r],i=n.chunkSize();if(e<i){var o=Math.min(t,i-e),l=n.height;if(n.removeInner(e,o),this.height-=l-n.height,i==o&&(this.children.splice(r--,1),n.parent=null),0==(t-=o))break;e=0}else e-=i}if(this.size-t<25&&(this.children.length>1||!(this.children[0]instanceof mo))){var s=[];this.collapse(s),this.children=[new mo(s)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t<this.children.length;++t)this.children[t].collapse(e)},insertInner:function(e,t,r){this.size+=t.length,this.height+=r;for(var n=0;n<this.children.length;++n){var i=this.children[n],o=i.chunkSize();if(e<=o){if(i.insertInner(e,t,r),i.lines&&i.lines.length>50){for(var l=i.lines.length%25+25,s=l;s<i.lines.length;){var a=new mo(i.lines.slice(s,s+=25));i.height-=a.height,this.children.splice(++n,0,a),a.parent=this}i.lines=i.lines.slice(0,l),this.maybeSpill()}break}e-=o}},maybeSpill:function(){if(!(this.children.length<=10)){var e=this;do{var t=new yo(e.children.splice(e.children.length-5,5));if(e.parent){e.size-=t.size,e.height-=t.height;var r=B(e.parent.children,e);e.parent.children.splice(r+1,0,t)}else{var n=new yo(e.children);n.parent=e,e.children=[n,t],e=n}t.parent=e.parent}while(e.children.length>10);e.parent.maybeSpill()}},iterN:function(e,t,r){for(var n=0;n<this.children.length;++n){var i=this.children[n],o=i.chunkSize();if(e<o){var l=Math.min(t,o-e);if(i.iterN(e,l,r))return!0;if(0==(t-=l))break;e=0}else e-=o}}};var bo=function(e,t,r){if(r)for(var n in r)r.hasOwnProperty(n)&&(this[n]=r[n]);this.doc=e,this.node=t};function wo(e,t,r){Vt(t)<(e.curOp&&e.curOp.scrollTop||e.doc.scrollTop)&&Nn(e,r)}bo.prototype.clear=function(){var e=this.doc.cm,t=this.line.widgets,r=this.line,n=qe(r);if(null!=n&&t){for(var i=0;i<t.length;++i)t[i]==this&&t.splice(i--,1);t.length||(r.widgets=null);var o=wr(this);_e(r,Math.max(0,r.height-o)),e&&(qn(e,function(){wo(e,r,-o),cn(e,n,"widget")}),sr(e,"lineWidgetCleared",e,this,n))}},bo.prototype.changed=function(){var e=this,t=this.height,r=this.doc.cm,n=this.line;this.height=null;var i=wr(this)-t;i&&(Gt(this.doc,n)||_e(n,n.height+i),r&&qn(r,function(){r.curOp.forceUpdate=!0,wo(r,n,i),sr(r,"lineWidgetChanged",r,e,qe(n))}))},be(bo);var xo=0,Co=function(e,t){this.lines=[],this.type=t,this.doc=e,this.id=++xo};function So(e,t,r,n,i){if(n&&n.shared)return function(e,t,r,n,i){(n=I(n)).shared=!1;var o=[So(e,t,r,n,i)],l=o[0],s=n.widgetNode;return Di(e,function(e){s&&(n.widgetNode=s.cloneNode(!0)),o.push(So(e,st(e,t),st(e,r),n,i));for(var a=0;a<e.linked.length;++a)if(e.linked[a].isParent)return;l=_(o)}),new Lo(o,l)}(e,t,r,n,i);if(e.cm&&!e.cm.curOp)return Zn(e.cm,So)(e,t,r,n,i);var o=new Co(e,i),l=tt(t,r);if(n&&I(n,o,!1),l>0||0==l&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=A("span",[o.replacedWith],"CodeMirror-widget"),n.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),n.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(It(e,t.line,t,r,o)||t.line!=r.line&&It(e,r.line,t,r,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");Ct=!0}o.addToHistory&&Ii(e,{from:t,to:r,origin:"markText"},e.sel,NaN);var s,a=t.line,u=e.cm;if(e.iter(a,r.line+1,function(n){u&&o.collapsed&&!u.options.lineWrapping&&Rt(n)==u.display.maxLine&&(s=!0),o.collapsed&&a!=t.line&&_e(n,0),function(e,t,r){var n=r&&window.WeakSet&&(r.markedSpans||(r.markedSpans=new WeakSet));n&&n.has(e.markedSpans)?e.markedSpans.push(t):(e.markedSpans=e.markedSpans?e.markedSpans.concat([t]):[t],n&&n.add(e.markedSpans)),t.marker.attachLine(e)}(n,new St(o,a==t.line?t.ch:null,a==r.line?r.ch:null),e.cm&&e.cm.curOp),++a}),o.collapsed&&e.iter(t.line,r.line+1,function(t){Gt(e,t)&&_e(t,0)}),o.clearOnEnter&&fe(o,"beforeCursorEnter",function(){return o.clear()}),o.readOnly&&(xt=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),o.collapsed&&(o.id=++xo,o.atomic=!0),u){if(s&&(u.curOp.updateMaxLine=!0),o.collapsed)un(u,t.line,r.line+1);else if(o.className||o.startStyle||o.endStyle||o.css||o.attributes||o.title)for(var c=t.line;c<=r.line;c++)cn(u,c,"text");o.atomic&&Ji(u.doc),sr(u,"markerAdded",u,o)}return o}Co.prototype.clear=function(){if(!this.explicitlyCleared){var e=this.doc.cm,t=e&&!e.curOp;if(t&&Kn(e),ye(this,"clear")){var r=this.find();r&&sr(this,"clear",r.from,r.to)}for(var n=null,i=null,o=0;o<this.lines.length;++o){var l=this.lines[o],s=Lt(l.markedSpans,this);e&&!this.collapsed?cn(e,qe(l),"text"):e&&(null!=s.to&&(i=qe(l)),null!=s.from&&(n=qe(l))),l.markedSpans=kt(l.markedSpans,s),null==s.from&&this.collapsed&&!Gt(this.doc,l)&&e&&_e(l,en(e.display))}if(e&&this.collapsed&&!e.options.lineWrapping)for(var a=0;a<this.lines.length;++a){var u=Rt(this.lines[a]),c=Kt(u);c>e.display.maxLineLength&&(e.display.maxLine=u,e.display.maxLineLength=c,e.display.maxLineChanged=!0)}null!=n&&e&&this.collapsed&&un(e,n,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Ji(e.doc)),e&&sr(e,"markerCleared",e,this,n,i),t&&jn(e),this.parent&&this.parent.clear()}},Co.prototype.find=function(e,t){var r,n;null==e&&"bookmark"==this.type&&(e=1);for(var i=0;i<this.lines.length;++i){var o=this.lines[i],l=Lt(o.markedSpans,this);if(null!=l.from&&(r=et(t?o:qe(o),l.from),-1==e))return r;if(null!=l.to&&(n=et(t?o:qe(o),l.to),1==e))return n}return r&&{from:r,to:n}},Co.prototype.changed=function(){var e=this,t=this.find(-1,!0),r=this,n=this.doc.cm;t&&n&&qn(n,function(){var i=t.line,o=qe(t.line),l=Ar(n,o);if(l&&(Ir(l),n.curOp.selectionChanged=n.curOp.forceUpdate=!0),n.curOp.updateMaxLine=!0,!Gt(r.doc,i)&&null!=r.height){var s=r.height;r.height=null;var a=wr(r)-s;a&&_e(i,i.height+a)}sr(n,"markerChanged",n,e)})},Co.prototype.attachLine=function(e){if(!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;t.maybeHiddenMarkers&&-1!=B(t.maybeHiddenMarkers,this)||(t.maybeUnhiddenMarkers||(t.maybeUnhiddenMarkers=[])).push(this)}this.lines.push(e)},Co.prototype.detachLine=function(e){if(this.lines.splice(B(this.lines,e),1),!this.lines.length&&this.doc.cm){var t=this.doc.cm.curOp;(t.maybeHiddenMarkers||(t.maybeHiddenMarkers=[])).push(this)}},be(Co);var Lo=function(e,t){this.markers=e,this.primary=t;for(var r=0;r<e.length;++r)e[r].parent=this};function ko(e){return e.findMarks(et(e.first,0),e.clipPos(et(e.lastLine())),function(e){return e.parent})}function To(e){for(var t=function(t){var r=e[t],n=[r.primary.doc];Di(r.primary.doc,function(e){return n.push(e)});for(var i=0;i<r.markers.length;i++){var o=r.markers[i];-1==B(n,o.doc)&&(o.parent=null,r.markers.splice(i--,1))}},r=0;r<e.length;r++)t(r)}Lo.prototype.clear=function(){if(!this.explicitlyCleared){this.explicitlyCleared=!0;for(var e=0;e<this.markers.length;++e)this.markers[e].clear();sr(this,"clear")}},Lo.prototype.find=function(e,t){return this.primary.find(e,t)},be(Lo);var Mo=0,No=function(e,t,r,n,i){if(!(this instanceof No))return new No(e,t,r,n,i);null==r&&(r=0),yo.call(this,[new mo([new Xt("",null)])]),this.first=r,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.modeFrontier=this.highlightFrontier=r;var o=et(r,0);this.sel=Ci(o),this.history=new Fi(null),this.id=++Mo,this.modeOption=t,this.lineSep=n,this.direction="rtl"==i?"rtl":"ltr",this.extend=!1,"string"==typeof e&&(e=this.splitLines(e)),Ai(this,{from:o,to:o,text:e}),qi(this,Ci(o),V)};No.prototype=Q(yo.prototype,{constructor:No,iter:function(e,t,r){r?this.iterN(e-this.first,t-e,r):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){for(var r=0,n=0;n<t.length;++n)r+=t[n].height;this.insertInner(e-this.first,t,r)},remove:function(e,t){this.removeInner(e-this.first,t)},getValue:function(e){var t=$e(this,this.first,this.first+this.size);return!1===e?t:t.join(e||this.lineSeparator())},setValue:Jn(function(e){var t=et(this.first,0),r=this.first+this.size-1;lo(this,{from:t,to:et(r,Xe(this,r).text.length),text:this.splitLines(e),origin:"setValue",full:!0},!0),this.cm&&An(this.cm,0,0),qi(this,Ci(t),V)}),replaceRange:function(e,t,r,n){ho(this,e,t=st(this,t),r=r?st(this,r):t,n)},getRange:function(e,t,r){var n=Ye(this,st(this,e),st(this,t));return!1===r?n:""===r?n.join(""):n.join(r||this.lineSeparator())},getLine:function(e){var t=this.getLineHandle(e);return t&&t.text},getLineHandle:function(e){if(Qe(this,e))return Xe(this,e)},getLineNumber:function(e){return qe(e)},getLineHandleVisualStart:function(e){return"number"==typeof e&&(e=Xe(this,e)),Rt(e)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(e){return st(this,e)},getCursor:function(e){var t=this.sel.primary();return null==e||"head"==e?t.head:"anchor"==e?t.anchor:"end"==e||"to"==e||!1===e?t.to():t.from()},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:Jn(function(e,t,r){$i(this,st(this,"number"==typeof e?et(e,t||0):e),null,r)}),setSelection:Jn(function(e,t,r){$i(this,st(this,e),st(this,t||e),r)}),extendSelection:Jn(function(e,t,r){ji(this,st(this,e),t&&st(this,t),r)}),extendSelections:Jn(function(e,t){Xi(this,at(this,e),t)}),extendSelectionsBy:Jn(function(e,t){Xi(this,at(this,q(this.sel.ranges,e)),t)}),setSelections:Jn(function(e,t,r){if(e.length){for(var n=[],i=0;i<e.length;i++)n[i]=new wi(st(this,e[i].anchor),st(this,e[i].head||e[i].anchor));null==t&&(t=Math.min(e.length-1,this.sel.primIndex)),qi(this,xi(this.cm,n,t),r)}}),addSelection:Jn(function(e,t,r){var n=this.sel.ranges.slice(0);n.push(new wi(st(this,e),st(this,t||e))),qi(this,xi(this.cm,n,n.length-1),r)}),getSelection:function(e){for(var t,r=this.sel.ranges,n=0;n<r.length;n++){var i=Ye(this,r[n].from(),r[n].to());t=t?t.concat(i):i}return!1===e?t:t.join(e||this.lineSeparator())},getSelections:function(e){for(var t=[],r=this.sel.ranges,n=0;n<r.length;n++){var i=Ye(this,r[n].from(),r[n].to());!1!==e&&(i=i.join(e||this.lineSeparator())),t[n]=i}return t},replaceSelection:function(e,t,r){for(var n=[],i=0;i<this.sel.ranges.length;i++)n[i]=e;this.replaceSelections(n,t,r||"+input")},replaceSelections:Jn(function(e,t,r){for(var n=[],i=this.sel,o=0;o<i.ranges.length;o++){var l=i.ranges[o];n[o]={from:l.from(),to:l.to(),text:this.splitLines(e[o]),origin:r}}for(var s=t&&"end"!=t&&function(e,t,r){for(var n=[],i=et(e.first,0),o=i,l=0;l<t.length;l++){var s=t[l],a=Ti(s.from,i,o),u=Ti(Si(s),i,o);if(i=s.to,o=u,"around"==r){var c=e.sel.ranges[l],h=tt(c.head,c.anchor)<0;n[l]=new wi(h?u:a,h?a:u)}else n[l]=new wi(a,a)}return new bi(n,e.sel.primIndex)}(this,n,t),a=n.length-1;a>=0;a--)lo(this,n[a]);s?_i(this,s):this.cm&&On(this.cm)}),undo:Jn(function(){ao(this,"undo")}),redo:Jn(function(){ao(this,"redo")}),undoSelection:Jn(function(){ao(this,"undo",!0)}),redoSelection:Jn(function(){ao(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,r=0,n=0;n<e.done.length;n++)e.done[n].ranges||++t;for(var i=0;i<e.undone.length;i++)e.undone[i].ranges||++r;return{undo:t,redo:r}},clearHistory:function(){var e=this;this.history=new Fi(this.history),Di(this,function(t){return t.history=e.history},!0)},markClean:function(){this.cleanGeneration=this.changeGeneration(!0)},changeGeneration:function(e){return e&&(this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null),this.history.generation},isClean:function(e){return this.history.generation==(e||this.cleanGeneration)},getHistory:function(){return{done:Vi(this.history.done),undone:Vi(this.history.undone)}},setHistory:function(e){var t=this.history=new Fi(this.history);t.done=Vi(e.done.slice(0),null,!0),t.undone=Vi(e.undone.slice(0),null,!0)},setGutterMarker:Jn(function(e,t,r){return vo(this,e,"gutter",function(e){var n=e.gutterMarkers||(e.gutterMarkers={});return n[t]=r,!r&&re(n)&&(e.gutterMarkers=null),!0})}),clearGutter:Jn(function(e){var t=this;this.iter(function(r){r.gutterMarkers&&r.gutterMarkers[e]&&vo(t,r,"gutter",function(){return r.gutterMarkers[e]=null,re(r.gutterMarkers)&&(r.gutterMarkers=null),!0})})}),lineInfo:function(e){var t;if("number"==typeof e){if(!Qe(this,e))return null;if(t=e,!(e=Xe(this,e)))return null}else if(null==(t=qe(e)))return null;return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},addLineClass:Jn(function(e,t,r){return vo(this,e,"gutter"==t?"gutter":"class",function(e){var n="text"==t?"textClass":"background"==t?"bgClass":"gutter"==t?"gutterClass":"wrapClass";if(e[n]){if(L(r).test(e[n]))return!1;e[n]+=" "+r}else e[n]=r;return!0})}),removeLineClass:Jn(function(e,t,r){return vo(this,e,"gutter"==t?"gutter":"class",function(e){var n="text"==t?"textClass":"background"==t?"bgClass":"gutter"==t?"gutterClass":"wrapClass",i=e[n];if(!i)return!1;if(null==r)e[n]=null;else{var o=i.match(L(r));if(!o)return!1;var l=o.index+o[0].length;e[n]=i.slice(0,o.index)+(o.index&&l!=i.length?" ":"")+i.slice(l)||null}return!0})}),addLineWidget:Jn(function(e,t,r){return function(e,t,r,n){var i=new bo(e,r,n),o=e.cm;return o&&i.noHScroll&&(o.display.alignWidgets=!0),vo(e,t,"widget",function(t){var r=t.widgets||(t.widgets=[]);if(null==i.insertAt?r.push(i):r.splice(Math.min(r.length,Math.max(0,i.insertAt)),0,i),i.line=t,o&&!Gt(e,t)){var n=Vt(t)<e.scrollTop;_e(t,t.height+wr(i)),n&&Nn(o,i.height),o.curOp.forceUpdate=!0}return!0}),o&&sr(o,"lineWidgetAdded",o,i,"number"==typeof t?t:qe(t)),i}(this,e,t,r)}),removeLineWidget:function(e){e.clear()},markText:function(e,t,r){return So(this,st(this,e),st(this,t),r,r&&r.type||"range")},setBookmark:function(e,t){var r={replacedWith:t&&(null==t.nodeType?t.widget:t),insertLeft:t&&t.insertLeft,clearWhenEmpty:!1,shared:t&&t.shared,handleMouseEvents:t&&t.handleMouseEvents};return So(this,e=st(this,e),e,r,"bookmark")},findMarksAt:function(e){var t=[],r=Xe(this,(e=st(this,e)).line).markedSpans;if(r)for(var n=0;n<r.length;++n){var i=r[n];(null==i.from||i.from<=e.ch)&&(null==i.to||i.to>=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,r){e=st(this,e),t=st(this,t);var n=[],i=e.line;return this.iter(e.line,t.line+1,function(o){var l=o.markedSpans;if(l)for(var s=0;s<l.length;s++){var a=l[s];null!=a.to&&i==e.line&&e.ch>=a.to||null==a.from&&i!=e.line||null!=a.from&&i==t.line&&a.from>=t.ch||r&&!r(a.marker)||n.push(a.marker.parent||a.marker)}++i}),n},getAllMarks:function(){var e=[];return this.iter(function(t){var r=t.markedSpans;if(r)for(var n=0;n<r.length;++n)null!=r[n].from&&e.push(r[n].marker)}),e},posFromIndex:function(e){var t,r=this.first,n=this.lineSeparator().length;return this.iter(function(i){var o=i.text.length+n;if(o>e)return t=e,!0;e-=o,++r}),st(this,et(r,t))},indexFromPos:function(e){var t=(e=st(this,e)).ch;if(e.line<this.first||e.ch<0)return 0;var r=this.lineSeparator().length;return this.iter(this.first,e.line,function(e){t+=e.text.length+r}),t},copy:function(e){var t=new No($e(this,this.first,this.first+this.size),this.modeOption,this.first,this.lineSep,this.direction);return t.scrollTop=this.scrollTop,t.scrollLeft=this.scrollLeft,t.sel=this.sel,t.extend=!1,e&&(t.history.undoDepth=this.history.undoDepth,t.setHistory(this.getHistory())),t},linkedDoc:function(e){e||(e={});var t=this.first,r=this.first+this.size;null!=e.from&&e.from>t&&(t=e.from),null!=e.to&&e.to<r&&(r=e.to);var n=new No($e(this,t,r),e.mode||this.modeOption,t,this.lineSep,this.direction);return e.sharedHist&&(n.history=this.history),(this.linked||(this.linked=[])).push({doc:n,sharedHist:e.sharedHist}),n.linked=[{doc:this,isParent:!0,sharedHist:e.sharedHist}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r],i=n.find(),o=e.clipPos(i.from),l=e.clipPos(i.to);if(tt(o,l)){var s=So(e,o,l,n.primary,n.primary.type);n.markers.push(s),s.parent=n}}}(n,ko(this)),n},unlinkDoc:function(e){if(e instanceof Ll&&(e=e.doc),this.linked)for(var t=0;t<this.linked.length;++t){if(this.linked[t].doc==e){this.linked.splice(t,1),e.unlinkDoc(this),To(ko(this));break}}if(e.history==this.history){var r=[e.id];Di(e,function(e){return r.push(e.id)},!0),e.history=new Fi(null),e.history.done=Vi(this.history.done,r),e.history.undone=Vi(this.history.undone,r)}},iterLinkedDocs:function(e){Di(this,e)},getMode:function(){return this.mode},getEditor:function(){return this.cm},splitLines:function(e){return this.lineSep?e.split(this.lineSep):We(e)},lineSeparator:function(){return this.lineSep||"\n"},setDirection:Jn(function(e){var t;("rtl"!=e&&(e="ltr"),e!=this.direction)&&(this.direction=e,this.iter(function(e){return e.order=null}),this.cm&&qn(t=this.cm,function(){Hi(t),un(t)}))})}),No.prototype.eachLine=No.prototype.iter;var Oo=0;function Ao(e){var t=this;if(Do(t),!ve(t,e)&&!xr(t.display,e)){we(e),l&&(Oo=+new Date);var r=sn(t,e,!0),n=e.dataTransfer.files;if(r&&!t.isReadOnly())if(n&&n.length&&window.FileReader&&window.File)for(var i=n.length,o=Array(i),s=0,a=function(){++s==i&&Zn(t,function(){var e={from:r=st(t.doc,r),to:r,text:t.doc.splitLines(o.filter(function(e){return null!=e}).join(t.doc.lineSeparator())),origin:"paste"};lo(t.doc,e),_i(t.doc,Ci(st(t.doc,r),st(t.doc,Si(e))))})()},u=function(e,r){if(t.options.allowDropFileTypes&&-1==B(t.options.allowDropFileTypes,e.type))a();else{var n=new FileReader;n.onerror=function(){return a()},n.onload=function(){var e=n.result;/[\x00-\x08\x0e-\x1f]{2}/.test(e)?a():(o[r]=e,a())},n.readAsText(e)}},c=0;c<n.length;c++)u(n[c],c);else{if(t.state.draggingText&&t.doc.sel.contains(r)>-1)return t.state.draggingText(e),void setTimeout(function(){return t.display.input.focus()},20);try{var h=e.dataTransfer.getData("Text");if(h){var f;if(t.state.draggingText&&!t.state.draggingText.copy&&(f=t.listSelections()),Zi(t.doc,Ci(r,r)),f)for(var d=0;d<f.length;++d)ho(t.doc,"",f[d].anchor,f[d].head,"drag");t.replaceSelection(h,"around","paste"),t.display.input.focus()}}catch(e){}}}}function Do(e){e.display.dragCursor&&(e.display.lineSpace.removeChild(e.display.dragCursor),e.display.dragCursor=null)}function Wo(e){if(document.getElementsByClassName){for(var t=document.getElementsByClassName("CodeMirror"),r=[],n=0;n<t.length;n++){var i=t[n].CodeMirror;i&&r.push(i)}r.length&&r[0].operation(function(){for(var t=0;t<r.length;t++)e(r[t])})}}var Ho=!1;function Fo(){var e;Ho||(fe(window,"resize",function(){null==e&&(e=setTimeout(function(){e=null,Wo(Po)},100))}),fe(window,"blur",function(){return Wo(Sn)}),Ho=!0)}function Po(e){var t=e.display;t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,t.scrollbarsClipped=!1,e.setSize()}for(var Eo={3:"Pause",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",106:"*",107:"=",109:"-",110:".",111:"/",145:"ScrollLock",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",224:"Mod",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"},Io=0;Io<10;Io++)Eo[Io+48]=Eo[Io+96]=String(Io);for(var Ro=65;Ro<=90;Ro++)Eo[Ro]=String.fromCharCode(Ro);for(var zo=1;zo<=12;zo++)Eo[zo+111]=Eo[zo+63235]="F"+zo;var Bo={};function Go(e){var t,r,n,i,o=e.split(/-(?!$)/);e=o[o.length-1];for(var l=0;l<o.length-1;l++){var s=o[l];if(/^(cmd|meta|m)$/i.test(s))i=!0;else if(/^a(lt)?$/i.test(s))t=!0;else if(/^(c|ctrl|control)$/i.test(s))r=!0;else{if(!/^s(hift)?$/i.test(s))throw new Error("Unrecognized modifier name: "+s);n=!0}}return t&&(e="Alt-"+e),r&&(e="Ctrl-"+e),i&&(e="Cmd-"+e),n&&(e="Shift-"+e),e}function Uo(e){var t={};for(var r in e)if(e.hasOwnProperty(r)){var n=e[r];if(/^(name|fallthrough|(de|at)tach)$/.test(r))continue;if("..."==n){delete e[r];continue}for(var i=q(r.split(" "),Go),o=0;o<i.length;o++){var l=void 0,s=void 0;o==i.length-1?(s=i.join(" "),l=n):(s=i.slice(0,o+1).join(" "),l="...");var a=t[s];if(a){if(a!=l)throw new Error("Inconsistent bindings for "+s)}else t[s]=l}delete e[r]}for(var u in t)e[u]=t[u];return e}function Vo(e,t,r,n){var i=(t=Yo(t)).call?t.call(e,n):t[e];if(!1===i)return"nothing";if("..."===i)return"multi";if(null!=i&&r(i))return"handled";if(t.fallthrough){if("[object Array]"!=Object.prototype.toString.call(t.fallthrough))return Vo(e,t.fallthrough,r,n);for(var o=0;o<t.fallthrough.length;o++){var l=Vo(e,t.fallthrough[o],r,n);if(l)return l}}}function Ko(e){var t="string"==typeof e?e:Eo[e.keyCode];return"Ctrl"==t||"Alt"==t||"Shift"==t||"Mod"==t}function jo(e,t,r){var n=e;return t.altKey&&"Alt"!=n&&(e="Alt-"+e),(C?t.metaKey:t.ctrlKey)&&"Ctrl"!=n&&(e="Ctrl-"+e),(C?t.ctrlKey:t.metaKey)&&"Mod"!=n&&(e="Cmd-"+e),!r&&t.shiftKey&&"Shift"!=n&&(e="Shift-"+e),e}function Xo(e,t){if(h&&34==e.keyCode&&e.char)return!1;var r=Eo[e.keyCode];return null!=r&&!e.altGraphKey&&(3==e.keyCode&&e.code&&(r=e.code),jo(r,e,t))}function Yo(e){return"string"==typeof e?Bo[e]:e}function $o(e,t){for(var r=e.doc.sel.ranges,n=[],i=0;i<r.length;i++){for(var o=t(r[i]);n.length&&tt(o.from,_(n).to)<=0;){var l=n.pop();if(tt(l.from,o.from)<0){o.from=l.from;break}}n.push(o)}qn(e,function(){for(var t=n.length-1;t>=0;t--)ho(e.doc,"",n[t].from,n[t].to,"+delete");On(e)})}function _o(e,t,r){var n=oe(e.text,t+r,r);return n<0||n>e.text.length?null:n}function qo(e,t,r){var n=_o(e,t.ch,r);return null==n?null:new et(t.line,n,r<0?"after":"before")}function Zo(e,t,r,n,i){if(e){"rtl"==t.doc.direction&&(i=-i);var o=ce(r,t.doc.direction);if(o){var l,s=i<0?_(o):o[0],a=i<0==(1==s.level)?"after":"before";if(s.level>0||"rtl"==t.doc.direction){var u=Dr(t,r);l=i<0?r.text.length-1:0;var c=Wr(t,u,l).top;l=le(function(e){return Wr(t,u,e).top==c},i<0==(1==s.level)?s.from:s.to-1,l),"before"==a&&(l=_o(r,l,1))}else l=i<0?s.to:s.from;return new et(n,l,a)}}return new et(n,i<0?r.text.length:0,i<0?"before":"after")}Bo.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Bo.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Bo.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},Bo.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Bo.default=y?Bo.macDefault:Bo.pcDefault;var Qo={selectAll:io,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),V)},killLine:function(e){return $o(e,function(t){if(t.empty()){var r=Xe(e.doc,t.head.line).text.length;return t.head.ch==r&&t.head.line<e.lastLine()?{from:t.head,to:et(t.head.line+1,0)}:{from:t.head,to:et(t.head.line,r)}}return{from:t.from(),to:t.to()}})},deleteLine:function(e){return $o(e,function(t){return{from:et(t.from().line,0),to:st(e.doc,et(t.to().line+1,0))}})},delLineLeft:function(e){return $o(e,function(e){return{from:et(e.from().line,0),to:e.from()}})},delWrappedLineLeft:function(e){return $o(e,function(t){var r=e.charCoords(t.head,"div").top+5;return{from:e.coordsChar({left:0,top:r},"div"),to:t.from()}})},delWrappedLineRight:function(e){return $o(e,function(t){var r=e.charCoords(t.head,"div").top+5,n=e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:r},"div");return{from:t.from(),to:n}})},undo:function(e){return e.undo()},redo:function(e){return e.redo()},undoSelection:function(e){return e.undoSelection()},redoSelection:function(e){return e.redoSelection()},goDocStart:function(e){return e.extendSelection(et(e.firstLine(),0))},goDocEnd:function(e){return e.extendSelection(et(e.lastLine()))},goLineStart:function(e){return e.extendSelectionsBy(function(t){return Jo(e,t.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(e){return e.extendSelectionsBy(function(t){return el(e,t.head)},{origin:"+move",bias:1})},goLineEnd:function(e){return e.extendSelectionsBy(function(t){return function(e,t){var r=Xe(e.doc,t),n=function(e){for(var t;t=Pt(e);)e=t.find(1,!0).line;return e}(r);n!=r&&(t=qe(n));return Zo(!0,e,r,t,-1)}(e,t.head.line)},{origin:"+move",bias:-1})},goLineRight:function(e){return e.extendSelectionsBy(function(t){var r=e.cursorCoords(t.head,"div").top+5;return e.coordsChar({left:e.display.lineDiv.offsetWidth+100,top:r},"div")},j)},goLineLeft:function(e){return e.extendSelectionsBy(function(t){var r=e.cursorCoords(t.head,"div").top+5;return e.coordsChar({left:0,top:r},"div")},j)},goLineLeftSmart:function(e){return e.extendSelectionsBy(function(t){var r=e.cursorCoords(t.head,"div").top+5,n=e.coordsChar({left:0,top:r},"div");return n.ch<e.getLine(n.line).search(/\S/)?el(e,t.head):n},j)},goLineUp:function(e){return e.moveV(-1,"line")},goLineDown:function(e){return e.moveV(1,"line")},goPageUp:function(e){return e.moveV(-1,"page")},goPageDown:function(e){return e.moveV(1,"page")},goCharLeft:function(e){return e.moveH(-1,"char")},goCharRight:function(e){return e.moveH(1,"char")},goColumnLeft:function(e){return e.moveH(-1,"column")},goColumnRight:function(e){return e.moveH(1,"column")},goWordLeft:function(e){return e.moveH(-1,"word")},goGroupRight:function(e){return e.moveH(1,"group")},goGroupLeft:function(e){return e.moveH(-1,"group")},goWordRight:function(e){return e.moveH(1,"word")},delCharBefore:function(e){return e.deleteH(-1,"codepoint")},delCharAfter:function(e){return e.deleteH(1,"char")},delWordBefore:function(e){return e.deleteH(-1,"word")},delWordAfter:function(e){return e.deleteH(1,"word")},delGroupBefore:function(e){return e.deleteH(-1,"group")},delGroupAfter:function(e){return e.deleteH(1,"group")},indentAuto:function(e){return e.indentSelection("smart")},indentMore:function(e){return e.indentSelection("add")},indentLess:function(e){return e.indentSelection("subtract")},insertTab:function(e){return e.replaceSelection("\t")},insertSoftTab:function(e){for(var t=[],r=e.listSelections(),n=e.options.tabSize,i=0;i<r.length;i++){var o=r[i].from(),l=R(e.getLine(o.line),o.ch,n);t.push($(n-l%n))}e.replaceSelections(t)},defaultTab:function(e){e.somethingSelected()?e.indentSelection("add"):e.execCommand("insertTab")},transposeChars:function(e){return qn(e,function(){for(var t=e.listSelections(),r=[],n=0;n<t.length;n++)if(t[n].empty()){var i=t[n].head,o=Xe(e.doc,i.line).text;if(o)if(i.ch==o.length&&(i=new et(i.line,i.ch-1)),i.ch>0)i=new et(i.line,i.ch+1),e.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),et(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var l=Xe(e.doc,i.line-1).text;l&&(i=new et(i.line,1),e.replaceRange(o.charAt(0)+e.doc.lineSeparator()+l.charAt(l.length-1),et(i.line-1,l.length-1),i,"+transpose"))}r.push(new wi(i,i))}e.setSelections(r)})},newlineAndIndent:function(e){return qn(e,function(){for(var t=e.listSelections(),r=t.length-1;r>=0;r--)e.replaceRange(e.doc.lineSeparator(),t[r].anchor,t[r].head,"+input");t=e.listSelections();for(var n=0;n<t.length;n++)e.indentLine(t[n].from().line,null,!0);On(e)})},openLine:function(e){return e.replaceSelection("\n","start")},toggleOverwrite:function(e){return e.toggleOverwrite()}};function Jo(e,t){var r=Xe(e.doc,t),n=Rt(r);return n!=r&&(t=qe(n)),Zo(!0,e,n,t,1)}function el(e,t){var r=Jo(e,t.line),n=Xe(e.doc,r.line),i=ce(n,e.doc.direction);if(!i||0==i[0].level){var o=Math.max(r.ch,n.text.search(/\S/)),l=t.line==r.line&&t.ch<=o&&t.ch;return et(r.line,l?0:o,r.sticky)}return r}function tl(e,t,r){if("string"==typeof t&&!(t=Qo[t]))return!1;e.display.input.ensurePolled();var n=e.display.shift,i=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),r&&(e.display.shift=!1),i=t(e)!=U}finally{e.display.shift=n,e.state.suppressEdits=!1}return i}var rl=new z;function nl(e,t,r,n){var i=e.state.keySeq;if(i){if(Ko(t))return"handled";if(/\'$/.test(t)?e.state.keySeq=null:rl.set(50,function(){e.state.keySeq==i&&(e.state.keySeq=null,e.display.input.reset())}),il(e,i+" "+t,r,n))return!0}return il(e,t,r,n)}function il(e,t,r,n){var i=function(e,t,r){for(var n=0;n<e.state.keyMaps.length;n++){var i=Vo(t,e.state.keyMaps[n],r,e);if(i)return i}return e.options.extraKeys&&Vo(t,e.options.extraKeys,r,e)||Vo(t,e.options.keyMap,r,e)}(e,t,n);return"multi"==i&&(e.state.keySeq=t),"handled"==i&&sr(e,"keyHandled",e,t,r),"handled"!=i&&"multi"!=i||(we(r),bn(e)),!!i}function ol(e,t){var r=Xo(t,!0);return!!r&&(t.shiftKey&&!e.state.keySeq?nl(e,"Shift-"+r,t,function(t){return tl(e,t,!0)})||nl(e,r,t,function(t){if("string"==typeof t?/^go[A-Z]/.test(t):t.motion)return tl(e,t)}):nl(e,r,t,function(t){return tl(e,t)}))}var ll=null;function sl(e){var t=this;if(!(e.target&&e.target!=t.display.input.getField()||(t.curOp.focus=W(),ve(t,e)))){l&&s<11&&27==e.keyCode&&(e.returnValue=!1);var n=e.keyCode;t.display.shift=16==n||e.shiftKey;var i=ol(t,e);h&&(ll=i?n:null,!i&&88==n&&!Fe&&(y?e.metaKey:e.ctrlKey)&&t.replaceSelection("",null,"cut")),r&&!y&&!i&&46==n&&e.shiftKey&&!e.ctrlKey&&document.execCommand&&document.execCommand("cut"),18!=n||/\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className)||function(e){var t=e.display.lineDiv;function r(e){18!=e.keyCode&&e.altKey||(T(t,"CodeMirror-crosshair"),pe(document,"keyup",r),pe(document,"mouseover",r))}H(t,"CodeMirror-crosshair"),fe(document,"keyup",r),fe(document,"mouseover",r)}(t)}}function al(e){16==e.keyCode&&(this.doc.sel.shift=!1),ve(this,e)}function ul(e){var t=this;if(!(e.target&&e.target!=t.display.input.getField()||xr(t.display,e)||ve(t,e)||e.ctrlKey&&!e.altKey||y&&e.metaKey)){var r=e.keyCode,n=e.charCode;if(h&&r==ll)return ll=null,void we(e);if(!h||e.which&&!(e.which<10)||!ol(t,e)){var i=String.fromCharCode(null==n?r:n);"\b"!=i&&(function(e,t,r){return nl(e,"'"+r+"'",t,function(t){return tl(e,t,!0)})}(t,e,i)||t.display.input.onKeyPress(e))}}}var cl,hl,fl=function(e,t,r){this.time=e,this.pos=t,this.button=r};function dl(e){var t=this,r=t.display;if(!(ve(t,e)||r.activeTouch&&r.input.supportsTouch()))if(r.input.ensurePolled(),r.shift=e.shiftKey,xr(r,e))a||(r.scroller.draggable=!1,setTimeout(function(){return r.scroller.draggable=!0},100));else if(!vl(t,e)){var n=sn(t,e),i=ke(e),o=n?function(e,t){var r=+new Date;return hl&&hl.compare(r,e,t)?(cl=hl=null,"triple"):cl&&cl.compare(r,e,t)?(hl=new fl(r,e,t),cl=null,"double"):(cl=new fl(r,e,t),hl=null,"single")}(n,i):"single";window.focus(),1==i&&t.state.selectingText&&t.state.selectingText(e),n&&function(e,t,r,n,i){var o="Click";"double"==n?o="Double"+o:"triple"==n&&(o="Triple"+o);return nl(e,jo(o=(1==t?"Left":2==t?"Middle":"Right")+o,i),i,function(t){if("string"==typeof t&&(t=Qo[t]),!t)return!1;var n=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),n=t(e,r)!=U}finally{e.state.suppressEdits=!1}return n})}(t,i,n,o,e)||(1==i?n?function(e,t,r,n){l?setTimeout(E(wn,e),0):e.curOp.focus=W();var i,o=function(e,t,r){var n=e.getOption("configureMouse"),i=n?n(e,t,r):{};if(null==i.unit){var o=b?r.shiftKey&&r.metaKey:r.altKey;i.unit=o?"rectangle":"single"==t?"char":"double"==t?"word":"line"}(null==i.extend||e.doc.extend)&&(i.extend=e.doc.extend||r.shiftKey);null==i.addNew&&(i.addNew=y?r.metaKey:r.ctrlKey);null==i.moveOnDrag&&(i.moveOnDrag=!(y?r.altKey:r.ctrlKey));return i}(e,r,n),u=e.doc.sel;e.options.dragDrop&&Ne&&!e.isReadOnly()&&"single"==r&&(i=u.contains(t))>-1&&(tt((i=u.ranges[i]).from(),t)<0||t.xRel>0)&&(tt(i.to(),t)>0||t.xRel<0)?function(e,t,r,n){var i=e.display,o=!1,u=Zn(e,function(t){a&&(i.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:xn(e)),pe(i.wrapper.ownerDocument,"mouseup",u),pe(i.wrapper.ownerDocument,"mousemove",c),pe(i.scroller,"dragstart",h),pe(i.scroller,"drop",u),o||(we(t),n.addNew||ji(e.doc,r,null,null,n.extend),a&&!f||l&&9==s?setTimeout(function(){i.wrapper.ownerDocument.body.focus({preventScroll:!0}),i.input.focus()},20):i.input.focus())}),c=function(e){o=o||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10},h=function(){return o=!0};a&&(i.scroller.draggable=!0);e.state.draggingText=u,u.copy=!n.moveOnDrag,fe(i.wrapper.ownerDocument,"mouseup",u),fe(i.wrapper.ownerDocument,"mousemove",c),fe(i.scroller,"dragstart",h),fe(i.scroller,"drop",u),e.state.delayingBlurEvent=!0,setTimeout(function(){return i.input.focus()},20),i.scroller.dragDrop&&i.scroller.dragDrop()}(e,n,t,o):function(e,t,r,n){l&&xn(e);var i=e.display,o=e.doc;we(t);var s,a,u=o.sel,c=u.ranges;n.addNew&&!n.extend?(a=o.sel.contains(r),s=a>-1?c[a]:new wi(r,r)):(s=o.sel.primary(),a=o.sel.primIndex);if("rectangle"==n.unit)n.addNew||(s=new wi(r,r)),r=sn(e,t,!0,!0),a=-1;else{var h=pl(e,r,n.unit);s=n.extend?Ki(s,h.anchor,h.head,n.extend):h}n.addNew?-1==a?(a=c.length,qi(o,xi(e,c.concat([s]),a),{scroll:!1,origin:"*mouse"})):c.length>1&&c[a].empty()&&"char"==n.unit&&!n.extend?(qi(o,xi(e,c.slice(0,a).concat(c.slice(a+1)),0),{scroll:!1,origin:"*mouse"}),u=o.sel):Yi(o,a,s,K):(a=0,qi(o,new bi([s],0),K),u=o.sel);var f=r;function d(t){if(0!=tt(f,t))if(f=t,"rectangle"==n.unit){for(var i=[],l=e.options.tabSize,c=R(Xe(o,r.line).text,r.ch,l),h=R(Xe(o,t.line).text,t.ch,l),d=Math.min(c,h),p=Math.max(c,h),g=Math.min(r.line,t.line),v=Math.min(e.lastLine(),Math.max(r.line,t.line));g<=v;g++){var m=Xe(o,g).text,y=X(m,d,l);d==p?i.push(new wi(et(g,y),et(g,y))):m.length>y&&i.push(new wi(et(g,y),et(g,X(m,p,l))))}i.length||i.push(new wi(r,r)),qi(o,xi(e,u.ranges.slice(0,a).concat(i),a),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b,w=s,x=pl(e,t,n.unit),C=w.anchor;tt(x.anchor,C)>0?(b=x.head,C=ot(w.from(),x.anchor)):(b=x.anchor,C=it(w.to(),x.head));var S=u.ranges.slice(0);S[a]=function(e,t){var r=t.anchor,n=t.head,i=Xe(e.doc,r.line);if(0==tt(r,n)&&r.sticky==n.sticky)return t;var o=ce(i);if(!o)return t;var l=ae(o,r.ch,r.sticky),s=o[l];if(s.from!=r.ch&&s.to!=r.ch)return t;var a,u=l+(s.from==r.ch==(1!=s.level)?0:1);if(0==u||u==o.length)return t;if(n.line!=r.line)a=(n.line-r.line)*("ltr"==e.doc.direction?1:-1)>0;else{var c=ae(o,n.ch,n.sticky),h=c-l||(n.ch-r.ch)*(1==s.level?-1:1);a=c==u-1||c==u?h<0:h>0}var f=o[u+(a?-1:0)],d=a==(1==f.level),p=d?f.from:f.to,g=d?"after":"before";return r.ch==p&&r.sticky==g?t:new wi(new et(r.line,p,g),n)}(e,new wi(st(o,C),b)),qi(o,xi(e,S,a),K)}}var p=i.wrapper.getBoundingClientRect(),g=0;function v(t){e.state.selectingText=!1,g=1/0,t&&(we(t),i.input.focus()),pe(i.wrapper.ownerDocument,"mousemove",m),pe(i.wrapper.ownerDocument,"mouseup",y),o.history.lastSelOrigin=null}var m=Zn(e,function(t){0!==t.buttons&&ke(t)?function t(r){var l=++g;var s=sn(e,r,!0,"rectangle"==n.unit);if(!s)return;if(0!=tt(s,f)){e.curOp.focus=W(),d(s);var a=Tn(i,o);(s.line>=a.to||s.line<a.from)&&setTimeout(Zn(e,function(){g==l&&t(r)}),150)}else{var u=r.clientY<p.top?-20:r.clientY>p.bottom?20:0;u&&setTimeout(Zn(e,function(){g==l&&(i.scroller.scrollTop+=u,t(r))}),50)}}(t):v(t)}),y=Zn(e,v);e.state.selectingText=y,fe(i.wrapper.ownerDocument,"mousemove",m),fe(i.wrapper.ownerDocument,"mouseup",y)}(e,n,t,o)}(t,n,o,e):Le(e)==r.scroller&&we(e):2==i?(n&&ji(t.doc,n),setTimeout(function(){return r.input.focus()},20)):3==i&&(S?t.display.input.onContextMenu(e):xn(t)))}}function pl(e,t,r){if("char"==r)return new wi(t,t);if("word"==r)return e.findWordAt(t);if("line"==r)return new wi(et(t.line,0),st(e.doc,et(t.line+1,0)));var n=r(e,t);return new wi(n.from,n.to)}function gl(e,t,r,n){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch(e){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;n&&we(t);var l=e.display,s=l.lineDiv.getBoundingClientRect();if(o>s.bottom||!ye(e,r))return Ce(t);o-=s.top-l.viewOffset;for(var a=0;a<e.display.gutterSpecs.length;++a){var u=l.gutters.childNodes[a];if(u&&u.getBoundingClientRect().right>=i)return ge(e,r,e,Ze(e.doc,o),e.display.gutterSpecs[a].className,t),Ce(t)}}function vl(e,t){return gl(e,t,"gutterClick",!0)}function ml(e,t){xr(e.display,t)||function(e,t){if(!ye(e,"gutterContextMenu"))return!1;return gl(e,t,"gutterContextMenu",!1)}(e,t)||ve(e,t,"contextmenu")||S||e.display.input.onContextMenu(t)}function yl(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),zr(e)}fl.prototype.compare=function(e,t,r){return this.time+400>e&&0==tt(t,this.pos)&&r==this.button};var bl={toString:function(){return"CodeMirror.Init"}},wl={},xl={};function Cl(e,t,r){if(!t!=!(r&&r!=bl)){var n=e.display.dragFunctions,i=t?fe:pe;i(e.display.scroller,"dragstart",n.start),i(e.display.scroller,"dragenter",n.enter),i(e.display.scroller,"dragover",n.over),i(e.display.scroller,"dragleave",n.leave),i(e.display.scroller,"drop",n.drop)}}function Sl(e){e.options.lineWrapping?(H(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(T(e.display.wrapper,"CodeMirror-wrap"),jt(e)),ln(e),un(e),zr(e),setTimeout(function(){return zn(e)},100)}function Ll(e,t){var r=this;if(!(this instanceof Ll))return new Ll(e,t);this.options=t=t?I(t):{},I(wl,t,!1);var n=t.value;"string"==typeof n?n=new No(n,t.mode,null,t.lineSeparator,t.direction):t.mode&&(n.modeOption=t.mode),this.doc=n;var i=new Ll.inputStyles[t.inputStyle](this),o=this.display=new di(e,n,i,t);for(var u in o.wrapper.CodeMirror=this,yl(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Un(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new z,keySeq:null,specialChars:null},t.autofocus&&!m&&o.input.focus(),l&&s<11&&setTimeout(function(){return r.display.input.reset(!0)},20),function(e){var t=e.display;fe(t.scroller,"mousedown",Zn(e,dl)),fe(t.scroller,"dblclick",l&&s<11?Zn(e,function(t){if(!ve(e,t)){var r=sn(e,t);if(r&&!vl(e,t)&&!xr(e.display,t)){we(t);var n=e.findWordAt(r);ji(e.doc,n.anchor,n.head)}}}):function(t){return ve(e,t)||we(t)});fe(t.scroller,"contextmenu",function(t){return ml(e,t)}),fe(t.input.getField(),"contextmenu",function(r){t.scroller.contains(r.target)||ml(e,r)});var r,n={end:0};function i(){t.activeTouch&&(r=setTimeout(function(){return t.activeTouch=null},1e3),(n=t.activeTouch).end=+new Date)}function o(e,t){if(null==t.left)return!0;var r=t.left-e.left,n=t.top-e.top;return r*r+n*n>400}fe(t.scroller,"touchstart",function(i){if(!ve(e,i)&&!function(e){if(1!=e.touches.length)return!1;var t=e.touches[0];return t.radiusX<=1&&t.radiusY<=1}(i)&&!vl(e,i)){t.input.ensurePolled(),clearTimeout(r);var o=+new Date;t.activeTouch={start:o,moved:!1,prev:o-n.end<=300?n:null},1==i.touches.length&&(t.activeTouch.left=i.touches[0].pageX,t.activeTouch.top=i.touches[0].pageY)}}),fe(t.scroller,"touchmove",function(){t.activeTouch&&(t.activeTouch.moved=!0)}),fe(t.scroller,"touchend",function(r){var n=t.activeTouch;if(n&&!xr(t,r)&&null!=n.left&&!n.moved&&new Date-n.start<300){var l,s=e.coordsChar(t.activeTouch,"page");l=!n.prev||o(n,n.prev)?new wi(s,s):!n.prev.prev||o(n,n.prev.prev)?e.findWordAt(s):new wi(et(s.line,0),st(e.doc,et(s.line+1,0))),e.setSelection(l.anchor,l.head),e.focus(),we(r)}i()}),fe(t.scroller,"touchcancel",i),fe(t.scroller,"scroll",function(){t.scroller.clientHeight&&(Hn(e,t.scroller.scrollTop),Pn(e,t.scroller.scrollLeft,!0),ge(e,"scroll",e))}),fe(t.scroller,"mousewheel",function(t){return yi(e,t)}),fe(t.scroller,"DOMMouseScroll",function(t){return yi(e,t)}),fe(t.wrapper,"scroll",function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(t){ve(e,t)||Se(t)},over:function(t){ve(e,t)||(!function(e,t){var r=sn(e,t);if(r){var n=document.createDocumentFragment();vn(e,r,n),e.display.dragCursor||(e.display.dragCursor=O("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),e.display.lineSpace.insertBefore(e.display.dragCursor,e.display.cursorDiv)),N(e.display.dragCursor,n)}}(e,t),Se(t))},start:function(t){return function(e,t){if(l&&(!e.state.draggingText||+new Date-Oo<100))Se(t);else if(!ve(e,t)&&!xr(e.display,t)&&(t.dataTransfer.setData("Text",e.getSelection()),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setDragImage&&!f)){var r=O("img",null,null,"position: fixed; left: 0; top: 0;");r.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",h&&(r.width=r.height=1,e.display.wrapper.appendChild(r),r._top=r.offsetTop),t.dataTransfer.setDragImage(r,0,0),h&&r.parentNode.removeChild(r)}}(e,t)},drop:Zn(e,Ao),leave:function(t){ve(e,t)||Do(e)}};var a=t.input.getField();fe(a,"keyup",function(t){return al.call(e,t)}),fe(a,"keydown",Zn(e,sl)),fe(a,"keypress",Zn(e,ul)),fe(a,"focus",function(t){return Cn(e,t)}),fe(a,"blur",function(t){return Sn(e,t)})}(this),Fo(),Kn(this),this.curOp.forceUpdate=!0,Wi(this,n),t.autofocus&&!m||this.hasFocus()?setTimeout(function(){r.hasFocus()&&!r.state.focused&&Cn(r)},20):Sn(this),xl)xl.hasOwnProperty(u)&&xl[u](this,t[u],bl);ui(this),t.finishInit&&t.finishInit(this);for(var c=0;c<kl.length;++c)kl[c](this);jn(this),a&&t.lineWrapping&&"optimizelegibility"==getComputedStyle(o.lineDiv).textRendering&&(o.lineDiv.style.textRendering="auto")}Ll.defaults=wl,Ll.optionHandlers=xl;var kl=[];function Tl(e,t,r,n){var i,o=e.doc;null==r&&(r="add"),"smart"==r&&(o.mode.indent?i=dt(e,t).state:r="prev");var l=e.options.tabSize,s=Xe(o,t),a=R(s.text,null,l);s.stateAfter&&(s.stateAfter=null);var u,c=s.text.match(/^\s*/)[0];if(n||/\S/.test(s.text)){if("smart"==r&&((u=o.mode.indent(i,s.text.slice(c.length),s.text))==U||u>150)){if(!n)return;r="prev"}}else u=0,r="not";"prev"==r?u=t>o.first?R(Xe(o,t-1).text,null,l):0:"add"==r?u=a+e.options.indentUnit:"subtract"==r?u=a-e.options.indentUnit:"number"==typeof r&&(u=a+r),u=Math.max(0,u);var h="",f=0;if(e.options.indentWithTabs)for(var d=Math.floor(u/l);d;--d)f+=l,h+="\t";if(f<u&&(h+=$(u-f)),h!=c)return ho(o,h,et(t,0),et(t,c.length),"+input"),s.stateAfter=null,!0;for(var p=0;p<o.sel.ranges.length;p++){var g=o.sel.ranges[p];if(g.head.line==t&&g.head.ch<c.length){var v=et(t,c.length);Yi(o,p,new wi(v,v));break}}}Ll.defineInitHook=function(e){return kl.push(e)};var Ml=null;function Nl(e){Ml=e}function Ol(e,t,r,n,i){var o=e.doc;e.display.shift=!1,n||(n=o.sel);var l=+new Date-200,s="paste"==i||e.state.pasteIncoming>l,a=We(t),u=null;if(s&&n.ranges.length>1)if(Ml&&Ml.text.join("\n")==t){if(n.ranges.length%Ml.text.length==0){u=[];for(var c=0;c<Ml.text.length;c++)u.push(o.splitLines(Ml.text[c]))}}else a.length==n.ranges.length&&e.options.pasteLinesPerSelection&&(u=q(a,function(e){return[e]}));for(var h=e.curOp.updateInput,f=n.ranges.length-1;f>=0;f--){var d=n.ranges[f],p=d.from(),g=d.to();d.empty()&&(r&&r>0?p=et(p.line,p.ch-r):e.state.overwrite&&!s?g=et(g.line,Math.min(Xe(o,g.line).text.length,g.ch+_(a).length)):s&&Ml&&Ml.lineWise&&Ml.text.join("\n")==a.join("\n")&&(p=g=et(p.line,0)));var v={from:p,to:g,text:u?u[f%u.length]:a,origin:i||(s?"paste":e.state.cutIncoming>l?"cut":"+input")};lo(e.doc,v),sr(e,"inputRead",e,v)}t&&!s&&Dl(e,t),On(e),e.curOp.updateInput<2&&(e.curOp.updateInput=h),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function Al(e,t){var r=e.clipboardData&&e.clipboardData.getData("Text");if(r)return e.preventDefault(),t.isReadOnly()||t.options.disableInput||qn(t,function(){return Ol(t,r,0,null,"paste")}),!0}function Dl(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var r=e.doc.sel,n=r.ranges.length-1;n>=0;n--){var i=r.ranges[n];if(!(i.head.ch>100||n&&r.ranges[n-1].head.line==i.head.line)){var o=e.getModeAt(i.head),l=!1;if(o.electricChars){for(var s=0;s<o.electricChars.length;s++)if(t.indexOf(o.electricChars.charAt(s))>-1){l=Tl(e,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(Xe(e.doc,i.head.line).text.slice(0,i.head.ch))&&(l=Tl(e,i.head.line,"smart"));l&&sr(e,"electricInput",e,i.head.line)}}}function Wl(e){for(var t=[],r=[],n=0;n<e.doc.sel.ranges.length;n++){var i=e.doc.sel.ranges[n].head.line,o={anchor:et(i,0),head:et(i+1,0)};r.push(o),t.push(e.getRange(o.anchor,o.head))}return{text:t,ranges:r}}function Hl(e,t,r,n){e.setAttribute("autocorrect",r?"":"off"),e.setAttribute("autocapitalize",n?"":"off"),e.setAttribute("spellcheck",!!t)}function Fl(){var e=O("textarea",null,null,"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none"),t=O("div",[e],null,"overflow: hidden; position: relative; width: 3px; height: 0px;");return a?e.style.width="1000px":e.setAttribute("wrap","off"),g&&(e.style.border="1px solid black"),Hl(e),t}function Pl(e,t,r,n,i){var o=t,l=r,s=Xe(e,t.line),a=i&&"rtl"==e.direction?-r:r;function u(o){var l,u;if("codepoint"==n){var c=s.text.charCodeAt(t.ch+(r>0?0:-1));if(isNaN(c))l=null;else{var h=r>0?c>=55296&&c<56320:c>=56320&&c<57343;l=new et(t.line,Math.max(0,Math.min(s.text.length,t.ch+r*(h?2:1))),-r)}}else l=i?function(e,t,r,n){var i=ce(t,e.doc.direction);if(!i)return qo(t,r,n);r.ch>=t.text.length?(r.ch=t.text.length,r.sticky="before"):r.ch<=0&&(r.ch=0,r.sticky="after");var o=ae(i,r.ch,r.sticky),l=i[o];if("ltr"==e.doc.direction&&l.level%2==0&&(n>0?l.to>r.ch:l.from<r.ch))return qo(t,r,n);var s,a=function(e,r){return _o(t,e instanceof et?e.ch:e,r)},u=function(r){return e.options.lineWrapping?(s=s||Dr(e,t),Zr(e,t,s,r)):{begin:0,end:t.text.length}},c=u("before"==r.sticky?a(r,-1):r.ch);if("rtl"==e.doc.direction||1==l.level){var h=1==l.level==n<0,f=a(r,h?1:-1);if(null!=f&&(h?f<=l.to&&f<=c.end:f>=l.from&&f>=c.begin)){var d=h?"before":"after";return new et(r.line,f,d)}}var p=function(e,t,n){for(var o=function(e,t){return t?new et(r.line,a(e,1),"before"):new et(r.line,e,"after")};e>=0&&e<i.length;e+=t){var l=i[e],s=t>0==(1!=l.level),u=s?n.begin:a(n.end,-1);if(l.from<=u&&u<l.to)return o(u,s);if(u=s?l.from:a(l.to,-1),n.begin<=u&&u<n.end)return o(u,s)}},g=p(o+n,n,c);if(g)return g;var v=n>0?c.end:a(c.begin,-1);return null==v||n>0&&v==t.text.length||!(g=p(n>0?0:i.length-1,n,u(v)))?null:g}(e.cm,s,t,r):qo(s,t,r);if(null==l){if(o||(u=t.line+a)<e.first||u>=e.first+e.size||(t=new et(u,t.ch,t.sticky),!(s=Xe(e,u))))return!1;t=Zo(i,e.cm,s,t.line,a)}else t=l;return!0}if("char"==n||"codepoint"==n)u();else if("column"==n)u(!0);else if("word"==n||"group"==n)for(var c=null,h="group"==n,f=e.cm&&e.cm.getHelper(t,"wordChars"),d=!0;!(r<0)||u(!d);d=!1){var p=s.text.charAt(t.ch)||"\n",g=te(p,f)?"w":h&&"\n"==p?"n":!h||/\s/.test(p)?null:"p";if(!h||d||g||(g="s"),c&&c!=g){r<0&&(r=1,u(),t.sticky="after");break}if(g&&(c=g),r>0&&!u(!d))break}var v=ro(e,t,o,l,!0);return rt(o,v)&&(v.hitSide=!0),v}function El(e,t,r,n){var i,o,l=e.doc,s=t.left;if("page"==n){var a=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),u=Math.max(a-.5*en(e.display),3);i=(r>0?t.bottom:t.top)+r*u}else"line"==n&&(i=r>0?t.bottom+3:t.top-3);for(;(o=_r(e,s,i)).outside;){if(r<0?i<=0:i>=l.height){o.hitSide=!0;break}i+=5*r}return o}var Il=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new z,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Rl(e,t){var r=Ar(e,t.line);if(!r||r.hidden)return null;var n=Xe(e.doc,t.line),i=Nr(r,n,t.line),o=ce(n,e.doc.direction),l="left";o&&(l=ae(o,t.ch)%2?"right":"left");var s=Pr(i.map,t.ch,l);return s.offset="right"==s.collapse?s.end:s.start,s}function zl(e,t){return t&&(e.bad=!0),e}function Bl(e,t,r){var n;if(t==e.display.lineDiv){if(!(n=e.display.lineDiv.childNodes[r]))return zl(e.clipPos(et(e.display.viewTo-1)),!0);t=null,r=0}else for(n=t;;n=n.parentNode){if(!n||n==e.display.lineDiv)return null;if(n.parentNode&&n.parentNode==e.display.lineDiv)break}for(var i=0;i<e.display.view.length;i++){var o=e.display.view[i];if(o.node==n)return Gl(o,t,r)}}function Gl(e,t,r){var n=e.text.firstChild,i=!1;if(!t||!D(n,t))return zl(et(qe(e.line),0),!0);if(t==n&&(i=!0,t=n.childNodes[r],r=0,!t)){var o=e.rest?_(e.rest):e.line;return zl(et(qe(o),o.text.length),i)}var l=3==t.nodeType?t:null,s=t;for(l||1!=t.childNodes.length||3!=t.firstChild.nodeType||(l=t.firstChild,r&&(r=l.nodeValue.length));s.parentNode!=n;)s=s.parentNode;var a=e.measure,u=a.maps;function c(t,r,n){for(var i=-1;i<(u?u.length:0);i++)for(var o=i<0?a.map:u[i],l=0;l<o.length;l+=3){var s=o[l+2];if(s==t||s==r){var c=qe(i<0?e.line:e.rest[i]),h=o[l]+n;return(n<0||s!=t)&&(h=o[l+(n?1:0)]),et(c,h)}}}var h=c(l,s,r);if(h)return zl(h,i);for(var f=s.nextSibling,d=l?l.nodeValue.length-r:0;f;f=f.nextSibling){if(h=c(f,f.firstChild,0))return zl(et(h.line,h.ch-d),i);d+=f.textContent.length}for(var p=s.previousSibling,g=r;p;p=p.previousSibling){if(h=c(p,p.firstChild,-1))return zl(et(h.line,h.ch+g),i);g+=p.textContent.length}}Il.prototype.init=function(e){var t=this,r=this,n=r.cm,i=r.div=e.lineDiv;function o(e){for(var t=e.target;t;t=t.parentNode){if(t==i)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(t.className))break}return!1}function l(e){if(o(e)&&!ve(n,e)){if(n.somethingSelected())Nl({lineWise:!1,text:n.getSelections()}),"cut"==e.type&&n.replaceSelection("",null,"cut");else{if(!n.options.lineWiseCopyCut)return;var t=Wl(n);Nl({lineWise:!0,text:t.text}),"cut"==e.type&&n.operation(function(){n.setSelections(t.ranges,0,V),n.replaceSelection("",null,"cut")})}if(e.clipboardData){e.clipboardData.clearData();var l=Ml.text.join("\n");if(e.clipboardData.setData("Text",l),e.clipboardData.getData("Text")==l)return void e.preventDefault()}var s=Fl(),a=s.firstChild;n.display.lineSpace.insertBefore(s,n.display.lineSpace.firstChild),a.value=Ml.text.join("\n");var u=W();P(a),setTimeout(function(){n.display.lineSpace.removeChild(s),u.focus(),u==i&&r.showPrimarySelection()},50)}}i.contentEditable=!0,Hl(i,n.options.spellcheck,n.options.autocorrect,n.options.autocapitalize),fe(i,"paste",function(e){!o(e)||ve(n,e)||Al(e,n)||s<=11&&setTimeout(Zn(n,function(){return t.updateFromDOM()}),20)}),fe(i,"compositionstart",function(e){t.composing={data:e.data,done:!1}}),fe(i,"compositionupdate",function(e){t.composing||(t.composing={data:e.data,done:!1})}),fe(i,"compositionend",function(e){t.composing&&(e.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),fe(i,"touchstart",function(){return r.forceCompositionEnd()}),fe(i,"input",function(){t.composing||t.readFromDOMSoon()}),fe(i,"copy",l),fe(i,"cut",l)},Il.prototype.screenReaderLabelChanged=function(e){e?this.div.setAttribute("aria-label",e):this.div.removeAttribute("aria-label")},Il.prototype.prepareSelection=function(){var e=gn(this.cm,!1);return e.focus=W()==this.div,e},Il.prototype.showSelection=function(e,t){e&&this.cm.display.view.length&&((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},Il.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},Il.prototype.showPrimarySelection=function(){var e=this.getSelection(),t=this.cm,n=t.doc.sel.primary(),i=n.from(),o=n.to();if(t.display.viewTo==t.display.viewFrom||i.line>=t.display.viewTo||o.line<t.display.viewFrom)e.removeAllRanges();else{var l=Bl(t,e.anchorNode,e.anchorOffset),s=Bl(t,e.focusNode,e.focusOffset);if(!l||l.bad||!s||s.bad||0!=tt(ot(l,s),i)||0!=tt(it(l,s),o)){var a=t.display.view,u=i.line>=t.display.viewFrom&&Rl(t,i)||{node:a[0].measure.map[2],offset:0},c=o.line<t.display.viewTo&&Rl(t,o);if(!c){var h=a[a.length-1].measure,f=h.maps?h.maps[h.maps.length-1]:h.map;c={node:f[f.length-1],offset:f[f.length-2]-f[f.length-3]}}if(u&&c){var d,p=e.rangeCount&&e.getRangeAt(0);try{d=k(u.node,u.offset,c.offset,c.node)}catch(e){}d&&(!r&&t.state.focused?(e.collapse(u.node,u.offset),d.collapsed||(e.removeAllRanges(),e.addRange(d))):(e.removeAllRanges(),e.addRange(d)),p&&null==e.anchorNode?e.addRange(p):r&&this.startGracePeriod()),this.rememberSelection()}else e.removeAllRanges()}}},Il.prototype.startGracePeriod=function(){var e=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){e.gracePeriod=!1,e.selectionChanged()&&e.cm.operation(function(){return e.cm.curOp.selectionChanged=!0})},20)},Il.prototype.showMultipleSelections=function(e){N(this.cm.display.cursorDiv,e.cursors),N(this.cm.display.selectionDiv,e.selection)},Il.prototype.rememberSelection=function(){var e=this.getSelection();this.lastAnchorNode=e.anchorNode,this.lastAnchorOffset=e.anchorOffset,this.lastFocusNode=e.focusNode,this.lastFocusOffset=e.focusOffset},Il.prototype.selectionInEditor=function(){var e=this.getSelection();if(!e.rangeCount)return!1;var t=e.getRangeAt(0).commonAncestorContainer;return D(this.div,t)},Il.prototype.focus=function(){"nocursor"!=this.cm.options.readOnly&&(this.selectionInEditor()&&W()==this.div||this.showSelection(this.prepareSelection(),!0),this.div.focus())},Il.prototype.blur=function(){this.div.blur()},Il.prototype.getField=function(){return this.div},Il.prototype.supportsTouch=function(){return!0},Il.prototype.receivedFocus=function(){var e=this,t=this;this.selectionInEditor()?setTimeout(function(){return e.pollSelection()},20):qn(this.cm,function(){return t.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,function e(){t.cm.state.focused&&(t.pollSelection(),t.polling.set(t.cm.options.pollInterval,e))})},Il.prototype.selectionChanged=function(){var e=this.getSelection();return e.anchorNode!=this.lastAnchorNode||e.anchorOffset!=this.lastAnchorOffset||e.focusNode!=this.lastFocusNode||e.focusOffset!=this.lastFocusOffset},Il.prototype.pollSelection=function(){if(null==this.readDOMTimeout&&!this.gracePeriod&&this.selectionChanged()){var e=this.getSelection(),t=this.cm;if(v&&c&&this.cm.display.gutterSpecs.length&&function(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}(e.anchorNode))return this.cm.triggerOnKeyDown({type:"keydown",keyCode:8,preventDefault:Math.abs}),this.blur(),void this.focus();if(!this.composing){this.rememberSelection();var r=Bl(t,e.anchorNode,e.anchorOffset),n=Bl(t,e.focusNode,e.focusOffset);r&&n&&qn(t,function(){qi(t.doc,Ci(r,n),V),(r.bad||n.bad)&&(t.curOp.selectionChanged=!0)})}}},Il.prototype.pollContent=function(){null!=this.readDOMTimeout&&(clearTimeout(this.readDOMTimeout),this.readDOMTimeout=null);var e,t,r,n=this.cm,i=n.display,o=n.doc.sel.primary(),l=o.from(),s=o.to();if(0==l.ch&&l.line>n.firstLine()&&(l=et(l.line-1,Xe(n.doc,l.line-1).length)),s.ch==Xe(n.doc,s.line).text.length&&s.line<n.lastLine()&&(s=et(s.line+1,0)),l.line<i.viewFrom||s.line>i.viewTo-1)return!1;l.line==i.viewFrom||0==(e=an(n,l.line))?(t=qe(i.view[0].line),r=i.view[0].node):(t=qe(i.view[e].line),r=i.view[e-1].node.nextSibling);var a,u,c=an(n,s.line);if(c==i.view.length-1?(a=i.viewTo-1,u=i.lineDiv.lastChild):(a=qe(i.view[c+1].line)-1,u=i.view[c+1].node.previousSibling),!r)return!1;for(var h=n.doc.splitLines(function(e,t,r,n,i){var o="",l=!1,s=e.doc.lineSeparator(),a=!1;function u(){l&&(o+=s,a&&(o+=s),l=a=!1)}function c(e){e&&(u(),o+=e)}function h(t){if(1==t.nodeType){var r=t.getAttribute("cm-text");if(r)return void c(r);var o,f=t.getAttribute("cm-marker");if(f){var d=e.findMarks(et(n,0),et(i+1,0),(v=+f,function(e){return e.id==v}));return void(d.length&&(o=d[0].find(0))&&c(Ye(e.doc,o.from,o.to).join(s)))}if("false"==t.getAttribute("contenteditable"))return;var p=/^(pre|div|p|li|table|br)$/i.test(t.nodeName);if(!/^br$/i.test(t.nodeName)&&0==t.textContent.length)return;p&&u();for(var g=0;g<t.childNodes.length;g++)h(t.childNodes[g]);/^(pre|p)$/i.test(t.nodeName)&&(a=!0),p&&(l=!0)}else 3==t.nodeType&&c(t.nodeValue.replace(/\u200b/g,"").replace(/\u00a0/g," "));var v}for(;h(t),t!=r;)t=t.nextSibling,a=!1;return o}(n,r,u,t,a)),f=Ye(n.doc,et(t,0),et(a,Xe(n.doc,a).text.length));h.length>1&&f.length>1;)if(_(h)==_(f))h.pop(),f.pop(),a--;else{if(h[0]!=f[0])break;h.shift(),f.shift(),t++}for(var d=0,p=0,g=h[0],v=f[0],m=Math.min(g.length,v.length);d<m&&g.charCodeAt(d)==v.charCodeAt(d);)++d;for(var y=_(h),b=_(f),w=Math.min(y.length-(1==h.length?d:0),b.length-(1==f.length?d:0));p<w&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)++p;if(1==h.length&&1==f.length&&t==l.line)for(;d&&d>l.ch&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)d--,p++;h[h.length-1]=y.slice(0,y.length-p).replace(/^\u200b+/,""),h[0]=h[0].slice(d).replace(/\u200b+$/,"");var x=et(t,d),C=et(a,f.length?_(f).length-p:0);return h.length>1||h[0]||tt(x,C)?(ho(n.doc,h,x,C,"+input"),!0):void 0},Il.prototype.ensurePolled=function(){this.forceCompositionEnd()},Il.prototype.reset=function(){this.forceCompositionEnd()},Il.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Il.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()},80))},Il.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||qn(this.cm,function(){return un(e.cm)})},Il.prototype.setUneditable=function(e){e.contentEditable="false"},Il.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||Zn(this.cm,Ol)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},Il.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},Il.prototype.onContextMenu=function(){},Il.prototype.resetPosition=function(){},Il.prototype.needsContentAttribute=!0;var Ul=function(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new z,this.hasSelection=!1,this.composing=null};Ul.prototype.init=function(e){var t=this,r=this,n=this.cm;this.createField(e);var i=this.textarea;function o(e){if(!ve(n,e)){if(n.somethingSelected())Nl({lineWise:!1,text:n.getSelections()});else{if(!n.options.lineWiseCopyCut)return;var t=Wl(n);Nl({lineWise:!0,text:t.text}),"cut"==e.type?n.setSelections(t.ranges,null,V):(r.prevInput="",i.value=t.text.join("\n"),P(i))}"cut"==e.type&&(n.state.cutIncoming=+new Date)}}e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),g&&(i.style.width="0px"),fe(i,"input",function(){l&&s>=9&&t.hasSelection&&(t.hasSelection=null),r.poll()}),fe(i,"paste",function(e){ve(n,e)||Al(e,n)||(n.state.pasteIncoming=+new Date,r.fastPoll())}),fe(i,"cut",o),fe(i,"copy",o),fe(e.scroller,"paste",function(t){if(!xr(e,t)&&!ve(n,t)){if(!i.dispatchEvent)return n.state.pasteIncoming=+new Date,void r.focus();var o=new Event("paste");o.clipboardData=t.clipboardData,i.dispatchEvent(o)}}),fe(e.lineSpace,"selectstart",function(t){xr(e,t)||we(t)}),fe(i,"compositionstart",function(){var e=n.getCursor("from");r.composing&&r.composing.range.clear(),r.composing={start:e,range:n.markText(e,n.getCursor("to"),{className:"CodeMirror-composing"})}}),fe(i,"compositionend",function(){r.composing&&(r.poll(),r.composing.range.clear(),r.composing=null)})},Ul.prototype.createField=function(e){this.wrapper=Fl(),this.textarea=this.wrapper.firstChild},Ul.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute("aria-label",e):this.textarea.removeAttribute("aria-label")},Ul.prototype.prepareSelection=function(){var e=this.cm,t=e.display,r=e.doc,n=gn(e);if(e.options.moveInputWithCursor){var i=Xr(e,r.sel.primary().head,"div"),o=t.wrapper.getBoundingClientRect(),l=t.lineDiv.getBoundingClientRect();n.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+l.top-o.top)),n.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+l.left-o.left))}return n},Ul.prototype.showSelection=function(e){var t=this.cm.display;N(t.cursorDiv,e.cursors),N(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},Ul.prototype.reset=function(e){if(!this.contextMenuPending&&!this.composing){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var r=t.getSelection();this.textarea.value=r,t.state.focused&&P(this.textarea),l&&s>=9&&(this.hasSelection=r)}else e||(this.prevInput=this.textarea.value="",l&&s>=9&&(this.hasSelection=null))}},Ul.prototype.getField=function(){return this.textarea},Ul.prototype.supportsTouch=function(){return!1},Ul.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!m||W()!=this.textarea))try{this.textarea.focus()}catch(e){}},Ul.prototype.blur=function(){this.textarea.blur()},Ul.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Ul.prototype.receivedFocus=function(){this.slowPoll()},Ul.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},Ul.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0,t.polling.set(20,function r(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,r))})},Ul.prototype.poll=function(){var e=this,t=this.cm,r=this.textarea,n=this.prevInput;if(this.contextMenuPending||!t.state.focused||He(r)&&!n&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=r.value;if(i==n&&!t.somethingSelected())return!1;if(l&&s>=9&&this.hasSelection===i||y&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=i.charCodeAt(0);if(8203!=o||n||(n="​"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var a=0,u=Math.min(n.length,i.length);a<u&&n.charCodeAt(a)==i.charCodeAt(a);)++a;return qn(t,function(){Ol(t,i.slice(a),n.length-a,null,e.composing?"*compose":null),i.length>1e3||i.indexOf("\n")>-1?r.value=e.prevInput="":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Ul.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Ul.prototype.onKeyPress=function(){l&&s>=9&&(this.hasSelection=null),this.fastPoll()},Ul.prototype.onContextMenu=function(e){var t=this,r=t.cm,n=r.display,i=t.textarea;t.contextMenuPending&&t.contextMenuPending();var o=sn(r,e),u=n.scroller.scrollTop;if(o&&!h){r.options.resetSelectionOnContextMenu&&-1==r.doc.sel.contains(o)&&Zn(r,qi)(r.doc,Ci(o),V);var c,f=i.style.cssText,d=t.wrapper.style.cssText,p=t.wrapper.offsetParent.getBoundingClientRect();if(t.wrapper.style.cssText="position: static",i.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(e.clientY-p.top-5)+"px; left: "+(e.clientX-p.left-5)+"px;\n z-index: 1000; background: "+(l?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",a&&(c=window.scrollY),n.input.focus(),a&&window.scrollTo(null,c),n.input.reset(),r.somethingSelected()||(i.value=t.prevInput=" "),t.contextMenuPending=m,n.selForContextMenu=r.doc.sel,clearTimeout(n.detectingSelectAll),l&&s>=9&&v(),S){Se(e);var g=function(){pe(window,"mouseup",g),setTimeout(m,20)};fe(window,"mouseup",g)}else setTimeout(m,50)}function v(){if(null!=i.selectionStart){var e=r.somethingSelected(),o="​"+(e?i.value:"");i.value="⇚",i.value=o,t.prevInput=e?"":"​",i.selectionStart=1,i.selectionEnd=o.length,n.selForContextMenu=r.doc.sel}}function m(){if(t.contextMenuPending==m&&(t.contextMenuPending=!1,t.wrapper.style.cssText=d,i.style.cssText=f,l&&s<9&&n.scrollbars.setScrollTop(n.scroller.scrollTop=u),null!=i.selectionStart)){(!l||l&&s<9)&&v();var e=0,o=function(){n.selForContextMenu==r.doc.sel&&0==i.selectionStart&&i.selectionEnd>0&&"​"==t.prevInput?Zn(r,io)(r):e++<10?n.detectingSelectAll=setTimeout(o,500):(n.selForContextMenu=null,n.input.reset())};n.detectingSelectAll=setTimeout(o,200)}}},Ul.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e,this.textarea.readOnly=!!e},Ul.prototype.setUneditable=function(){},Ul.prototype.needsContentAttribute=!1,function(e){var t=e.optionHandlers;function r(r,n,i,o){e.defaults[r]=n,i&&(t[r]=o?function(e,t,r){r!=bl&&i(e,t,r)}:i)}e.defineOption=r,e.Init=bl,r("value","",function(e,t){return e.setValue(t)},!0),r("mode",null,function(e,t){e.doc.modeOption=t,Mi(e)},!0),r("indentUnit",2,Mi,!0),r("indentWithTabs",!1),r("smartIndent",!0),r("tabSize",4,function(e){Ni(e),zr(e),un(e)},!0),r("lineSeparator",null,function(e,t){if(e.doc.lineSep=t,t){var r=[],n=e.doc.first;e.doc.iter(function(e){for(var i=0;;){var o=e.text.indexOf(t,i);if(-1==o)break;i=o+t.length,r.push(et(n,o))}n++});for(var i=r.length-1;i>=0;i--)ho(e.doc,t,r[i],et(r[i].line,r[i].ch+t.length))}}),r("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,function(e,t,r){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),r!=bl&&e.refresh()}),r("specialCharPlaceholder",Qt,function(e){return e.refresh()},!0),r("electricChars",!0),r("inputStyle",m?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),r("spellcheck",!1,function(e,t){return e.getInputField().spellcheck=t},!0),r("autocorrect",!1,function(e,t){return e.getInputField().autocorrect=t},!0),r("autocapitalize",!1,function(e,t){return e.getInputField().autocapitalize=t},!0),r("rtlMoveVisually",!w),r("wholeLineUpdateBefore",!0),r("theme","default",function(e){yl(e),fi(e)},!0),r("keyMap","default",function(e,t,r){var n=Yo(t),i=r!=bl&&Yo(r);i&&i.detach&&i.detach(e,n),n.attach&&n.attach(e,i||null)}),r("extraKeys",null),r("configureMouse",null),r("lineWrapping",!1,Sl,!0),r("gutters",[],function(e,t){e.display.gutterSpecs=ci(t,e.options.lineNumbers),fi(e)},!0),r("fixedGutter",!0,function(e,t){e.display.gutters.style.left=t?nn(e.display)+"px":"0",e.refresh()},!0),r("coverGutterNextToScrollbar",!1,function(e){return zn(e)},!0),r("scrollbarStyle","native",function(e){Un(e),zn(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),r("lineNumbers",!1,function(e,t){e.display.gutterSpecs=ci(e.options.gutters,t),fi(e)},!0),r("firstLineNumber",1,fi,!0),r("lineNumberFormatter",function(e){return e},fi,!0),r("showCursorWhenSelecting",!1,pn,!0),r("resetSelectionOnContextMenu",!0),r("lineWiseCopyCut",!0),r("pasteLinesPerSelection",!0),r("selectionsMayTouch",!1),r("readOnly",!1,function(e,t){"nocursor"==t&&(Sn(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)}),r("screenReaderLabel",null,function(e,t){t=""===t?null:t,e.display.input.screenReaderLabelChanged(t)}),r("disableInput",!1,function(e,t){t||e.display.input.reset()},!0),r("dragDrop",!0,Cl),r("allowDropFileTypes",null),r("cursorBlinkRate",530),r("cursorScrollMargin",0),r("cursorHeight",1,pn,!0),r("singleCursorHeightPerLine",!0,pn,!0),r("workTime",100),r("workDelay",100),r("flattenSpans",!0,Ni,!0),r("addModeClass",!1,Ni,!0),r("pollInterval",100),r("undoDepth",200,function(e,t){return e.doc.history.undoDepth=t}),r("historyEventDelay",1250),r("viewportMargin",10,function(e){return e.refresh()},!0),r("maxHighlightLength",1e4,Ni,!0),r("moveInputWithCursor",!0,function(e,t){t||e.display.input.resetPosition()}),r("tabindex",null,function(e,t){return e.display.input.getField().tabIndex=t||""}),r("autofocus",null),r("direction","ltr",function(e,t){return e.doc.setDirection(t)},!0),r("phrases",null)}(Ll),function(e){var t=e.optionHandlers,r=e.helpers={};e.prototype={constructor:e,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,r){var n=this.options,i=n[e];n[e]==r&&"mode"!=e||(n[e]=r,t.hasOwnProperty(e)&&Zn(this,t[e])(this,r,i),ge(this,"optionChange",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](Yo(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,r=0;r<t.length;++r)if(t[r]==e||t[r].name==e)return t.splice(r,1),!0},addOverlay:Qn(function(t,r){var n=t.token?t:e.getMode(this.options,t);if(n.startState)throw new Error("Overlays may not be stateful.");!function(e,t,r){for(var n=0,i=r(t);n<e.length&&r(e[n])<=i;)n++;e.splice(n,0,t)}(this.state.overlays,{mode:n,modeSpec:t,opaque:r&&r.opaque,priority:r&&r.priority||0},function(e){return e.priority}),this.state.modeGen++,un(this)}),removeOverlay:Qn(function(e){for(var t=this.state.overlays,r=0;r<t.length;++r){var n=t[r].modeSpec;if(n==e||"string"==typeof e&&n.name==e)return t.splice(r,1),this.state.modeGen++,void un(this)}}),indentLine:Qn(function(e,t,r){"string"!=typeof t&&"number"!=typeof t&&(t=null==t?this.options.smartIndent?"smart":"prev":t?"add":"subtract"),Qe(this.doc,e)&&Tl(this,e,t,r)}),indentSelection:Qn(function(e){for(var t=this.doc.sel.ranges,r=-1,n=0;n<t.length;n++){var i=t[n];if(i.empty())i.head.line>r&&(Tl(this,i.head.line,e,!0),r=i.head.line,n==this.doc.sel.primIndex&&On(this));else{var o=i.from(),l=i.to(),s=Math.max(r,o.line);r=Math.min(this.lastLine(),l.line-(l.ch?0:1))+1;for(var a=s;a<r;++a)Tl(this,a,e);var u=this.doc.sel.ranges;0==o.ch&&t.length==u.length&&u[n].from().ch>0&&Yi(this.doc,n,new wi(o,u[n].to()),V)}}}),getTokenAt:function(e,t){return yt(this,e,t)},getLineTokens:function(e,t){return yt(this,et(e),t,!0)},getTokenTypeAt:function(e){e=st(this.doc,e);var t,r=ft(this,Xe(this.doc,e.line)),n=0,i=(r.length-1)/2,o=e.ch;if(0==o)t=r[2];else for(;;){var l=n+i>>1;if((l?r[2*l-1]:0)>=o)i=l;else{if(!(r[2*l+1]<o)){t=r[2*l+2];break}n=l+1}}var s=t?t.indexOf("overlay "):-1;return s<0?t:0==s?null:t.slice(0,s-1)},getModeAt:function(t){var r=this.doc.mode;return r.innerMode?e.innerMode(r,this.getTokenAt(t).state).mode:r},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var n=[];if(!r.hasOwnProperty(t))return n;var i=r[t],o=this.getModeAt(e);if("string"==typeof o[t])i[o[t]]&&n.push(i[o[t]]);else if(o[t])for(var l=0;l<o[t].length;l++){var s=i[o[t][l]];s&&n.push(s)}else o.helperType&&i[o.helperType]?n.push(i[o.helperType]):i[o.name]&&n.push(i[o.name]);for(var a=0;a<i._global.length;a++){var u=i._global[a];u.pred(o,this)&&-1==B(n,u.val)&&n.push(u.val)}return n},getStateAfter:function(e,t){var r=this.doc;return dt(this,(e=lt(r,null==e?r.first+r.size-1:e))+1,t).state},cursorCoords:function(e,t){var r=this.doc.sel.primary();return Xr(this,null==e?r.head:"object"==typeof e?st(this.doc,e):e?r.from():r.to(),t||"page")},charCoords:function(e,t){return jr(this,st(this.doc,e),t||"page")},coordsChar:function(e,t){return _r(this,(e=Kr(this,e,t||"page")).left,e.top)},lineAtHeight:function(e,t){return e=Kr(this,{top:e,left:0},t||"page").top,Ze(this.doc,e+this.display.viewOffset)},heightAtLine:function(e,t,r){var n,i=!1;if("number"==typeof e){var o=this.doc.first+this.doc.size-1;e<this.doc.first?e=this.doc.first:e>o&&(e=o,i=!0),n=Xe(this.doc,e)}else n=e;return Vr(this,n,{top:0,left:0},t||"page",r||i).top+(i?this.doc.height-Vt(n):0)},defaultTextHeight:function(){return en(this.display)},defaultCharWidth:function(){return tn(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,r,n,i){var o,l,s,a=this.display,u=(e=Xr(this,st(this.doc,e))).bottom,c=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),a.sizer.appendChild(t),"over"==n)u=e.top;else if("above"==n||"near"==n){var h=Math.max(a.wrapper.clientHeight,this.doc.height),f=Math.max(a.sizer.clientWidth,a.lineSpace.clientWidth);("above"==n||e.bottom+t.offsetHeight>h)&&e.top>t.offsetHeight?u=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=h&&(u=e.bottom),c+t.offsetWidth>f&&(c=f-t.offsetWidth)}t.style.top=u+"px",t.style.left=t.style.right="","right"==i?(c=a.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?c=0:"middle"==i&&(c=(a.sizer.clientWidth-t.offsetWidth)/2),t.style.left=c+"px"),r&&(o=this,l={left:c,top:u,right:c+t.offsetWidth,bottom:u+t.offsetHeight},null!=(s=Mn(o,l)).scrollTop&&Hn(o,s.scrollTop),null!=s.scrollLeft&&Pn(o,s.scrollLeft))},triggerOnKeyDown:Qn(sl),triggerOnKeyPress:Qn(ul),triggerOnKeyUp:al,triggerOnMouseDown:Qn(dl),execCommand:function(e){if(Qo.hasOwnProperty(e))return Qo[e].call(null,this)},triggerElectric:Qn(function(e){Dl(this,e)}),findPosH:function(e,t,r,n){var i=1;t<0&&(i=-1,t=-t);for(var o=st(this.doc,e),l=0;l<t&&!(o=Pl(this.doc,o,i,r,n)).hitSide;++l);return o},moveH:Qn(function(e,t){var r=this;this.extendSelectionsBy(function(n){return r.display.shift||r.doc.extend||n.empty()?Pl(r.doc,n.head,e,t,r.options.rtlMoveVisually):e<0?n.from():n.to()},j)}),deleteH:Qn(function(e,t){var r=this.doc.sel,n=this.doc;r.somethingSelected()?n.replaceSelection("",null,"+delete"):$o(this,function(r){var i=Pl(n,r.head,e,t,!1);return e<0?{from:i,to:r.head}:{from:r.head,to:i}})}),findPosV:function(e,t,r,n){var i=1,o=n;t<0&&(i=-1,t=-t);for(var l=st(this.doc,e),s=0;s<t;++s){var a=Xr(this,l,"div");if(null==o?o=a.left:a.left=o,(l=El(this,a,i,r)).hitSide)break}return l},moveV:Qn(function(e,t){var r=this,n=this.doc,i=[],o=!this.display.shift&&!n.extend&&n.sel.somethingSelected();if(n.extendSelectionsBy(function(l){if(o)return e<0?l.from():l.to();var s=Xr(r,l.head,"div");null!=l.goalColumn&&(s.left=l.goalColumn),i.push(s.left);var a=El(r,s,e,t);return"page"==t&&l==n.sel.primary()&&Nn(r,jr(r,a,"div").top-s.top),a},j),i.length)for(var l=0;l<n.sel.ranges.length;l++)n.sel.ranges[l].goalColumn=i[l]}),findWordAt:function(e){var t=Xe(this.doc,e.line).text,r=e.ch,n=e.ch;if(t){var i=this.getHelper(e,"wordChars");"before"!=e.sticky&&n!=t.length||!r?++n:--r;for(var o=t.charAt(r),l=te(o,i)?function(e){return te(e,i)}:/\s/.test(o)?function(e){return/\s/.test(e)}:function(e){return!/\s/.test(e)&&!te(e)};r>0&&l(t.charAt(r-1));)--r;for(;n<t.length&&l(t.charAt(n));)++n}return new wi(et(e.line,r),et(e.line,n))},toggleOverwrite:function(e){null!=e&&e==this.state.overwrite||((this.state.overwrite=!this.state.overwrite)?H(this.display.cursorDiv,"CodeMirror-overwrite"):T(this.display.cursorDiv,"CodeMirror-overwrite"),ge(this,"overwriteToggle",this,this.state.overwrite))},hasFocus:function(){return this.display.input.getField()==W()},isReadOnly:function(){return!(!this.options.readOnly&&!this.doc.cantEdit)},scrollTo:Qn(function(e,t){An(this,e,t)}),getScrollInfo:function(){var e=this.display.scroller;return{left:e.scrollLeft,top:e.scrollTop,height:e.scrollHeight-kr(this)-this.display.barHeight,width:e.scrollWidth-kr(this)-this.display.barWidth,clientHeight:Mr(this),clientWidth:Tr(this)}},scrollIntoView:Qn(function(e,t){null==e?(e={from:this.doc.sel.primary().head,to:null},null==t&&(t=this.options.cursorScrollMargin)):"number"==typeof e?e={from:et(e,0),to:null}:null==e.from&&(e={from:e,to:null}),e.to||(e.to=e.from),e.margin=t||0,null!=e.from.line?function(e,t){Dn(e),e.curOp.scrollToPos=t}(this,e):Wn(this,e.from,e.to,e.margin)}),setSize:Qn(function(e,t){var r=this,n=function(e){return"number"==typeof e||/^\d+$/.test(String(e))?e+"px":e};null!=e&&(this.display.wrapper.style.width=n(e)),null!=t&&(this.display.wrapper.style.height=n(t)),this.options.lineWrapping&&Rr(this);var i=this.display.viewFrom;this.doc.iter(i,this.display.viewTo,function(e){if(e.widgets)for(var t=0;t<e.widgets.length;t++)if(e.widgets[t].noHScroll){cn(r,i,"widget");break}++i}),this.curOp.forceUpdate=!0,ge(this,"refresh",this)}),operation:function(e){return qn(this,e)},startOperation:function(){return Kn(this)},endOperation:function(){return jn(this)},refresh:Qn(function(){var e=this.display.cachedTextHeight;un(this),this.curOp.forceUpdate=!0,zr(this),An(this,this.doc.scrollLeft,this.doc.scrollTop),li(this.display),(null==e||Math.abs(e-en(this.display))>.5||this.options.lineWrapping)&&ln(this),ge(this,"refresh",this)}),swapDoc:Qn(function(e){var t=this.doc;return t.cm=null,this.state.selectingText&&this.state.selectingText(),Wi(this,e),zr(this),this.display.input.reset(),An(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,sr(this,"swapDoc",this,t),t}),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},be(e),e.registerHelper=function(t,n,i){r.hasOwnProperty(t)||(r[t]=e[t]={_global:[]}),r[t][n]=i},e.registerGlobalHelper=function(t,n,i,o){e.registerHelper(t,n,o),r[t]._global.push({pred:i,val:o})}}(Ll);var Vl="iter insert remove copy getEditor constructor".split(" ");for(var Kl in No.prototype)No.prototype.hasOwnProperty(Kl)&&B(Vl,Kl)<0&&(Ll.prototype[Kl]=function(e){return function(){return e.apply(this.doc,arguments)}}(No.prototype[Kl]));return be(No),Ll.inputStyles={textarea:Ul,contenteditable:Il},Ll.defineMode=function(e){Ll.defaults.mode||"null"==e||(Ll.defaults.mode=e),function(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),Ee[e]=t}.apply(this,arguments)},Ll.defineMIME=function(e,t){Ie[e]=t},Ll.defineMode("null",function(){return{token:function(e){return e.skipToEnd()}}}),Ll.defineMIME("text/plain","null"),Ll.defineExtension=function(e,t){Ll.prototype[e]=t},Ll.defineDocExtension=function(e,t){No.prototype[e]=t},Ll.fromTextArea=function(e,t){if((t=t?I(t):{}).value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),null==t.autofocus){var r=W();t.autofocus=r==e||null!=e.getAttribute("autofocus")&&r==document.body}function n(){e.value=s.getValue()}var i;if(e.form&&(fe(e.form,"submit",n),!t.leaveSubmitMethodAlone)){var o=e.form;i=o.submit;try{var l=o.submit=function(){n(),o.submit=i,o.submit(),o.submit=l}}catch(e){}}t.finishInit=function(r){r.save=n,r.getTextArea=function(){return e},r.toTextArea=function(){r.toTextArea=isNaN,n(),e.parentNode.removeChild(r.getWrapperElement()),e.style.display="",e.form&&(pe(e.form,"submit",n),t.leaveSubmitMethodAlone||"function"!=typeof e.form.submit||(e.form.submit=i))}},e.style.display="none";var s=Ll(function(t){return e.parentNode.insertBefore(t,e.nextSibling)},t);return s},function(e){e.off=pe,e.on=fe,e.wheelEventPixels=mi,e.Doc=No,e.splitLines=We,e.countColumn=R,e.findColumn=X,e.isWordChar=ee,e.Pass=U,e.signal=ge,e.Line=Xt,e.changeEnd=Si,e.scrollbarModel=Gn,e.Pos=et,e.cmpPos=tt,e.modes=Ee,e.mimeModes=Ie,e.resolveMode=Re,e.getMode=ze,e.modeExtensions=Be,e.extendMode=Ge,e.copyState=Ue,e.startState=Ke,e.innerMode=Ve,e.commands=Qo,e.keyMap=Bo,e.keyName=Xo,e.isModifierKey=Ko,e.lookupKey=Vo,e.normalizeKeyMap=Uo,e.StringStream=je,e.SharedTextMarker=Lo,e.TextMarker=Co,e.LineWidget=bo,e.e_preventDefault=we,e.e_stopPropagation=xe,e.e_stop=Se,e.addClass=H,e.contains=D,e.rmClass=T,e.keyNames=Eo}(Ll),Ll.version="5.65.2",Ll});
2874
2877
 
2875
- },{}],694:[function(require,module,exports){
2878
+ },{}],695:[function(require,module,exports){
2876
2879
  !function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("javascript",function(t,r){var n,a,i=t.indentUnit,o=r.statementIndent,c=r.jsonld,s=r.json||c,u=!1!==r.trackScope,f=r.typescript,l=r.wordCharacters||/[\w$\xa1-\uffff]/,d=function(){function e(e){return{type:e,style:"keyword"}}var t=e("keyword a"),r=e("keyword b"),n=e("keyword c"),a=e("keyword d"),i=e("operator"),o={type:"atom",style:"atom"};return{if:e("if"),while:t,with:t,else:r,do:r,try:r,finally:r,return:a,break:a,continue:a,new:e("new"),delete:n,void:n,throw:n,debugger:e("debugger"),var:e("var"),const:e("var"),let:e("var"),function:e("function"),catch:e("catch"),for:e("for"),switch:e("switch"),case:e("case"),default:e("default"),in:i,typeof:i,instanceof:i,true:o,false:o,null:o,undefined:o,NaN:o,Infinity:o,this:e("this"),class:e("class"),super:e("atom"),yield:n,export:e("export"),import:e("import"),extends:n,await:n}}(),p=/[+\-*&%=<>!?|~^@]/,m=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function v(e,t,r){return n=e,a=r,t}function k(e,t){var r,n=e.next();if('"'==n||"'"==n)return t.tokenize=(r=n,function(e,t){var n,a=!1;if(c&&"@"==e.peek()&&e.match(m))return t.tokenize=k,v("jsonld-keyword","meta");for(;null!=(n=e.next())&&(n!=r||a);)a=!a&&"\\"==n;return a||(t.tokenize=k),v("string","string")}),t.tokenize(e,t);if("."==n&&e.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return v("number","number");if("."==n&&e.match(".."))return v("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(n))return v(n);if("="==n&&e.eat(">"))return v("=>","operator");if("0"==n&&e.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return v("number","number");if(/\d/.test(n))return e.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),v("number","number");if("/"==n)return e.eat("*")?(t.tokenize=y,y(e,t)):e.eat("/")?(e.skipToEnd(),v("comment","comment")):Ze(e,t,1)?(function(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if("/"==t&&!n)return;"["==t?n=!0:n&&"]"==t&&(n=!1)}r=!r&&"\\"==t}}(e),e.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),v("regexp","string-2")):(e.eat("="),v("operator","operator",e.current()));if("`"==n)return t.tokenize=w,w(e,t);if("#"==n&&"!"==e.peek())return e.skipToEnd(),v("meta","meta");if("#"==n&&e.eatWhile(l))return v("variable","property");if("<"==n&&e.match("!--")||"-"==n&&e.match("->")&&!/\S/.test(e.string.slice(0,e.start)))return e.skipToEnd(),v("comment","comment");if(p.test(n))return">"==n&&t.lexical&&">"==t.lexical.type||(e.eat("=")?"!"!=n&&"="!=n||e.eat("="):/[<>*+\-|&?]/.test(n)&&(e.eat(n),">"==n&&e.eat(n))),"?"==n&&e.eat(".")?v("."):v("operator","operator",e.current());if(l.test(n)){e.eatWhile(l);var a=e.current();if("."!=t.lastType){if(d.propertyIsEnumerable(a)){var i=d[a];return v(i.type,i.style,a)}if("async"==a&&e.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return v("async","keyword",a)}return v("variable","variable",a)}}function y(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=k;break}n="*"==r}return v("comment","comment")}function w(e,t){for(var r,n=!1;null!=(r=e.next());){if(!n&&("`"==r||"$"==r&&e.eat("{"))){t.tokenize=k;break}n=!n&&"\\"==r}return v("quasi","string-2",e.current())}var b="([{}])";function x(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r=e.string.indexOf("=>",e.start);if(!(r<0)){if(f){var n=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,r));n&&(r=n.index)}for(var a=0,i=!1,o=r-1;o>=0;--o){var c=e.string.charAt(o),s=b.indexOf(c);if(s>=0&&s<3){if(!a){++o;break}if(0==--a){"("==c&&(i=!0);break}}else if(s>=3&&s<6)++a;else if(l.test(c))i=!0;else if(/["'\/`]/.test(c))for(;;--o){if(0==o)return;if(e.string.charAt(o-1)==c&&"\\"!=e.string.charAt(o-2)){o--;break}}else if(i&&!a){++o;break}}i&&!a&&(t.fatArrowAt=o)}}var h={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function g(e,t,r,n,a,i){this.indented=e,this.column=t,this.type=r,this.prev=a,this.info=i,null!=n&&(this.align=n)}function j(e,t){if(!u)return!1;for(var r=e.localVars;r;r=r.next)if(r.name==t)return!0;for(var n=e.context;n;n=n.prev)for(r=n.vars;r;r=r.next)if(r.name==t)return!0}function M(e,t,r,n,a){var i=e.cc;for(A.state=e,A.stream=a,A.marked=null,A.cc=i,A.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;){if((i.length?i.pop():s?F:W)(r,n)){for(;i.length&&i[i.length-1].lex;)i.pop()();return A.marked?A.marked:"variable"==r&&j(e,n)?"variable-2":t}}}var A={state:null,column:null,marked:null,cc:null};function V(){for(var e=arguments.length-1;e>=0;e--)A.cc.push(arguments[e])}function E(){return V.apply(null,arguments),!0}function z(e,t){for(var r=t;r;r=r.next)if(r.name==e)return!0;return!1}function I(e){var t=A.state;if(A.marked="def",u){if(t.context)if("var"==t.lexical.info&&t.context&&t.context.block){var n=function e(t,r){if(r){if(r.block){var n=e(t,r.prev);return n?n==r.prev?r:new $(n,r.vars,!0):null}return z(t,r.vars)?r:new $(r.prev,new q(t,r.vars),!1)}return null}(e,t.context);if(null!=n)return void(t.context=n)}else if(!z(e,t.localVars))return void(t.localVars=new q(e,t.localVars));r.globalVars&&!z(e,t.globalVars)&&(t.globalVars=new q(e,t.globalVars))}}function T(e){return"public"==e||"private"==e||"protected"==e||"abstract"==e||"readonly"==e}function $(e,t,r){this.prev=e,this.vars=t,this.block=r}function q(e,t){this.name=e,this.next=t}var C=new q("this",new q("arguments",null));function S(){A.state.context=new $(A.state.context,A.state.localVars,!1),A.state.localVars=C}function _(){A.state.context=new $(A.state.context,A.state.localVars,!0),A.state.localVars=null}function O(){A.state.localVars=A.state.context.vars,A.state.context=A.state.context.prev}function P(e,t){var r=function(){var r=A.state,n=r.indented;if("stat"==r.lexical.type)n=r.lexical.indented;else for(var a=r.lexical;a&&")"==a.type&&a.align;a=a.prev)n=a.indented;r.lexical=new g(n,A.stream.column(),e,null,r.lexical,t)};return r.lex=!0,r}function N(){var e=A.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function U(e){return function t(r){return r==e?E():";"==e||"}"==r||")"==r||"]"==r?V():E(t)}}function W(e,t){return"var"==e?E(P("vardef",t),Me,U(";"),N):"keyword a"==e?E(P("form"),D,W,N):"keyword b"==e?E(P("form"),W,N):"keyword d"==e?A.stream.match(/^\s*$/,!1)?E():E(P("stat"),J,U(";"),N):"debugger"==e?E(U(";")):"{"==e?E(P("}"),_,se,N,O):";"==e?E():"if"==e?("else"==A.state.lexical.info&&A.state.cc[A.state.cc.length-1]==N&&A.state.cc.pop()(),E(P("form"),D,W,N,Te)):"function"==e?E(Se):"for"==e?E(P("form"),_,$e,W,O,N):"class"==e||f&&"interface"==t?(A.marked="keyword",E(P("form","class"==e?e:t),Ue,N)):"variable"==e?f&&"declare"==t?(A.marked="keyword",E(W)):f&&("module"==t||"enum"==t||"type"==t)&&A.stream.match(/^\s*\w/,!1)?(A.marked="keyword","enum"==t?E(Xe):"type"==t?E(Oe,U("operator"),pe,U(";")):E(P("form"),Ae,U("{"),P("}"),se,N,N)):f&&"namespace"==t?(A.marked="keyword",E(P("form"),F,W,N)):f&&"abstract"==t?(A.marked="keyword",E(W)):E(P("stat"),te):"switch"==e?E(P("form"),D,U("{"),P("}","switch"),_,se,N,N,O):"case"==e?E(F,U(":")):"default"==e?E(U(":")):"catch"==e?E(P("form"),S,B,W,N,O):"export"==e?E(P("stat"),He,N):"import"==e?E(P("stat"),Ge,N):"async"==e?E(W):"@"==t?E(F,W):V(P("stat"),F,U(";"),N)}function B(e){if("("==e)return E(Pe,U(")"))}function F(e,t){return G(e,t,!1)}function H(e,t){return G(e,t,!0)}function D(e){return"("!=e?V():E(P(")"),J,U(")"),N)}function G(e,t,r){if(A.state.fatArrowAt==A.stream.start){var n=r?Y:X;if("("==e)return E(S,P(")"),oe(Pe,")"),N,U("=>"),n,O);if("variable"==e)return V(S,Ae,U("=>"),n,O)}var a=r?L:K;return h.hasOwnProperty(e)?E(a):"function"==e?E(Se,a):"class"==e||f&&"interface"==t?(A.marked="keyword",E(P("form"),Ne,N)):"keyword c"==e||"async"==e?E(r?H:F):"("==e?E(P(")"),J,U(")"),N,a):"operator"==e||"spread"==e?E(r?H:F):"["==e?E(P("]"),Re,N,a):"{"==e?ce(ne,"}",null,a):"quasi"==e?V(Q,a):"new"==e?E(function(e){return function(t){return"."==t?E(e?ee:Z):"variable"==t&&f?E(he,e?L:K):V(e?H:F)}}(r)):E()}function J(e){return e.match(/[;\}\)\],]/)?V():V(F)}function K(e,t){return","==e?E(J):L(e,t,!1)}function L(e,t,r){var n=0==r?K:L,a=0==r?F:H;return"=>"==e?E(S,r?Y:X,O):"operator"==e?/\+\+|--/.test(t)||f&&"!"==t?E(n):f&&"<"==t&&A.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?E(P(">"),oe(pe,">"),N,n):"?"==t?E(F,U(":"),a):E(a):"quasi"==e?V(Q,n):";"!=e?"("==e?ce(H,")","call",n):"."==e?E(re,n):"["==e?E(P("]"),J,U("]"),N,n):f&&"as"==t?(A.marked="keyword",E(pe,n)):"regexp"==e?(A.state.lastType=A.marked="operator",A.stream.backUp(A.stream.pos-A.stream.start-1),E(a)):void 0:void 0}function Q(e,t){return"quasi"!=e?V():"${"!=t.slice(t.length-2)?E(Q):E(J,R)}function R(e){if("}"==e)return A.marked="string-2",A.state.tokenize=w,E(Q)}function X(e){return x(A.stream,A.state),V("{"==e?W:F)}function Y(e){return x(A.stream,A.state),V("{"==e?W:H)}function Z(e,t){if("target"==t)return A.marked="keyword",E(K)}function ee(e,t){if("target"==t)return A.marked="keyword",E(L)}function te(e){return":"==e?E(N,W):V(K,U(";"),N)}function re(e){if("variable"==e)return A.marked="property",E()}function ne(e,t){return"async"==e?(A.marked="property",E(ne)):"variable"==e||"keyword"==A.style?(A.marked="property","get"==t||"set"==t?E(ae):(f&&A.state.fatArrowAt==A.stream.start&&(r=A.stream.match(/^\s*:\s*/,!1))&&(A.state.fatArrowAt=A.stream.pos+r[0].length),E(ie))):"number"==e||"string"==e?(A.marked=c?"property":A.style+" property",E(ie)):"jsonld-keyword"==e?E(ie):f&&T(t)?(A.marked="keyword",E(ne)):"["==e?E(F,ue,U("]"),ie):"spread"==e?E(H,ie):"*"==t?(A.marked="keyword",E(ne)):":"==e?V(ie):void 0;var r}function ae(e){return"variable"!=e?V(ie):(A.marked="property",E(Se))}function ie(e){return":"==e?E(H):"("==e?V(Se):void 0}function oe(e,t,r){function n(a,i){if(r?r.indexOf(a)>-1:","==a){var o=A.state.lexical;return"call"==o.info&&(o.pos=(o.pos||0)+1),E(function(r,n){return r==t||n==t?V():V(e)},n)}return a==t||i==t?E():r&&r.indexOf(";")>-1?V(e):E(U(t))}return function(r,a){return r==t||a==t?E():V(e,n)}}function ce(e,t,r){for(var n=3;n<arguments.length;n++)A.cc.push(arguments[n]);return E(P(t,r),oe(e,t),N)}function se(e){return"}"==e?E():V(W,se)}function ue(e,t){if(f){if(":"==e)return E(pe);if("?"==t)return E(ue)}}function fe(e,t){if(f&&(":"==e||"in"==t))return E(pe)}function le(e){if(f&&":"==e)return A.stream.match(/^\s*\w+\s+is\b/,!1)?E(F,de,pe):E(pe)}function de(e,t){if("is"==t)return A.marked="keyword",E()}function pe(e,t){return"keyof"==t||"typeof"==t||"infer"==t||"readonly"==t?(A.marked="keyword",E("typeof"==t?H:pe)):"variable"==e||"void"==t?(A.marked="type",E(xe)):"|"==t||"&"==t?E(pe):"string"==e||"number"==e||"atom"==e?E(xe):"["==e?E(P("]"),oe(pe,"]",","),N,xe):"{"==e?E(P("}"),ve,N,xe):"("==e?E(oe(be,")"),me,xe):"<"==e?E(oe(pe,">"),pe):"quasi"==e?V(ye,xe):void 0}function me(e){if("=>"==e)return E(pe)}function ve(e){return e.match(/[\}\)\]]/)?E():","==e||";"==e?E(ve):V(ke,ve)}function ke(e,t){return"variable"==e||"keyword"==A.style?(A.marked="property",E(ke)):"?"==t||"number"==e||"string"==e?E(ke):":"==e?E(pe):"["==e?E(U("variable"),fe,U("]"),ke):"("==e?V(_e,ke):e.match(/[;\}\)\],]/)?void 0:E()}function ye(e,t){return"quasi"!=e?V():"${"!=t.slice(t.length-2)?E(ye):E(pe,we)}function we(e){if("}"==e)return A.marked="string-2",A.state.tokenize=w,E(ye)}function be(e,t){return"variable"==e&&A.stream.match(/^\s*[?:]/,!1)||"?"==t?E(be):":"==e?E(pe):"spread"==e?E(be):V(pe)}function xe(e,t){return"<"==t?E(P(">"),oe(pe,">"),N,xe):"|"==t||"."==e||"&"==t?E(pe):"["==e?E(pe,U("]"),xe):"extends"==t||"implements"==t?(A.marked="keyword",E(pe)):"?"==t?E(pe,U(":"),pe):void 0}function he(e,t){if("<"==t)return E(P(">"),oe(pe,">"),N,xe)}function ge(){return V(pe,je)}function je(e,t){if("="==t)return E(pe)}function Me(e,t){return"enum"==t?(A.marked="keyword",E(Xe)):V(Ae,ue,ze,Ie)}function Ae(e,t){return f&&T(t)?(A.marked="keyword",E(Ae)):"variable"==e?(I(t),E()):"spread"==e?E(Ae):"["==e?ce(Ee,"]"):"{"==e?ce(Ve,"}"):void 0}function Ve(e,t){return"variable"!=e||A.stream.match(/^\s*:/,!1)?("variable"==e&&(A.marked="property"),"spread"==e?E(Ae):"}"==e?V():"["==e?E(F,U("]"),U(":"),Ve):E(U(":"),Ae,ze)):(I(t),E(ze))}function Ee(){return V(Ae,ze)}function ze(e,t){if("="==t)return E(H)}function Ie(e){if(","==e)return E(Me)}function Te(e,t){if("keyword b"==e&&"else"==t)return E(P("form","else"),W,N)}function $e(e,t){return"await"==t?E($e):"("==e?E(P(")"),qe,N):void 0}function qe(e){return"var"==e?E(Me,Ce):"variable"==e?E(Ce):V(Ce)}function Ce(e,t){return")"==e?E():";"==e?E(Ce):"in"==t||"of"==t?(A.marked="keyword",E(F,Ce)):V(F,Ce)}function Se(e,t){return"*"==t?(A.marked="keyword",E(Se)):"variable"==e?(I(t),E(Se)):"("==e?E(S,P(")"),oe(Pe,")"),N,le,W,O):f&&"<"==t?E(P(">"),oe(ge,">"),N,Se):void 0}function _e(e,t){return"*"==t?(A.marked="keyword",E(_e)):"variable"==e?(I(t),E(_e)):"("==e?E(S,P(")"),oe(Pe,")"),N,le,O):f&&"<"==t?E(P(">"),oe(ge,">"),N,_e):void 0}function Oe(e,t){return"keyword"==e||"variable"==e?(A.marked="type",E(Oe)):"<"==t?E(P(">"),oe(ge,">"),N):void 0}function Pe(e,t){return"@"==t&&E(F,Pe),"spread"==e?E(Pe):f&&T(t)?(A.marked="keyword",E(Pe)):f&&"this"==e?E(ue,ze):V(Ae,ue,ze)}function Ne(e,t){return"variable"==e?Ue(e,t):We(e,t)}function Ue(e,t){if("variable"==e)return I(t),E(We)}function We(e,t){return"<"==t?E(P(">"),oe(ge,">"),N,We):"extends"==t||"implements"==t||f&&","==e?("implements"==t&&(A.marked="keyword"),E(f?pe:F,We)):"{"==e?E(P("}"),Be,N):void 0}function Be(e,t){return"async"==e||"variable"==e&&("static"==t||"get"==t||"set"==t||f&&T(t))&&A.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(A.marked="keyword",E(Be)):"variable"==e||"keyword"==A.style?(A.marked="property",E(Fe,Be)):"number"==e||"string"==e?E(Fe,Be):"["==e?E(F,ue,U("]"),Fe,Be):"*"==t?(A.marked="keyword",E(Be)):f&&"("==e?V(_e,Be):";"==e||","==e?E(Be):"}"==e?E():"@"==t?E(F,Be):void 0}function Fe(e,t){if("!"==t)return E(Fe);if("?"==t)return E(Fe);if(":"==e)return E(pe,ze);if("="==t)return E(H);var r=A.state.lexical.prev;return V(r&&"interface"==r.info?_e:Se)}function He(e,t){return"*"==t?(A.marked="keyword",E(Qe,U(";"))):"default"==t?(A.marked="keyword",E(F,U(";"))):"{"==e?E(oe(De,"}"),Qe,U(";")):V(W)}function De(e,t){return"as"==t?(A.marked="keyword",E(U("variable"))):"variable"==e?V(H,De):void 0}function Ge(e){return"string"==e?E():"("==e?V(F):"."==e?V(K):V(Je,Ke,Qe)}function Je(e,t){return"{"==e?ce(Je,"}"):("variable"==e&&I(t),"*"==t&&(A.marked="keyword"),E(Le))}function Ke(e){if(","==e)return E(Je,Ke)}function Le(e,t){if("as"==t)return A.marked="keyword",E(Je)}function Qe(e,t){if("from"==t)return A.marked="keyword",E(F)}function Re(e){return"]"==e?E():V(oe(H,"]"))}function Xe(){return V(P("form"),Ae,U("{"),P("}"),oe(Ye,"}"),N,N)}function Ye(){return V(Ae,ze)}function Ze(e,t,r){return t.tokenize==k&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||"quasi"==t.lastType&&/\{\s*$/.test(e.string.slice(0,e.pos-(r||0)))}return S.lex=_.lex=!0,O.lex=!0,N.lex=!0,{startState:function(e){var t={tokenize:k,lastType:"sof",cc:[],lexical:new g((e||0)-i,0,"block",!1),localVars:r.localVars,context:r.localVars&&new $(null,null,!1),indented:e||0};return r.globalVars&&"object"==typeof r.globalVars&&(t.globalVars=r.globalVars),t},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),x(e,t)),t.tokenize!=y&&e.eatSpace())return null;var r=t.tokenize(e,t);return"comment"==n?r:(t.lastType="operator"!=n||"++"!=a&&"--"!=a?n:"incdec",M(t,r,n,a,e))},indent:function(t,n){if(t.tokenize==y||t.tokenize==w)return e.Pass;if(t.tokenize!=k)return 0;var a,c=n&&n.charAt(0),s=t.lexical;if(!/^\s*else\b/.test(n))for(var u=t.cc.length-1;u>=0;--u){var f=t.cc[u];if(f==N)s=s.prev;else if(f!=Te&&f!=O)break}for(;("stat"==s.type||"form"==s.type)&&("}"==c||(a=t.cc[t.cc.length-1])&&(a==K||a==L)&&!/^[,\.=+\-*:?[\(]/.test(n));)s=s.prev;o&&")"==s.type&&"stat"==s.prev.type&&(s=s.prev);var l=s.type,d=c==l;return"vardef"==l?s.indented+("operator"==t.lastType||","==t.lastType?s.info.length+1:0):"form"==l&&"{"==c?s.indented:"form"==l?s.indented+i:"stat"==l?s.indented+(function(e,t){return"operator"==e.lastType||","==e.lastType||p.test(t.charAt(0))||/[,.]/.test(t.charAt(0))}(t,n)?o||i:0):"switch"!=s.info||d||0==r.doubleIndentSwitch?s.align?s.column+(d?0:1):s.indented+(d?0:i):s.indented+(/^(?:case|default)\b/.test(n)?i:2*i)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:s?null:"/*",blockCommentEnd:s?null:"*/",blockCommentContinue:s?null:" * ",lineComment:s?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:s?"json":"javascript",jsonldMode:c,jsonMode:s,expressionAllowed:Ze,skipExpression:function(t){M(t,"atom","atom","true",new e.StringStream("",2,null))}}}),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/manifest+json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})});
2877
2880
 
2878
- },{"../../lib/codemirror":693}],695:[function(require,module,exports){
2881
+ },{"../../lib/codemirror":694}],696:[function(require,module,exports){
2879
2882
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_createClass=function(){function t(t,n){for(var e=0;e<n.length;e++){var i=n[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(n,e,i){return e&&t(n.prototype,e),i&&t(n,i),n}}();function _toConsumableArray(t){if(Array.isArray(t)){for(var n=0,e=Array(t.length);n<t.length;n++)e[n]=t[n];return e}return Array.from(t)}function _classCallCheck(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}var typeInfoRegex=/^:([a-z])(\(([^)]+)\))?/,formatOptionNumeric="numeric",formatOptionLong="long",formatOption2Digit="2-digit",typeString="string",typeNumber="number",typeDate="date",numberStyleDecimal="decimal",numberStyleCurrency="currency",numberStylePercent="percent",configD={weekday:void 0,era:void 0,year:formatOptionNumeric,month:formatOptionNumeric,day:formatOptionNumeric,hour:void 0,minute:void 0,second:void 0,timeZoneName:void 0},configD_cap={weekday:formatOptionLong,era:void 0,year:formatOptionNumeric,month:formatOptionLong,day:formatOptionNumeric,hour:void 0,minute:void 0,second:void 0,timeZoneName:void 0},configF={weekday:formatOptionLong,era:void 0,year:formatOptionNumeric,month:formatOptionLong,day:formatOptionNumeric,hour:formatOptionNumeric,minute:formatOption2Digit,second:void 0,timeZoneName:void 0},configF_cap={weekday:formatOptionLong,era:void 0,year:formatOptionNumeric,month:formatOptionLong,day:formatOptionNumeric,hour:formatOptionNumeric,minute:formatOption2Digit,second:formatOption2Digit,timeZoneName:void 0},configG={weekday:void 0,era:void 0,year:formatOptionNumeric,month:formatOptionNumeric,day:formatOptionNumeric,hour:formatOptionNumeric,minute:formatOption2Digit,second:void 0,timeZoneName:void 0},configG_cap={weekday:void 0,era:void 0,year:formatOptionNumeric,month:formatOptionNumeric,day:formatOptionNumeric,hour:formatOptionNumeric,minute:formatOption2Digit,second:formatOption2Digit,timeZoneName:void 0},configM={weekday:void 0,era:void 0,year:void 0,month:formatOptionLong,day:formatOptionNumeric,hour:void 0,minute:void 0,second:void 0,timeZoneName:void 0},configT={weekday:void 0,era:void 0,year:void 0,month:void 0,day:void 0,hour:formatOptionNumeric,minute:formatOption2Digit,second:void 0,timeZoneName:void 0},configT_cap={weekday:void 0,era:void 0,year:void 0,month:void 0,day:void 0,hour:formatOptionNumeric,minute:formatOption2Digit,second:formatOption2Digit,timeZoneName:void 0},configY={weekday:void 0,era:void 0,year:formatOptionNumeric,month:formatOptionLong,day:void 0,hour:void 0,minute:void 0,second:void 0,timeZoneName:void 0},standardFormatSettings={d:configD,D:configD_cap,f:configF,F:configF_cap,g:configG,G:configG_cap,m:configM,M:configM,t:configT,T:configT_cap,y:configY,Y:configY},Tag=function(){function t(){var n=this;_classCallCheck(this,t),this.defaultConfig={locales:void 0,translations:{},number:{currency:"USD"},date:{},string:{}},this.configs={"":this.defaultConfig},this.translationCache={},this.keyCache={},this.typeInfoCache={},this._localizers={s:function(t,e,i){var r=void 0;return i&&null!==(r=n._runCustomFormatters(t,typeString,i,e))?r:e?e.toLocaleString(t.locales):String(e)},n:function(t,e,i){if("number"!=typeof e)throw Error("value is not a number. type: "+(void 0===e?"undefined":_typeof(e)));if(i){var r=parseInt(i);if(!isNaN(r))return e.toLocaleString(t.locales,Object.assign({},t.number,{style:numberStyleDecimal,minimumFractionDigits:r,maximumFractionDigits:r}));var o;if(null!==(o=n._runCustomFormatters(t,typeNumber,i,e)))return o}return e.toLocaleString(t.locales,Object.assign({},t.number,{style:numberStyleDecimal,minimumFractionDigits:0,maximumFractionDigits:3}))},t:function(t,e,i){if(!(e instanceof Date))throw Error("value is not a Date. type: "+e.constructor.name);if(i){switch(i.toUpperCase()){case"R":return e.toUTCString();case"O":return e.toISOString()}var r=standardFormatSettings[i];if(r)return e.toLocaleString(t.locales,Object.assign({},t.date,r));var o=n._runCustomFormatters(t,typeDate,i,e);if(null!==o)return o}return e.toLocaleString(t.locales,Object.assign({},t.date))},c:function(t,n,e){if("number"!=typeof n)throw Error("value is not a number. type: "+(void 0===n?"undefined":_typeof(n)));return n.toLocaleString(t.locales,e?Object.assign({},t.number,{style:numberStyleCurrency,currency:e}):Object.assign({},t.number,{style:numberStyleCurrency}))},p:function(t,n,e){if("number"!=typeof n)throw Error("value is not a number. type: "+(void 0===n?"undefined":_typeof(n)));return n.toLocaleString(t.locales,e?Object.assign({},t.number,{style:numberStylePercent,minimumFractionDigits:e}):Object.assign({},t.number,{style:numberStylePercent}))}},this.i18n=this.i18n.bind(this),this.translate=this.translate.bind(this),this.i18nConfig=this.i18nConfig.bind(this),this._localize=this._localize.bind(this),this._extractTypeInfo=this._extractTypeInfo.bind(this)}return _createClass(t,[{key:"i18nConfig",value:function(t){var n=t.locales,e=t.translations,i=t.group,r=t.number,o=t.date,a=t.standardFormatters;this.translationCache={};var u=this.configs[i||""]||this.defaultConfig;this.configs[i||""]=Object.assign({},u,{locales:n||u.locales,translations:e||u.translations,number:r||u.number,date:o||u.date,standardFormatters:a||u.standardFormatters})}},{key:"i18n",value:function(t,n,e){for(var i=this,r=this._buildKey(e),o=this._getCachedTranslation(t,n,r),a=o.configGroup,u=o.translatedKey,c=e.slice(1).map(this._extractTypeInfo),s=arguments.length,f=Array(s>3?s-3:0),l=3;l<s;l++)f[l-3]=arguments[l];var m=f.map(function(t,n){return i._localize(a,t,c[n])});return this._buildMessage.apply(this,[u].concat(_toConsumableArray(m)))}},{key:"translate",value:function(t,n,e){var i=this;null==e?e="":"string"!=typeof e&&(e=String(e));for(var r=this._getCachedTranslation(t,n,e),o=r.configGroup,a=r.translatedKey,u=arguments.length,c=Array(u>3?u-3:0),s=3;s<u;s++)c[s-3]=arguments[s];var f=c.map(function(t){return t instanceof Object&&t.constructor===Object?i._localize(o,t.value||"",{type:t.formatter||"s",options:t.format}):i._localize(o,t,{type:"s",options:""})});return this._buildMessage.apply(this,[a].concat(_toConsumableArray(f)))}},{key:"_getCachedTranslation",value:function(t,n,e){var i=[t||"",n||"",e].join(),r=this.translationCache[i],o=this.configs[n||""]||this.defaultConfig;if(r)return{configGroup:o,translatedKey:r};var a=this._getTranslation(t,o,e);return this.translationCache[i]=a,{configGroup:o,translatedKey:a}}},{key:"_getTranslation",value:function(t,n,e){var i=n.translations,r=void 0,o=void 0;return(void 0===t?"undefined":_typeof(t))===typeString&&(o=t),o&&(r=i[o])instanceof Object&&(r=r[e]),r||(r="string"==typeof i[e]&&i[e]||e),r}},{key:"_runCustomFormatters",value:function(t,n,e,i){var r=null;if(t.standardFormatters){var o=t.standardFormatters[n];if(o){var a=o[e];a&&(r=a(t.locales,t[n],i))}}return r}},{key:"_extractTypeInfo",value:function(t){var n=this.typeInfoCache[t];if(n)return n;var e=typeInfoRegex.exec(t);return n=e?{type:e[1],options:e[3]}:{type:"s",options:""},this.typeInfoCache[t]=n,n}},{key:"_localize",value:function(t,n,e){var i=e.type,r=e.options,o=this._localizers[i];if(o)return o(t,n,r);throw new Error("Type '"+i+"' is not supported. Supported types are: "+Object.keys(this._localizers).join())}},{key:"_buildKey",value:function(t){var n=t.join(),e=this.keyCache[n];if(e)return e;var i=function(t){return t.replace(typeInfoRegex,"")},r=i(t[t.length-1]),o=t.slice(0,-1).reduceRight(function(t,n,e){return i(n)+"${"+e+"}"+t},r).replace(/\r\n/g,"\n");return this.keyCache[n]=o,o}},{key:"_buildMessage",value:function(t){for(var n=arguments.length,e=Array(n>1?n-1:0),i=1;i<n;i++)e[i-1]=arguments[i];return t.replace(/\${(\d)}/g,function(t,n){return e[Number(n)]})}}]),t}(),i18ntag=new Tag,i18nConfig=i18ntag.i18nConfig,i18n=function(t){for(var n=arguments.length,e=Array(n>1?n-1:0),i=1;i<n;i++)e[i-1]=arguments[i];if("string"==typeof t){if(e.length&&"string"==typeof e[0]){var r=function(n){for(var i=arguments.length,r=Array(i>1?i-1:0),o=1;o<i;o++)r[o-1]=arguments[o];return i18ntag.i18n.apply(i18ntag,[t,e[0],n].concat(r))};return r.translate=function(n){for(var i=arguments.length,r=Array(i>1?i-1:0),o=1;o<i;o++)r[o-1]=arguments[o];return i18ntag.translate.apply(i18ntag,[t,e[0],n].concat(r))},r}var o=function(n){for(var e=arguments.length,i=Array(e>1?e-1:0),r=1;r<e;r++)i[r-1]=arguments[r];return i18ntag.i18n.apply(i18ntag,[t,null,n].concat(i))};return o.translate=function(n){for(var e=arguments.length,i=Array(e>1?e-1:0),r=1;r<e;r++)i[r-1]=arguments[r];return i18ntag.translate.apply(i18ntag,[t,null,n].concat(i))},o}return i18ntag.i18n.apply(i18ntag,[null,null,t].concat(e))};i18n.translate=function(t){for(var n=arguments.length,e=Array(n>1?n-1:0),i=1;i<n;i++)e[i-1]=arguments[i];return i18ntag.translate.apply(i18ntag,[null,null,t].concat(e))};var i18nGroup=function(t,n){return function(e){return e.prototype.i18n=function(e){for(var i=arguments.length,r=Array(i>1?i-1:0),o=1;o<i;o++)r[o-1]=arguments[o];return i18n(t,n).apply(void 0,[e].concat(r))},e.prototype.i18n.translate=function(e){for(var i=arguments.length,r=Array(i>1?i-1:0),o=1;o<i;o++)r[o-1]=arguments[o];return i18ntag.translate.apply(i18ntag,[t,n,e].concat(r))},e}};"undefined"!=typeof window&&(window.i18n=i18n,window.i18nConfig=i18nConfig,window.i18nGroup=i18nGroup),exports.default=i18n,exports.i18nConfig=i18nConfig,exports.i18nGroup=i18nGroup;
2880
2883
 
2881
- },{}],696:[function(require,module,exports){
2884
+ },{}],697:[function(require,module,exports){
2882
2885
  (function (global){(function (){
2883
2886
  !function(e,t){"function"==typeof define&&define.amd?define([],t):"undefined"!=typeof exports?t():(t(),e.FileSaver={})}(this,function(){"use strict";function e(e,t,n){var o=new XMLHttpRequest;o.open("GET",e),o.responseType="blob",o.onload=function(){i(o.response,t,n)},o.onerror=function(){console.error("could not download file")},o.send()}function t(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function n(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(n){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var o="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,a=o.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),i=o.saveAs||("object"!=typeof window||window!==o?function(){}:"download"in HTMLAnchorElement.prototype&&!a?function(a,i,r){var c=o.URL||o.webkitURL,l=document.createElement("a");i=i||a.name||"download",l.download=i,l.rel="noopener","string"==typeof a?(l.href=a,l.origin===location.origin?n(l):t(l.href)?e(a,i,r):n(l,l.target="_blank")):(l.href=c.createObjectURL(a),setTimeout(function(){c.revokeObjectURL(l.href)},4e4),setTimeout(function(){n(l)},0))}:"msSaveOrOpenBlob"in navigator?function(o,a,i){if(a=a||o.name||"download","string"!=typeof o)navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e}(o,i),a);else if(t(o))e(o,a,i);else{var r=document.createElement("a");r.href=o,r.target="_blank",setTimeout(function(){n(r)})}}:function(t,n,i,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),"string"==typeof t)return e(t,n,i);var c="application/octet-stream"===t.type,l=/constructor/i.test(o.HTMLElement)||o.safari,s=/CriOS\/[\d]+/.test(navigator.userAgent);if((s||c&&l||a)&&"undefined"!=typeof FileReader){var f=new FileReader;f.onloadend=function(){var e=f.result;e=s?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=e:location=e,r=null},f.readAsDataURL(t)}else{var u=o.URL||o.webkitURL,d=u.createObjectURL(t);r?r.location=d:location.href=d,r=null,setTimeout(function(){u.revokeObjectURL(d)},4e4)}});o.saveAs=i.saveAs=i,"undefined"!=typeof module&&(module.exports=i)});
2884
2887
 
2885
2888
  }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
2886
- },{}],697:[function(require,module,exports){
2889
+ },{}],698:[function(require,module,exports){
2887
2890
  (function (process){(function (){
2888
2891
  function isElectron(){return"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}module.exports=isElectron;
2889
2892
 
2890
2893
  }).call(this)}).call(this,require('_process'))
2891
- },{"_process":685}],698:[function(require,module,exports){
2894
+ },{"_process":686}],699:[function(require,module,exports){
2892
2895
  "use strict";var range,DOCUMENT_FRAGMENT_NODE=11;function morphAttrs(e,t){var n,r,o,a,i=t.attributes;if(t.nodeType!==DOCUMENT_FRAGMENT_NODE&&e.nodeType!==DOCUMENT_FRAGMENT_NODE){for(var d=i.length-1;d>=0;d--)r=(n=i[d]).name,o=n.namespaceURI,a=n.value,o?(r=n.localName||r,e.getAttributeNS(o,r)!==a&&("xmlns"===n.prefix&&(r=n.name),e.setAttributeNS(o,r,a))):e.getAttribute(r)!==a&&e.setAttribute(r,a);for(var l=e.attributes,c=l.length-1;c>=0;c--)r=(n=l[c]).name,(o=n.namespaceURI)?(r=n.localName||r,t.hasAttributeNS(o,r)||e.removeAttributeNS(o,r)):t.hasAttribute(r)||e.removeAttribute(r)}}var NS_XHTML="http://www.w3.org/1999/xhtml",doc="undefined"==typeof document?void 0:document,HAS_TEMPLATE_SUPPORT=!!doc&&"content"in doc.createElement("template"),HAS_RANGE_SUPPORT=!!doc&&doc.createRange&&"createContextualFragment"in doc.createRange();function createFragmentFromTemplate(e){var t=doc.createElement("template");return t.innerHTML=e,t.content.childNodes[0]}function createFragmentFromRange(e){return range||(range=doc.createRange()).selectNode(doc.body),range.createContextualFragment(e).childNodes[0]}function createFragmentFromWrap(e){var t=doc.createElement("body");return t.innerHTML=e,t.childNodes[0]}function toElement(e){return e=e.trim(),HAS_TEMPLATE_SUPPORT?createFragmentFromTemplate(e):HAS_RANGE_SUPPORT?createFragmentFromRange(e):createFragmentFromWrap(e)}function compareNodeNames(e,t){var n,r,o=e.nodeName,a=t.nodeName;return o===a||(n=o.charCodeAt(0),r=a.charCodeAt(0),n<=90&&r>=97?o===a.toUpperCase():r<=90&&n>=97&&a===o.toUpperCase())}function createElementNS(e,t){return t&&t!==NS_XHTML?doc.createElementNS(t,e):doc.createElement(e)}function moveChildren(e,t){for(var n=e.firstChild;n;){var r=n.nextSibling;t.appendChild(n),n=r}return t}function syncBooleanAttrProp(e,t,n){e[n]!==t[n]&&(e[n]=t[n],e[n]?e.setAttribute(n,""):e.removeAttribute(n))}var specialElHandlers={OPTION:function(e,t){var n=e.parentNode;if(n){var r=n.nodeName.toUpperCase();"OPTGROUP"===r&&(r=(n=n.parentNode)&&n.nodeName.toUpperCase()),"SELECT"!==r||n.hasAttribute("multiple")||(e.hasAttribute("selected")&&!t.selected&&(e.setAttribute("selected","selected"),e.removeAttribute("selected")),n.selectedIndex=-1)}syncBooleanAttrProp(e,t,"selected")},INPUT:function(e,t){syncBooleanAttrProp(e,t,"checked"),syncBooleanAttrProp(e,t,"disabled"),e.value!==t.value&&(e.value=t.value),t.hasAttribute("value")||e.removeAttribute("value")},TEXTAREA:function(e,t){var n=t.value;e.value!==n&&(e.value=n);var r=e.firstChild;if(r){var o=r.nodeValue;if(o==n||!n&&o==e.placeholder)return;r.nodeValue=n}},SELECT:function(e,t){if(!t.hasAttribute("multiple")){for(var n,r,o=-1,a=0,i=e.firstChild;i;)if("OPTGROUP"===(r=i.nodeName&&i.nodeName.toUpperCase()))i=(n=i).firstChild;else{if("OPTION"===r){if(i.hasAttribute("selected")){o=a;break}a++}!(i=i.nextSibling)&&n&&(i=n.nextSibling,n=null)}e.selectedIndex=o}}},ELEMENT_NODE=1,DOCUMENT_FRAGMENT_NODE$1=11,TEXT_NODE=3,COMMENT_NODE=8;function noop(){}function defaultGetNodeKey(e){if(e)return e.getAttribute&&e.getAttribute("id")||e.id}function morphdomFactory(e){return function(t,n,r){if(r||(r={}),"string"==typeof n)if("#document"===t.nodeName||"HTML"===t.nodeName||"BODY"===t.nodeName){var o=n;(n=doc.createElement("html")).innerHTML=o}else n=toElement(n);var a=r.getNodeKey||defaultGetNodeKey,i=r.onBeforeNodeAdded||noop,d=r.onNodeAdded||noop,l=r.onBeforeElUpdated||noop,c=r.onElUpdated||noop,u=r.onBeforeNodeDiscarded||noop,N=r.onNodeDiscarded||noop,m=r.onBeforeElChildrenUpdated||noop,f=!0===r.childrenOnly,E=Object.create(null),s=[];function p(e){s.push(e)}function T(e,t,n){!1!==u(e)&&(t&&t.removeChild(e),N(e),function e(t,n){if(t.nodeType===ELEMENT_NODE)for(var r=t.firstChild;r;){var o=void 0;n&&(o=a(r))?p(o):(N(r),r.firstChild&&e(r,n)),r=r.nextSibling}}(e,n))}function v(e){d(e);for(var t=e.firstChild;t;){var n=t.nextSibling,r=a(t);if(r){var o=E[r];o&&compareNodeNames(t,o)?(t.parentNode.replaceChild(o,t),A(o,t)):v(t)}else v(t);t=n}}function A(t,n,r){var o=a(n);if(o&&delete E[o],!r){if(!1===l(t,n))return;if(e(t,n),c(t),!1===m(t,n))return}"TEXTAREA"!==t.nodeName?function(e,t){var n,r,o,d,l,c=t.firstChild,u=e.firstChild;e:for(;c;){for(d=c.nextSibling,n=a(c);u;){if(o=u.nextSibling,c.isSameNode&&c.isSameNode(u)){c=d,u=o;continue e}r=a(u);var N=u.nodeType,m=void 0;if(N===c.nodeType&&(N===ELEMENT_NODE?(n?n!==r&&((l=E[n])?o===l?m=!1:(e.insertBefore(l,u),r?p(r):T(u,e,!0),u=l):m=!1):r&&(m=!1),(m=!1!==m&&compareNodeNames(u,c))&&A(u,c)):N!==TEXT_NODE&&N!=COMMENT_NODE||(m=!0,u.nodeValue!==c.nodeValue&&(u.nodeValue=c.nodeValue))),m){c=d,u=o;continue e}r?p(r):T(u,e,!0),u=o}if(n&&(l=E[n])&&compareNodeNames(l,c))e.appendChild(l),A(l,c);else{var f=i(c);!1!==f&&(f&&(c=f),c.actualize&&(c=c.actualize(e.ownerDocument||doc)),e.appendChild(c),v(c))}c=d,u=o}!function(e,t,n){for(;t;){var r=t.nextSibling;(n=a(t))?p(n):T(t,e,!0),t=r}}(e,u,r);var s=specialElHandlers[e.nodeName];s&&s(e,t)}(t,n):specialElHandlers.TEXTAREA(t,n)}!function e(t){if(t.nodeType===ELEMENT_NODE||t.nodeType===DOCUMENT_FRAGMENT_NODE$1)for(var n=t.firstChild;n;){var r=a(n);r&&(E[r]=n),e(n),n=n.nextSibling}}(t);var h=t,O=h.nodeType,C=n.nodeType;if(!f)if(O===ELEMENT_NODE)C===ELEMENT_NODE?compareNodeNames(t,n)||(N(t),h=moveChildren(t,createElementNS(n.nodeName,n.namespaceURI))):h=n;else if(O===TEXT_NODE||O===COMMENT_NODE){if(C===O)return h.nodeValue!==n.nodeValue&&(h.nodeValue=n.nodeValue),h;h=n}if(h===n)N(t);else{if(n.isSameNode&&n.isSameNode(h))return;if(A(h,n,f),s)for(var b=0,g=s.length;b<g;b++){var S=E[s[b]];S&&T(S,S.parentNode,!1)}}return!f&&h!==t&&t.parentNode&&(h.actualize&&(h=h.actualize(t.ownerDocument||doc)),t.parentNode.replaceChild(h,t)),h}}var morphdom=morphdomFactory(morphAttrs);module.exports=morphdom;
2893
2896
 
2894
- },{}],699:[function(require,module,exports){
2897
+ },{}],700:[function(require,module,exports){
2895
2898
  "use strict";var ProxyDisposable=function(){function s(s,i){this.source=s,this.sink=i,this.disposed=!1}return s.prototype.dispose=function(){if(!this.disposed)return this.disposed=!0,0===this.source.remove(this.sink)&&this.source._dispose()},s}();exports.ProxyDisposable=ProxyDisposable;
2896
2899
 
2897
- },{}],700:[function(require,module,exports){
2900
+ },{}],701:[function(require,module,exports){
2898
2901
  "use strict";var __extends=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)r.hasOwnProperty(e)&&(t[e]=r[e])};return function(r,e){function o(){this.constructor=r}t(r,e),r.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)}}(),most_1=require("most"),multicast_1=require("@most/multicast"),ProxyDisposable_1=require("./ProxyDisposable"),neverSource=most_1.never().source,ProxySource=function(t){function r(){var r=t.call(this,neverSource)||this;return r.attached=!1,r.running=!1,r.sinks=[],r}return __extends(r,t),r.prototype.run=function(t,r){return this.add(t),this.attached&&!this.running?(this.running=!0,this._disposable=this.source.run(this,r),this._disposable):new ProxyDisposable_1.ProxyDisposable(this,t)},r.prototype.attach=function(t){if(this.attached)throw new Error("Can only proxy 1 stream");this.attached=!0,this.sinks.length?this._disposable=t.run(this,most_1.defaultScheduler):this.source=t},r.prototype.end=function(r,e){return this.attached=!1,this.running=!1,t.prototype.end.call(this,r,e)},r}(multicast_1.MulticastSource);exports.ProxySource=ProxySource;
2899
2902
 
2900
- },{"./ProxyDisposable":699,"@most/multicast":702,"most":740}],701:[function(require,module,exports){
2903
+ },{"./ProxyDisposable":700,"@most/multicast":703,"most":741}],702:[function(require,module,exports){
2901
2904
  "use strict";var most_1=require("most"),ProxySource_1=require("./ProxySource");function proxy(){var r=new ProxySource_1.ProxySource;return{attach:function(o){return r.attach(o.source),o},stream:new most_1.Stream(r)}}exports.proxy=proxy;
2902
2905
 
2903
- },{"./ProxySource":700,"most":740}],702:[function(require,module,exports){
2906
+ },{"./ProxySource":701,"most":741}],703:[function(require,module,exports){
2904
2907
  !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@most/prelude")):"function"==typeof define&&define.amd?define(["exports","@most/prelude"],e):e(t.mostMulticast=t.mostMulticast||{},t.mostPrelude)}(this,function(t,e){"use strict";var s=function(t,e){this.source=t,this.sink=e,this.disposed=!1};function i(t,e,s){try{s.event(t,e)}catch(e){s.error(t,e)}}function n(t,e,s){try{s.end(t,e)}catch(e){s.error(t,e)}}s.prototype.dispose=function(){if(!this.disposed)return this.disposed=!0,0===this.source.remove(this.sink)&&this.source._dispose()};var o=function(t){return t.dispose()},r={dispose:function(){}},u=function(t){this.source=t,this.sinks=[],this._disposable=r};u.prototype.run=function(t,e){return 1===this.add(t)&&(this._disposable=this.source.run(this,e)),new s(this,t)},u.prototype._dispose=function(){var t=this._disposable;return this._disposable=r,Promise.resolve(t).then(o)},u.prototype.add=function(t){return this.sinks=e.append(t,this.sinks),this.sinks.length},u.prototype.remove=function(t){var s=e.findIndex(t,this.sinks);return s>=0&&(this.sinks=e.remove(s,this.sinks)),this.sinks.length},u.prototype.event=function(t,e){var s=this.sinks;if(1===s.length)return s[0].event(t,e);for(var n=0;n<s.length;++n)i(t,e,s[n])},u.prototype.end=function(t,e){for(var s=this.sinks,i=0;i<s.length;++i)n(t,e,s[i])},u.prototype.error=function(t,e){for(var s=this.sinks,i=0;i<s.length;++i)s[i].error(t,e)},t.default=function(t){var e=t.source;return e instanceof u?t:new t.constructor(new u(e))},t.MulticastSource=u,Object.defineProperty(t,"__esModule",{value:!0})});
2905
2908
 
2906
- },{"@most/prelude":703}],703:[function(require,module,exports){
2909
+ },{"@most/prelude":704}],704:[function(require,module,exports){
2907
2910
  !function(r,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((r=r||self).mostPrelude={})}(this,function(r){"use strict";function n(r,n){if(r<0)throw new TypeError("n must be >= 0");var e=n.length;return 0===r||0===e?n:r>=e?[]:function(r,n,e){for(var t=new Array(e),u=0;u<e;++u)t[u]=n[r+u];return t}(r,n,e-r)}function e(r){return function n(e,t){switch(arguments.length){case 0:return n;case 1:return function(n){return r(e,n)};default:return r(e,t)}}}function t(r){return function n(t,u,o){switch(arguments.length){case 0:return n;case 1:return e(function(n,e){return r(t,n,e)});case 2:return function(n){return r(t,u,n)};default:return r(t,u,o)}}}r.append=function(r,n){for(var e=n.length,t=new Array(e+1),u=0;u<e;++u)t[u]=n[u];return t[e]=r,t},r.apply=function(r,n){return r(n)},r.compose=function(r,n){return function(e){return r(n(e))}},r.concat=function(r,n){var e=r.length,t=n.length,u=new Array(e+t),o=0;for(o=0;o<e;o++)u[o]=r[o];for(var f=0;f<t;f++)u[o++]=n[f];return u},r.cons=function(r,n){var e=n.length,t=new Array(e+1);t[0]=r;for(var u=0;u<e;++u)t[u+1]=n[u];return t},r.copy=function(r){for(var n=r.length,e=new Array(n),t=0;t<n;++t)e[t]=r[t];return e},r.curry2=e,r.curry3=t,r.curry4=function(r){return function n(u,o,f,c){switch(arguments.length){case 0:return n;case 1:return t(function(n,e,t){return r(u,n,e,t)});case 2:return e(function(n,e){return r(u,o,n,e)});case 3:return function(n){return r(u,o,f,n)};default:return r(u,o,f,c)}}},r.drop=n,r.findIndex=function(r,n){for(var e=0,t=n.length;e<t;++e)if(r===n[e])return e;return-1},r.id=function(r){return r},r.isArrayLike=function(r){return null!=r&&"number"==typeof r.length&&"function"!=typeof r},r.map=function(r,n){for(var e=n.length,t=new Array(e),u=0;u<e;++u)t[u]=r(n[u]);return t},r.reduce=function(r,n,e){for(var t=n,u=0,o=e.length;u<o;++u)t=r(t,e[u],u);return t},r.remove=function(r,n){if(r<0)throw new TypeError("i must be >= 0");var e=n.length;return 0===e||r>=e?n:1===e?[]:function(r,n,e){var t,u=new Array(e);for(t=0;t<r;++t)u[t]=n[t];for(t=r;t<e;++t)u[t]=n[t+1];return u}(r,n,e-1)},r.removeAll=function(r,n){for(var e=n.length,t=new Array(e),u=0,o=void 0,f=0;f<e;++f)r(o=n[f])||(t[u]=o,++u);return t.length=u,t},r.replace=function(r,n,e){if(n<0)throw new TypeError("i must be >= 0");for(var t=e.length,u=new Array(t),o=0;o<t;++o)u[o]=n===o?r:e[o];return u},r.tail=function(r){return n(1,r)},Object.defineProperty(r,"__esModule",{value:!0})});
2908
2911
 
2909
- },{}],704:[function(require,module,exports){
2912
+ },{}],705:[function(require,module,exports){
2910
2913
  "use strict";function LinkedList(){this.head=null,this.length=0}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=LinkedList,LinkedList.prototype.add=function(e){null!==this.head&&(this.head.prev=e,e.next=this.head),this.head=e,++this.length},LinkedList.prototype.remove=function(e){--this.length,e===this.head&&(this.head=this.head.next),null!==e.next&&(e.next.prev=e.prev,e.next=null),null!==e.prev&&(e.prev.next=e.next,e.prev=null)},LinkedList.prototype.isEmpty=function(){return 0===this.length},LinkedList.prototype.dispose=function(){if(this.isEmpty())return Promise.resolve();var e=[],t=this.head;for(this.head=null,this.length=0;null!==t;)e.push(t.dispose()),t=t.next;return Promise.all(e)};
2911
2914
 
2912
- },{}],705:[function(require,module,exports){
2915
+ },{}],706:[function(require,module,exports){
2913
2916
  "use strict";function isPromise(e){return null!==e&&"object"==typeof e&&"function"==typeof e.then}Object.defineProperty(exports,"__esModule",{value:!0}),exports.isPromise=isPromise;
2914
2917
 
2915
- },{}],706:[function(require,module,exports){
2918
+ },{}],707:[function(require,module,exports){
2916
2919
  "use strict";function Queue(t){this._capacity=t||32,this._length=0,this._head=0}function copy(t,e,i,h,s){for(var a=0;a<s;++a)i[a+h]=t[a+e],t[a+e]=void 0}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Queue,Queue.prototype.push=function(t){var e=this._length;this._checkCapacity(e+1),this[this._head+e&this._capacity-1]=t,this._length=e+1},Queue.prototype.shift=function(){var t=this._head,e=this[t];return this[t]=void 0,this._head=t+1&this._capacity-1,this._length--,e},Queue.prototype.isEmpty=function(){return 0===this._length},Queue.prototype.length=function(){return this._length},Queue.prototype._checkCapacity=function(t){this._capacity<t&&this._ensureCapacity(this._capacity<<1)},Queue.prototype._ensureCapacity=function(t){var e=this._capacity;this._capacity=t;var i=this._head+this._length;i>e&&copy(this,0,this,e,i&e-1)};
2917
2920
 
2918
- },{}],707:[function(require,module,exports){
2921
+ },{}],708:[function(require,module,exports){
2919
2922
  "use strict";function Stream(e){this.source=e}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Stream,Stream.prototype.run=function(e,t){return this.source.run(e,t)};
2920
2923
 
2921
- },{}],708:[function(require,module,exports){
2924
+ },{}],709:[function(require,module,exports){
2922
2925
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.scan=scan,exports.reduce=reduce;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe),_runSource=require("../runSource"),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_PropagateTask=require("../scheduler/PropagateTask"),_PropagateTask2=_interopRequireDefault(_PropagateTask);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function scan(e,t,r){return new _Stream2.default(new Scan(e,t,r.source))}function Scan(e,t,r){this.source=r,this.f=e,this.value=t}function ScanSink(e,t,r){this.f=e,this.value=t,this.sink=r}function reduce(e,t,r){return(0,_runSource.withDefaultScheduler)(new Reduce(e,t,r.source))}function Reduce(e,t,r){this.source=r,this.f=e,this.value=t}function ReduceSink(e,t,r){this.f=e,this.value=t,this.sink=r}Scan.prototype.run=function(e,t){var r=t.asap(_PropagateTask2.default.event(this.value,e)),i=this.source.run(new ScanSink(this.f,this.value,e),t);return dispose.all([r,i])},ScanSink.prototype.event=function(e,t){var r=this.f;this.value=r(this.value,t),this.sink.event(e,this.value)},ScanSink.prototype.error=_Pipe2.default.prototype.error,ScanSink.prototype.end=_Pipe2.default.prototype.end,Reduce.prototype.run=function(e,t){return this.source.run(new ReduceSink(this.f,this.value,e),t)},ReduceSink.prototype.event=function(e,t){var r=this.f;this.value=r(this.value,t),this.sink.event(e,this.value)},ReduceSink.prototype.error=_Pipe2.default.prototype.error,ReduceSink.prototype.end=function(e){this.sink.end(e,this.value)};
2923
2926
 
2924
- },{"../Stream":707,"../disposable/dispose":735,"../runSource":746,"../scheduler/PropagateTask":748,"../sink/Pipe":755}],709:[function(require,module,exports){
2927
+ },{"../Stream":708,"../disposable/dispose":736,"../runSource":747,"../scheduler/PropagateTask":749,"../sink/Pipe":756}],710:[function(require,module,exports){
2925
2928
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ap=ap;var _combine=require("./combine"),_prelude=require("@most/prelude");function ap(e,r){return(0,_combine.combine)(_prelude.apply,e,r)}
2926
2929
 
2927
- },{"./combine":711,"@most/prelude":771}],710:[function(require,module,exports){
2930
+ },{"./combine":712,"@most/prelude":772}],711:[function(require,module,exports){
2928
2931
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.cons=cons,exports.concat=concat;var _core=require("../source/core"),_continueWith=require("./continueWith");function cons(e,n){return concat((0,_core.of)(e),n)}function concat(e,n){return(0,_continueWith.continueWith)(function(){return n},e)}
2929
2932
 
2930
- },{"../source/core":759,"./continueWith":713}],711:[function(require,module,exports){
2933
+ },{"../source/core":760,"./continueWith":714}],712:[function(require,module,exports){
2931
2934
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.combine=combine,exports.combineArray=combineArray;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_transform=require("./transform"),transform=_interopRequireWildcard(_transform),_core=require("../source/core"),core=_interopRequireWildcard(_core),_Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe),_IndexSink=require("../sink/IndexSink"),_IndexSink2=_interopRequireDefault(_IndexSink),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_prelude=require("@most/prelude"),base=_interopRequireWildcard(_prelude),_invoke=require("../invoke"),_invoke2=_interopRequireDefault(_invoke);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i[r]=e[r]);return i.default=e,i}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var map=base.map,tail=base.tail;function combine(e){return combineArray(e,tail(arguments))}function combineArray(e,i){var r=i.length;return 0===r?core.empty():1===r?transform.map(e,i[0]):new _Stream2.default(combineSources(e,i))}function combineSources(e,i){return new Combine(e,map(getSource,i))}function getSource(e){return e.source}function Combine(e,i){this.f=e,this.sources=i}function CombineSink(e,i,r,t){this.sink=r,this.disposables=e,this.sinks=i,this.f=t;var n=i.length;this.awaiting=n,this.values=new Array(n),this.hasValue=new Array(n);for(var o=0;o<n;++o)this.hasValue[o]=!1;this.activeCount=i.length}Combine.prototype.run=function(e,i){for(var r,t=this.sources.length,n=new Array(t),o=new Array(t),s=new CombineSink(n,o,e,this.f),a=0;a<t;++a)r=o[a]=new _IndexSink2.default(a,s),n[a]=this.sources[a].run(r,i);return dispose.all(n)},CombineSink.prototype.error=_Pipe2.default.prototype.error,CombineSink.prototype.event=function(e,i){var r=i.index,t=this._updateReady(r);this.values[r]=i.value,0===t&&this.sink.event(e,(0,_invoke2.default)(this.f,this.values))},CombineSink.prototype._updateReady=function(e){return this.awaiting>0&&(this.hasValue[e]||(this.hasValue[e]=!0,this.awaiting-=1)),this.awaiting},CombineSink.prototype.end=function(e,i){dispose.tryDispose(e,this.disposables[i.index],this.sink),0==--this.activeCount&&this.sink.end(e,i.value)};
2932
2935
 
2933
- },{"../Stream":707,"../disposable/dispose":735,"../invoke":741,"../sink/IndexSink":754,"../sink/Pipe":755,"../source/core":759,"./transform":731,"@most/prelude":771}],712:[function(require,module,exports){
2936
+ },{"../Stream":708,"../disposable/dispose":736,"../invoke":742,"../sink/IndexSink":755,"../sink/Pipe":756,"../source/core":760,"./transform":732,"@most/prelude":772}],713:[function(require,module,exports){
2934
2937
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.concatMap=concatMap;var _mergeConcurrently=require("./mergeConcurrently");function concatMap(e,r){return(0,_mergeConcurrently.mergeMapConcurrently)(e,1,r)}
2935
2938
 
2936
- },{"./mergeConcurrently":721}],713:[function(require,module,exports){
2939
+ },{"./mergeConcurrently":722}],714:[function(require,module,exports){
2937
2940
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.continueWith=continueWith;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose);function _interopRequireWildcard(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function continueWith(t,e){return new _Stream2.default(new ContinueWith(t,e.source))}function ContinueWith(t,e){this.f=t,this.source=e}function ContinueWithSink(t,e,i,n){this.f=t,this.sink=i,this.scheduler=n,this.active=!0,this.disposable=dispose.once(e.run(this,n))}ContinueWith.prototype.run=function(t,e){return new ContinueWithSink(this.f,this.source,t,e)},ContinueWithSink.prototype.error=_Pipe2.default.prototype.error,ContinueWithSink.prototype.event=function(t,e){this.active&&this.sink.event(t,e)},ContinueWithSink.prototype.end=function(t,e){this.active&&(dispose.tryDispose(t,this.disposable,this.sink),this._startNext(t,e,this.sink))},ContinueWithSink.prototype._startNext=function(t,e,i){try{this.disposable=this._continue(this.f,e,i)}catch(e){i.error(t,e)}},ContinueWithSink.prototype._continue=function(t,e,i){return t(e).source.run(i,this.scheduler)},ContinueWithSink.prototype.dispose=function(){return this.active=!1,this.disposable.dispose()};
2938
2941
 
2939
- },{"../Stream":707,"../disposable/dispose":735,"../sink/Pipe":755}],714:[function(require,module,exports){
2942
+ },{"../Stream":708,"../disposable/dispose":736,"../sink/Pipe":756}],715:[function(require,module,exports){
2940
2943
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.delay=delay;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_PropagateTask=require("../scheduler/PropagateTask"),_PropagateTask2=_interopRequireDefault(_PropagateTask);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function delay(e,t){return e<=0?t:new _Stream2.default(new Delay(e,t.source))}function Delay(e,t){this.dt=e,this.source=t}function DelaySink(e,t,r){this.dt=e,this.sink=t,this.scheduler=r}Delay.prototype.run=function(e,t){var r=new DelaySink(this.dt,e,t);return dispose.all([r,this.source.run(r,t)])},DelaySink.prototype.dispose=function(){var e=this;this.scheduler.cancelAll(function(t){return t.task.sink===e.sink})},DelaySink.prototype.event=function(e,t){this.scheduler.delay(this.dt,_PropagateTask2.default.event(t,this.sink))},DelaySink.prototype.end=function(e,t){this.scheduler.delay(this.dt,_PropagateTask2.default.end(t,this.sink))},DelaySink.prototype.error=_Pipe2.default.prototype.error;
2941
2944
 
2942
- },{"../Stream":707,"../disposable/dispose":735,"../scheduler/PropagateTask":748,"../sink/Pipe":755}],715:[function(require,module,exports){
2945
+ },{"../Stream":708,"../disposable/dispose":736,"../scheduler/PropagateTask":749,"../sink/Pipe":756}],716:[function(require,module,exports){
2943
2946
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.flatMapError=void 0,exports.recoverWith=recoverWith,exports.throwError=throwError;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_SafeSink=require("../sink/SafeSink"),_SafeSink2=_interopRequireDefault(_SafeSink),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_tryEvent=require("../source/tryEvent"),tryEvent=_interopRequireWildcard(_tryEvent),_PropagateTask=require("../scheduler/PropagateTask"),_PropagateTask2=_interopRequireDefault(_PropagateTask);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r.default=e,r}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function recoverWith(e,r){return new _Stream2.default(new RecoverWith(e,r.source))}var flatMapError=exports.flatMapError=recoverWith;function throwError(e){return new _Stream2.default(new ErrorSource(e))}function ErrorSource(e){this.value=e}function runError(e,r,t){t.error(e,r)}function RecoverWith(e,r){this.f=e,this.source=r}function RecoverWithSink(e,r,t,i){this.f=e,this.sink=new _SafeSink2.default(t),this.scheduler=i,this.disposable=r.run(this,i)}ErrorSource.prototype.run=function(e,r){return r.asap(new _PropagateTask2.default(runError,this.value,e))},RecoverWith.prototype.run=function(e,r){return new RecoverWithSink(this.f,this.source,e,r)},RecoverWithSink.prototype.event=function(e,r){tryEvent.tryEvent(e,r,this.sink)},RecoverWithSink.prototype.end=function(e,r){tryEvent.tryEnd(e,r,this.sink)},RecoverWithSink.prototype.error=function(e,r){var t=this.sink.disable();dispose.tryDispose(e,this.disposable,this.sink),this._startNext(e,r,t)},RecoverWithSink.prototype._startNext=function(e,r,t){try{this.disposable=this._continue(this.f,r,t)}catch(r){t.error(e,r)}},RecoverWithSink.prototype._continue=function(e,r,t){return e(r).source.run(t,this.scheduler)},RecoverWithSink.prototype.dispose=function(){return this.disposable.dispose()};
2944
2947
 
2945
- },{"../Stream":707,"../disposable/dispose":735,"../scheduler/PropagateTask":748,"../sink/SafeSink":756,"../source/tryEvent":767}],716:[function(require,module,exports){
2948
+ },{"../Stream":708,"../disposable/dispose":736,"../scheduler/PropagateTask":749,"../sink/SafeSink":757,"../source/tryEvent":768}],717:[function(require,module,exports){
2946
2949
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.filter=filter,exports.skipRepeats=skipRepeats,exports.skipRepeatsWith=skipRepeatsWith;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe),_Filter=require("../fusion/Filter"),_Filter2=_interopRequireDefault(_Filter);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function filter(e,t){return new _Stream2.default(_Filter2.default.create(e,t.source))}function skipRepeats(e){return skipRepeatsWith(same,e)}function skipRepeatsWith(e,t){return new _Stream2.default(new SkipRepeats(e,t.source))}function SkipRepeats(e,t){this.equals=e,this.source=t}function SkipRepeatsSink(e,t){this.equals=e,this.sink=t,this.value=void 0,this.init=!0}function same(e,t){return e===t}SkipRepeats.prototype.run=function(e,t){return this.source.run(new SkipRepeatsSink(this.equals,e),t)},SkipRepeatsSink.prototype.end=_Pipe2.default.prototype.end,SkipRepeatsSink.prototype.error=_Pipe2.default.prototype.error,SkipRepeatsSink.prototype.event=function(e,t){this.init?(this.init=!1,this.value=t,this.sink.event(e,t)):this.equals(this.value,t)||(this.value=t,this.sink.event(e,t))};
2947
2950
 
2948
- },{"../Stream":707,"../fusion/Filter":737,"../sink/Pipe":755}],717:[function(require,module,exports){
2951
+ },{"../Stream":708,"../fusion/Filter":738,"../sink/Pipe":756}],718:[function(require,module,exports){
2949
2952
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.flatMap=flatMap,exports.join=join;var _mergeConcurrently=require("./mergeConcurrently");function flatMap(e,r){return(0,_mergeConcurrently.mergeMapConcurrently)(e,1/0,r)}function join(e){return(0,_mergeConcurrently.mergeConcurrently)(1/0,e)}
2950
2953
 
2951
- },{"./mergeConcurrently":721}],718:[function(require,module,exports){
2954
+ },{"./mergeConcurrently":722}],719:[function(require,module,exports){
2952
2955
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.throttle=throttle,exports.debounce=debounce;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe),_Map=require("../fusion/Map"),_Map2=_interopRequireDefault(_Map);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function throttle(e,t){return new _Stream2.default(throttleSource(e,t.source))}function throttleSource(e,t){return t instanceof _Map2.default?commuteMapThrottle(e,t):t instanceof Throttle?fuseThrottle(e,t):new Throttle(e,t)}function commuteMapThrottle(e,t){return _Map2.default.create(t.f,throttleSource(e,t.source))}function fuseThrottle(e,t){return new Throttle(Math.max(e,t.period),t.source)}function Throttle(e,t){this.period=e,this.source=t}function ThrottleSink(e,t){this.time=0,this.period=e,this.sink=t}function debounce(e,t){return new _Stream2.default(new Debounce(e,t.source))}function Debounce(e,t){this.dt=e,this.source=t}function DebounceSink(e,t,o,r){this.dt=e,this.sink=o,this.scheduler=r,this.value=void 0,this.timer=null,this.disposable=t.run(this,r)}function DebounceTask(e,t){this.debounce=e,this.value=t}Throttle.prototype.run=function(e,t){return this.source.run(new ThrottleSink(this.period,e),t)},ThrottleSink.prototype.event=function(e,t){e>=this.time&&(this.time=e+this.period,this.sink.event(e,t))},ThrottleSink.prototype.end=_Pipe2.default.prototype.end,ThrottleSink.prototype.error=_Pipe2.default.prototype.error,Debounce.prototype.run=function(e,t){return new DebounceSink(this.dt,this.source,e,t)},DebounceSink.prototype.event=function(e,t){this._clearTimer(),this.value=t,this.timer=this.scheduler.delay(this.dt,new DebounceTask(this,t))},DebounceSink.prototype._event=function(e,t){this._clearTimer(),this.sink.event(e,t)},DebounceSink.prototype.end=function(e,t){this._clearTimer()&&(this.sink.event(e,this.value),this.value=void 0),this.sink.end(e,t)},DebounceSink.prototype.error=function(e,t){this._clearTimer(),this.sink.error(e,t)},DebounceSink.prototype.dispose=function(){return this._clearTimer(),this.disposable.dispose()},DebounceSink.prototype._clearTimer=function(){return null!==this.timer&&(this.timer.dispose(),this.timer=null,!0)},DebounceTask.prototype.run=function(e){this.debounce._event(e,this.value)},DebounceTask.prototype.error=function(e,t){this.debounce.error(e,t)},DebounceTask.prototype.dispose=function(){};
2953
2956
 
2954
- },{"../Stream":707,"../fusion/Map":739,"../sink/Pipe":755}],719:[function(require,module,exports){
2957
+ },{"../Stream":708,"../fusion/Map":740,"../sink/Pipe":756}],720:[function(require,module,exports){
2955
2958
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.loop=loop;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function loop(e,t,o){return new _Stream2.default(new Loop(e,t,o.source))}function Loop(e,t,o){this.step=e,this.seed=t,this.source=o}function LoopSink(e,t,o){this.step=e,this.seed=t,this.sink=o}Loop.prototype.run=function(e,t){return this.source.run(new LoopSink(this.step,this.seed,e),t)},LoopSink.prototype.error=_Pipe2.default.prototype.error,LoopSink.prototype.event=function(e,t){var o=this.step(this.seed,t);this.seed=o.seed,this.sink.event(e,o.value)},LoopSink.prototype.end=function(e){this.sink.end(e,this.seed)};
2956
2959
 
2957
- },{"../Stream":707,"../sink/Pipe":755}],720:[function(require,module,exports){
2960
+ },{"../Stream":708,"../sink/Pipe":756}],721:[function(require,module,exports){
2958
2961
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.merge=merge,exports.mergeArray=mergeArray;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe),_IndexSink=require("../sink/IndexSink"),_IndexSink2=_interopRequireDefault(_IndexSink),_core=require("../source/core"),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_prelude=require("@most/prelude"),base=_interopRequireWildcard(_prelude);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r.default=e,r}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var copy=base.copy,reduce=base.reduce;function merge(){return mergeArray(copy(arguments))}function mergeArray(e){var r=e.length;return 0===r?(0,_core.empty)():1===r?e[0]:new _Stream2.default(mergeSources(e))}function mergeSources(e){return new Merge(reduce(appendSources,[],e))}function appendSources(e,r){var t=r.source;return t instanceof Merge?e.concat(t.sources):e.concat(t)}function Merge(e){this.sources=e}function MergeSink(e,r,t){this.sink=t,this.disposables=e,this.activeCount=r.length}Merge.prototype.run=function(e,r){for(var t,n=this.sources.length,i=new Array(n),o=new Array(n),u=new MergeSink(i,o,e),s=0;s<n;++s)t=o[s]=new _IndexSink2.default(s,u),i[s]=this.sources[s].run(t,r);return dispose.all(i)},MergeSink.prototype.error=_Pipe2.default.prototype.error,MergeSink.prototype.event=function(e,r){this.sink.event(e,r.value)},MergeSink.prototype.end=function(e,r){dispose.tryDispose(e,this.disposables[r.index],this.sink),0==--this.activeCount&&this.sink.end(e,r.value)};
2959
2962
 
2960
- },{"../Stream":707,"../disposable/dispose":735,"../sink/IndexSink":754,"../sink/Pipe":755,"../source/core":759,"@most/prelude":771}],721:[function(require,module,exports){
2963
+ },{"../Stream":708,"../disposable/dispose":736,"../sink/IndexSink":755,"../sink/Pipe":756,"../source/core":760,"@most/prelude":772}],722:[function(require,module,exports){
2961
2964
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.mergeConcurrently=mergeConcurrently,exports.mergeMapConcurrently=mergeMapConcurrently;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_LinkedList=require("../LinkedList"),_LinkedList2=_interopRequireDefault(_LinkedList),_prelude=require("@most/prelude");function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function mergeConcurrently(e,t){return mergeMapConcurrently(_prelude.id,e,t)}function mergeMapConcurrently(e,t,r){return new _Stream2.default(new MergeConcurrently(e,t,r.source))}function MergeConcurrently(e,t,r){this.f=e,this.concurrency=t,this.source=r}function Outer(e,t,r,n,i){this.f=e,this.concurrency=t,this.sink=n,this.scheduler=i,this.pending=[],this.current=new _LinkedList2.default,this.disposable=dispose.once(r.run(this,i)),this.active=!0}function mapAndRun(e,t,r,n){return e(t).source.run(r,n)}function Inner(e,t,r){this.prev=this.next=null,this.time=e,this.outer=t,this.sink=r,this.disposable=void 0}MergeConcurrently.prototype.run=function(e,t){return new Outer(this.f,this.concurrency,this.source,e,t)},Outer.prototype.event=function(e,t){this._addInner(e,t)},Outer.prototype._addInner=function(e,t){this.current.length<this.concurrency?this._startInner(e,t):this.pending.push(t)},Outer.prototype._startInner=function(e,t){try{this._initInner(e,t)}catch(t){this.error(e,t)}},Outer.prototype._initInner=function(e,t){var r=new Inner(e,this,this.sink);r.disposable=mapAndRun(this.f,t,r,this.scheduler),this.current.add(r)},Outer.prototype.end=function(e,t){this.active=!1,dispose.tryDispose(e,this.disposable,this.sink),this._checkEnd(e,t)},Outer.prototype.error=function(e,t){this.active=!1,this.sink.error(e,t)},Outer.prototype.dispose=function(){return this.active=!1,this.pending.length=0,Promise.all([this.disposable.dispose(),this.current.dispose()])},Outer.prototype._endInner=function(e,t,r){this.current.remove(r),dispose.tryDispose(e,r,this),0===this.pending.length?this._checkEnd(e,t):this._startInner(e,this.pending.shift())},Outer.prototype._checkEnd=function(e,t){!this.active&&this.current.isEmpty()&&this.sink.end(e,t)},Inner.prototype.event=function(e,t){this.sink.event(Math.max(e,this.time),t)},Inner.prototype.end=function(e,t){this.outer._endInner(Math.max(e,this.time),t,this)},Inner.prototype.error=function(e,t){this.outer.error(Math.max(e,this.time),t)},Inner.prototype.dispose=function(){return this.disposable.dispose()};
2962
2965
 
2963
- },{"../LinkedList":704,"../Stream":707,"../disposable/dispose":735,"@most/prelude":771}],722:[function(require,module,exports){
2966
+ },{"../LinkedList":705,"../Stream":708,"../disposable/dispose":736,"@most/prelude":772}],723:[function(require,module,exports){
2964
2967
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.observe=observe,exports.drain=drain;var _runSource=require("../runSource"),_transform=require("./transform");function observe(r,e){return drain((0,_transform.tap)(r,e))}function drain(r){return(0,_runSource.withDefaultScheduler)(r.source)}
2965
2968
 
2966
- },{"../runSource":746,"./transform":731}],723:[function(require,module,exports){
2969
+ },{"../runSource":747,"./transform":732}],724:[function(require,module,exports){
2967
2970
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.fromPromise=fromPromise,exports.awaitPromises=awaitPromises;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_fatalError=require("../fatalError"),_fatalError2=_interopRequireDefault(_fatalError),_core=require("../source/core");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function fromPromise(e){return awaitPromises((0,_core.of)(e))}function awaitPromises(e){return new _Stream2.default(new Await(e.source))}function Await(e){this.source=e}function AwaitSink(e,t){this.sink=e,this.scheduler=t,this.queue=Promise.resolve();var r=this;this._eventBound=function(e){r.sink.event(r.scheduler.now(),e)},this._endBound=function(e){r.sink.end(r.scheduler.now(),e)},this._errorBound=function(e){r.sink.error(r.scheduler.now(),e)}}Await.prototype.run=function(e,t){return this.source.run(new AwaitSink(e,t),t)},AwaitSink.prototype.event=function(e,t){var r=this;this.queue=this.queue.then(function(){return r._event(t)}).catch(this._errorBound)},AwaitSink.prototype.end=function(e,t){var r=this;this.queue=this.queue.then(function(){return r._end(t)}).catch(this._errorBound)},AwaitSink.prototype.error=function(e,t){var r=this;this.queue=this.queue.then(function(){return r._errorBound(t)}).catch(_fatalError2.default)},AwaitSink.prototype._event=function(e){return e.then(this._eventBound)},AwaitSink.prototype._end=function(e){return Promise.resolve(e).then(this._endBound)};
2968
2971
 
2969
- },{"../Stream":707,"../fatalError":736,"../source/core":759}],724:[function(require,module,exports){
2972
+ },{"../Stream":708,"../fatalError":737,"../source/core":760}],725:[function(require,module,exports){
2970
2973
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.sample=sample,exports.sampleWith=sampleWith,exports.sampleArray=sampleArray;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_prelude=require("@most/prelude"),base=_interopRequireWildcard(_prelude),_invoke=require("../invoke"),_invoke2=_interopRequireDefault(_invoke);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r.default=e,r}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function sample(e,r){return sampleArray(e,r,base.drop(2,arguments))}function sampleWith(e,r){return new _Stream2.default(new Sampler(base.id,e.source,[r.source]))}function sampleArray(e,r,t){return new _Stream2.default(new Sampler(e,r.source,base.map(getSource,t)))}function getSource(e){return e.source}function Sampler(e,r,t){this.f=e,this.sampler=r,this.sources=t}function Hold(e){this.sink=e,this.hasValue=!1}function SampleSink(e,r,t){this.f=e,this.sinks=r,this.sink=t,this.active=!1}function hasValue(e){return e.hasValue}function getValue(e){return e.value}Sampler.prototype.run=function(e,r){for(var t,i=this.sources.length,n=new Array(i+1),o=new Array(i),s=new SampleSink(this.f,o,e),a=0;a<i;++a)t=o[a]=new Hold(s),n[a]=this.sources[a].run(t,r);return n[a]=this.sampler.run(s,r),dispose.all(n)},Hold.prototype.event=function(e,r){this.value=r,this.hasValue=!0,this.sink._notify(this)},Hold.prototype.end=function(){},Hold.prototype.error=_Pipe2.default.prototype.error,SampleSink.prototype._notify=function(){this.active||(this.active=this.sinks.every(hasValue))},SampleSink.prototype.event=function(e){this.active&&this.sink.event(e,(0,_invoke2.default)(this.f,base.map(getValue,this.sinks)))},SampleSink.prototype.end=_Pipe2.default.prototype.end,SampleSink.prototype.error=_Pipe2.default.prototype.error;
2971
2974
 
2972
- },{"../Stream":707,"../disposable/dispose":735,"../invoke":741,"../sink/Pipe":755,"@most/prelude":771}],725:[function(require,module,exports){
2975
+ },{"../Stream":708,"../disposable/dispose":736,"../invoke":742,"../sink/Pipe":756,"@most/prelude":772}],726:[function(require,module,exports){
2973
2976
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.take=take,exports.skip=skip,exports.slice=slice,exports.takeWhile=takeWhile,exports.skipWhile=skipWhile,exports.skipAfter=skipAfter;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe),_core=require("../source/core"),core=_interopRequireWildcard(_core),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_Map=require("../fusion/Map"),_Map2=_interopRequireDefault(_Map);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(i[t]=e[t]);return i.default=e,i}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function take(e,i){return slice(0,e,i)}function skip(e,i){return slice(e,1/0,i)}function slice(e,i,t){return i<=e?core.empty():new _Stream2.default(sliceSource(e,i,t.source))}function sliceSource(e,i,t){return t instanceof _Map2.default?commuteMapSlice(e,i,t):t instanceof Slice?fuseSlice(e,i,t):new Slice(e,i,t)}function commuteMapSlice(e,i,t){return _Map2.default.create(t.f,sliceSource(e,i,t.source))}function fuseSlice(e,i,t){return new Slice(e+=t.min,i=Math.min(i+t.min,t.max),t.source)}function Slice(e,i,t){this.source=t,this.min=e,this.max=i}function SliceSink(e,i,t,r){this.sink=t,this.skip=e,this.take=i,this.disposable=r}function takeWhile(e,i){return new _Stream2.default(new TakeWhile(e,i.source))}function TakeWhile(e,i){this.p=e,this.source=i}function TakeWhileSink(e,i,t){this.p=e,this.sink=i,this.active=!0,this.disposable=t}function skipWhile(e,i){return new _Stream2.default(new SkipWhile(e,i.source))}function SkipWhile(e,i){this.p=e,this.source=i}function SkipWhileSink(e,i){this.p=e,this.sink=i,this.skipping=!0}function skipAfter(e,i){return new _Stream2.default(new SkipAfter(e,i.source))}function SkipAfter(e,i){this.p=e,this.source=i}function SkipAfterSink(e,i){this.p=e,this.sink=i,this.skipping=!1}Slice.prototype.run=function(e,i){var t=dispose.settable(),r=new SliceSink(this.min,this.max-this.min,e,t);return t.setDisposable(this.source.run(r,i)),t},SliceSink.prototype.end=_Pipe2.default.prototype.end,SliceSink.prototype.error=_Pipe2.default.prototype.error,SliceSink.prototype.event=function(e,i){this.skip>0?this.skip-=1:0!==this.take&&(this.take-=1,this.sink.event(e,i),0===this.take&&(this.disposable.dispose(),this.sink.end(e,i)))},TakeWhile.prototype.run=function(e,i){var t=dispose.settable(),r=new TakeWhileSink(this.p,e,t);return t.setDisposable(this.source.run(r,i)),t},TakeWhileSink.prototype.end=_Pipe2.default.prototype.end,TakeWhileSink.prototype.error=_Pipe2.default.prototype.error,TakeWhileSink.prototype.event=function(e,i){if(this.active){var t=this.p;this.active=t(i),this.active?this.sink.event(e,i):(this.disposable.dispose(),this.sink.end(e,i))}},SkipWhile.prototype.run=function(e,i){return this.source.run(new SkipWhileSink(this.p,e),i)},SkipWhileSink.prototype.end=_Pipe2.default.prototype.end,SkipWhileSink.prototype.error=_Pipe2.default.prototype.error,SkipWhileSink.prototype.event=function(e,i){if(this.skipping){var t=this.p;if(this.skipping=t(i),this.skipping)return}this.sink.event(e,i)},SkipAfter.prototype.run=function(e,i){return this.source.run(new SkipAfterSink(this.p,e),i)},SkipAfterSink.prototype.event=function(e,i){if(!this.skipping){var t=this.p;this.skipping=t(i),this.sink.event(e,i),this.skipping&&this.sink.end(e,i)}},SkipAfterSink.prototype.end=_Pipe2.default.prototype.end,SkipAfterSink.prototype.error=_Pipe2.default.prototype.error;
2974
2977
 
2975
- },{"../Stream":707,"../disposable/dispose":735,"../fusion/Map":739,"../sink/Pipe":755,"../source/core":759}],726:[function(require,module,exports){
2978
+ },{"../Stream":708,"../disposable/dispose":736,"../fusion/Map":740,"../sink/Pipe":756,"../source/core":760}],727:[function(require,module,exports){
2976
2979
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.switch=void 0,exports.switchLatest=switchLatest;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose);function _interopRequireWildcard(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e.default=t,e}function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function switchLatest(t){return new _Stream2.default(new Switch(t.source))}function Switch(t){this.source=t}function SwitchSink(t,e){this.sink=t,this.scheduler=e,this.current=null,this.ended=!1}function Segment(t,e,i,n){this.min=t,this.max=e,this.outer=i,this.sink=n,this.disposable=dispose.empty()}exports.switch=switchLatest,Switch.prototype.run=function(t,e){var i=new SwitchSink(t,e);return dispose.all([i,this.source.run(i,e)])},SwitchSink.prototype.event=function(t,e){this._disposeCurrent(t),this.current=new Segment(t,1/0,this,this.sink),this.current.disposable=e.source.run(this.current,this.scheduler)},SwitchSink.prototype.end=function(t,e){this.ended=!0,this._checkEnd(t,e)},SwitchSink.prototype.error=function(t,e){this.ended=!0,this.sink.error(t,e)},SwitchSink.prototype.dispose=function(){return this._disposeCurrent(this.scheduler.now())},SwitchSink.prototype._disposeCurrent=function(t){if(null!==this.current)return this.current._dispose(t)},SwitchSink.prototype._disposeInner=function(t,e){e._dispose(t),e===this.current&&(this.current=null)},SwitchSink.prototype._checkEnd=function(t,e){this.ended&&null===this.current&&this.sink.end(t,e)},SwitchSink.prototype._endInner=function(t,e,i){this._disposeInner(t,i),this._checkEnd(t,e)},SwitchSink.prototype._errorInner=function(t,e,i){this._disposeInner(t,i),this.sink.error(t,e)},Segment.prototype.event=function(t,e){t<this.max&&this.sink.event(Math.max(t,this.min),e)},Segment.prototype.end=function(t,e){this.outer._endInner(Math.max(t,this.min),e,this)},Segment.prototype.error=function(t,e){this.outer._errorInner(Math.max(t,this.min),e,this)},Segment.prototype._dispose=function(t){this.max=t,dispose.tryDispose(t,this.disposable,this.sink)};
2977
2980
 
2978
- },{"../Stream":707,"../disposable/dispose":735}],727:[function(require,module,exports){
2981
+ },{"../Stream":708,"../disposable/dispose":736}],728:[function(require,module,exports){
2979
2982
  "use strict";function thru(e,t){return e(t)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.thru=thru;
2980
2983
 
2981
- },{}],728:[function(require,module,exports){
2984
+ },{}],729:[function(require,module,exports){
2982
2985
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.takeUntil=takeUntil,exports.skipUntil=skipUntil,exports.during=during;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_flatMap=require("../combinator/flatMap");function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t.default=e,t}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function takeUntil(e,t){return new _Stream2.default(new Until(e.source,t.source))}function skipUntil(e,t){return new _Stream2.default(new Since(e.source,t.source))}function during(e,t){return takeUntil((0,_flatMap.join)(e),skipUntil(e,t))}function Until(e,t){this.maxSignal=e,this.source=t}function Since(e,t){this.minSignal=e,this.source=t}function Bound(e,t){this.value=e,this.sink=t}function TimeWindowSink(e,t,o){this.min=e,this.max=t,this.sink=o}function LowerBound(e,t,o){this.value=1/0,this.sink=t,this.disposable=e.run(this,o)}function UpperBound(e,t,o){this.value=1/0,this.sink=t,this.disposable=e.run(this,o)}function noop(){}Until.prototype.run=function(e,t){var o=new Bound(-1/0,e),n=new UpperBound(this.maxSignal,e,t),i=this.source.run(new TimeWindowSink(o,n,e),t);return dispose.all([o,n,i])},Since.prototype.run=function(e,t){var o=new LowerBound(this.minSignal,e,t),n=new Bound(1/0,e),i=this.source.run(new TimeWindowSink(o,n,e),t);return dispose.all([o,n,i])},Bound.prototype.error=_Pipe2.default.prototype.error,Bound.prototype.event=noop,Bound.prototype.end=noop,Bound.prototype.dispose=noop,TimeWindowSink.prototype.event=function(e,t){e>=this.min.value&&e<this.max.value&&this.sink.event(e,t)},TimeWindowSink.prototype.error=_Pipe2.default.prototype.error,TimeWindowSink.prototype.end=_Pipe2.default.prototype.end,LowerBound.prototype.event=function(e){e<this.value&&(this.value=e)},LowerBound.prototype.end=noop,LowerBound.prototype.error=_Pipe2.default.prototype.error,LowerBound.prototype.dispose=function(){return this.disposable.dispose()},UpperBound.prototype.event=function(e,t){e<this.value&&(this.value=e,this.sink.end(e,t))},UpperBound.prototype.end=noop,UpperBound.prototype.error=_Pipe2.default.prototype.error,UpperBound.prototype.dispose=function(){return this.disposable.dispose()};
2983
2986
 
2984
- },{"../Stream":707,"../combinator/flatMap":717,"../disposable/dispose":735,"../sink/Pipe":755}],729:[function(require,module,exports){
2987
+ },{"../Stream":708,"../combinator/flatMap":718,"../disposable/dispose":736,"../sink/Pipe":756}],730:[function(require,module,exports){
2985
2988
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.timestamp=timestamp;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function timestamp(e){return new _Stream2.default(new Timestamp(e.source))}function Timestamp(e){this.source=e}function TimestampSink(e){this.sink=e}Timestamp.prototype.run=function(e,t){return this.source.run(new TimestampSink(e),t)},TimestampSink.prototype.end=_Pipe2.default.prototype.end,TimestampSink.prototype.error=_Pipe2.default.prototype.error,TimestampSink.prototype.event=function(e,t){this.sink.event(e,{time:e,value:t})};
2986
2989
 
2987
- },{"../Stream":707,"../sink/Pipe":755}],730:[function(require,module,exports){
2990
+ },{"../Stream":708,"../sink/Pipe":756}],731:[function(require,module,exports){
2988
2991
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.transduce=transduce;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream);function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function transduce(t,e){return new _Stream2.default(new Transduce(t,e.source))}function Transduce(t,e){this.transducer=t,this.source=e}function TransduceSink(t,e){this.xf=t,this.sink=e}function Transformer(t){this.time=-1/0,this.sink=t}function getTxHandler(t){return"function"==typeof t["@@transducer/step"]?new TxAdapter(t):new LegacyTxAdapter(t)}function TxAdapter(t){this.tx=t}function LegacyTxAdapter(t){this.tx=t}Transduce.prototype.run=function(t,e){var r=this.transducer(new Transformer(t));return this.source.run(new TransduceSink(getTxHandler(r),t),e)},TransduceSink.prototype.event=function(t,e){var r=this.xf.step(t,e);return this.xf.isReduced(r)?this.sink.end(t,this.xf.getResult(r)):r},TransduceSink.prototype.end=function(t,e){return this.xf.result(e)},TransduceSink.prototype.error=function(t,e){return this.sink.error(t,e)},Transformer.prototype["@@transducer/init"]=Transformer.prototype.init=function(){},Transformer.prototype["@@transducer/step"]=Transformer.prototype.step=function(t,e){return isNaN(t)||(this.time=Math.max(t,this.time)),this.sink.event(this.time,e)},Transformer.prototype["@@transducer/result"]=Transformer.prototype.result=function(t){return this.sink.end(this.time,t)},TxAdapter.prototype.step=function(t,e){return this.tx["@@transducer/step"](t,e)},TxAdapter.prototype.result=function(t){return this.tx["@@transducer/result"](t)},TxAdapter.prototype.isReduced=function(t){return null!=t&&t["@@transducer/reduced"]},TxAdapter.prototype.getResult=function(t){return t["@@transducer/value"]},LegacyTxAdapter.prototype.step=function(t,e){return this.tx.step(t,e)},LegacyTxAdapter.prototype.result=function(t){return this.tx.result(t)},LegacyTxAdapter.prototype.isReduced=function(t){return null!=t&&t.__transducers_reduced__},LegacyTxAdapter.prototype.getResult=function(t){return t.value};
2989
2992
 
2990
- },{"../Stream":707}],731:[function(require,module,exports){
2993
+ },{"../Stream":708}],732:[function(require,module,exports){
2991
2994
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.map=map,exports.constant=constant,exports.tap=tap;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_Map=require("../fusion/Map"),_Map2=_interopRequireDefault(_Map),_Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function map(e,t){return new _Stream2.default(_Map2.default.create(e,t.source))}function constant(e,t){return map(function(){return e},t)}function tap(e,t){return new _Stream2.default(new Tap(e,t.source))}function Tap(e,t){this.source=t,this.f=e}function TapSink(e,t){this.sink=t,this.f=e}Tap.prototype.run=function(e,t){return this.source.run(new TapSink(this.f,e),t)},TapSink.prototype.end=_Pipe2.default.prototype.end,TapSink.prototype.error=_Pipe2.default.prototype.error,TapSink.prototype.event=function(e,t){(0,this.f)(t),this.sink.event(e,t)};
2992
2995
 
2993
- },{"../Stream":707,"../fusion/Map":739,"../sink/Pipe":755}],732:[function(require,module,exports){
2996
+ },{"../Stream":708,"../fusion/Map":740,"../sink/Pipe":756}],733:[function(require,module,exports){
2994
2997
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.zip=zip,exports.zipArray=zipArray;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_transform=require("./transform"),transform=_interopRequireWildcard(_transform),_core=require("../source/core"),core=_interopRequireWildcard(_core),_Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe),_IndexSink=require("../sink/IndexSink"),_IndexSink2=_interopRequireDefault(_IndexSink),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_prelude=require("@most/prelude"),base=_interopRequireWildcard(_prelude),_invoke=require("../invoke"),_invoke2=_interopRequireDefault(_invoke),_Queue=require("../Queue"),_Queue2=_interopRequireDefault(_Queue);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i]);return r.default=e,r}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var map=base.map,tail=base.tail;function zip(e){return zipArray(e,tail(arguments))}function zipArray(e,r){return 0===r.length?core.empty():1===r.length?transform.map(e,r[0]):new _Stream2.default(new Zip(e,map(getSource,r)))}function getSource(e){return e.source}function Zip(e,r){this.f=e,this.sources=r}function ZipSink(e,r,i,t){this.f=e,this.sinks=i,this.sink=t,this.buffers=r}function emitZipped(e,r,i,t){t.event(r,(0,_invoke2.default)(e,map(head,i)))}function head(e){return e.shift()}function ended(e,r){for(var i=0,t=e.length;i<t;++i)if(e[i].isEmpty()&&!r[i].active)return!0;return!1}function ready(e){for(var r=0,i=e.length;r<i;++r)if(e[r].isEmpty())return!1;return!0}Zip.prototype.run=function(e,r){for(var i,t=this.sources.length,n=new Array(t),u=new Array(t),o=new Array(t),s=new ZipSink(this.f,o,u,e),p=0;p<t;++p)o[p]=new _Queue2.default,i=u[p]=new _IndexSink2.default(p,s),n[p]=this.sources[p].run(i,r);return dispose.all(n)},ZipSink.prototype.event=function(e,r){var i=this.buffers,t=i[r.index];if(t.push(r.value),1===t.length()){if(!ready(this.buffers))return;emitZipped(this.f,e,i,this.sink),ended(this.buffers,this.sinks)&&this.sink.end(e,void 0)}},ZipSink.prototype.end=function(e,r){this.buffers[r.index].isEmpty()&&this.sink.end(e,r.value)},ZipSink.prototype.error=_Pipe2.default.prototype.error;
2995
2998
 
2996
- },{"../Queue":706,"../Stream":707,"../disposable/dispose":735,"../invoke":741,"../sink/IndexSink":754,"../sink/Pipe":755,"../source/core":759,"./transform":731,"@most/prelude":771}],733:[function(require,module,exports){
2999
+ },{"../Queue":707,"../Stream":708,"../disposable/dispose":736,"../invoke":742,"../sink/IndexSink":755,"../sink/Pipe":756,"../source/core":760,"./transform":732,"@most/prelude":772}],734:[function(require,module,exports){
2997
3000
  "use strict";function Disposable(s,e){this._dispose=s,this._data=e}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Disposable,Disposable.prototype.dispose=function(){return this._dispose(this._data)};
2998
3001
 
2999
- },{}],734:[function(require,module,exports){
3002
+ },{}],735:[function(require,module,exports){
3000
3003
  "use strict";function SettableDisposable(){this.disposable=void 0,this.disposed=!1,this._resolve=void 0;var s=this;this.result=new Promise(function(e){s._resolve=e})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=SettableDisposable,SettableDisposable.prototype.setDisposable=function(s){if(void 0!==this.disposable)throw new Error("setDisposable called more than once");this.disposable=s,this.disposed&&this._resolve(s.dispose())},SettableDisposable.prototype.dispose=function(){return this.disposed?this.result:(this.disposed=!0,void 0!==this.disposable&&(this.result=this.disposable.dispose()),this.result)};
3001
3004
 
3002
- },{}],735:[function(require,module,exports){
3005
+ },{}],736:[function(require,module,exports){
3003
3006
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.tryDispose=tryDispose,exports.create=create,exports.empty=empty,exports.all=all,exports.promised=promised,exports.settable=settable,exports.once=once;var _Disposable=require("./Disposable"),_Disposable2=_interopRequireDefault(_Disposable),_SettableDisposable=require("./SettableDisposable"),_SettableDisposable2=_interopRequireDefault(_SettableDisposable),_Promise=require("../Promise"),_prelude=require("@most/prelude"),base=_interopRequireWildcard(_prelude);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var s={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(s[r]=e[r]);return s.default=e,s}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var map=base.map,identity=base.id;function tryDispose(e,s,r){var t=disposeSafely(s);return(0,_Promise.isPromise)(t)?t.catch(function(s){r.error(e,s)}):t}function create(e,s){return once(new _Disposable2.default(e,s))}function empty(){return new _Disposable2.default(identity,void 0)}function all(e){return create(disposeAll,e)}function disposeAll(e){return Promise.all(map(disposeSafely,e))}function disposeSafely(e){try{return e.dispose()}catch(e){return Promise.reject(e)}}function promised(e){return create(disposePromise,e)}function disposePromise(e){return e.then(disposeOne)}function disposeOne(e){return e.dispose()}function settable(){return new _SettableDisposable2.default}function once(e){return new _Disposable2.default(disposeMemoized,memoized(e))}function disposeMemoized(e){return e.disposed||(e.disposed=!0,e.value=disposeSafely(e.disposable),e.disposable=void 0),e.value}function memoized(e){return{disposed:!1,disposable:e,value:void 0}}
3004
3007
 
3005
- },{"../Promise":705,"./Disposable":733,"./SettableDisposable":734,"@most/prelude":771}],736:[function(require,module,exports){
3008
+ },{"../Promise":706,"./Disposable":734,"./SettableDisposable":735,"@most/prelude":772}],737:[function(require,module,exports){
3006
3009
  "use strict";function fatalError(t){setTimeout(function(){throw t},0)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=fatalError;
3007
3010
 
3008
- },{}],737:[function(require,module,exports){
3011
+ },{}],738:[function(require,module,exports){
3009
3012
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Filter;var _Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function Filter(e,t){this.p=e,this.source=t}function FilterSink(e,t){this.p=e,this.sink=t}function and(e,t){return function(r){return e(r)&&t(r)}}Filter.create=function(e,t){return t instanceof Filter?new Filter(and(t.p,e),t.source):new Filter(e,t)},Filter.prototype.run=function(e,t){return this.source.run(new FilterSink(this.p,e),t)},FilterSink.prototype.end=_Pipe2.default.prototype.end,FilterSink.prototype.error=_Pipe2.default.prototype.error,FilterSink.prototype.event=function(e,t){(0,this.p)(t)&&this.sink.event(e,t)};
3010
3013
 
3011
- },{"../sink/Pipe":755}],738:[function(require,module,exports){
3014
+ },{"../sink/Pipe":756}],739:[function(require,module,exports){
3012
3015
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=FilterMap;var _Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function FilterMap(e,t,i){this.p=e,this.f=t,this.source=i}function FilterMapSink(e,t,i){this.p=e,this.f=t,this.sink=i}FilterMap.prototype.run=function(e,t){return this.source.run(new FilterMapSink(this.p,this.f,e),t)},FilterMapSink.prototype.event=function(e,t){var i=this.f;(0,this.p)(t)&&this.sink.event(e,i(t))},FilterMapSink.prototype.end=_Pipe2.default.prototype.end,FilterMapSink.prototype.error=_Pipe2.default.prototype.error;
3013
3016
 
3014
- },{"../sink/Pipe":755}],739:[function(require,module,exports){
3017
+ },{"../sink/Pipe":756}],740:[function(require,module,exports){
3015
3018
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Map;var _Pipe=require("../sink/Pipe"),_Pipe2=_interopRequireDefault(_Pipe),_Filter=require("./Filter"),_Filter2=_interopRequireDefault(_Filter),_FilterMap=require("./FilterMap"),_FilterMap2=_interopRequireDefault(_FilterMap),_prelude=require("@most/prelude"),base=_interopRequireWildcard(_prelude);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r.default=e,r}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function Map(e,r){this.f=e,this.source=r}function MapSink(e,r){this.f=e,this.sink=r}Map.create=function(e,r){return r instanceof Map?new Map(base.compose(e,r.f),r.source):r instanceof _Filter2.default?new _FilterMap2.default(r.p,e,r.source):new Map(e,r)},Map.prototype.run=function(e,r){return this.source.run(new MapSink(this.f,e),r)},MapSink.prototype.end=_Pipe2.default.prototype.end,MapSink.prototype.error=_Pipe2.default.prototype.error,MapSink.prototype.event=function(e,r){var t=this.f;this.sink.event(e,t(r))};
3016
3019
 
3017
- },{"../sink/Pipe":755,"./Filter":737,"./FilterMap":738,"@most/prelude":771}],740:[function(require,module,exports){
3020
+ },{"../sink/Pipe":756,"./Filter":738,"./FilterMap":739,"@most/prelude":772}],741:[function(require,module,exports){
3018
3021
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PropagateTask=exports.defaultScheduler=exports.multicast=exports.throwError=exports.flatMapError=exports.recoverWith=exports.await=exports.awaitPromises=exports.fromPromise=exports.debounce=exports.throttle=exports.timestamp=exports.delay=exports.during=exports.since=exports.skipUntil=exports.until=exports.takeUntil=exports.skipAfter=exports.skipWhile=exports.takeWhile=exports.slice=exports.skip=exports.take=exports.distinctBy=exports.skipRepeatsWith=exports.distinct=exports.skipRepeats=exports.filter=exports.switch=exports.switchLatest=exports.zipArray=exports.zip=exports.sampleWith=exports.sampleArray=exports.sample=exports.combineArray=exports.combine=exports.mergeArray=exports.merge=exports.mergeConcurrently=exports.concatMap=exports.flatMapEnd=exports.continueWith=exports.join=exports.chain=exports.flatMap=exports.transduce=exports.ap=exports.tap=exports.constant=exports.map=exports.startWith=exports.concat=exports.generate=exports.iterate=exports.unfold=exports.reduce=exports.scan=exports.loop=exports.drain=exports.forEach=exports.observe=exports.fromEvent=exports.periodic=exports.from=exports.never=exports.empty=exports.just=exports.of=exports.Stream=void 0;var _fromEvent=require("./source/fromEvent");Object.defineProperty(exports,"fromEvent",{enumerable:!0,get:function(){return _fromEvent.fromEvent}});var _unfold=require("./source/unfold");Object.defineProperty(exports,"unfold",{enumerable:!0,get:function(){return _unfold.unfold}});var _iterate=require("./source/iterate");Object.defineProperty(exports,"iterate",{enumerable:!0,get:function(){return _iterate.iterate}});var _generate=require("./source/generate");Object.defineProperty(exports,"generate",{enumerable:!0,get:function(){return _generate.generate}});var _Stream=require("./Stream"),_Stream2=_interopRequireDefault(_Stream),_prelude=require("@most/prelude"),base=_interopRequireWildcard(_prelude),_core=require("./source/core"),_from=require("./source/from"),_periodic=require("./source/periodic"),_symbolObservable=require("symbol-observable"),_symbolObservable2=_interopRequireDefault(_symbolObservable),_subscribe=require("./observable/subscribe"),_thru=require("./combinator/thru"),_observe=require("./combinator/observe"),_loop=require("./combinator/loop"),_accumulate=require("./combinator/accumulate"),_build=require("./combinator/build"),_transform=require("./combinator/transform"),_applicative=require("./combinator/applicative"),_transduce=require("./combinator/transduce"),_flatMap=require("./combinator/flatMap"),_continueWith=require("./combinator/continueWith"),_concatMap=require("./combinator/concatMap"),_mergeConcurrently=require("./combinator/mergeConcurrently"),_merge=require("./combinator/merge"),_combine=require("./combinator/combine"),_sample=require("./combinator/sample"),_zip=require("./combinator/zip"),_switch=require("./combinator/switch"),_filter=require("./combinator/filter"),_slice=require("./combinator/slice"),_timeslice=require("./combinator/timeslice"),_delay=require("./combinator/delay"),_timestamp=require("./combinator/timestamp"),_limit=require("./combinator/limit"),_promises=require("./combinator/promises"),_errors=require("./combinator/errors"),_multicast=require("@most/multicast"),_multicast2=_interopRequireDefault(_multicast),_defaultScheduler=require("./scheduler/defaultScheduler"),_defaultScheduler2=_interopRequireDefault(_defaultScheduler),_PropagateTask=require("./scheduler/PropagateTask"),_PropagateTask2=_interopRequireDefault(_PropagateTask);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}exports.Stream=_Stream2.default,_Stream2.default.of=_core.of,_Stream2.default.empty=_core.empty,_Stream2.default.from=_from.from,exports.of=_core.of,exports.just=_core.of,exports.empty=_core.empty,exports.never=_core.never,exports.from=_from.from,exports.periodic=_periodic.periodic,_Stream2.default.prototype.subscribe=function(e){return(0,_subscribe.subscribe)(e,this)},_Stream2.default.prototype[_symbolObservable2.default]=function(){return this},_Stream2.default.prototype.thru=function(e){return(0,_thru.thru)(e,this)},exports.observe=_observe.observe,exports.forEach=_observe.observe,exports.drain=_observe.drain,_Stream2.default.prototype.observe=_Stream2.default.prototype.forEach=function(e){return(0,_observe.observe)(e,this)},_Stream2.default.prototype.drain=function(){return(0,_observe.drain)(this)},exports.loop=_loop.loop,_Stream2.default.prototype.loop=function(e,t){return(0,_loop.loop)(e,t,this)},exports.scan=_accumulate.scan,exports.reduce=_accumulate.reduce,_Stream2.default.prototype.scan=function(e,t){return(0,_accumulate.scan)(e,t,this)},_Stream2.default.prototype.reduce=function(e,t){return(0,_accumulate.reduce)(e,t,this)},exports.concat=_build.concat,exports.startWith=_build.cons,_Stream2.default.prototype.concat=function(e){return(0,_build.concat)(this,e)},_Stream2.default.prototype.startWith=function(e){return(0,_build.cons)(e,this)},exports.map=_transform.map,exports.constant=_transform.constant,exports.tap=_transform.tap,exports.ap=_applicative.ap,_Stream2.default.prototype.map=function(e){return(0,_transform.map)(e,this)},_Stream2.default.prototype.ap=function(e){return(0,_applicative.ap)(this,e)},_Stream2.default.prototype.constant=function(e){return(0,_transform.constant)(e,this)},_Stream2.default.prototype.tap=function(e){return(0,_transform.tap)(e,this)},exports.transduce=_transduce.transduce,_Stream2.default.prototype.transduce=function(e){return(0,_transduce.transduce)(e,this)},exports.flatMap=_flatMap.flatMap,exports.chain=_flatMap.flatMap,exports.join=_flatMap.join,_Stream2.default.prototype.chain=function(e){return(0,_flatMap.flatMap)(e,this)},_Stream2.default.prototype.flatMap=_Stream2.default.prototype.chain,_Stream2.default.prototype.join=function(){return(0,_flatMap.join)(this)},exports.continueWith=_continueWith.continueWith,exports.flatMapEnd=_continueWith.continueWith,_Stream2.default.prototype.continueWith=function(e){return(0,_continueWith.continueWith)(e,this)},_Stream2.default.prototype.flatMapEnd=_Stream2.default.prototype.continueWith,exports.concatMap=_concatMap.concatMap,_Stream2.default.prototype.concatMap=function(e){return(0,_concatMap.concatMap)(e,this)},exports.mergeConcurrently=_mergeConcurrently.mergeConcurrently,_Stream2.default.prototype.mergeConcurrently=function(e){return(0,_mergeConcurrently.mergeConcurrently)(e,this)},exports.merge=_merge.merge,exports.mergeArray=_merge.mergeArray,_Stream2.default.prototype.merge=function(){return(0,_merge.mergeArray)(base.cons(this,arguments))},exports.combine=_combine.combine,exports.combineArray=_combine.combineArray,_Stream2.default.prototype.combine=function(e){return(0,_combine.combineArray)(e,base.replace(this,0,arguments))},exports.sample=_sample.sample,exports.sampleArray=_sample.sampleArray,exports.sampleWith=_sample.sampleWith,_Stream2.default.prototype.sampleWith=function(e){return(0,_sample.sampleWith)(e,this)},_Stream2.default.prototype.sample=function(e){return(0,_sample.sampleArray)(e,this,base.tail(arguments))},exports.zip=_zip.zip,exports.zipArray=_zip.zipArray,_Stream2.default.prototype.zip=function(e){return(0,_zip.zipArray)(e,base.replace(this,0,arguments))},exports.switchLatest=_switch.switchLatest,exports.switch=_switch.switchLatest,_Stream2.default.prototype.switchLatest=function(){return(0,_switch.switchLatest)(this)},_Stream2.default.prototype.switch=_Stream2.default.prototype.switchLatest,exports.filter=_filter.filter,exports.skipRepeats=_filter.skipRepeats,exports.distinct=_filter.skipRepeats,exports.skipRepeatsWith=_filter.skipRepeatsWith,exports.distinctBy=_filter.skipRepeatsWith,_Stream2.default.prototype.filter=function(e){return(0,_filter.filter)(e,this)},_Stream2.default.prototype.skipRepeats=function(){return(0,_filter.skipRepeats)(this)},_Stream2.default.prototype.skipRepeatsWith=function(e){return(0,_filter.skipRepeatsWith)(e,this)},exports.take=_slice.take,exports.skip=_slice.skip,exports.slice=_slice.slice,exports.takeWhile=_slice.takeWhile,exports.skipWhile=_slice.skipWhile,exports.skipAfter=_slice.skipAfter,_Stream2.default.prototype.take=function(e){return(0,_slice.take)(e,this)},_Stream2.default.prototype.skip=function(e){return(0,_slice.skip)(e,this)},_Stream2.default.prototype.slice=function(e,t){return(0,_slice.slice)(e,t,this)},_Stream2.default.prototype.takeWhile=function(e){return(0,_slice.takeWhile)(e,this)},_Stream2.default.prototype.skipWhile=function(e){return(0,_slice.skipWhile)(e,this)},_Stream2.default.prototype.skipAfter=function(e){return(0,_slice.skipAfter)(e,this)},exports.takeUntil=_timeslice.takeUntil,exports.until=_timeslice.takeUntil,exports.skipUntil=_timeslice.skipUntil,exports.since=_timeslice.skipUntil,exports.during=_timeslice.during,_Stream2.default.prototype.until=function(e){return(0,_timeslice.takeUntil)(e,this)},_Stream2.default.prototype.takeUntil=_Stream2.default.prototype.until,_Stream2.default.prototype.since=function(e){return(0,_timeslice.skipUntil)(e,this)},_Stream2.default.prototype.skipUntil=_Stream2.default.prototype.since,_Stream2.default.prototype.during=function(e){return(0,_timeslice.during)(e,this)},exports.delay=_delay.delay,_Stream2.default.prototype.delay=function(e){return(0,_delay.delay)(e,this)},exports.timestamp=_timestamp.timestamp,_Stream2.default.prototype.timestamp=function(){return(0,_timestamp.timestamp)(this)},exports.throttle=_limit.throttle,exports.debounce=_limit.debounce,_Stream2.default.prototype.throttle=function(e){return(0,_limit.throttle)(e,this)},_Stream2.default.prototype.debounce=function(e){return(0,_limit.debounce)(e,this)},exports.fromPromise=_promises.fromPromise,exports.awaitPromises=_promises.awaitPromises,exports.await=_promises.awaitPromises,_Stream2.default.prototype.awaitPromises=function(){return(0,_promises.awaitPromises)(this)},_Stream2.default.prototype.await=_Stream2.default.prototype.awaitPromises,exports.recoverWith=_errors.recoverWith,exports.flatMapError=_errors.flatMapError,exports.throwError=_errors.throwError,_Stream2.default.prototype.recoverWith=function(e){return(0,_errors.flatMapError)(e,this)},_Stream2.default.prototype.flatMapError=_Stream2.default.prototype.recoverWith,exports.multicast=_multicast2.default,_Stream2.default.prototype.multicast=function(){return(0,_multicast2.default)(this)},exports.defaultScheduler=_defaultScheduler2.default,exports.PropagateTask=_PropagateTask2.default;
3019
3022
 
3020
- },{"./Stream":707,"./combinator/accumulate":708,"./combinator/applicative":709,"./combinator/build":710,"./combinator/combine":711,"./combinator/concatMap":712,"./combinator/continueWith":713,"./combinator/delay":714,"./combinator/errors":715,"./combinator/filter":716,"./combinator/flatMap":717,"./combinator/limit":718,"./combinator/loop":719,"./combinator/merge":720,"./combinator/mergeConcurrently":721,"./combinator/observe":722,"./combinator/promises":723,"./combinator/sample":724,"./combinator/slice":725,"./combinator/switch":726,"./combinator/thru":727,"./combinator/timeslice":728,"./combinator/timestamp":729,"./combinator/transduce":730,"./combinator/transform":731,"./combinator/zip":732,"./observable/subscribe":745,"./scheduler/PropagateTask":748,"./scheduler/defaultScheduler":752,"./source/core":759,"./source/from":760,"./source/fromEvent":762,"./source/generate":764,"./source/iterate":765,"./source/periodic":766,"./source/unfold":768,"@most/multicast":770,"@most/prelude":771,"symbol-observable":772}],741:[function(require,module,exports){
3023
+ },{"./Stream":708,"./combinator/accumulate":709,"./combinator/applicative":710,"./combinator/build":711,"./combinator/combine":712,"./combinator/concatMap":713,"./combinator/continueWith":714,"./combinator/delay":715,"./combinator/errors":716,"./combinator/filter":717,"./combinator/flatMap":718,"./combinator/limit":719,"./combinator/loop":720,"./combinator/merge":721,"./combinator/mergeConcurrently":722,"./combinator/observe":723,"./combinator/promises":724,"./combinator/sample":725,"./combinator/slice":726,"./combinator/switch":727,"./combinator/thru":728,"./combinator/timeslice":729,"./combinator/timestamp":730,"./combinator/transduce":731,"./combinator/transform":732,"./combinator/zip":733,"./observable/subscribe":746,"./scheduler/PropagateTask":749,"./scheduler/defaultScheduler":753,"./source/core":760,"./source/from":761,"./source/fromEvent":763,"./source/generate":765,"./source/iterate":766,"./source/periodic":767,"./source/unfold":769,"@most/multicast":771,"@most/prelude":772,"symbol-observable":773}],742:[function(require,module,exports){
3021
3024
  "use strict";function invoke(e,r){switch(r.length){case 0:return e();case 1:return e(r[0]);case 2:return e(r[0],r[1]);case 3:return e(r[0],r[1],r[2]);case 4:return e(r[0],r[1],r[2],r[3]);case 5:return e(r[0],r[1],r[2],r[3],r[4]);default:return e.apply(void 0,r)}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=invoke;
3022
3025
 
3023
- },{}],742:[function(require,module,exports){
3026
+ },{}],743:[function(require,module,exports){
3024
3027
  "use strict";var iteratorSymbol;function isIterable(t){return"function"==typeof t[iteratorSymbol]}function getIterator(t){return t[iteratorSymbol]()}function makeIterable(t,e){return e[iteratorSymbol]=t,e}Object.defineProperty(exports,"__esModule",{value:!0}),exports.isIterable=isIterable,exports.getIterator=getIterator,exports.makeIterable=makeIterable,iteratorSymbol="function"==typeof Set&&"function"==typeof(new Set)["@@iterator"]?"@@iterator":"function"==typeof Symbol?Symbol.iterator:"_es6shim_iterator_";
3025
3028
 
3026
- },{}],743:[function(require,module,exports){
3029
+ },{}],744:[function(require,module,exports){
3027
3030
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.fromObservable=fromObservable,exports.ObservableSource=ObservableSource,exports.SubscriberSink=SubscriberSink;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_tryEvent=require("../source/tryEvent");function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r.default=e,r}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function fromObservable(e){return new _Stream2.default(new ObservableSource(e))}function ObservableSource(e){this.observable=e}function SubscriberSink(e,r){this.sink=e,this.scheduler=r}function unsubscribe(e){return e.unsubscribe()}ObservableSource.prototype.run=function(e,r){var t=this.observable.subscribe(new SubscriberSink(e,r));if("function"==typeof t)return dispose.create(t);if(t&&"function"==typeof t.unsubscribe)return dispose.create(unsubscribe,t);throw new TypeError("Observable returned invalid subscription "+String(t))},SubscriberSink.prototype.next=function(e){(0,_tryEvent.tryEvent)(this.scheduler.now(),e,this.sink)},SubscriberSink.prototype.complete=function(e){(0,_tryEvent.tryEnd)(this.scheduler.now(),e,this.sink)},SubscriberSink.prototype.error=function(e){this.sink.error(this.scheduler.now(),e)};
3028
3031
 
3029
- },{"../Stream":707,"../disposable/dispose":735,"../source/tryEvent":767}],744:[function(require,module,exports){
3032
+ },{"../Stream":708,"../disposable/dispose":736,"../source/tryEvent":768}],745:[function(require,module,exports){
3030
3033
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=getObservable;var _symbolObservable=require("symbol-observable"),_symbolObservable2=_interopRequireDefault(_symbolObservable);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function getObservable(e){var r=null;if(e){var l=e[_symbolObservable2.default];if("function"==typeof l&&(!(r=l.call(e))||"function"!=typeof r.subscribe))throw new TypeError("invalid observable "+r)}return r}
3031
3034
 
3032
- },{"symbol-observable":772}],745:[function(require,module,exports){
3035
+ },{"symbol-observable":773}],746:[function(require,module,exports){
3033
3036
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.subscribe=subscribe,exports.SubscribeObserver=SubscribeObserver,exports.Subscription=Subscription;var _defaultScheduler=require("../scheduler/defaultScheduler"),_defaultScheduler2=_interopRequireDefault(_defaultScheduler),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_fatalError=require("../fatalError"),_fatalError2=_interopRequireDefault(_fatalError);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&(r[s]=e[s]);return r.default=e,r}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function subscribe(e,r){if(Object(e)!==e)throw new TypeError("subscriber must be an object");var s=dispose.settable(),t=new SubscribeObserver(_fatalError2.default,e,s);return s.setDisposable(r.source.run(t,_defaultScheduler2.default)),new Subscription(s)}function SubscribeObserver(e,r,s){this.fatalError=e,this.subscriber=r,this.disposable=s}function Subscription(e){this.disposable=e}function throwError(e,r,s){if("function"==typeof r.error)try{r.error(e)}catch(e){s(e)}else s(e)}SubscribeObserver.prototype.event=function(e,r){this.disposable.disposed||"function"!=typeof this.subscriber.next||this.subscriber.next(r)},SubscribeObserver.prototype.end=function(e,r){if(!this.disposable.disposed){var s=this.subscriber,t=this.fatalError;Promise.resolve(this.disposable.dispose()).then(function(){"function"==typeof s.complete&&s.complete(r)}).catch(function(e){throwError(e,s,t)})}},SubscribeObserver.prototype.error=function(e,r){var s=this.subscriber,t=this.fatalError;Promise.resolve(this.disposable.dispose()).then(function(){throwError(r,s,t)})},Subscription.prototype.unsubscribe=function(){this.disposable.dispose()};
3034
3037
 
3035
- },{"../disposable/dispose":735,"../fatalError":736,"../scheduler/defaultScheduler":752}],746:[function(require,module,exports){
3038
+ },{"../disposable/dispose":736,"../fatalError":737,"../scheduler/defaultScheduler":753}],747:[function(require,module,exports){
3036
3039
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.withDefaultScheduler=withDefaultScheduler,exports.withScheduler=withScheduler;var _dispose=require("./disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_defaultScheduler=require("./scheduler/defaultScheduler"),_defaultScheduler2=_interopRequireDefault(_defaultScheduler);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r.default=e,r}function withDefaultScheduler(e){return withScheduler(e,_defaultScheduler2.default)}function withScheduler(e,r){return new Promise(function(t,i){runSource(e,r,t,i)})}function runSource(e,r,t,i){var u=dispose.settable(),o=new Drain(t,i,u);u.setDisposable(e.run(o,r))}function Drain(e,r,t){this._end=e,this._error=r,this._disposable=t,this.active=!0}function disposeThen(e,r,t,i){Promise.resolve(t.dispose()).then(function(){e(i)},r)}Drain.prototype.event=function(e,r){},Drain.prototype.end=function(e,r){this.active&&(this.active=!1,disposeThen(this._end,this._error,this._disposable,r))},Drain.prototype.error=function(e,r){this.active=!1,disposeThen(this._error,this._error,this._disposable,r)};
3037
3040
 
3038
- },{"./disposable/dispose":735,"./scheduler/defaultScheduler":752}],747:[function(require,module,exports){
3041
+ },{"./disposable/dispose":736,"./scheduler/defaultScheduler":753}],748:[function(require,module,exports){
3039
3042
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=ClockTimer;var _task=require("../task");function ClockTimer(){}function Asap(t){this.f=t,this.active=!0}function runAsap(t){var e=new Asap(t);return(0,_task.defer)(e),e}ClockTimer.prototype.now=Date.now,ClockTimer.prototype.setTimer=function(t,e){return e<=0?runAsap(t):setTimeout(t,e)},ClockTimer.prototype.clearTimer=function(t){return t instanceof Asap?t.cancel():clearTimeout(t)},Asap.prototype.run=function(){return this.active&&this.f()},Asap.prototype.error=function(t){throw t},Asap.prototype.cancel=function(){this.active=!1};
3040
3043
 
3041
- },{"../task":769}],748:[function(require,module,exports){
3044
+ },{"../task":770}],749:[function(require,module,exports){
3042
3045
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=PropagateTask;var _fatalError=require("../fatalError"),_fatalError2=_interopRequireDefault(_fatalError);function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}function PropagateTask(r,e,t){this._run=r,this.value=e,this.sink=t,this.active=!0}function error(r,e,t){t.error(r,e)}function emit(r,e,t){t.event(r,e)}function end(r,e,t){t.end(r,e)}PropagateTask.event=function(r,e){return new PropagateTask(emit,r,e)},PropagateTask.end=function(r,e){return new PropagateTask(end,r,e)},PropagateTask.error=function(r,e){return new PropagateTask(error,r,e)},PropagateTask.prototype.dispose=function(){this.active=!1},PropagateTask.prototype.run=function(r){this.active&&this._run(r,this.value,this.sink)},PropagateTask.prototype.error=function(r,e){if(!this.active)return(0,_fatalError2.default)(e);this.sink.error(r,e)};
3043
3046
 
3044
- },{"../fatalError":736}],749:[function(require,module,exports){
3047
+ },{"../fatalError":737}],750:[function(require,module,exports){
3045
3048
  "use strict";function ScheduledTask(e,t,s,i){this.time=e,this.period=t,this.task=s,this.scheduler=i,this.active=!0}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=ScheduledTask,ScheduledTask.prototype.run=function(){return this.task.run(this.time)},ScheduledTask.prototype.error=function(e){return this.task.error(this.time,e)},ScheduledTask.prototype.dispose=function(){return this.scheduler.cancel(this),this.task.dispose()};
3046
3049
 
3047
- },{}],750:[function(require,module,exports){
3050
+ },{}],751:[function(require,module,exports){
3048
3051
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Scheduler;var _ScheduledTask=require("./ScheduledTask"),_ScheduledTask2=_interopRequireDefault(_ScheduledTask),_task=require("../task");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function Scheduler(e,t){this.timer=e,this.timeline=t,this._timer=null,this._nextArrival=1/0;var i=this;this._runReadyTasksBound=function(){i._runReadyTasks(i.now())}}Scheduler.prototype.now=function(){return this.timer.now()},Scheduler.prototype.asap=function(e){return this.schedule(0,-1,e)},Scheduler.prototype.delay=function(e,t){return this.schedule(e,-1,t)},Scheduler.prototype.periodic=function(e,t){return this.schedule(0,e,t)},Scheduler.prototype.schedule=function(e,t,i){var r=this.now(),u=new _ScheduledTask2.default(r+Math.max(0,e),t,i,this);return this.timeline.add(u),this._scheduleNextRun(r),u},Scheduler.prototype.cancel=function(e){e.active=!1,this.timeline.remove(e)&&this._reschedule()},Scheduler.prototype.cancelAll=function(e){this.timeline.removeAll(e),this._reschedule()},Scheduler.prototype._reschedule=function(){this.timeline.isEmpty()?this._unschedule():this._scheduleNextRun(this.now())},Scheduler.prototype._unschedule=function(){this.timer.clearTimer(this._timer),this._timer=null},Scheduler.prototype._scheduleNextRun=function(e){if(!this.timeline.isEmpty()){var t=this.timeline.nextArrival();null===this._timer?this._scheduleNextArrival(t,e):t<this._nextArrival&&(this._unschedule(),this._scheduleNextArrival(t,e))}},Scheduler.prototype._scheduleNextArrival=function(e,t){this._nextArrival=e;var i=Math.max(0,e-t);this._timer=this.timer.setTimer(this._runReadyTasksBound,i)},Scheduler.prototype._runReadyTasks=function(e){this._timer=null,this.timeline.runTasks(e,_task.runTask),this._scheduleNextRun(this.now())};
3049
3052
 
3050
- },{"../task":769,"./ScheduledTask":749}],751:[function(require,module,exports){
3053
+ },{"../task":770,"./ScheduledTask":750}],752:[function(require,module,exports){
3051
3054
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Timeline;var _prelude=require("@most/prelude"),base=_interopRequireWildcard(_prelude);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}function Timeline(){this.tasks=[]}function runTasks(e,t,i){for(var r=t.events,s=0;s<r.length;++s){var n=r[s];n.active&&(e(n),n.period>=0&&n.active&&(n.time=n.time+n.period,insertByTime(n,i)))}return i}function insertByTime(e,t){var i=t.length;if(0!==i){var r=binarySearch(e.time,t);r>=i?t.push(newTimeslot(e.time,[e])):e.time===t[r].time?t[r].events.push(e):t.splice(r,0,newTimeslot(e.time,[e]))}else t.push(newTimeslot(e.time,[e]))}function removeAllFrom(e,t){t.events=base.removeAll(e,t.events)}function binarySearch(e,t){for(var i,r,s=0,n=t.length;s<n;){if(e===(r=t[i=Math.floor((s+n)/2)]).time)return i;e<r.time?n=i:s=i+1}return n}function newTimeslot(e,t){return{time:e,events:t}}Timeline.prototype.nextArrival=function(){return this.isEmpty()?1/0:this.tasks[0].time},Timeline.prototype.isEmpty=function(){return 0===this.tasks.length},Timeline.prototype.add=function(e){insertByTime(e,this.tasks)},Timeline.prototype.remove=function(e){var t=binarySearch(e.time,this.tasks);if(t>=0&&t<this.tasks.length){var i=base.findIndex(e,this.tasks[t].events);if(i>=0)return this.tasks[t].events.splice(i,1),!0}return!1},Timeline.prototype.removeAll=function(e){for(var t=0,i=this.tasks.length;t<i;++t)removeAllFrom(e,this.tasks[t])},Timeline.prototype.runTasks=function(e,t){for(var i=this.tasks,r=i.length,s=0;s<r&&i[s].time<=e;)++s;this.tasks=i.slice(s);for(var n=0;n<s;++n)this.tasks=runTasks(t,i[n],this.tasks)};
3052
3055
 
3053
- },{"@most/prelude":771}],752:[function(require,module,exports){
3056
+ },{"@most/prelude":772}],753:[function(require,module,exports){
3054
3057
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _Scheduler=require("./Scheduler"),_Scheduler2=_interopRequireDefault(_Scheduler),_ClockTimer=require("./ClockTimer"),_ClockTimer2=_interopRequireDefault(_ClockTimer),_Timeline=require("./Timeline"),_Timeline2=_interopRequireDefault(_Timeline);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var defaultScheduler=new _Scheduler2.default(new _ClockTimer2.default,new _Timeline2.default);exports.default=defaultScheduler;
3055
3058
 
3056
- },{"./ClockTimer":747,"./Scheduler":750,"./Timeline":751}],753:[function(require,module,exports){
3059
+ },{"./ClockTimer":748,"./Scheduler":751,"./Timeline":752}],754:[function(require,module,exports){
3057
3060
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=DeferredSink;var _task=require("../task");function DeferredSink(t){this.sink=t,this.events=[],this.active=!0}function PropagateAllTask(t,e,i){this.sink=t,this.events=i,this.time=e}function EndTask(t,e,i){this.time=t,this.value=e,this.sink=i}function ErrorTask(t,e,i){this.time=t,this.value=e,this.sink=i}DeferredSink.prototype.event=function(t,e){this.active&&(0===this.events.length&&(0,_task.defer)(new PropagateAllTask(this.sink,t,this.events)),this.events.push({time:t,value:e}))},DeferredSink.prototype.end=function(t,e){this.active&&this._end(new EndTask(t,e,this.sink))},DeferredSink.prototype.error=function(t,e){this._end(new ErrorTask(t,e,this.sink))},DeferredSink.prototype._end=function(t){this.active=!1,(0,_task.defer)(t)},PropagateAllTask.prototype.run=function(){for(var t,e=this.events,i=this.sink,s=0,r=e.length;s<r;++s)t=e[s],this.time=t.time,i.event(t.time,t.value);e.length=0},PropagateAllTask.prototype.error=function(t){this.sink.error(this.time,t)},EndTask.prototype.run=function(){this.sink.end(this.time,this.value)},EndTask.prototype.error=function(t){this.sink.error(this.time,t)},ErrorTask.prototype.run=function(){this.sink.error(this.time,this.value)},ErrorTask.prototype.error=function(t){throw t};
3058
3061
 
3059
- },{"../task":769}],754:[function(require,module,exports){
3062
+ },{"../task":770}],755:[function(require,module,exports){
3060
3063
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=IndexSink;var _Pipe=require("./Pipe"),_Pipe2=_interopRequireDefault(_Pipe);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function IndexSink(e,i){this.sink=i,this.index=e,this.active=!0,this.value=void 0}IndexSink.prototype.event=function(e,i){this.active&&(this.value=i,this.sink.event(e,this))},IndexSink.prototype.end=function(e,i){this.active&&(this.active=!1,this.sink.end(e,{index:this.index,value:i}))},IndexSink.prototype.error=_Pipe2.default.prototype.error;
3061
3064
 
3062
- },{"./Pipe":755}],755:[function(require,module,exports){
3065
+ },{"./Pipe":756}],756:[function(require,module,exports){
3063
3066
  "use strict";function Pipe(e){this.sink=e}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Pipe,Pipe.prototype.event=function(e,t){return this.sink.event(e,t)},Pipe.prototype.end=function(e,t){return this.sink.end(e,t)},Pipe.prototype.error=function(e,t){return this.sink.error(e,t)};
3064
3067
 
3065
- },{}],756:[function(require,module,exports){
3068
+ },{}],757:[function(require,module,exports){
3066
3069
  "use strict";function SafeSink(t){this.sink=t,this.active=!0}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=SafeSink,SafeSink.prototype.event=function(t,e){this.active&&this.sink.event(t,e)},SafeSink.prototype.end=function(t,e){this.active&&(this.disable(),this.sink.end(t,e))},SafeSink.prototype.error=function(t,e){this.disable(),this.sink.error(t,e)},SafeSink.prototype.disable=function(){return this.active=!1,this.sink};
3067
3070
 
3068
- },{}],757:[function(require,module,exports){
3071
+ },{}],758:[function(require,module,exports){
3069
3072
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=EventEmitterSource;var _DeferredSink=require("../sink/DeferredSink"),_DeferredSink2=_interopRequireDefault(_DeferredSink),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_tryEvent=require("./tryEvent"),tryEvent=_interopRequireWildcard(_tryEvent);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r.default=e,r}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function EventEmitterSource(e,r){this.event=e,this.source=r}function disposeEventEmitter(e){var r=e.target;r.source.removeListener(r.event,e.addEvent)}EventEmitterSource.prototype.run=function(e,r){var t=new _DeferredSink2.default(e);function n(e){var n=arguments,i=arguments.length;if(i>1){for(var o=new Array(i),u=0;u<i;++u)o[u]=n[u];tryEvent.tryEvent(r.now(),o,t)}else tryEvent.tryEvent(r.now(),e,t)}return this.source.addListener(this.event,n),dispose.create(disposeEventEmitter,{target:this,addEvent:n})};
3070
3073
 
3071
- },{"../disposable/dispose":735,"../sink/DeferredSink":753,"./tryEvent":767}],758:[function(require,module,exports){
3074
+ },{"../disposable/dispose":736,"../sink/DeferredSink":754,"./tryEvent":768}],759:[function(require,module,exports){
3072
3075
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=EventTargetSource;var _dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_tryEvent=require("./tryEvent"),tryEvent=_interopRequireWildcard(_tryEvent);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function EventTargetSource(e,t,r){this.event=e,this.source=t,this.capture=r}function disposeEventTarget(e){var t=e.target;t.source.removeEventListener(t.event,e.addEvent,t.capture)}EventTargetSource.prototype.run=function(e,t){function r(r){tryEvent.tryEvent(t.now(),r,e)}return this.source.addEventListener(this.event,r,this.capture),dispose.create(disposeEventTarget,{target:this,addEvent:r})};
3073
3076
 
3074
- },{"../disposable/dispose":735,"./tryEvent":767}],759:[function(require,module,exports){
3077
+ },{"../disposable/dispose":736,"./tryEvent":768}],760:[function(require,module,exports){
3075
3078
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.of=of,exports.empty=empty,exports.never=never;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_dispose=require("../disposable/dispose"),dispose=_interopRequireWildcard(_dispose),_PropagateTask=require("../scheduler/PropagateTask"),_PropagateTask2=_interopRequireDefault(_PropagateTask);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r.default=e,r}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function of(e){return new _Stream2.default(new Just(e))}function Just(e){this.value=e}function runJust(e,r,t){t.event(e,r),t.end(e,void 0)}function empty(){return EMPTY}function EmptySource(){}function disposeEmpty(e){return e.dispose()}Just.prototype.run=function(e,r){return r.asap(new _PropagateTask2.default(runJust,this.value,e))},EmptySource.prototype.run=function(e,r){var t=_PropagateTask2.default.end(void 0,e);return r.asap(t),dispose.create(disposeEmpty,t)};var EMPTY=new _Stream2.default(new EmptySource);function never(){return NEVER}function NeverSource(){}NeverSource.prototype.run=function(){return dispose.empty()};var NEVER=new _Stream2.default(new NeverSource);
3076
3079
 
3077
- },{"../Stream":707,"../disposable/dispose":735,"../scheduler/PropagateTask":748}],760:[function(require,module,exports){
3080
+ },{"../Stream":708,"../disposable/dispose":736,"../scheduler/PropagateTask":749}],761:[function(require,module,exports){
3078
3081
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.from=from;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_fromArray=require("./fromArray"),_iterable=require("../iterable"),_fromIterable=require("./fromIterable"),_getObservable=require("../observable/getObservable"),_getObservable2=_interopRequireDefault(_getObservable),_fromObservable=require("../observable/fromObservable"),_prelude=require("@most/prelude");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function from(e){if(e instanceof _Stream2.default)return e;var r=(0,_getObservable2.default)(e);if(null!=r)return(0,_fromObservable.fromObservable)(r);if(Array.isArray(e)||(0,_prelude.isArrayLike)(e))return(0,_fromArray.fromArray)(e);if((0,_iterable.isIterable)(e))return(0,_fromIterable.fromIterable)(e);throw new TypeError("from(x) must be observable, iterable, or array-like: "+e)}
3079
3082
 
3080
- },{"../Stream":707,"../iterable":742,"../observable/fromObservable":743,"../observable/getObservable":744,"./fromArray":761,"./fromIterable":763,"@most/prelude":771}],761:[function(require,module,exports){
3083
+ },{"../Stream":708,"../iterable":743,"../observable/fromObservable":744,"../observable/getObservable":745,"./fromArray":762,"./fromIterable":764,"@most/prelude":772}],762:[function(require,module,exports){
3081
3084
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.fromArray=fromArray;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_PropagateTask=require("../scheduler/PropagateTask"),_PropagateTask2=_interopRequireDefault(_PropagateTask);function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}function fromArray(r){return new _Stream2.default(new ArraySource(r))}function ArraySource(r){this.array=r}function runProducer(r,e,a){for(var t=0,u=e.length;t<u&&this.active;++t)a.event(r,e[t]);this.active&&a.end(r)}ArraySource.prototype.run=function(r,e){return e.asap(new _PropagateTask2.default(runProducer,this.array,r))};
3082
3085
 
3083
- },{"../Stream":707,"../scheduler/PropagateTask":748}],762:[function(require,module,exports){
3086
+ },{"../Stream":708,"../scheduler/PropagateTask":749}],763:[function(require,module,exports){
3084
3087
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.fromEvent=fromEvent;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_EventTargetSource=require("./EventTargetSource"),_EventTargetSource2=_interopRequireDefault(_EventTargetSource),_EventEmitterSource=require("./EventEmitterSource"),_EventEmitterSource2=_interopRequireDefault(_EventEmitterSource);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function fromEvent(e,t,r){var n;if("function"==typeof t.addEventListener&&"function"==typeof t.removeEventListener)arguments.length<3&&(r=!1),n=new _EventTargetSource2.default(e,t,r);else{if("function"!=typeof t.addListener||"function"!=typeof t.removeListener)throw new Error("source must support addEventListener/removeEventListener or addListener/removeListener");n=new _EventEmitterSource2.default(e,t)}return new _Stream2.default(n)}
3085
3088
 
3086
- },{"../Stream":707,"./EventEmitterSource":757,"./EventTargetSource":758}],763:[function(require,module,exports){
3089
+ },{"../Stream":708,"./EventEmitterSource":758,"./EventTargetSource":759}],764:[function(require,module,exports){
3087
3090
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.fromIterable=fromIterable;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_iterable=require("../iterable"),_PropagateTask=require("../scheduler/PropagateTask"),_PropagateTask2=_interopRequireDefault(_PropagateTask);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function fromIterable(e){return new _Stream2.default(new IterableSource(e))}function IterableSource(e){this.iterable=e}function runProducer(e,r,t){for(var a=r.next();!a.done&&this.active;)t.event(e,a.value),a=r.next();t.end(e,a.value)}IterableSource.prototype.run=function(e,r){return r.asap(new _PropagateTask2.default(runProducer,(0,_iterable.getIterator)(this.iterable),e))};
3088
3091
 
3089
- },{"../Stream":707,"../iterable":742,"../scheduler/PropagateTask":748}],764:[function(require,module,exports){
3092
+ },{"../Stream":708,"../iterable":743,"../scheduler/PropagateTask":749}],765:[function(require,module,exports){
3090
3093
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.generate=generate;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_prelude=require("@most/prelude"),base=_interopRequireWildcard(_prelude);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t]);return r.default=e,r}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function generate(e){return new _Stream2.default(new GenerateSource(e,base.tail(arguments)))}function GenerateSource(e,r){this.f=e,this.args=r}function Generate(e,r,t){this.iterator=e,this.sink=r,this.scheduler=t,this.active=!0;var n=this;Promise.resolve(this).then(next).catch(function(e){n.sink.error(n.scheduler.now(),e)})}function next(e,r){return e.active?handle(e,e.iterator.next(r)):r}function handle(e,r){return r.done?e.sink.end(e.scheduler.now(),r.value):Promise.resolve(r.value).then(function(r){return emit(e,r)},function(r){return error(e,r)})}function emit(e,r){return e.sink.event(e.scheduler.now(),r),next(e,r)}function error(e,r){return handle(e,e.iterator.throw(r))}GenerateSource.prototype.run=function(e,r){return new Generate(this.f.apply(void 0,this.args),e,r)},Generate.prototype.dispose=function(){this.active=!1};
3091
3094
 
3092
- },{"../Stream":707,"@most/prelude":771}],765:[function(require,module,exports){
3095
+ },{"../Stream":708,"@most/prelude":772}],766:[function(require,module,exports){
3093
3096
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.iterate=iterate;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function iterate(e,t){return new _Stream2.default(new IterateSource(e,t))}function IterateSource(e,t){this.f=e,this.value=t}function Iterate(e,t,r,n){this.f=e,this.sink=r,this.scheduler=n,this.active=!0;var i=t,u=this;Promise.resolve(this).then(function(e){return stepIterate(e,i)}).catch(function(e){u.sink.error(u.scheduler.now(),e)})}function stepIterate(e,t){if(e.sink.event(e.scheduler.now(),t),!e.active)return t;var r=e.f;return Promise.resolve(r(t)).then(function(t){return continueIterate(e,t)})}function continueIterate(e,t){return e.active?stepIterate(e,t):e.value}IterateSource.prototype.run=function(e,t){return new Iterate(this.f,this.value,e,t)},Iterate.prototype.dispose=function(){this.active=!1};
3094
3097
 
3095
- },{"../Stream":707}],766:[function(require,module,exports){
3098
+ },{"../Stream":708}],767:[function(require,module,exports){
3096
3099
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.periodic=periodic;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream),_PropagateTask=require("../scheduler/PropagateTask"),_PropagateTask2=_interopRequireDefault(_PropagateTask);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function periodic(e,r){return new _Stream2.default(new Periodic(e,r))}function Periodic(e,r){this.period=e,this.value=r}Periodic.prototype.run=function(e,r){return r.periodic(this.period,_PropagateTask2.default.event(this.value,e))};
3097
3100
 
3098
- },{"../Stream":707,"../scheduler/PropagateTask":748}],767:[function(require,module,exports){
3101
+ },{"../Stream":708,"../scheduler/PropagateTask":749}],768:[function(require,module,exports){
3099
3102
  "use strict";function tryEvent(t,r,e){try{e.event(t,r)}catch(r){e.error(t,r)}}function tryEnd(t,r,e){try{e.end(t,r)}catch(r){e.error(t,r)}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.tryEvent=tryEvent,exports.tryEnd=tryEnd;
3100
3103
 
3101
- },{}],768:[function(require,module,exports){
3104
+ },{}],769:[function(require,module,exports){
3102
3105
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.unfold=unfold;var _Stream=require("../Stream"),_Stream2=_interopRequireDefault(_Stream);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function unfold(e,n){return new _Stream2.default(new UnfoldSource(e,n))}function UnfoldSource(e,n){this.f=e,this.value=n}function Unfold(e,n,t,o){this.f=e,this.sink=t,this.scheduler=o,this.active=!0;var r=this;Promise.resolve(this).then(function(e){return stepUnfold(e,n)}).catch(function(e){r.sink.error(r.scheduler.now(),e)})}function stepUnfold(e,n){var t=e.f;return Promise.resolve(t(n)).then(function(n){return continueUnfold(e,n)})}function continueUnfold(e,n){return n.done?(e.sink.end(e.scheduler.now(),n.value),n.value):(e.sink.event(e.scheduler.now(),n.value),e.active?stepUnfold(e,n.seed):n.value)}UnfoldSource.prototype.run=function(e,n){return new Unfold(this.f,this.value,e,n)},Unfold.prototype.dispose=function(){this.active=!1};
3103
3106
 
3104
- },{"../Stream":707}],769:[function(require,module,exports){
3107
+ },{"../Stream":708}],770:[function(require,module,exports){
3105
3108
  "use strict";function defer(r){return Promise.resolve(r).then(runTask)}function runTask(r){try{return r.run()}catch(e){return r.error(e)}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.defer=defer,exports.runTask=runTask;
3106
3109
 
3107
- },{}],770:[function(require,module,exports){
3110
+ },{}],771:[function(require,module,exports){
3108
3111
  !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@most/prelude")):"function"==typeof define&&define.amd?define(["exports","@most/prelude"],e):e(t.mostMulticast=t.mostMulticast||{},t.mostPrelude)}(this,function(t,e){"use strict";var s=function(t,e){this.source=t,this.sink=e,this.disposed=!1};function i(t,e,s){try{s.event(t,e)}catch(e){s.error(t,e)}}function n(t,e,s){try{s.end(t,e)}catch(e){s.error(t,e)}}s.prototype.dispose=function(){if(!this.disposed)return this.disposed=!0,0===this.source.remove(this.sink)&&this.source._dispose()};var o=function(t){return t.dispose()},r={dispose:function(){}},u=function(t){this.source=t,this.sinks=[],this._disposable=r};u.prototype.run=function(t,e){return 1===this.add(t)&&(this._disposable=this.source.run(this,e)),new s(this,t)},u.prototype._dispose=function(){var t=this._disposable;return this._disposable=r,Promise.resolve(t).then(o)},u.prototype.add=function(t){return this.sinks=e.append(t,this.sinks),this.sinks.length},u.prototype.remove=function(t){var s=e.findIndex(t,this.sinks);return s>=0&&(this.sinks=e.remove(s,this.sinks)),this.sinks.length},u.prototype.event=function(t,e){var s=this.sinks;if(1===s.length)return s[0].event(t,e);for(var n=0;n<s.length;++n)i(t,e,s[n])},u.prototype.end=function(t,e){for(var s=this.sinks,i=0;i<s.length;++i)n(t,e,s[i])},u.prototype.error=function(t,e){for(var s=this.sinks,i=0;i<s.length;++i)s[i].error(t,e)},t.default=function(t){var e=t.source;return e instanceof u?t:new t.constructor(new u(e))},t.MulticastSource=u,Object.defineProperty(t,"__esModule",{value:!0})});
3109
3112
 
3110
- },{"@most/prelude":771}],771:[function(require,module,exports){
3113
+ },{"@most/prelude":772}],772:[function(require,module,exports){
3111
3114
  !function(r,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((r=r||self).mostPrelude={})}(this,function(r){"use strict";function n(r,n){if(r<0)throw new TypeError("n must be >= 0");var e=n.length;return 0===r||0===e?n:r>=e?[]:function(r,n,e){for(var t=new Array(e),u=0;u<e;++u)t[u]=n[r+u];return t}(r,n,e-r)}function e(r){return function n(e,t){switch(arguments.length){case 0:return n;case 1:return function(n){return r(e,n)};default:return r(e,t)}}}function t(r){return function n(t,u,o){switch(arguments.length){case 0:return n;case 1:return e(function(n,e){return r(t,n,e)});case 2:return function(n){return r(t,u,n)};default:return r(t,u,o)}}}r.append=function(r,n){for(var e=n.length,t=new Array(e+1),u=0;u<e;++u)t[u]=n[u];return t[e]=r,t},r.apply=function(r,n){return r(n)},r.compose=function(r,n){return function(e){return r(n(e))}},r.concat=function(r,n){var e=r.length,t=n.length,u=new Array(e+t),o=0;for(o=0;o<e;o++)u[o]=r[o];for(var f=0;f<t;f++)u[o++]=n[f];return u},r.cons=function(r,n){var e=n.length,t=new Array(e+1);t[0]=r;for(var u=0;u<e;++u)t[u+1]=n[u];return t},r.copy=function(r){for(var n=r.length,e=new Array(n),t=0;t<n;++t)e[t]=r[t];return e},r.curry2=e,r.curry3=t,r.curry4=function(r){return function n(u,o,f,c){switch(arguments.length){case 0:return n;case 1:return t(function(n,e,t){return r(u,n,e,t)});case 2:return e(function(n,e){return r(u,o,n,e)});case 3:return function(n){return r(u,o,f,n)};default:return r(u,o,f,c)}}},r.drop=n,r.findIndex=function(r,n){for(var e=0,t=n.length;e<t;++e)if(r===n[e])return e;return-1},r.id=function(r){return r},r.isArrayLike=function(r){return null!=r&&"number"==typeof r.length&&"function"!=typeof r},r.map=function(r,n){for(var e=n.length,t=new Array(e),u=0;u<e;++u)t[u]=r(n[u]);return t},r.reduce=function(r,n,e){for(var t=n,u=0,o=e.length;u<o;++u)t=r(t,e[u],u);return t},r.remove=function(r,n){if(r<0)throw new TypeError("i must be >= 0");var e=n.length;return 0===e||r>=e?n:1===e?[]:function(r,n,e){var t,u=new Array(e);for(t=0;t<r;++t)u[t]=n[t];for(t=r;t<e;++t)u[t]=n[t+1];return u}(r,n,e-1)},r.removeAll=function(r,n){for(var e=n.length,t=new Array(e),u=0,o=void 0,f=0;f<e;++f)r(o=n[f])||(t[u]=o,++u);return t.length=u,t},r.replace=function(r,n,e){if(n<0)throw new TypeError("i must be >= 0");for(var t=e.length,u=new Array(t),o=0;o<t;++o)u[o]=n===o?r:e[o];return u},r.tail=function(r){return n(1,r)},Object.defineProperty(r,"__esModule",{value:!0})});
3112
3115
 
3113
- },{}],772:[function(require,module,exports){
3116
+ },{}],773:[function(require,module,exports){
3114
3117
  (function (global){(function (){
3115
3118
  "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var root,_ponyfill=require("./ponyfill.js"),_ponyfill2=_interopRequireDefault(_ponyfill);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}root="undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof module?module:Function("return this")();var result=(0,_ponyfill2.default)(root);exports.default=result;
3116
3119
 
3117
3120
  }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
3118
- },{"./ponyfill.js":773}],773:[function(require,module,exports){
3121
+ },{"./ponyfill.js":774}],774:[function(require,module,exports){
3119
3122
  "use strict";function symbolObservablePonyfill(e){var b,l=e.Symbol;return"function"==typeof l?l.observable?b=l.observable:(b=l("observable"),l.observable=b):b="@@observable",b}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=symbolObservablePonyfill;
3120
3123
 
3121
- },{}],774:[function(require,module,exports){
3124
+ },{}],775:[function(require,module,exports){
3122
3125
  "use strict";var trailingNewlineRegex=/\n[\s]+$/,leadingNewlineRegex=/^\n[\s]+/,trailingSpaceRegex=/[\s]+$/,leadingSpaceRegex=/^[\s]+/,multiSpaceRegex=/[\n\s]+/g,TEXT_TAGS=["a","abbr","b","bdi","bdo","br","cite","data","dfn","em","i","kbd","mark","q","rp","rt","rtc","ruby","s","amp","small","span","strong","sub","sup","time","u","var","wbr"],VERBATIM_TAGS=["code","pre","textarea"];module.exports=function e(a,l){if(Array.isArray(l))for(var n,i,r=a.nodeName.toLowerCase(),d=!1,t=0,g=l.length;t<g;t++){var p=l[t];if(Array.isArray(p))e(a,p);else{("number"==typeof p||"boolean"==typeof p||"function"==typeof p||p instanceof Date||p instanceof RegExp)&&(p=p.toString());var o=a.childNodes[a.childNodes.length-1];if("string"==typeof p)d=!0,o&&"#text"===o.nodeName?o.nodeValue+=p:(p=a.ownerDocument.createTextNode(p),a.appendChild(p),o=p),t===g-1&&(d=!1,-1===TEXT_TAGS.indexOf(r)&&-1===VERBATIM_TAGS.indexOf(r)?""===(n=o.nodeValue.replace(leadingNewlineRegex,"").replace(trailingSpaceRegex,"").replace(trailingNewlineRegex,"").replace(multiSpaceRegex," "))?a.removeChild(o):o.nodeValue=n:-1===VERBATIM_TAGS.indexOf(r)&&(i=0===t?"":" ",n=o.nodeValue.replace(leadingNewlineRegex,i).replace(leadingSpaceRegex," ").replace(trailingSpaceRegex,"").replace(trailingNewlineRegex,"").replace(multiSpaceRegex," "),o.nodeValue=n));else if(p&&p.nodeType){d&&(d=!1,-1===TEXT_TAGS.indexOf(r)&&-1===VERBATIM_TAGS.indexOf(r)?""===(n=o.nodeValue.replace(leadingNewlineRegex,"").replace(trailingNewlineRegex," ").replace(multiSpaceRegex," "))?a.removeChild(o):o.nodeValue=n:-1===VERBATIM_TAGS.indexOf(r)&&(n=o.nodeValue.replace(leadingSpaceRegex," ").replace(leadingNewlineRegex,"").replace(trailingNewlineRegex," ").replace(multiSpaceRegex," "),o.nodeValue=n));var c=p.nodeName;c&&(r=c.toLowerCase()),a.appendChild(p)}}}};
3123
3126
 
3124
- },{}],775:[function(require,module,exports){
3127
+ },{}],776:[function(require,module,exports){
3125
3128
  "use strict";module.exports=["async","autofocus","autoplay","checked","controls","default","defaultchecked","defer","disabled","formnovalidate","hidden","ismap","loop","multiple","muted","novalidate","open","playsinline","readonly","required","reversed","selected"];
3126
3129
 
3127
- },{}],776:[function(require,module,exports){
3130
+ },{}],777:[function(require,module,exports){
3128
3131
  module.exports=require("./dom")(document);
3129
3132
 
3130
- },{"./dom":778}],777:[function(require,module,exports){
3133
+ },{"./dom":779}],778:[function(require,module,exports){
3131
3134
  "use strict";module.exports=["indeterminate"];
3132
3135
 
3133
- },{}],778:[function(require,module,exports){
3136
+ },{}],779:[function(require,module,exports){
3134
3137
  "use strict";var hyperx=require("hyperx"),appendChild=require("./append-child"),SVG_TAGS=require("./svg-tags"),BOOL_PROPS=require("./bool-props"),DIRECT_PROPS=require("./direct-props"),SVGNS="http://www.w3.org/2000/svg",XLINKNS="http://www.w3.org/1999/xlink",COMMENT_TAG="!--";module.exports=function(e){function r(r,t,n){var a;-1!==SVG_TAGS.indexOf(r)&&(t.namespace=SVGNS);var i=!1;t.namespace&&(i=t.namespace,delete t.namespace);var s=!1;if(t.is&&(s=t.is,delete t.is),i)a=s?e.createElementNS(i,r,{is:s}):e.createElementNS(i,r);else{if(r===COMMENT_TAG)return e.createComment(t.comment);a=s?e.createElement(r,{is:s}):e.createElement(r)}for(var l in t)if(t.hasOwnProperty(l)){var c=l.toLowerCase(),o=t[l];if("classname"===c&&(c="class",l="class"),"htmlFor"===l&&(l="for"),-1!==BOOL_PROPS.indexOf(c))if("true"===String(o))o=c;else if("false"===String(o))continue;"on"===c.slice(0,2)||-1!==DIRECT_PROPS.indexOf(c)?a[l]=o:i?"xlink:href"===l?a.setAttributeNS(XLINKNS,l,o):/^xmlns($|:)/i.test(l)||a.setAttributeNS(null,l,o):a.setAttribute(l,o)}return appendChild(a,n),a}var t=hyperx(r,{comments:!0,createFragment:function r(t){for(var n=e.createDocumentFragment(),a=0;a<t.length;a++)null!=t[a]&&(Array.isArray(t[a])?n.appendChild(r(t[a])):("string"==typeof t[a]&&(t[a]=e.createTextNode(t[a])),n.appendChild(t[a])));return n}});return t.default=t,t.createComment=r,t};
3135
3138
 
3136
- },{"./append-child":774,"./bool-props":775,"./direct-props":777,"./svg-tags":779,"hyperx":781}],779:[function(require,module,exports){
3139
+ },{"./append-child":775,"./bool-props":776,"./direct-props":778,"./svg-tags":780,"hyperx":782}],780:[function(require,module,exports){
3137
3140
  "use strict";module.exports=["svg","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignObject","g","glyph","glyphRef","hkern","image","line","linearGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","stop","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"];
3138
3141
 
3139
- },{}],780:[function(require,module,exports){
3142
+ },{}],781:[function(require,module,exports){
3140
3143
  module.exports=attributeToProperty;var transform={class:"className",for:"htmlFor","http-equiv":"httpEquiv"};function attributeToProperty(r){return function(t,o,e){for(var n in o)n in transform&&(o[transform[n]]=o[n],delete o[n]);return r(t,o,e)}}
3141
3144
 
3142
- },{}],781:[function(require,module,exports){
3145
+ },{}],782:[function(require,module,exports){
3143
3146
  var attrToProp=require("hyperscript-attribute-to-property"),VAR=0,TEXT=1,OPEN=2,CLOSE=3,ATTR=4,ATTR_KEY=5,ATTR_KEY_W=6,ATTR_VALUE_W=7,ATTR_VALUE=8,ATTR_VALUE_SQ=9,ATTR_VALUE_DQ=10,ATTR_EQ=11,ATTR_BREAK=12,COMMENT=13;function quot(T){return T===ATTR_VALUE_SQ||T===ATTR_VALUE_DQ}module.exports=function(T,e){e||(e={});var A=e.concat||function(T,e){return String(T)+String(e)};return!1!==e.attrToProp&&(T=attrToProp(T)),function(E){for(var n=TEXT,r="",R=arguments.length,s=[],_=0;_<E.length;_++)if(_<R-1){var o=arguments[_+1],l=U(E[_]),h=n;h===ATTR_VALUE_DQ&&(h=ATTR_VALUE),h===ATTR_VALUE_SQ&&(h=ATTR_VALUE),h===ATTR_VALUE_W&&(h=ATTR_VALUE),h===ATTR&&(h=ATTR_KEY),h===OPEN?"/"===r?(l.push([OPEN,"/",o]),r=""):l.push([OPEN,o]):h===COMMENT&&e.comments?r+=String(o):h!==COMMENT&&l.push([VAR,h,o]),s.push.apply(s,l)}else s.push.apply(s,U(E[_]));var i=[null,{},[]],f=[[i,-1]];for(_=0;_<s.length;_++){var p=f[f.length-1][0],u=(l=s[_])[0];if(u===OPEN&&/^\//.test(l[1])){var a=f[f.length-1][1];f.length>1&&(f.pop(),f[f.length-1][0][2][a]=T(p[0],p[1],p[2].length?p[2]:void 0))}else if(u===OPEN){var g=[l[1],{},[]];p[2].push(g),f.push([g,p[2].length-1])}else if(u===ATTR_KEY||u===VAR&&l[1]===ATTR_KEY){for(var L,V="";_<s.length;_++)if(s[_][0]===ATTR_KEY)V=A(V,s[_][1]);else{if(s[_][0]!==VAR||s[_][1]!==ATTR_KEY)break;if("object"!=typeof s[_][2]||V)V=A(V,s[_][2]);else for(L in s[_][2])s[_][2].hasOwnProperty(L)&&!p[1][L]&&(p[1][L]=s[_][2][L])}s[_][0]===ATTR_EQ&&_++;for(var c=_;_<s.length;_++)if(s[_][0]===ATTR_VALUE||s[_][0]===ATTR_KEY)p[1][V]?""===s[_][1]||(p[1][V]=A(p[1][V],s[_][1])):p[1][V]=t(s[_][1]);else{if(s[_][0]!==VAR||s[_][1]!==ATTR_VALUE&&s[_][1]!==ATTR_KEY){!V.length||p[1][V]||_!==c||s[_][0]!==CLOSE&&s[_][0]!==ATTR_BREAK||(p[1][V]=V.toLowerCase()),s[_][0]===CLOSE&&_--;break}p[1][V]?""===s[_][2]||(p[1][V]=A(p[1][V],s[_][2])):p[1][V]=t(s[_][2])}}else if(u===ATTR_KEY)p[1][l[1]]=!0;else if(u===VAR&&l[1]===ATTR_KEY)p[1][l[2]]=!0;else if(u===CLOSE){if(selfClosing(p[0])&&f.length){a=f[f.length-1][1];f.pop(),f[f.length-1][0][2][a]=T(p[0],p[1],p[2].length?p[2]:void 0)}}else if(u===VAR&&l[1]===TEXT)void 0===l[2]||null===l[2]?l[2]="":l[2]||(l[2]=A("",l[2])),Array.isArray(l[2][0])?p[2].push.apply(p[2],l[2]):p[2].push(l[2]);else if(u===TEXT)p[2].push(l[1]);else if(u!==ATTR_EQ&&u!==ATTR_BREAK)throw new Error("unhandled: "+u)}if(i[2].length>1&&/^\s*$/.test(i[2][0])&&i[2].shift(),i[2].length>2||2===i[2].length&&/\S/.test(i[2][1])){if(e.createFragment)return e.createFragment(i[2]);throw new Error("multiple root elements must be wrapped in an enclosing tag")}return Array.isArray(i[2][0])&&"string"==typeof i[2][0][0]&&Array.isArray(i[2][0][2])&&(i[2][0]=T(i[2][0][0],i[2][0][1],i[2][0][2])),i[2][0];function U(T){var A=[];n===ATTR_VALUE_W&&(n=ATTR);for(var t=0;t<T.length;t++){var E=T.charAt(t);n===TEXT&&"<"===E?(r.length&&A.push([TEXT,r]),r="",n=OPEN):">"!==E||quot(n)||n===COMMENT?n===COMMENT&&/-$/.test(r)&&"-"===E?(e.comments&&A.push([ATTR_VALUE,r.substr(0,r.length-1)]),r="",n=TEXT):n===OPEN&&/^!--$/.test(r)?(e.comments&&A.push([OPEN,r],[ATTR_KEY,"comment"],[ATTR_EQ]),r=E,n=COMMENT):n===TEXT||n===COMMENT?r+=E:n===OPEN&&"/"===E&&r.length||(n===OPEN&&/\s/.test(E)?(r.length&&A.push([OPEN,r]),r="",n=ATTR):n===OPEN?r+=E:n===ATTR&&/[^\s"'=/]/.test(E)?(n=ATTR_KEY,r=E):n===ATTR&&/\s/.test(E)?(r.length&&A.push([ATTR_KEY,r]),A.push([ATTR_BREAK])):n===ATTR_KEY&&/\s/.test(E)?(A.push([ATTR_KEY,r]),r="",n=ATTR_KEY_W):n===ATTR_KEY&&"="===E?(A.push([ATTR_KEY,r],[ATTR_EQ]),r="",n=ATTR_VALUE_W):n===ATTR_KEY?r+=E:n!==ATTR_KEY_W&&n!==ATTR||"="!==E?n!==ATTR_KEY_W&&n!==ATTR||/\s/.test(E)?n===ATTR_VALUE_W&&'"'===E?n=ATTR_VALUE_DQ:n===ATTR_VALUE_W&&"'"===E?n=ATTR_VALUE_SQ:n===ATTR_VALUE_DQ&&'"'===E?(A.push([ATTR_VALUE,r],[ATTR_BREAK]),r="",n=ATTR):n===ATTR_VALUE_SQ&&"'"===E?(A.push([ATTR_VALUE,r],[ATTR_BREAK]),r="",n=ATTR):n!==ATTR_VALUE_W||/\s/.test(E)?n===ATTR_VALUE&&/\s/.test(E)?(A.push([ATTR_VALUE,r],[ATTR_BREAK]),r="",n=ATTR):n!==ATTR_VALUE&&n!==ATTR_VALUE_SQ&&n!==ATTR_VALUE_DQ||(r+=E):(n=ATTR_VALUE,t--):(A.push([ATTR_BREAK]),/[\w-]/.test(E)?(r+=E,n=ATTR_KEY):n=ATTR):(A.push([ATTR_EQ]),n=ATTR_VALUE_W)):(n===OPEN&&r.length?A.push([OPEN,r]):n===ATTR_KEY?A.push([ATTR_KEY,r]):n===ATTR_VALUE&&r.length&&A.push([ATTR_VALUE,r]),A.push([CLOSE]),r="",n=TEXT)}return n===TEXT&&r.length?(A.push([TEXT,r]),r=""):n===ATTR_VALUE&&r.length?(A.push([ATTR_VALUE,r]),r=""):n===ATTR_VALUE_DQ&&r.length?(A.push([ATTR_VALUE,r]),r=""):n===ATTR_VALUE_SQ&&r.length?(A.push([ATTR_VALUE,r]),r=""):n===ATTR_KEY&&(A.push([ATTR_KEY,r]),r=""),A}};function t(T){return"function"==typeof T?T:"string"==typeof T?T:T&&"object"==typeof T?T:null==T?T:A("",T)}};var closeRE=RegExp("^("+["area","base","basefont","bgsound","br","col","command","embed","frame","hr","img","input","isindex","keygen","link","meta","param","source","track","wbr","!--","animate","animateTransform","circle","cursor","desc","ellipse","feBlend","feColorMatrix","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","font-face-format","font-face-name","font-face-uri","glyph","glyphRef","hkern","image","line","missing-glyph","mpath","path","polygon","polyline","rect","set","stop","tref","use","view","vkern"].join("|")+")(?:[.#][a-zA-Z0-9-￿_:-]+)*$");function selfClosing(T){return closeRE.test(T)}
3144
3147
 
3145
- },{"hyperscript-attribute-to-property":780}],782:[function(require,module,exports){
3148
+ },{"hyperscript-attribute-to-property":781}],783:[function(require,module,exports){
3146
3149
  var bundleFn=arguments[3],sources=arguments[4],cache=arguments[5],stringify=JSON.stringify;module.exports=function(r,e){for(var t,o=Object.keys(cache),n=0,a=o.length;n<a;n++){var i=o[n],s=cache[i].exports;if(s===r||s&&s.default===r){t=i;break}}if(!t){t=Math.floor(Math.pow(16,8)*Math.random()).toString(16);var u={};for(n=0,a=o.length;n<a;n++){u[i=o[n]]=i}sources[t]=["function(require,module,exports){"+r+"(self); }",u]}var f=Math.floor(Math.pow(16,8)*Math.random()).toString(16),c={};c[t]=t,sources[f]=["function(require,module,exports){var f = require("+stringify(t)+");(f.default ? f.default : f)(self);}",c];var l={};!function r(e){l[e]=!0;for(var t in sources[e][1]){var o=sources[e][1][t];l[o]||r(o)}}(f);var d="("+bundleFn+")({"+Object.keys(l).map(function(r){return stringify(r)+":["+sources[r][0]+","+stringify(sources[r][1])+"]"}).join(",")+"},{},["+stringify(f)+"])",g=window.URL||window.webkitURL||window.mozURL||window.msURL,w=new Blob([d],{type:"text/javascript"});if(e&&e.bare)return w;var v=g.createObjectURL(w),h=new Worker(v);return h.objectURL=v,h};
3147
3150
 
3148
- },{}],783:[function(require,module,exports){
3151
+ },{}],784:[function(require,module,exports){
3149
3152
  module.exports={
3150
3153
  "name": "@jscad/web",
3151
- "version": "2.6.0",
3154
+ "version": "2.6.2",
3152
3155
  "description": "Web Application for JSCAD",
3153
3156
  "homepage": "https://openjscad.xyz/",
3154
3157
  "repository": "https://github.com/jscad/OpenJSCAD.org",
@@ -3184,11 +3187,11 @@ module.exports={
3184
3187
  "license": "MIT",
3185
3188
  "dependencies": {
3186
3189
  "@jscad/array-utils": "2.1.4",
3187
- "@jscad/core": "2.6.3",
3190
+ "@jscad/core": "2.6.5",
3188
3191
  "@jscad/examples": "2.4.2",
3189
- "@jscad/io": "2.4.2",
3190
- "@jscad/modeling": "2.10.0",
3191
- "@jscad/regl-renderer": "2.6.3",
3192
+ "@jscad/io": "2.4.4",
3193
+ "@jscad/modeling": "2.11.0",
3194
+ "@jscad/regl-renderer": "2.6.4",
3192
3195
  "@most/create": "2.0.1",
3193
3196
  "brace": "0.11.1",
3194
3197
  "codemirror": "5.65.2",
@@ -3218,118 +3221,118 @@ module.exports={
3218
3221
  "gitHead": "a90b9bad95a417661c619dc733e62c587dc71a4a"
3219
3222
  }
3220
3223
 
3221
- },{}],784:[function(require,module,exports){
3224
+ },{}],785:[function(require,module,exports){
3222
3225
  const path=require("path"),{head:head}=require("@jscad/array-utils"),{formats:formats,supportedFormatsForObjects:supportedFormatsForObjects}=require("@jscad/io/formats"),availableExportFormatsFromSolids=a=>{const r=["jscad","js"],o=supportedFormatsForObjects(a).filter(a=>!r.includes(a)).map(a=>({name:a,displayName:formats[a].displayName}));return{exportFormat:head(o)?head(o).name:void 0,availableExportFormats:o}},exportFilePathFromFormatAndDesign=(a,r)=>{const o=r?formats[r].extension:"",t=`${a.name}.${o}`;return{exportFilePath:path.join(a.path,t)}};module.exports={availableExportFormatsFromSolids:availableExportFormatsFromSolids,exportFilePathFromFormatAndDesign:exportFilePathFromFormatAndDesign};
3223
3226
 
3224
- },{"@jscad/array-utils":520,"@jscad/io/formats":68,"path":684}],785:[function(require,module,exports){
3227
+ },{"@jscad/array-utils":521,"@jscad/io/formats":68,"path":685}],786:[function(require,module,exports){
3225
3228
  const html=require("nanohtml"),{evaluation:evaluation}=require("@jscad/core"),callbackToObservable=require("./most-utils/callbackToObservable"),packageMetadata=require("../package.json"),keyBindings=require("../data/keybindings.json");let instances=0;const makeJscad=async(e,s)=>{const{name:a,logging:r}=Object.assign({},{name:"jscad",logging:!1},s),i=html`<div class='jscad' key=${a} tabindex=${instances}></div>`;e.appendChild(i);const t=require("./sideEffects/localStorage")({name:a,logging:r}),o=require("./sideEffects/titleBar")({logging:r}),l=require("./sideEffects/dragDrop")({targetEl:i,logging:r}),n=require("./sideEffects/fileDialog")({targetEl:i,logging:r}),c=require("./sideEffects/dom")({targetEl:i},r),g=require("./sideEffects/state/index")({logging:r,packageMetadata:packageMetadata,keyBindings:keyBindings}),u=await require("./sideEffects/localFs")({logging:r}),d=require("./sideEffects/http")({logging:r}),k=await require("./sideEffects/dat")({logging:r}),f=require("./sideEffects/i18n")({translations:{en:require("../locales/en.json"),fr:require("../locales/fr.json"),de:require("../locales/de.json"),ja:require("../locales/ja.json"),hr:require("../locales/hr.json"),zh:require("../locales/zh.json")},logging:r}),m=require("./sideEffects/worker")(evaluation.rebuildGeometryWorker),q=callbackToObservable(),b=callbackToObservable(),p={paramChanges:q.stream,editor:b.stream,state:g.source(),store:t.source(),fs:u.source(),http:d.source(),https:d.source(),drops:l.source(),dom:c.source(),solidWorker:m.source(),i18n:f.source(),titleBar:o.source(),fileDialog:n.source(),dat:await k.source()},E={store:t.sink,fs:u.sink,http:d.sink,https:d.sink,i18n:f.sink,dom:c.sink,solidWorker:m.sink,state:g.sink,fileDialog:n.sink,dat:k.sink},j=require("./ui/flow/flowIn")(p),h={jscadEl:i,paramsCallbacktoStream:q,editorCallbackToStream:b};require("./ui/flow/flowOut")({sinks:E,sources:p,outputs$:j,extras:h}),instances+=1,setTimeout(()=>{document.getElementById("toggleAxes").click()},100),setTimeout(()=>{document.getElementById("toggleAxes").click()},200);const v=callbackToObservable();return e=>{v.callback(e)}};module.exports=makeJscad;
3226
3229
 
3227
- },{"../data/keybindings.json":628,"../locales/de.json":672,"../locales/en.json":673,"../locales/fr.json":674,"../locales/hr.json":675,"../locales/ja.json":676,"../locales/zh.json":677,"../package.json":783,"./most-utils/callbackToObservable":792,"./sideEffects/dat":797,"./sideEffects/dom":798,"./sideEffects/dragDrop":799,"./sideEffects/fileDialog":800,"./sideEffects/http":801,"./sideEffects/i18n":802,"./sideEffects/localFs":803,"./sideEffects/localStorage":805,"./sideEffects/state/index":806,"./sideEffects/titleBar":807,"./sideEffects/worker":808,"./ui/flow/flowIn":813,"./ui/flow/flowOut":814,"@jscad/core":19,"nanohtml":776}],786:[function(require,module,exports){
3230
+ },{"../data/keybindings.json":629,"../locales/de.json":673,"../locales/en.json":674,"../locales/fr.json":675,"../locales/hr.json":676,"../locales/ja.json":677,"../locales/zh.json":678,"../package.json":784,"./most-utils/callbackToObservable":793,"./sideEffects/dat":798,"./sideEffects/dom":799,"./sideEffects/dragDrop":800,"./sideEffects/fileDialog":801,"./sideEffects/http":802,"./sideEffects/i18n":803,"./sideEffects/localFs":804,"./sideEffects/localStorage":806,"./sideEffects/state/index":807,"./sideEffects/titleBar":808,"./sideEffects/worker":809,"./ui/flow/flowIn":814,"./ui/flow/flowOut":815,"@jscad/core":19,"nanohtml":777}],787:[function(require,module,exports){
3228
3231
  const{merge:merge}=require("most");let isPinching=!1;"undefined"!=typeof window&&(window.addEventListener("pinchStarted",e=>{isPinching=!0}),window.addEventListener("pinchEnded",e=>{isPinching=!1}));const mouseDrags=(e,t,s,o)=>{const{pixelRatio:n}=o;return e.flatMap(e=>{const o=e.pageX*n,a=e.pageY*n;let r=o,i=a;return s.map(e=>{const t=e.pageX*n,s=e.pageY*n,u={left:t-o,top:s-a,x:r-t,y:s-i};return r=t,i=s,{originalEvents:[e],delta:u,normalized:{x:t,y:s},type:"mouse"}}).takeUntil(t)})},touchDrags=(e,t,s,o)=>{const{pixelRatio:n}=o;return e.filter(e=>1===e.touches.length||3===e.touches.length).flatMap(e=>{const o=e.touches[0].pageX*n,a=e.touches[0].pageY*n;let r=o,i=a;return s.takeWhile(e=>!1===isPinching).map(e=>{const t=e.touches[0].pageX*n,s=e.touches[0].pageY*n,u={left:t-o,top:s-a,x:r-t,y:s-i};return r=t,i=s,{originalEvents:[e],delta:u,normalized:{x:t,y:s},type:"touch"}}).takeUntil(t)})},drags=({mouseDowns$:e,mouseUps$:t,mouseMoves$:s,touchStarts$:o,touchEnds$:n,longTaps$:a,touchMoves$:r},i)=>{return merge(mouseDrags(e,t,s,i),touchDrags(o,n,r,i))};module.exports={mouseDrags:mouseDrags,touchDrags:touchDrags,drags:drags};
3229
3232
 
3230
- },{"most":740}],787:[function(require,module,exports){
3233
+ },{"most":741}],788:[function(require,module,exports){
3231
3234
  const{fromEvent:fromEvent,merge:merge}=require("most"),{normalizeWheel:normalizeWheel,preventDefault:preventDefault}=require("./utils"),{presses:presses}=require("./presses"),{taps:taps}=require("./taps"),{drags:drags}=require("./drags"),{zooms:zooms}=require("./zooms"),baseInteractionsFromEvents=(e,s)=>{s=Object.assign({},{passiveEventsHandlers:!0,preventScroll:!0,preventMenu:!0},s);const{passiveEventsHandlers:t,preventScroll:r,preventMenu:o}=s,a=fromEvent("mousedown",e,{passive:t,capture:!1}),n=fromEvent("mouseup",e,{passive:t,capture:!1}),p=fromEvent("mousemove",e,{passive:t,capture:!1}),i=fromEvent("contextmenu",e,{passive:!s.preventMenu,capture:!1}),u=fromEvent("touchstart",e,{passive:t,capture:!1}),v=fromEvent("touchmove",e,{passive:t,capture:!1}),m=fromEvent("touchend",e,{passive:t,capture:!1}),l=merge(a,u),c=merge(n,m),f=merge(p,v.filter(e=>1===e.touches.length));return r&&(e=>{fromEvent("mousewheel",e,{passive:!1,capture:!1}).forEach(preventDefault),fromEvent("DOMMouseScroll",e,{passive:!1,capture:!1}).forEach(preventDefault),fromEvent("wheel",e,{passive:!1,capture:!1}).forEach(preventDefault),fromEvent("touchmove",e,{passive:!1,capture:!1}).forEach(preventDefault)})(e),o&&i.forEach(preventDefault),{mouseDowns$:a,mouseUps$:n,mouseMoves$:p,rightClicks$:i,wheel$:merge(fromEvent("wheel",e,{passive:t,capture:!1}),fromEvent("DOMMouseScroll",e,{passive:t,capture:!1}),fromEvent("mousewheel",e,{passive:t,capture:!1})).map(normalizeWheel),touchStarts$:u,touchMoves$:v,touchEnds$:m,pointerDowns$:l,pointerUps$:c,pointerMoves$:f}},pointerGestures=(e,s)=>{const t="addEventListener"in e?baseInteractionsFromEvents(e,s):e,r={multiTapDelay:250,longPressDelay:250,maxStaticDeltaSqr:100,zoomMultiplier:200,pinchThreshold:4e3,pixelRatio:"undefined"!=typeof window&&window.devicePixelRatio?window.devicePixelRatio:1},o=Object.assign({},r,s),a=presses(t,o),n=a.filter(e=>e.timeDelta>o.longPressDelay).filter(e=>e.moveDelta.sqrd<o.maxStaticDeltaSqr);return{press:a,holds:n,taps:taps(a,o),drags:drags(t,o),zooms:zooms(t,o)}};module.exports={baseInteractionsFromEvents:baseInteractionsFromEvents,pointerGestures:pointerGestures};
3232
3235
 
3233
- },{"./drags":786,"./presses":788,"./taps":789,"./utils":790,"./zooms":791,"most":740}],788:[function(require,module,exports){
3236
+ },{"./drags":787,"./presses":789,"./taps":790,"./utils":791,"./zooms":792,"most":741}],789:[function(require,module,exports){
3234
3237
  const{just:just,merge:merge}=require("most"),{exists:exists}=require("./utils"),basePresses=({mouseDowns$:e,mouseUps$:s,mouseMoves$:t,touchStarts$:u,touchEnds$:a,touchMoves$:l},o)=>{l=l.filter(e=>1===e.touches.length);const r=merge(e,u),i=merge(s,a);return r.timestamp().flatMap(e=>merge(just(e),i.take(1).timestamp())).loop((e,s)=>{let t;if(1===e.length){const u=s.time-e[0].time,a="touches"in s.value?s.value.changedTouches[0].pageX:s.value.pageX,l="touches"in s.value?s.value.changedTouches[0].pageY:s.value.pageY,o="touches"in e[0].value?e[0].value.touches[0].pageX:e[0].value.pageX,r="touches"in e[0].value?e[0].value.touches[0].pageY:e[0].value.pageY;let i=[a-o,l-r];const v={x:o-a,y:l-r,sqrd:i=i[0]*i[0]+i[1]*i[1]};t={value:s.value,originalEvent:s.value,timeDelta:u,moveDelta:v,x:a,y:l},e=[]}else e.push(s);return{seed:e,value:t}},[]).filter(exists).filter(e=>void 0!==e.value).multicast()},presses=(e,s)=>{return basePresses(e)};module.exports={presses:presses};
3235
3238
 
3236
- },{"./utils":790,"most":740}],789:[function(require,module,exports){
3239
+ },{"./utils":791,"most":741}],790:[function(require,module,exports){
3237
3240
  const{exists:exists}=require("./utils"),taps=(t,e)=>{const{longPressDelay:a,maxStaticDeltaSqr:s,multiTapDelay:l}=e;return t.filter(t=>t.timeDelta<=a).filter(t=>t.moveDelta.sqrd<s).map(t=>({type:"data",data:t})).merge(t.debounce(l).map(t=>({type:"reset"}))).loop((t,{type:e,data:a})=>{let s;return"data"===e?t.push(a):(s=t,t=[]),{seed:t,value:s}},[]).filter(exists).map(t=>({list:t,nb:t.length})).multicast()};module.exports={taps:taps};
3238
3241
 
3239
- },{"./utils":790}],790:[function(require,module,exports){
3242
+ },{"./utils":791}],791:[function(require,module,exports){
3240
3243
  const{empty:empty,continueWith:continueWith}=require("most"),repeat=(e,t)=>0===e?empty():1===e?t:continueWith(()=>repeat(e-1,t),t),preventDefault=e=>(e.preventDefault(),e),isMoving=(e,t)=>!0,normalizeWheel=e=>{let t={x:0,y:0};return e.wheelDelta?t=e.wheelDelta:e.detail?t=-e.detail:e.deltaY&&(t=-e.deltaY),t=t>=0?1:-1},exists=e=>null!=e;module.exports={repeat:repeat,preventDefault:preventDefault,isMoving:isMoving,normalizeWheel:normalizeWheel,exists:exists};
3241
3244
 
3242
- },{"most":740}],791:[function(require,module,exports){
3245
+ },{"most":741}],792:[function(require,module,exports){
3243
3246
  const{merge:merge}=require("most"),pinchZooms=({touchStarts$:e,touchMoves$:t,touchEnds$:o},s)=>{const{pixelRatio:n,pinchThreshold:u}=s;return e.filter(e=>2===e.touches.length).flatMap(e=>{const s=e.touches[0].pageX*n,c=e.touches[0].pageY*n,h=e.touches[1].pageX*n,a=e.touches[1].pageY*n,p=(s-h)*(s-h)+(c-a)*(c-a);return t.tap(e=>e.preventDefault()).filter(e=>2===e.touches.length).tap(e=>{if("undefined"!=typeof CustomEvent){const e=new CustomEvent("pinchStarted",{detail:!0});window.dispatchEvent(e)}}).map(e=>{const t=e.touches[0].pageX*n,o=e.touches[0].pageY*n,s=e.touches[1].pageX*n,u=e.touches[1].pageY*n;return(t-s)*(t-s)+(o-u)*(o-u)}).loop((e,t)=>e?Math.abs(t-e)<u?{seed:t,value:void 0}:{seed:t,value:t-e}:{seed:t,value:t-p},void 0).filter(e=>void 0!==e).map(e=>3e-6*e).takeUntil(o.tap(e=>{if("undefined"!=typeof CustomEvent){const e=new CustomEvent("pinchEnded",{detail:!0});window.dispatchEvent(e)}}))})},zooms=({touchStarts$:e,touchMoves$:t,touchEnds$:o,wheel$:s},n)=>{return merge(pinchZooms({touchStarts$:e,touchMoves$:t,touchEnds$:o},n),s).map(e=>e*n.zoomMultiplier)};module.exports={pinchZooms:pinchZooms,zooms:zooms};
3244
3247
 
3245
- },{"most":740}],792:[function(require,module,exports){
3248
+ },{"most":741}],793:[function(require,module,exports){
3246
3249
  const{create:create}=require("@most/create"),callBackToStream=()=>{let e=function(){};const t=t=>{e(t)};return{stream:create((t,a,c)=>{e=t}),callback:t}};module.exports=callBackToStream;
3247
3250
 
3248
- },{"@most/create":678}],793:[function(require,module,exports){
3251
+ },{"@most/create":679}],794:[function(require,module,exports){
3249
3252
  const most=require("most"),delayFromObservable=(e,s)=>{const t=(e,s)=>most.just(s).delay(e),o=s.map(e);return e=>most.combine(t,o,e).switchLatest()};module.exports=delayFromObservable;
3250
3253
 
3251
- },{"most":740}],794:[function(require,module,exports){
3254
+ },{"most":741}],795:[function(require,module,exports){
3252
3255
  const withLatestFrom=require("./withLatestFrom"),holdUntil=t=>{return e=>e.skipUntil(t).merge(t.take(1).thru(withLatestFrom(t=>t,e)))};module.exports=holdUntil;
3253
3256
 
3254
- },{"./withLatestFrom":796}],795:[function(require,module,exports){
3257
+ },{"./withLatestFrom":797}],796:[function(require,module,exports){
3255
3258
  module.exports={callbackToObservable:require("./callbackToObservable"),delayFromObservable:require("./delayFromObservable"),holdUntil:require("./holdUntil"),withLatestFrom:require("./withLatestFrom")};
3256
3259
 
3257
- },{"./callbackToObservable":792,"./delayFromObservable":793,"./holdUntil":794,"./withLatestFrom":796}],796:[function(require,module,exports){
3260
+ },{"./callbackToObservable":793,"./delayFromObservable":794,"./holdUntil":795,"./withLatestFrom":797}],797:[function(require,module,exports){
3258
3261
  const most=require("most"),withLatestFrom=(t,o)=>s=>most.sample(t,s,o,s);module.exports=withLatestFrom;
3259
3262
 
3260
- },{"most":740}],797:[function(require,module,exports){
3263
+ },{"most":741}],798:[function(require,module,exports){
3261
3264
  const{getFileExtensionFromString:getFileExtensionFromString}=require("@jscad/core").utils,callbackToObservable=require("../../most-utils/callbackToObservable"),makeLogger=require("../../utils/logger"),makeDatSideEffect=async e=>{const a=callbackToObservable(),{logging:t}=Object.assign({},{logging:!1},e),n=makeLogger({enabled:t});let r=!0;const i=window.DatArchive;i||(n.error("Dat archives not supported in this environment!"),r=!1);return{source:()=>a.stream.multicast(),sink:e=>{let t,l,o,s=[];e.forEach(e=>{const{type:c,id:d,urls:m,path:u}=e;if(!r)return void a.callback({type:c,id:d,error:new Error("Dat archives not supported in this environment!")});const h={unhandled:()=>{a.callback({type:c,id:d,error:new Error(`Dat: no handler found for command ${c}`)})},read:()=>{m.map(async e=>{e=e.replace(" ","+"),l=e,t=new i(e,{});const n=await t.readdir(u,{recursive:!0,stat:!0}),r=await Promise.all(n.map(async e=>{const a=`${u}/${e.name}`;if(e.stat.isFile()&&e.name.includes("js"))return{content:await t.readFile(a),name:e.name,fullPath:e.name,isFile:!0}})),m=await t.getInfo();o=m.title||"unnamed";const h=r.filter(e=>void 0!==e).map(e=>({name:e.name,ext:getFileExtensionFromString(e.name),source:e.content,fullPath:`/${o}/`+e.fullPath}));s=[{children:h,fullPath:`/${o}`,name:o}],a.callback({type:c,id:d,url:e,data:s}),await t.history()})},write:()=>{n.warning("writing to dat archives is not implemented yet")},watch:()=>{t.watch().addEventListener("changed",async({path:e})=>{const n=await t.readFile(e),r={name:require("path").basename(e),ext:"js",source:n,fullPath:`/${o}`+e},i=s[0].children.findIndex(e=>e.fullPath===r.fullPath);(s=JSON.parse(JSON.stringify(s)))[0].children[i]=r,a.callback({type:"read",id:"loadRemote",url:l,data:s})})}};(h[c]||h.unhandled)()})}}};module.exports=makeDatSideEffect;
3262
3265
 
3263
- },{"../../most-utils/callbackToObservable":792,"../../utils/logger":835,"@jscad/core":19,"path":684}],798:[function(require,module,exports){
3266
+ },{"../../most-utils/callbackToObservable":793,"../../utils/logger":836,"@jscad/core":19,"path":685}],799:[function(require,module,exports){
3264
3267
  const most=require("most"),morph=require("morphdom"),{proxy:proxy}=require("most-proxy"),makeDomSideEffect=({targetEl:e})=>{const{attach:t,stream:r}=proxy(),o=r,s={};return{source:()=>{const t=t=>Array.from(e.querySelectorAll(t));return o.forEach(()=>{Object.keys(s).forEach(e=>{const[r]=e.split("@@"),o=t(r);if(o&&o.length>0){const t=s[e];if(!1===t.live){t.live=!0;const e=o.map(e=>most.fromEvent(t.events,e)),r=most.mergeArray(e);t.observable.attach(r)}}})}),{select:e=>{const r=t(e);let o;return{events:function(t){if(!r||r&&0===r.length){const r=proxy();o=r.stream,s[e+"@@"+t]={observable:r,live:!1}}return s[e+"@@"+t].events=t,o.multicast()}}},element:e}},sink:((e,r)=>{let o;const s=r.take(1).map(t=>{o=t,e.appendChild(o)}),m=r.skip(1).map(e=>{morph(o,e)}),n=most.mergeArray([s,m]).multicast();t(n),n.forEach(e=>e)}).bind(null,e)}};module.exports=makeDomSideEffect;
3265
3268
 
3266
- },{"morphdom":698,"most":740,"most-proxy":701}],799:[function(require,module,exports){
3269
+ },{"morphdom":699,"most":741,"most-proxy":702}],800:[function(require,module,exports){
3267
3270
  const{fromEvent:fromEvent}=require("most"),preventDefault=t=>(t.preventDefault(),t),isTextNotEmpty=t=>""!==t,exists=t=>null!=t,itemListToArray=t=>{const e=[];for(let r=0;r<t.length;r++){const a=t[r];e.push(a.webkitGetAsEntry?a.webkitGetAsEntry():a)}return e},extractData=t=>{if(isTextNotEmpty(t.dataTransfer.getData("url")))return{type:"url",data:t.dataTransfer.getData("url")};if(t.dataTransfer.types.includes("text/plain")){const e=t.dataTransfer.getData("text");try{return{type:"url",data:new URL(e).href}}catch{return{type:"text",data:e}}}return t.dataTransfer.items&&t.dataTransfer.items.length>0?{type:"fileOrFolder",data:itemListToArray(t.dataTransfer.items)}:void 0},makeDragAndDropSideEffect=({targetEl:t})=>{return{source:()=>{const{dragOvers$:e,drops$:r}=(t=>({dragOvers$:fromEvent("dragover",t),drops$:fromEvent("drop",t)}))(t);return r.multicast(),r.forEach(preventDefault),e.forEach(preventDefault),r.map(t=>extractData(t)).filter(exists).multicast()}}};module.exports=makeDragAndDropSideEffect;
3268
3271
 
3269
- },{"most":740}],800:[function(require,module,exports){
3272
+ },{"most":741}],801:[function(require,module,exports){
3270
3273
  const callbackToObservable=require("../../most-utils/callbackToObservable"),makeFileDialog=e=>{const a=callbackToObservable();return{source:()=>{},sink:e=>{e.forEach(e=>{a.callback(e);const l=document.createElement("input");l.id="foo",l.name="gna",l.setAttribute("type","file"),l.click(),l.addEventListener("change",()=>{})})}}};module.exports=makeFileDialog;
3271
3274
 
3272
- },{"../../most-utils/callbackToObservable":792}],801:[function(require,module,exports){
3275
+ },{"../../most-utils/callbackToObservable":793}],802:[function(require,module,exports){
3273
3276
  const path=require("path"),{getFileExtensionFromString:getFileExtensionFromString}=require("@jscad/core").utils,{formats:formats}=require("@jscad/io/formats"),callbackToObservable=require("../../most-utils/callbackToObservable"),makeLogger=require("../../utils/logger"),proxyUrl="./remote.pl?url=",binaryMimetypes={stl:"application/sla"},makeHttpSideEffect=e=>{const{logging:t}=Object.assign({},{logging:!1},e),r=callbackToObservable(),a=makeLogger({enabled:t});return{source:()=>r.stream.multicast(),sink:e=>{e.forEach(e=>{const{type:t,id:o,urls:n,origin:i,proxy:l}=e,s={read:()=>{let e=[];n.forEach(n=>{const s=e=>{r.callback({type:t,id:o,url:n,error:e}),a.error(e)},c=a=>{e=e.concat(a),r.callback({type:t,id:o,url:n,data:e})};l?readProxy(n,s,e=>{if(e.file){const t=new URL(i),r=new URL(e.file,t);readFile(r.toString(),s,c)}}):readFile(n,s,c)})},write:()=>{a.warning("writing to http is not implemented yet")},watch:()=>{a.warning("watching http is not implemented yet")},unhandled:()=>{r.callback({type:t,id:o,error:new Error(`http: no handler found for command ${t}`)})}};(s[t]||s.unhandled)()})}}},readFile=(e,t,r)=>{const a=getFileExtensionFromString(e),o=void 0!==binaryMimetypes[a];fetch(e).then(e=>{if(e.ok)return o?e.arrayBuffer():e.text();t(new Error(`fetch error: ${e.status} ${e.statusText}`))}).then(t=>{const o=path.basename(e),n=`/${o}`,i=formats[a]?formats[a].mimetype:"";r({name:o,ext:a,mimetype:i,source:t,fullPath:n})}).catch(e=>{t(e)})},readProxy=(e,t,r)=>{fetch(proxyUrl+e).then(e=>{if(e.ok)return e.json();t(new Error(`fetch error: ${e.status} ${e.statusText}`))}).then(e=>{r(e)}).catch(e=>{t(e)})};module.exports=makeHttpSideEffect;
3274
3277
 
3275
- },{"../../most-utils/callbackToObservable":792,"../../utils/logger":835,"@jscad/core":19,"@jscad/io/formats":68,"path":684}],802:[function(require,module,exports){
3278
+ },{"../../most-utils/callbackToObservable":793,"../../utils/logger":836,"@jscad/core":19,"@jscad/io/formats":68,"path":685}],803:[function(require,module,exports){
3276
3279
  const isElectron=require("is-electron"),callBackToStream=require("../../most-utils/callbackToObservable"),longNames={en:"english",de:"german",fr:"french",ja:"japanese",hr:"croatian",zh:"chinese"},getDefaultLocale=()=>{let a;return isElectron()||(a=navigator.languages&&navigator.languages.length?navigator.languages[0]:navigator.language),a?a.split("-")[0]:""},initTranslations=a=>{const{translations:e}=Object.assign({},{translations:{}},a);return e},i18nImport=require("es2015-i18n-tag"),i18n=i18nImport.default,{i18nConfig:i18nConfig}=i18nImport,makei18nSideEffect=a=>{const e=callBackToStream();let t=initTranslations(a);const n={setAvailableTranslations:a=>{t=a.data},getDefaultLocale:a=>{e.callback({data:getDefaultLocale(),type:a.type})},changeSettings:a=>{const n=a.data;i18nConfig({locales:n,translations:t[n]}),e.callback({data:i18n,type:"changeSettings"})},getAvailableLanguages:a=>{const n=Object.keys(t).map(a=>{let e=longNames[a]?longNames[a]:"placeholder";const n=t[a];return n&&"language"in n&&(e=n.language),{code:a,fullName:e}});e.callback({data:n,type:"getAvailableLanguages"})}};return{sink:a=>{a.forEach(a=>{const e=n[a.type];e&&e(a)})},source:()=>e.stream.multicast()}};module.exports=makei18nSideEffect;
3277
3280
 
3278
- },{"../../most-utils/callbackToObservable":792,"es2015-i18n-tag":695,"is-electron":697}],803:[function(require,module,exports){
3281
+ },{"../../most-utils/callbackToObservable":793,"es2015-i18n-tag":696,"is-electron":698}],804:[function(require,module,exports){
3279
3282
  const{walkFileTree:walkFileTree}=require("@jscad/core").web,callbackToObservable=require("../../most-utils/callbackToObservable"),{changedFiles:changedFiles,flattenFiles:flattenFiles}=require("./utils"),localFsOptions=require("../../../data/localFsOptions.json"),makeLocalFsSideEffect=async e=>{const l=callbackToObservable();let o=null,a=0;const t=e=>o.send(JSON.stringify(e));return{source:()=>l.stream.multicast(),sink:e=>{let n,c,r,s=5e3;e.forEach(e=>{const{type:i,id:d,data:f,options:m,path:u}=e,h={unhandled:()=>{l.callback({type:i,id:d,error:new Error(`LocalFs: no handler found for command ${i}`)})},read:async()=>{n=void 0,c=void 0,r&&(clearInterval(r),r=0,o&&o.close()),f.length&&f[0]instanceof File||(c=f),n=await walkFileTree(f),l.callback({type:i,id:d,data:n})},watch:()=>{if(void 0===c)return;const{enabled:e}=m;e?(o||((o=new WebSocket(localFsOptions.livereloadUrl)).onopen=function(e){t({command:"hello",protocols:["http://livereload.com/protocols/official-6","http://livereload.com/protocols/official-7"],ver:"2.0.8",ext:"Chrome",extver:"2.1.0"})},o.onmessage=function(e){const l=JSON.parse(e.data);"hello"===l.command&&t({command:"info",plugins:{less:{disable:!1,version:"1.0"}},url:document.location}),"reload"===l.command&&(a=0)},o.onerror=function(e){console.warn("websocket error",e)},o.onclose=function(e){o=null}),r=setInterval(()=>{const e=Date.now();!c||o&&a||e-a<s||(a=e,walkFileTree(c).catch(e=>{console.error("failed to read files",e)}).then(o=>{const a=flattenFiles(n),t=flattenFiles(o),c=changedFiles(a,t);c.length>0&&(n=o,l.callback({type:"read",id:"loadRemote",data:n,path:u,changed:c}));const r=Date.now();s=Math.max(2*(r-e),1e3)}))},50)):r&&(clearInterval(r),r=0)},write:()=>{}};(h[i]||h.unhandled)()})}}};module.exports=makeLocalFsSideEffect;
3280
3283
 
3281
- },{"../../../data/localFsOptions.json":629,"../../most-utils/callbackToObservable":792,"./utils":804,"@jscad/core":19}],804:[function(require,module,exports){
3284
+ },{"../../../data/localFsOptions.json":630,"../../most-utils/callbackToObservable":793,"./utils":805,"@jscad/core":19}],805:[function(require,module,exports){
3282
3285
  const sameFile=(e,t)=>{if(e.fullPath===t.fullPath&&typeof e.source==typeof t.source){if(e.source.byteLength){const n=new Uint8Array(e.source),r=new Uint8Array(t.source);return n.length===r.length&&n.every((e,t)=>e===r[t])}return e.length===t.length&&e.source===t.source}return!1},changedFiles=(e,t)=>{const n=e.slice();return t.filter(e=>{const t=n.findIndex((t,n)=>sameFile(t,e));return t<0||(n.splice(t,1),!1)})},flattenFiles=e=>{let t=[];return e.forEach(e=>{e.children?t=t.concat(flattenFiles(e.children)):t.push(e)}),t};module.exports={changedFiles:changedFiles,flattenFiles:flattenFiles};
3283
3286
 
3284
- },{}],805:[function(require,module,exports){
3287
+ },{}],806:[function(require,module,exports){
3285
3288
  const callbackToObservable=require("../../most-utils/callbackToObservable"),makeStorageSideEffect=({name:e})=>{const a=callbackToObservable();return{sink:t=>{let r=!0;try{localStorage.getItem("jscad:")}catch(e){r=!1}r?t&&t.forEach(t=>{const{type:r,key:c,data:o}=t;if("write"===r)localStorage.setItem(`jscad:${e}-${c}`,JSON.stringify(o));else if("read"===r){const t=localStorage.getItem(`jscad:${e}-${c}`),o=JSON.parse(t)||{};a.callback({type:r,key:c,data:o})}}):callbackToObservable().callback({type:void 0,id:void 0,error:new Error("Local storage not supported in this environment!")})},source:()=>{return a.stream.multicast()}}};module.exports=makeStorageSideEffect;
3286
3289
 
3287
- },{"../../most-utils/callbackToObservable":792}],806:[function(require,module,exports){
3290
+ },{"../../most-utils/callbackToObservable":793}],807:[function(require,module,exports){
3288
3291
  const most=require("most"),callbackToObservable=require("../../most-utils/callbackToObservable"),makeState=t=>{const{packageMetadata:s,keyBindings:a}=t,e=callbackToObservable(),r={appTitle:`jscad v ${s.version}`,activeTool:void 0,status:{message:"",error:void 0,busy:!1},shortcuts:a,storage:{path:""},version:s.version};return{source:()=>{const t=e.stream.multicast();return most.scan((t,s)=>Object.assign({},t,s.state),r,t).startWith(r).skipRepeatsWith((t,s)=>JSON.stringify(t)===JSON.stringify(s)).multicast()},sink:t=>{t.forEach(t=>{e.callback(t)})}}};module.exports=makeState;
3289
3292
 
3290
- },{"../../most-utils/callbackToObservable":792,"most":740}],807:[function(require,module,exports){
3293
+ },{"../../most-utils/callbackToObservable":793,"most":741}],808:[function(require,module,exports){
3291
3294
  const most=require("most"),makeTitleBarSideEffect=()=>{return{sink:e=>{e.forEach(e=>{document.title=e})},source:()=>{const e=window.location.href;return most.just(e).filter(e=>void 0!==e).multicast().skipRepeats()}}};module.exports=makeTitleBarSideEffect;
3292
3295
 
3293
- },{"most":740}],808:[function(require,module,exports){
3296
+ },{"most":741}],809:[function(require,module,exports){
3294
3297
  const WebWorkify=require("webworkify"),callBackToStream=require("../../most-utils/callbackToObservable"),makeWorkerEffect=e=>{const r=callBackToStream();let a=WebWorkify(e,{});a.onerror=(e=>r.callback({error:e})),a.onmessage=(e=>r.callback(e));return{sink:c=>{c.filter(({cmd:e})=>"cancel"===e).forEach(c=>{a.terminate(),(a=WebWorkify(e)).onerror=(e=>r.callback({error:e})),a.onmessage=(e=>r.callback(e))}),c.filter(({cmd:e})=>"cancel"!==e).forEach(e=>{a.postMessage(e)})},source:function(){return r.stream.multicast()}}};module.exports=makeWorkerEffect;
3295
3298
 
3296
- },{"../../most-utils/callbackToObservable":792,"webworkify":782}],809:[function(require,module,exports){
3299
+ },{"../../most-utils/callbackToObservable":793,"webworkify":783}],810:[function(require,module,exports){
3297
3300
  const most=require("most"),{delayFromObservable:delayFromObservable,holdUntil:holdUntil,withLatestFrom:withLatestFrom}=require("../../most-utils"),{getParameterValuesFromUIControls:getParameterValuesFromUIControls}=require("@jscad/core").parameters,{fetchUriParams:fetchUriParams,getAllUriParams:getAllUriParams}=require("../../utils/urlUtils"),reducers=require("./reducers"),jsonCompare=(e,t)=>JSON.stringify(e)===JSON.stringify(t),actions=({sources:e})=>{const t=most.just({}).thru(withLatestFrom(reducers.initialize,e.state)).map(e=>({type:"initializeDesign",state:e,sink:"state"})).multicast(),r=t.map(e=>({sink:"store",key:"design",type:"read"})),s=e.state.filter(reducers.isDesignValid).skipRepeatsWith(reducers.isDesignTheSameForSerialization).thru(holdUntil(e.store.filter(e=>"design"===e.key&&"read"===e.type))).map(reducers.requestSaveSettings).map(e=>Object.assign({},{data:e},{sink:"store",key:"design",type:"write"})).multicast(),a=e.store.filter(e=>"design"===e.key&&"read"===e.type&&void 0!==e.data).thru(withLatestFrom(reducers.setSettings,e.state)).map(e=>({type:"setDesignSettings",state:e,sink:"state"})).multicast(),i=most.mergeArray([e.drops.filter(e=>"fileOrFolder"===e.type).tap(e=>console.log("dropped file",e)).map(({data:e})=>({sink:"fs",data:e,path:"realFs",urls:[]})),e.drops.filter(e=>"url"===e.type).tap(e=>console.log("dropped url",e)).map(e=>{const t=window.location.href,r=e.data,s=new URL(r),a=r?[r]:[],{protocol:i,pathname:o}=s;return{sink:i.replace(":",""),urls:a,origin:t,path:o,proxy:!0}}),e.dom.select(".example").events("click").map(e=>e.target.dataset.path).map(e=>{const t=new URL(e),r=e?[e]:[],{protocol:s,origin:a}=t;return{sink:s.replace(":",""),urls:r,origin:a}}).tap(e=>console.log("load example",e)),e.dom.select("#fileLoader").events("change").tap(e=>console.log("selected directory",e)).filter(e=>e.target.files.length>0).map(e=>{const t=e.target.files,r=[];for(let e=0;e<t.length;e++)r.push(t.item(e));return{sink:"fs",data:r,path:"realFs",urls:[]}}),e.titleBar.filter(e=>void 0!==e).tap(e=>console.log("window href processing",e)).map(e=>{const t=e;let r=fetchUriParams(e,"uri",void 0);if(!r){const t=new URL(e);if(0===t.hash.length)return;r=t.hash.slice(1)}const s=new URL(r),a=[r],{protocol:i,pathname:o}=s;return{sink:i.replace(":",""),urls:a,origin:t,path:o,proxy:!0}})]).filter(e=>void 0!==e).thru(holdUntil(a)).map(e=>({type:"read",id:"loadRemote",urls:e.urls,sink:e.sink,origin:e.origin,path:e.path,data:e.data,proxy:e.proxy})).multicast().skipRepeats(),o=most.mergeArray(Object.values(e).filter(e=>void 0!==e&&"source"in e)).filter(e=>!("loadRemote"!==e.id||"read"!==e.type||"error"in e||"sink"in e)).map(({data:e})=>({filesAndFolders:e})).thru(withLatestFrom(reducers.setDesignContent,e.state)).map(e=>({type:"setDesignContent",state:e,sink:"state"})).multicast(),n=most.mergeArray([e.state.filter(reducers.isDesignValid).map(({design:e})=>{return{id:"watchScript",path:e.mainPath,origin:e.origin,options:{enabled:e.autoReload}}}).skipRepeatsWith(jsonCompare)]).map(e=>Object.assign({},{type:"watch",sink:e.origin},e)).multicast(),l=most.mergeArray([e.state.filter(reducers.isDesignValid).filter(e=>void 0!==e.design.solids).map(e=>e.design.solids).skipRepeatsWith(jsonCompare)]).thru(withLatestFrom(reducers.requestWriteCachedGeometry,e.state)).map(e=>Object.assign({},{type:"write",id:"cachedGeometry",sink:e.origin},e)).multicast(),m=most.mergeArray([i.map(({sink:e})=>e)]).thru(withLatestFrom(reducers.resetDesign,e.state)).map(e=>({type:"resetDesign",state:e,sink:"state"})).multicast(),d=most.mergeArray([e.solidWorker.filter(e=>!("error"in e)&&e.data instanceof Object&&"solids"===e.data.type).map(e=>{const{lookupCounts:t,lookup:r,solids:s}=e.data;return{solids:s,lookup:r,lookupCounts:t}}).multicast(),e.fs.filter(e=>"read"===e.type&&"loadCachedGeometry"===e.id&&e.data).map(e=>{return{solids:void 0,lookupCounts:void 0,lookup:void e.data}}).multicast()]).thru(withLatestFrom(reducers.setDesignSolids,e.state)).map(e=>({type:"setDesignSolids",state:e,sink:"state"})).multicast(),p=e.state.skipRepeatsWith(reducers.isDesignTheSame).filter(reducers.isDesignValid).map(reducers.requestGeometryRecompute).map(e=>Object.assign({},e,{sink:"geometryWorker",cmd:"generate"})).multicast(),u=p.thru(delayFromObservable(e=>e.design.solidsTimeOut,e.state.filter(reducers.isDesignValid))).thru(withLatestFrom(reducers.timeoutGeometryRecompute,e.state)).map(e=>Object.assign({},{state:e},{sink:"state",type:"timeOutDesignGeneration"})).multicast(),c=u.filter(({state:e})=>void 0!==e.status.error).map(e=>Object.assign({},{sink:"geometryWorker",cmd:"cancel"})).multicast(),g=e.solidWorker.filter(e=>!("error"in e)&&e.data instanceof Object&&"params"===e.data.type).map(({data:e})=>({parameterDefaults:e.parameterDefaults,parameterDefinitions:e.parameterDefinitions,origin:"worker"})),h=most.mergeArray([g]).skipRepeatsWith(jsonCompare).thru(holdUntil(e.state.filter(reducers.isDesignValid))).thru(withLatestFrom(reducers.setDesignParameterDefinitions,e.state)).map(e=>({type:"setDesignParameterDefinitions",state:e,sink:"state"})).multicast(),y=()=>Array.from(document.getElementById("paramsTable").getElementsByTagName("input")).concat(Array.from(document.getElementById("paramsTable").getElementsByTagName("select"))).concat(Array.from(document.getElementById("paramsTable").getElementsByClassName("groupTitle"))),k=most.mergeArray([e.dom.select("#updateDesignFromParams").events("click").map(()=>{const e=y();return{parameterValues:getParameterValuesFromUIControls(e),origin:"uiManualUpdate"}}),e.paramChanges.filter(e=>(()=>document.getElementById("instantUpdate").checked)()).map(()=>{try{const e=y();return{parameterValues:getParameterValuesFromUIControls(e),origin:"uiInstantUpdate"}}catch(e){return{error:e,origin:"instantUpdate"}}})]).multicast().debounce(10),f=e.store.filter(e=>"design"===e.key&&"read"===e.type&&void 0!==e.data.parameterValues).map(({data:e})=>({parameterValues:e.parameterValues,origin:"store"})).multicast(),D=e.titleBar.map(e=>getAllUriParams(e)).filter(e=>Object.keys(e).length>0).map(e=>({parameterValues:e,origin:"titleBar"})).multicast(),F=e.state.filter(reducers.isDesignValid).multicast(),w=most.mergeArray([k,f,D,e.dom.select("#resetDesignToParameterDefaults").events("click").thru(withLatestFrom((e,t)=>({parameterValues:e.design.parameterDefaults,origin:"reset"}),e.state))]).skipRepeatsWith(jsonCompare).thru(holdUntil(e.state.filter(reducers.isDesignValid))).thru(holdUntil(F.filter(e=>{return e.design&&Object.keys(e.design.parameterDefinitions).length>0}))).thru(withLatestFrom(reducers.setDesignParameterValues,e.state)).map(e=>({type:"setDesignParameterValues",state:e,sink:"state"})).multicast().delay(10),U=e.solidWorker.filter(e=>e.data instanceof Object&&"errors"===e.data.type).map(({data:e})=>({error:e,origin:"worker"}));return{initialize$:t,requestLoadDesignContent$:i,requestWatchDesign$:n,requestWriteCachedGeometry$:l,resetDesign$:m,setDesignContent$:o,setDesignSolids$:d,setDesignParameterDefinitions$:h,setDesignParameterValues$:w,reportErrorsFromWorker$:most.mergeArray([U]).skipRepeatsWith(jsonCompare).tap(e=>console.log("errors",e)),requestGeometryRecompute$:p,timeoutGeometryRecompute$:u,cancelGeometryRecompute$:c,requestLoadSettings$:r,requestSaveSettings$:s,setDesignSettings$:a,toggleAutoReload$:most.mergeArray([e.dom.select("#toggleAutoReload").events("click").map(e=>e.target.checked)]).thru(withLatestFrom(reducers.toggleAutoReload,e.state)).map(e=>({type:"toggleAutoReload",state:e,sink:"state"})),toggleInstantUpdate$:most.mergeArray([e.dom.select("#instantUpdate").events("click").map(e=>e.target.checked)]).thru(withLatestFrom(reducers.toggleInstantUpdate,e.state)).map(e=>({type:"toggleInstantUpdate",state:e,sink:"state"})),toggleVTreeMode$:most.mergeArray([e.dom.select("#toggleVtreeMode").events("click").map(e=>e.target.checked)]).thru(withLatestFrom(reducers.toggleVtreeMode,e.state)).map(e=>({type:"toggleVtreeMode",state:e,sink:"state"})),setSolidsTimeout$:most.mergeArray([e.dom.select("#solidsTimeout").events("change").map(e=>e.target.value).map(e=>parseFloat(e))]).thru(withLatestFrom(reducers.setSolidsTimeout,e.state)).map(e=>({type:"setSolidsTimeout",state:e,sink:"state"}))}};module.exports=actions;
3298
3301
 
3299
- },{"../../most-utils":795,"../../utils/urlUtils":837,"./reducers":816,"@jscad/core":19,"most":740}],810:[function(require,module,exports){
3302
+ },{"../../most-utils":796,"../../utils/urlUtils":838,"./reducers":817,"@jscad/core":19,"most":741}],811:[function(require,module,exports){
3300
3303
  const makeOutput=({sources:e,extras:t})=>e.state.filter(e=>e.design&&e.languages&&e.viewer).skipRepeatsWith((e,t)=>JSON.stringify(e)===JSON.stringify(t)).combine((e,a)=>require("../views/main")(e,a,t.paramsCallbacktoStream,t.editorCallbackToStream),e.i18n.filter(e=>"changeSettings"===e.type).map(e=>e.data));module.exports=makeOutput;
3301
3304
 
3302
- },{"../views/main":826}],811:[function(require,module,exports){
3305
+ },{"../views/main":827}],812:[function(require,module,exports){
3303
3306
  const most=require("most"),{withLatestFrom:withLatestFrom}=require("../../most-utils"),reducers={setErrors:(r,t)=>{const{error:s}=t;return{status:Object.assign({},r.status,{error:s,busy:!1})}},clearErrors:(r,t)=>{return{status:Object.assign({},r.status,{error:void 0,busy:!1})}}},actions=({sources:r})=>{return{setErrors$:most.mergeArray(Object.values(r).filter(r=>void 0!==r&&"source"in r)).filter(r=>{try{return"error"in r}catch(r){return!1}}).thru(withLatestFrom(reducers.setErrors,r.state)).map(r=>Object.assign({},{type:"setErrors",sink:"state"},{state:r})),clearErrors$:most.never().thru(withLatestFrom(reducers.clearErrors,r.state)).map(r=>Object.assign({},{type:"clearErrors",sink:"state"},{state:r}))}};module.exports=actions;
3304
3307
 
3305
- },{"../../most-utils":795,"most":740}],812:[function(require,module,exports){
3308
+ },{"../../most-utils":796,"most":741}],813:[function(require,module,exports){
3306
3309
  const most=require("most"),{solidsAsBlob:solidsAsBlob}=require("@jscad/io"),{withLatestFrom:withLatestFrom}=require("../../most-utils"),{exportFilePathFromFormatAndDesign:exportFilePathFromFormatAndDesign}=require("../../core/io/exportUtils"),reducers={initialize:t=>{return{io:{exportFormat:"",exportFilePath:"",availableExportFormats:[]}}},setExportFormat:(t,e)=>{return{io:Object.assign({},t.io,exportFilePathFromFormatAndDesign(t.design,e),{exportFormat:e})}},requestExport:t=>{const{exportFilePath:e,exportFormat:r}=t.io,{solids:s}=t.design,{saveAs:o}=require("file-saver");o(solidsAsBlob(s,{format:r}),e)}},actions=({sources:t})=>{const e=most.just({}).thru(withLatestFrom(reducers.initialize,t.state)).map(t=>Object.assign({},{type:"initializeExports",sink:"state"},{state:t})),r=t.dom.select("#exportFormats").events("change").map(t=>t.target.value).thru(withLatestFrom(reducers.setExportFormat,t.state)).map(t=>Object.assign({},{type:"changeExportFormat",sink:"state"},{state:t})).multicast();return{initializeExports$:e,requestExport$:t.dom.select("#exportBtn").events("click").thru(withLatestFrom(reducers.requestExport,t.state)).map(t=>({type:"exportRequested",data:t})),changeExportFormat$:r}};module.exports=actions;
3307
3310
 
3308
- },{"../../core/io/exportUtils":784,"../../most-utils":795,"@jscad/io":69,"file-saver":696,"most":740}],813:[function(require,module,exports){
3311
+ },{"../../core/io/exportUtils":785,"../../most-utils":796,"@jscad/io":69,"file-saver":697,"most":741}],814:[function(require,module,exports){
3309
3312
  const most=require("most"),{flatten:flatten}=require("@jscad/array-utils"),{proxy:proxy}=require("most-proxy"),makeActions=e=>{const{attach:r,stream:s}=proxy();e.actions=s.skipRepeatsWith((e,r)=>JSON.stringify(e)===JSON.stringify(r)).multicast();const t=require("./tools")({sources:e}),i=require("./viewer")({sources:e}),o=require("./themes")({sources:e}),u=require("./languages")({sources:e}),a=require("./shortcuts")({sources:e}),c=require("./errors")({sources:e}),n=require("./exports")({sources:e}),m=[c,require("./design")({sources:e}),n,t,o,i,u,a],l=most.mergeArray(flatten(m.map(e=>Object.values(e)))).skipRepeatsWith((e,r)=>JSON.stringify(e)===JSON.stringify(r)).multicast().filter(e=>void 0!==e);return r(l),l};module.exports=makeActions;
3310
3313
 
3311
- },{"./design":809,"./errors":811,"./exports":812,"./languages":815,"./shortcuts":817,"./themes":818,"./tools":819,"./viewer":820,"@jscad/array-utils":520,"most":740,"most-proxy":701}],814:[function(require,module,exports){
3314
+ },{"./design":810,"./errors":812,"./exports":813,"./languages":816,"./shortcuts":818,"./themes":819,"./tools":820,"./viewer":821,"@jscad/array-utils":521,"most":741,"most-proxy":702}],815:[function(require,module,exports){
3312
3315
  const makeReactions=i=>{const{sinks:s,outputs$:t}=i,{store:n,fs:e,http:k,https:r,i18n:o,dom:f,solidWorker:l,state:a,dat:d}=s;f(require("./dom")(i)),o(t.filter(i=>"sink"in i&&"i18n"===i.sink)),n(t.filter(i=>"sink"in i&&"store"===i.sink)),k(t.filter(i=>"sink"in i&&"http"===i.sink)),r(t.filter(i=>"sink"in i&&"https"===i.sink)),e(t.filter(i=>"sink"in i&&"fs"===i.sink)),l(t.filter(i=>"sink"in i&&"geometryWorker"===i.sink)),a(t.filter(i=>"sink"in i&&"state"===i.sink)),d(t.filter(i=>"sink"in i&&"dat"===i.sink))};module.exports=makeReactions;
3313
3316
 
3314
- },{"./dom":810}],815:[function(require,module,exports){
3317
+ },{"./dom":811}],816:[function(require,module,exports){
3315
3318
  const most=require("most"),{holdUntil:holdUntil,withLatestFrom:withLatestFrom}=require("../../most-utils"),reducers={initialize:e=>{return{languages:{active:void 0,available:[]}}},setLanguage:(e,a)=>{return{languages:Object.assign({},e.languages,{active:a})}},setAvailableLanguages:(e,a)=>{return{languages:Object.assign({},e.languages,{available:a})}},requestSaveSettings:e=>({active:e.active})},actions=({sources:e})=>{const a=most.just({}).thru(withLatestFrom(reducers.initialize,e.state)).map(e=>Object.assign({},{type:"initializeLanguages",sink:"state"},{state:e})),t=a.map(e=>({type:"getAvailableLanguages",sink:"i18n"})),s=t.map(e=>({type:"getDefaultLocale",sink:"i18n"})),i=e.state.filter(e=>e.languages&&void 0!==e.languages.active).map(e=>e.languages.active).skipRepeatsWith((e,a)=>JSON.stringify(e)===JSON.stringify(a)).map(e=>({type:"changeSettings",data:e,sink:"i18n"})),g=most.mergeArray([e.i18n.filter(e=>"getAvailableLanguages"===e.type).map(e=>e.data)]).thru(withLatestFrom(reducers.setAvailableLanguages,e.state)).map(e=>Object.assign({},{type:"setAvailableLanguages",sink:"state"},{state:e})).multicast(),n=a.map(e=>({sink:"store",key:"languages",type:"read"})),l=e.i18n.thru(holdUntil(g)).filter(e=>"getDefaultLocale"===e.type).map(e=>e.data).multicast().delay(1),r=e.store.filter(e=>"languages"===e.key&&"read"===e.type).thru(holdUntil(l)).map(e=>e.data.active).filter(e=>void 0!==e);return{initialize$:a,requestGetAvailableLanguages$:t,requestGetDefaultLanguage$:s,requestGetLanguageData$:i,setLanguage$:most.mergeArray([l,e.dom.select("#languageSwitcher").events("change").map(e=>e.target.value),r]).thru(withLatestFrom(reducers.setLanguage,e.state)).map(e=>Object.assign({},{type:"setLanguage",sink:"state"},{state:e})),setAvailableLanguages$:g,requestLoadSettings$:n,requestSaveSettings$:e.state.filter(e=>e.languages).map(e=>e.languages).thru(holdUntil(e.store.filter(e=>"languages"===e.key&&"read"===e.type))).map(reducers.requestSaveSettings).map(e=>Object.assign({},{data:e},{sink:"store",key:"languages",type:"write"})).multicast()}};module.exports=actions;
3316
3319
 
3317
- },{"../../most-utils":795,"most":740}],816:[function(require,module,exports){
3320
+ },{"../../most-utils":796,"most":741}],817:[function(require,module,exports){
3318
3321
  const path=require("path"),{applyParameterDefinitions:applyParameterDefinitions}=require("@jscad/core").parameters,{makeFakeFs:makeFakeFs}=require("@jscad/core").loading,{getDesignEntryPoint:getDesignEntryPoint,getDesignName:getDesignName}=require("@jscad/core").loading.requireDesignUtilsFs,{keep:keep}=require("../../utils/object"),packageMetadata=require("../../../package.json"),{availableExportFormatsFromSolids:availableExportFormatsFromSolids,exportFilePathFromFormatAndDesign:exportFilePathFromFormatAndDesign}=require("../../core/io/exportUtils"),designEqualityFields=["parameterDefinitions","parameterValues","mainPath","filesAndFolders","vtreeMode"],serializableFields=["name","mainPath","origin","parameterValues","vtreeMode","autoReload","instantUpdate","solidsTimeOut"],reducers={initialize:()=>{return{design:{name:"",path:"",mainPath:"",origin:void 0,filesAndFolders:[],instantUpdate:!1,autoReload:!1,parameterDefinitions:[],parameterValues:{},parameterDefaults:{},solidsTimeOut:8e4,solids:[],vtreeMode:!1,lookup:{},lookupCounts:{},debug:{startTime:0,endTime:0,totalTime:0}}}},resetDesign:(e,t)=>{const i=Object.assign({},e.design,keep(["name","path","mainPath","origin","filesAndFolders","parameterDefinitions","parameterValues","parameterDefaults","lookup","lookupCounts","debug","solids"],reducers.initialize().design));return i.origin=t,{design:i}},setDesignContent:(e,t)=>{const{filesAndFolders:i}=t,s=makeFakeFs(i),a=i[0].fullPath,n=getDesignEntryPoint(s,a),r=getDesignName(s,a),o=path.dirname(a);let d=e.design;const g=Object.assign({},e.design.debug,{startTime:new Date});return{design:d=Object.assign({},d,{name:r,path:o,mainPath:n,filesAndFolders:i,debug:g}),appTitle:`jscad v ${packageMetadata.version}: ${e.design.name}`,status:Object.assign({},e.status,{busy:!0,error:void 0})}},setDesignSolids:(e,{solids:t,lookup:i,lookupCounts:s})=>{t=t||[],i=i||{},s=s||{};const a=new Date,n=a-e.design.debug.startTime,r=Object.assign({},e.design.debug,{endTime:a,totalTime:n});console.warn("total time for design regeneration",n,(new Date).getSeconds());const o=Object.assign({},e.design,{solids:t,lookup:i,lookupCounts:s,debug:r}),{exportFormat:d,availableExportFormats:g}=availableExportFormatsFromSolids(t),l={exportFormat:d,exportFilePath:exportFilePathFromFormatAndDesign(o,d).exportFilePath,availableExportFormats:g};return{design:o,status:Object.assign({},e.status,{busy:!1}),io:l}},setDesignParameterDefinitions:(e,t)=>{const i=t.parameterDefaults||e.design.parameterDefaults,s=t.parameterDefinitions||e.design.parameterDefinitions;return{design:Object.assign({},e.design,{parameterDefaults:i,parameterDefinitions:s,parametersOrigin:t.origin})}},setDesignParameterValues:(e,t)=>{let i=t.parameterValues;"instantUpdate"!==t.origin||e.design.instantUpdate||(i=e.design.parameterValues),i=i?applyParameterDefinitions(i,e.design.parameterDefinitions):i,i=Object.assign({},e.design.parameterValues,i);let s=Object.assign({},e.design,{parameterValues:i,parametersOrigin:t.origin});const a=Object.assign({},e.design.debug,{startTime:new Date});return{design:s=Object.assign({},s,{debug:a}),status:Object.assign({},e.status,{busy:!0,error:void 0})}},setSettings:(e,{data:t})=>{const{vtreeMode:i,autoReload:s,instantUpdate:a,solidsTimeOut:n}=t;return void 0===i?{design:e.design}:{design:Object.assign({},e.design,{vtreeMode:i,autoReload:s,instantUpdate:a,solidsTimeOut:n})}},requestGeometryRecompute:({design:e},t)=>keep(["mainPath","parameterValues","filesAndFolders","vtreeMode","lookup","lookupCounts"],e),timeoutGeometryRecompute:({status:e},t)=>e.isBusy?Object.assign({},e,{busy:!1,error:new Error("Failed to generate design within an acceptable time, bailing out")}):{status:e},requestWriteCachedGeometry:({design:e},t)=>{const i={};return Object.keys(t).forEach(e=>{i[e]=t[e]}),{path:".solidsCache",options:{isRawData:!0},origin:e.origin}},requestSaveSettings:({design:e})=>keep(serializableFields,e),isDesignValid:e=>e.design&&e.design.name&&""!==e.design.path,isDesignTheSame:(e,t)=>{if(!e.design)return!1;const i=JSON.stringify(keep(designEqualityFields,t.design));return JSON.stringify(keep(designEqualityFields,e.design))===i},isDesignTheSameForSerialization:(e,t)=>{if(!e.design)return!1;const i=JSON.stringify(keep(serializableFields,t.design));return JSON.stringify(keep(serializableFields,e.design))===i},toggleAutoReload:(e,t)=>{return{design:Object.assign({},e.design,{autoReload:t})}},toggleInstantUpdate:(e,t)=>{return{design:Object.assign({},e.design,{instantUpdate:t})}},toggleVtreeMode:(e,t)=>{return{design:Object.assign({},e.design,{vtreeMode:t})}},setSolidsTimeout:(e,t)=>{return{design:Object.assign({},e.design,{solidsTimeOut:t})}}};module.exports=reducers;
3319
3322
 
3320
- },{"../../../package.json":783,"../../core/io/exportUtils":784,"../../utils/object":836,"@jscad/core":19,"path":684}],817:[function(require,module,exports){
3323
+ },{"../../../package.json":784,"../../core/io/exportUtils":785,"../../utils/object":837,"@jscad/core":19,"path":685}],818:[function(require,module,exports){
3321
3324
  const most=require("most"),{head:head}=require("@jscad/array-utils"),{holdUntil:holdUntil,withLatestFrom:withLatestFrom}=require("../../most-utils"),{getKeyCombos:getKeyCombos,isKeyEventScopeValid:isKeyEventScopeValid,simpleKey:simpleKey}=require("../../utils/keys"),{merge:merge}=require("../../utils/utils"),reducers={initialize:e=>e,setShortcuts:(e,t)=>{return{shortcuts:merge([],e.shortcuts,t)}},setShortcut:(e,t)=>{const s=t=>e.shortcuts.filter(e=>e.key===t).length>0;return{shortcuts:e.shortcuts.map(e=>{if(e.command===t.command&&e.args===t.args){if("inProgress"in t){const{inProgress:r,tmpKey:o}=t;if(r){const t=s(o)?"shortcut already exists":void 0;return Object.assign({},e,{inProgress:r,tmpKey:o,error:t})}return Object.assign({},e,{inProgress:r,tmpKey:o})}if(t.done&&!s(t.key)){const{command:s,args:r}=e;return{key:t.key,command:s,args:r}}return e}return e})}},triggerShortcut:(e,{event:t,compositeKey:s})=>{const r=head(e.shortcuts.filter(e=>e.key.toLowerCase()===s));if(r){const{command:e,args:t}=r;return{type:e,data:t}}},requestSaveSettings:e=>e},actions=({sources:e})=>{const t=most.just({}).thru(withLatestFrom(reducers.initialize,e.state)).map(e=>Object.assign({},{type:"initializeShortcuts",sink:"state"},{state:e})),s=most.mergeArray([e.store.filter(e=>"shortcuts"===e.key&&"read"===e.type&&e.data&&e.data.shortcuts).map(e=>e.data.shortcuts)]).thru(withLatestFrom(reducers.setShortcuts,e.state)).map(e=>Object.assign({},{type:"setShortcuts",sink:"state"},{state:e})),r=e.dom.select(".shortcutCommand").events("keyup").multicast(),o=e.dom.select(".shortcutCommand").events("keydown").multicast(),a=getKeyCombos({dropRepeats:!0,endKeys:["enter","escape"]},r,o);r.forEach(e=>(e.preventDefault(),e.stopPropagation(),!1)),o.forEach(e=>(e.preventDefault(),e.stopPropagation(),!1));const i=most.mergeArray([a.map(({event:e,compositeKey:t})=>({event:e,compositeKey:t,inProgress:!0})).merge(e.dom.select(".shortcutCommand").events("focus").map(e=>({event:e,compositeKey:"",inProgress:!0}))).merge(e.dom.select(".shortcutCommand").events("blur").map(e=>({event:e,compositeKey:"",inProgress:!1}))).merge(r.filter(e=>"escape"===simpleKey(e)).map(e=>({event:e,compositeKey:"",inProgress:!1}))).merge(r.filter(e=>"enter"===simpleKey(e)).map(e=>({event:e,done:!0}))).scan((e,t)=>{const{event:s,compositeKey:r,inProgress:o,done:a}=t,i=s.target.dataset.command,n=s.target.dataset.args,m=Object.assign({},e,{command:i,args:n,inProgress:o,done:a});return void 0!==r&&""!==r&&(m.key=r,m.tmpKey=r),"done"in m&&m.done&&(delete m.inProgress,delete m.tmpKey),m},{}).filter(e=>void 0!==e)]).thru(withLatestFrom(reducers.setShortcut,e.state)).map(e=>({type:"setShortcut",state:e,sink:"state"})).multicast(),n=e.dom.element.getAttribute("key"),m=most.fromEvent("keyup",e.dom.element).filter(e=>isKeyEventScopeValid(n,e.target)).multicast(),c=most.fromEvent("keydown",e.dom.element).filter(e=>isKeyEventScopeValid(n,e.target)).multicast(),u=getKeyCombos({dropRepeats:!1},m,c).thru(withLatestFrom(reducers.triggerShortcut,e.state)).filter(e=>void 0!==e),d=t.map(e=>({sink:"store",key:"shortcuts",type:"read"}));return{initialize$:t,setShortcut$:i,setShortcuts$:s,triggerFromShortcut$:u,requestLoadSettings$:d,requestSaveSettings$:e.state.filter(e=>e.shortcuts).map(e=>e.shortcuts).thru(holdUntil(e.store.filter(e=>"shortcuts"===e.key&&"read"===e.type))).map(reducers.requestSaveSettings).map(e=>Object.assign({},{data:e},{sink:"store",key:"shortcuts",type:"write"})).multicast()}};module.exports=actions;
3322
3325
 
3323
- },{"../../most-utils":795,"../../utils/keys":834,"../../utils/utils":838,"@jscad/array-utils":520,"most":740}],818:[function(require,module,exports){
3326
+ },{"../../most-utils":796,"../../utils/keys":835,"../../utils/utils":839,"@jscad/array-utils":521,"most":741}],819:[function(require,module,exports){
3324
3327
  const most=require("most"),{holdUntil:holdUntil,withLatestFrom:withLatestFrom}=require("../../most-utils"),{merge:merge}=require("../../utils/utils"),reducers={initialize:e=>{return{themes:{active:"light",themeSettings:{mainTextColor:"#FFF"}}}},setTheme:(e,t)=>{const s=require("../../../data/themes"),i=s[t]?s[t]:s.light;return{viewer:e.viewer?merge({},e.viewer,i.viewer):i.viewer,themes:Object.assign({},e.themes,{available:s,active:t,themeSettings:i})}},requestSaveSettings:e=>({active:e.active})},actions=({sources:e})=>{const t=most.just({}).thru(withLatestFrom(reducers.initialize,e.state)).map(e=>Object.assign({},{type:"initializeThemes",sink:"state"},{state:e})),s=most.mergeArray([e.dom.select("#themeSwitcher").events("change").map(e=>e.target.value),e.store.filter(e=>"themes"===e.key&&"read"===e.type&&e.data&&e.data.active).map(e=>e.data.active)]).startWith("light").thru(withLatestFrom(reducers.setTheme,e.state)).map(e=>Object.assign({},{type:"setTheme",sink:"state"},{state:e})),i=t.map(e=>({sink:"store",key:"themes",type:"read"}));return{initialize$:t,setTheme$:s,requestLoadSettings$:i,requestSaveSettings$:e.state.filter(e=>e.themes).map(e=>e.themes).thru(holdUntil(e.store.filter(e=>"themes"===e.key&&"read"===e.type))).map(reducers.requestSaveSettings).map(e=>Object.assign({},{data:e},{sink:"store",key:"themes",type:"write"})).multicast()}};module.exports=actions;
3325
3328
 
3326
- },{"../../../data/themes":670,"../../most-utils":795,"../../utils/utils":838,"most":740}],819:[function(require,module,exports){
3329
+ },{"../../../data/themes":671,"../../most-utils":796,"../../utils/utils":839,"most":741}],820:[function(require,module,exports){
3327
3330
  const most=require("most"),{withLatestFrom:withLatestFrom}=require("../../most-utils"),actions=({sources:e})=>{return{setActiveTool$:most.mergeArray([e.dom.select("#toggleOptions").events("click").map(e=>"options"),e.dom.select("#toggleEditor").events("click").map(e=>"editor"),e.dom.select("#toggleHelp").events("click").map(e=>"help"),e.dom.select(".example").events("mouseup").map(e=>void 0)]).thru(withLatestFrom((e,t)=>{return{activeTool:e.activeTool===t?void 0:t}},e.state)).map(e=>Object.assign({},{type:"setActiveTool",sink:"state"},{state:e}))}};module.exports=actions;
3328
3331
 
3329
- },{"../../most-utils":795,"most":740}],820:[function(require,module,exports){
3332
+ },{"../../most-utils":796,"most":741}],821:[function(require,module,exports){
3330
3333
  const most=require("most"),{withLatestFrom:withLatestFrom}=require("../../most-utils"),reducers={initialize:e=>{return{viewer:{rendering:{background:[1,1,1,1],meshColor:[0,.6,1,1],autoRotate:!1,autoZoom:!1},grid:{show:!1,color:[1,1,1,.1]},axes:{show:!0},camera:{position:""}}}},toggleAutoRotate:(e,t)=>{const r=Object.assign({},e.viewer.rendering,{autoRotate:t});return{viewer:Object.assign({},e.viewer,{rendering:r})}},toggleAutoZoom:(e,t)=>{const r=Object.assign({},e.viewer.rendering,{autoZoom:t});return{viewer:Object.assign({},e.viewer,{rendering:r})}},toggleGrid:(e,t)=>{const r=Object.assign({},e.viewer.grid,{show:t});return{viewer:Object.assign({},e.viewer,{grid:r})}},toggleAxes:(e,t)=>{const r=Object.assign({},e.viewer.axes,{show:t});return{viewer:Object.assign({},e.viewer,{axes:r})}},toPresetView:(e,t)=>{const r=Object.assign({},e.viewer.camera,{position:t});return{viewer:Object.assign({},e.viewer,{camera:r})}},setProjectionType:(e,t)=>{return{viewer:Object.assign({},e.viewer,{camera:{projectionType:t}})}}},actions=({sources:e})=>{const t=most.just({}).thru(withLatestFrom(reducers.initialize,e.state)).map(e=>Object.assign({},{type:"initializeViewer",sink:"state"},{state:e})),r=most.mergeArray([e.dom.select("#toggleGrid").events("click").map(e=>e.target.checked)]).thru(withLatestFrom(reducers.toggleGrid,e.state)).map(e=>({type:"toggleGrid",state:e,sink:"state"})),s=most.mergeArray([e.dom.select("#toggleAxes").events("click").map(e=>e.target.checked)]).thru(withLatestFrom(reducers.toggleAxes,e.state)).map(e=>({type:"toggleAxes",state:e,sink:"state"})),o=most.mergeArray([e.dom.select("#toggleAutoRotate").events("click").map(e=>e.target.checked)]).thru(withLatestFrom(reducers.toggleAutoRotate,e.state)).map(e=>({type:"toggleAutoRotate",state:e,sink:"state"})),i=most.mergeArray([e.dom.select("#toggleAutoZoom").events("click").map(e=>e.target.checked)]).thru(withLatestFrom(reducers.toggleAutoZoom,e.state)).map(e=>({type:"toggleAutoZoom",state:e,sink:"state"})),a=["toPresetView"];return{initializeViewer$:t,toggleGrid$:r,toggleAxes$:s,toggleAutoRotate$:o,toggleAutoZoom$:i,otherViewerActions$:e.actions.filter(e=>a.includes(e.type)).thru(withLatestFrom((e,t)=>reducers[t.type](e,t.data),e.state)).map(e=>({type:"otherActions",state:e,sink:"state"}))}};module.exports=actions;
3331
3334
 
3332
- },{"../../most-utils":795,"most":740}],821:[function(require,module,exports){
3335
+ },{"../../most-utils":796,"most":741}],822:[function(require,module,exports){
3333
3336
  const html=require("nanohtml"),{createParamControls:createParamControls}=require("./parameterControls"),designParameters=(e,t,a)=>{const{parameterValues:s,parameterDefinitions:r,parameterDefaults:n}=e.design;try{const{controls:i}=createParamControls(Object.assign({},n,s),r,t.callback);return html`
3334
3337
  <section id='params' style='visibility:${0===e.design.parameterDefinitions.length?"hidden":"visible"};color:${e.themes.themeSettings.secondaryTextColor}'>
3335
3338
  <span id='paramsTable'>
@@ -3346,19 +3349,19 @@ const html=require("nanohtml"),{createParamControls:createParamControls}=require
3346
3349
  </section>
3347
3350
  `}catch(t){t.stack=void 0,e.status.error=t}};module.exports=designParameters;
3348
3351
 
3349
- },{"./parameterControls":828,"nanohtml":776}],822:[function(require,module,exports){
3352
+ },{"./parameterControls":829,"nanohtml":777}],823:[function(require,module,exports){
3350
3353
  const html=require("nanohtml"),CodeMirror=require("codemirror");require("codemirror/mode/javascript/javascript"),require("codemirror/addon/hint/javascript-hint");const editorOptions={mode:"javascript",indentUnit:2,smartIndent:!1,indentWithTabs:!1,lineNumbers:!0,autofocus:!0};let editor,wrapper;const createFileTree=e=>{const r=e.getValue();return r&&r.length>0?[{ext:"js",fullPath:"/changes.js",mimetype:"javascript",name:"changes.js",source:r}]:null},createWrapper=(e,r)=>{if(!wrapper){(wrapper=html`
3351
3354
  <section class='popup-menu' id='editor' key='editor' style='visibility:${"editor"===e.activeTool?"visible":"hidden"}'>
3352
3355
  <textarea></textarea>
3353
3356
  </section>
3354
3357
  `).onkeydown=(e=>e.stopPropagation()),wrapper.onkeyup=(e=>e.stopPropagation()),(editor=CodeMirror.fromTextArea(wrapper.firstChild,editorOptions)).setOption("extraKeys",{Tab:e=>{const r=Array(e.getOption("indentUnit")+1).join(" ");e.replaceSelection(r)}});const r=document.getElementsByTagName("HEAD")[0],t=document.createElement("LINK");t.rel="stylesheet",t.href="./css/codemirror.css",r.appendChild(t)}return wrapper},editorWrapper=(e,r)=>{const t=createWrapper(e);if("editor"===e.activeTool){t.style.visibility="visible",t.focus();let i=e.shortcuts.find(e=>"reevaluate"===e.args);i||(i={args:"Shift-Enter"});let o=i.key.toUpperCase();const s={Tab:e=>{const r=Array(e.getOption("indentUnit")+1).join(" ");e.replaceSelection(r)}};s[o=(o=(o=(o=(o=o.replace(/enter/i,"Enter")).replace(/alt[+-]/i,"Alt-")).replace(/cmd[+-]/i,"Cmd-")).replace(/control[+-]/i,"Ctrl-")).replace(/shift[+-]/i,"Shift-")]=(e=>{const t=createFileTree(e);t&&r.callback({type:"read",id:"loadRemote",data:t})}),editor.setOption("extraKeys",s),editor.focus(),editor.scrollIntoView({line:0,ch:0}),setTimeout(()=>editor.refresh(),0)}else t.style.visibility="hidden";if(e.design&&e.design.filesAndFolders&&1===e.design.filesAndFolders.length){const r=e.design.filesAndFolders[0];let t=r.source?r.source:"";r.mimetype?r.mimetype.indexOf("javascript")<0&&(t="// imported from external format"):t="// imported from project",t!==editor.getValue()&&(editor.focus(),editor.setValue(t),editor.setCursor(0,0),editor.refresh())}return t};module.exports={editorWrapper:editorWrapper};
3355
3358
 
3356
- },{"codemirror":693,"codemirror/addon/hint/javascript-hint":692,"codemirror/mode/javascript/javascript":694,"nanohtml":776}],823:[function(require,module,exports){
3359
+ },{"codemirror":694,"codemirror/addon/hint/javascript-hint":693,"codemirror/mode/javascript/javascript":695,"nanohtml":777}],824:[function(require,module,exports){
3357
3360
  const html=require("nanohtml"),path=require("path"),examplesData=require("../../../examples/examples.json"),examples=(e,a)=>{const l=new URL(window.location.href);let t=("null"===l.origin?"file://":l.origin)+path.dirname(l.pathname);t=t.endsWith("/")?t:t+path.sep;const s=[];for(const e in examplesData){if(!Object.prototype.hasOwnProperty.call(examplesData,e))continue;const a=examplesData[e].map(e=>html`<li>
3358
3361
  <a class="example" title="${e.description}" data-path="${t}${e.filePath}" href="#"> ${e.title} </a>
3359
3362
  </li>`);s.push(html`<li>${e}<ul class="examples-list">${a}</ul></li>`)}return html`<ul class="examples-group">${s}</ul>`};module.exports=examples;
3360
3363
 
3361
- },{"../../../examples/examples.json":671,"nanohtml":776,"path":684}],824:[function(require,module,exports){
3364
+ },{"../../../examples/examples.json":672,"nanohtml":777,"path":685}],825:[function(require,module,exports){
3362
3365
  const html=require("nanohtml"),help=(l,e)=>{const n=require("./examples")(l,e);return html`
3363
3366
  <section id='help' class="popup-menu" style='visibility:${"help"===l.activeTool?"visible":"hidden"};' >
3364
3367
  <div>
@@ -3385,7 +3388,7 @@ const html=require("nanohtml"),help=(l,e)=>{const n=require("./examples")(l,e);r
3385
3388
  </section>
3386
3389
  `};module.exports=help;
3387
3390
 
3388
- },{"./examples":823,"nanohtml":776}],825:[function(require,module,exports){
3391
+ },{"./examples":824,"nanohtml":777}],826:[function(require,module,exports){
3389
3392
  const html=require("nanohtml"),io=(e,o)=>{const t=e.io.availableExportFormats.map(({name:t,displayName:l})=>{l=o.translate(l);const a=e.io.exportFormat?e.io.exportFormat.toLowerCase()===t.toLowerCase():void 0;return html`<option value=${t} selected='${a}'>
3390
3393
  ${l}
3391
3394
  </option>`}),l=e.io.availableExportFormats.length>0;return html`
@@ -3404,7 +3407,7 @@ const html=require("nanohtml"),io=(e,o)=>{const t=e.io.availableExportFormats.ma
3404
3407
  </span>
3405
3408
  `};module.exports=io;
3406
3409
 
3407
- },{"nanohtml":776}],826:[function(require,module,exports){
3410
+ },{"nanohtml":777}],827:[function(require,module,exports){
3408
3411
  const html=require("nanohtml"),dom=(e,r,t,o)=>{const i=e=>e;i.translate=(e=>e),r=r||i;const s=require("./options")(e,r),n=require("./designParameters")(e,t,r),a=require("./status")(e,r),d=require("./help")(e,r),m=require("./io")(e,r),p=require("./editor").editorWrapper(e,o,r),u=require("./toolbar")(e,r),l=require("./viewer")(e,r),h=require("./viewerControls")(e,r);if(e.themes&&e.themes.themeSettings){const{mainTextColor:r,secondaryTextColor:t}=e.themes.themeSettings,o=document.body;o.style.setProperty("--main-text-color",`${r}`),o.style.setProperty("--secondary-text-color",`${t}`)}return html`
3409
3412
  <div id='container'>
3410
3413
  <div id='header'>
@@ -3439,7 +3442,7 @@ const html=require("nanohtml"),dom=(e,r,t,o)=>{const i=e=>e;i.translate=(e=>e),r
3439
3442
  </div>
3440
3443
  `};module.exports=dom;
3441
3444
 
3442
- },{"./designParameters":821,"./editor":822,"./help":824,"./io":825,"./options":827,"./status":830,"./toolbar":831,"./viewer":832,"./viewerControls":833,"nanohtml":776}],827:[function(require,module,exports){
3445
+ },{"./designParameters":822,"./editor":823,"./help":825,"./io":826,"./options":828,"./status":831,"./toolbar":832,"./viewer":833,"./viewerControls":834,"nanohtml":777}],828:[function(require,module,exports){
3443
3446
  const html=require("nanohtml"),options=(e,t)=>{const l=e.languages.available.map(l=>{const i=e.languages.active===l.code;return html`<option value='${l.code}' selected=${i}>${t.translate(l.fullName)}</option>`}),i=Object.entries(e.themes.available).map(t=>{const l=t[0],i=t[1].name,s=e.themes.active===l;return html`<option value='${l}' selected=${s}>${i}</option>`}),s=require("./shortcuts")(e,t);return html`
3444
3447
  <section class="popup-menu" id='options' style='visibility:${"options"===e.activeTool?"visible":"hidden"}; color:${e.themes.themeSettings.secondaryTextColor}'>
3445
3448
 
@@ -3468,7 +3471,7 @@ const html=require("nanohtml"),options=(e,t)=>{const l=e.languages.available.map
3468
3471
 
3469
3472
  </section>`};module.exports=options;
3470
3473
 
3471
- },{"./shortcuts":829,"nanohtml":776}],828:[function(require,module,exports){
3474
+ },{"./shortcuts":830,"nanohtml":777}],829:[function(require,module,exports){
3472
3475
  const html=require("nanohtml");let paramControls,currentGroupName,currentGroupIsExpanded;const createParamControls=(e={},t,r)=>{return paramControls=[],currentGroupName="",currentGroupIsExpanded=!0,{controls:t.map(t=>createParamRowFromDefinition(t,e,r))}},createParamRowFromDefinition=(e,t,r)=>{const n=e.type.toLowerCase();return"group"===n?createGroupRowFromDefinition(e,t):createInputRowFromDefinition(n,e,t,r)},createGroupRowFromDefinition=(e,t)=>{let r=e.name+":",n="";"caption"in e&&(r=e.caption,n="caption"),currentGroupIsExpanded=e.name in t?"closed"!==t[e.name]:"closed"!==e.initial,currentGroupName=e.name;const o=html`<tr class=${"groupTitle "+(currentGroupIsExpanded?"open":"closed")} data-groupname=${currentGroupName} >
3473
3476
  <td class=${n} colspan="2">
3474
3477
  <h1>
@@ -3495,7 +3498,7 @@ const html=require("nanohtml");let paramControls,currentGroupName,currentGroupIs
3495
3498
  checked=${"checked"in e?a:""}
3496
3499
  />`;i.paramName=e.name,i.paramType=e.type;for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&r.indexOf(t)<0&&i.setAttribute(t,e[t]);return[i]};module.exports={createParamControls:createParamControls};
3497
3500
 
3498
- },{"nanohtml":776}],829:[function(require,module,exports){
3501
+ },{"nanohtml":777}],830:[function(require,module,exports){
3499
3502
  const html=require("nanohtml"),shortcuts=(t,r)=>{const e=t.shortcuts.map((t,e)=>{const{command:a,key:s,args:n,tmpKey:o,error:h}=t,d=o&&o.length>0?o:r.translate("type and hit enter"),l=t.inProgress?"":s,c=n||"";return html`
3500
3503
  <tr>
3501
3504
  <td>${r.translate(a)}: ${r.translate(c)}</td>
@@ -3528,7 +3531,7 @@ const html=require("nanohtml"),shortcuts=(t,r)=>{const e=t.shortcuts.map((t,e)=>
3528
3531
  </table>
3529
3532
  </section>`};module.exports=shortcuts;
3530
3533
 
3531
- },{"nanohtml":776}],830:[function(require,module,exports){
3534
+ },{"nanohtml":777}],831:[function(require,module,exports){
3532
3535
  const html=require("nanohtml"),status=(r,e)=>{const s=r.status;let t="",a="",o="";s.error&&(s.error.fileName&&!s.error.fileName.startsWith("blob")&&(t=`${s.error.fileName}:${s.error.lineNumber}:${s.error.columnNumber}`),a=`${s.error.name}: ${s.error.message}`,s.error.stack&&(o=s.error.stack.trim().split("\n").map(r=>html`<ul>${r}</ul>`)));const i=void 0!==s.error?html`<span>
3533
3536
  <div id='errormessage'>
3534
3537
  <p>
@@ -3548,7 +3551,7 @@ const html=require("nanohtml"),status=(r,e)=>{const s=r.status;let t="",a="",o="
3548
3551
  </span>
3549
3552
  `};module.exports=status;
3550
3553
 
3551
- },{"nanohtml":776}],831:[function(require,module,exports){
3554
+ },{"nanohtml":777}],832:[function(require,module,exports){
3552
3555
  const html=require("nanohtml"),toolbar=(t,e)=>{const o=html`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-settings"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg>`,l=html`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-edit-3"><polygon points="14 2 18 6 7 17 3 17 3 13 14 2"/><line x1="3" y1="22" x2="21" y2="22"/></svg>`,r=html`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-help-circle"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12" y2="17"/></svg>`;return html`<span id='toolbar'>
3553
3556
  <button id='toggleOptions' aria-label='options'>
3554
3557
  ${o}
@@ -3561,10 +3564,10 @@ const html=require("nanohtml"),toolbar=(t,e)=>{const o=html`<svg xmlns="http://w
3561
3564
  </button>
3562
3565
  </span>`};module.exports=toolbar;
3563
3566
 
3564
- },{"nanohtml":776}],832:[function(require,module,exports){
3567
+ },{"nanohtml":777}],833:[function(require,module,exports){
3565
3568
  const html=require("nanohtml"),rendererStuff=require("@jscad/regl-renderer"),{pointerGestures:pointerGestures}=require("../../most-gestures"),{prepareRender:prepareRender,drawCommands:drawCommands,cameras:cameras,entitiesFromSolids:entitiesFromSolids}=rendererStuff,perspectiveCamera=cameras.perspective,orbitControls=rendererStuff.controls.orbit,rotateSpeed=.002,panSpeed=1,zoomSpeed=.08;let render,viewerOptions,camera=perspectiveCamera.defaults,controls=orbitControls.defaults,rotateDelta=[0,0],panDelta=[0,0],zoomDelta=0,zoomToFit=!1,updateView=!0;const grid={visuals:{drawCmd:"drawGrid",show:!0,color:[0,0,0,1],subColor:[0,0,1,.5],fadeOut:!1,transparent:!0},size:[200,200],ticks:[10,1]},axes={visuals:{drawCmd:"drawAxis",show:!0}};let prevSolids,prevEntities=[],prevColor=[];const viewer=(e,r)=>{const t=html`<canvas id='renderTarget'> </canvas>`;if(render){const r=e.design.solids.filter(e=>e&&e instanceof Object);if(prevSolids){const t=e.themes.themeSettings.viewer.rendering.meshColor,o=prevColor===t;compareSolids(r,prevSolids)&&o||(prevEntities=entitiesFromSolids({color:t},r),prevColor=t,zoomToFit=e.viewer.rendering.autoZoom)}if(prevSolids=r,e.themes&&e.themes.themeSettings){const r=e.themes.themeSettings.viewer;grid.visuals.color=r.grid.color,grid.visuals.subColor=r.grid.subColor,viewerOptions.rendering&&(viewerOptions.rendering.background=r.rendering.background,viewerOptions.rendering.meshColor=r.rendering.meshColor,updateView=!0)}if(viewerOptions.entities=[e.viewer.grid.show?grid:void 0,e.viewer.axes.show?axes:void 0,...prevEntities].filter(e=>void 0!==e),""!==e.viewer.camera.position){const r=cameras.camera.toPresetView(e.viewer.camera.position,{camera:camera});camera.position=r.position,perspectiveCamera.update(camera),e.viewer.camera.position=""}e.viewer.rendering&&(controls.autoRotate.enabled=e.viewer.rendering.autoRotate)}else{const e=setup(t);if(e.error)return html`<b style="color:red; background:white; position:fixed; z-index:10; top:50%">${e.error}</b>`;viewerOptions=e.viewerOptions,camera=e.camera,render=prepareRender(viewerOptions);const r=pointerGestures(t);window.addEventListener("resize",e=>{updateView=!0}),r.drags.forEach(e=>{const r=e.originalEvents[0],{x:t,y:o}=e.delta;!0===r.shiftKey||r.touches&&r.touches.length>2?(panDelta[0]+=t,panDelta[1]+=o):(rotateDelta[0]-=t,rotateDelta[1]-=o)}),r.zooms.forEach(e=>{zoomDelta-=e}),r.taps.filter(e=>2===e.nb).forEach(e=>{zoomToFit=!0});const o=()=>{if(rotateDelta[0]||rotateDelta[1]){const e=orbitControls.rotate({controls:controls,camera:camera,speed:.002},rotateDelta);rotateDelta=[0,0],controls={...controls,...e.controls},updateView=!0}if(panDelta[0]||panDelta[1]){const e=orbitControls.pan({controls:controls,camera:camera,speed:1},panDelta);panDelta=[0,0],camera.position=e.camera.position,camera.target=e.camera.target,updateView=!0}if(zoomDelta){const e=orbitControls.zoom({controls:controls,camera:camera,speed:.08},zoomDelta);controls={...controls,...e.controls},zoomDelta=0,updateView=!0}if(zoomToFit){controls.zoomToFit.tightness=1.5;const e=orbitControls.zoomToFit({controls:controls,camera:camera,entities:prevEntities});controls={...controls,...e.controls},zoomToFit=!1,updateView=!0}},a=e=>{if(o(),updateView){const e=orbitControls.update({controls:controls,camera:camera});controls={...controls,...e.controls},updateView=controls.changed,camera.position=e.camera.position,perspectiveCamera.update(camera),resize(t),render(viewerOptions)}window.requestAnimationFrame(a)};window.requestAnimationFrame(a)}return t},createContext=(e,r)=>{const t=r=>{try{const t=e.getContext(r);return t?{gl:t,type:r}:null}catch(e){return null}};return t("webgl2")||t("webgl")||t("experimental-webgl")||t("webgl-experimental")},setup=e=>{const r=Object.assign({},perspectiveCamera.defaults);r.position=[150,-180,233];const{gl:t,type:o}=createContext(e),a={glOptions:{gl:t},camera:r,drawCommands:{drawAxis:drawCommands.drawAxis,drawGrid:drawCommands.drawGrid,drawLines:drawCommands.drawLines,drawMesh:drawCommands.drawMesh},entities:[]};return"webgl"===o&&t.getExtension("OES_element_index_uint")&&(a.glOptions.optionalExtensions=["oes_element_index_uint"]),{viewerOptions:a,camera:r,error:void 0}},resize=e=>{const r=window.devicePixelRatio||1,t=e.getBoundingClientRect(),o=(t.right-t.left)*r,a=(t.bottom-t.top)*r,i=e.width,n=e.height;i===o&&n===a||(e.width=o,e.height=a,perspectiveCamera.setProjection(camera,camera,{width:o,height:a}),perspectiveCamera.update(camera,camera))};let idCounter=Date.now();const compareSolids=(e,r)=>(e=e.map(e=>(e.id||(e.id=++idCounter),e)),!!r&&(e.length===r.length&&e.reduce((t,o,a)=>t&&e[a].id===r[a].id,!0)));module.exports=viewer;
3566
3569
 
3567
- },{"../../most-gestures":787,"@jscad/regl-renderer":614,"nanohtml":776}],833:[function(require,module,exports){
3570
+ },{"../../most-gestures":788,"@jscad/regl-renderer":615,"nanohtml":777}],834:[function(require,module,exports){
3568
3571
  const html=require("nanohtml"),viewerControls=(e,o)=>html`
3569
3572
  <div id='controls'>
3570
3573
  <label for="toggleGrid">${o`grid`}</label>
@@ -3577,20 +3580,20 @@ const html=require("nanohtml"),viewerControls=(e,o)=>html`
3577
3580
  <input type="checkbox" id="toggleAutoZoom" checked=${e.viewer.rendering.autoZoom}/>
3578
3581
  </div>`;module.exports=viewerControls;
3579
3582
 
3580
- },{"nanohtml":776}],834:[function(require,module,exports){
3583
+ },{"nanohtml":777}],835:[function(require,module,exports){
3581
3584
  const compositeKeyFromKeyEvent=e=>{const t=e.ctrlKey?"ctrl+":"",o=e.shiftKey?"shift+":"",s=e.metaKey?"command+":"";let i=e.key.toLowerCase();return t&&"control"===i&&(i=""),o&&"shift"===i&&(i=""),s&&"meta"===i&&(i=""),`${t}${o}${s}${i}`},simpleKey=e=>e.key?e.key.toLowerCase():void 0,getKeyCombos=(e,t,o)=>{const{dropRepeats:s,endKeys:i}=Object.assign({},{dropRepeats:!1,endKeys:[]},e);o=o.multicast().debounce(10),s&&(o=o.skipRepeatsWith((e,t)=>simpleKey(e)===simpleKey(t)));const m=o.throttle(1e3).delay(2e3);return o.merge(t.map(e=>"end")).merge(m.map(e=>"end")).loop((e,t)=>{if("end"===t||i.includes(simpleKey(t))){return{seed:[],value:{event:e.length>0?e[0].event:void 0,compositeKey:e.map(e=>e.compositeKey).join("+")}}}{const o=simpleKey(t);e.push({event:t,compositeKey:o})}return{seed:e}},[]).filter(e=>void 0!==e).filter(e=>void 0!==e.event).multicast()},isKeyEventScopeValid=(e,t)=>!(!t.className||"jscad"!==t.className||t.getAttribute("key")!==e);module.exports={compositeKeyFromKeyEvent:compositeKeyFromKeyEvent,getKeyCombos:getKeyCombos,simpleKey:simpleKey,isKeyEventScopeValid:isKeyEventScopeValid};
3582
3585
 
3583
- },{}],835:[function(require,module,exports){
3586
+ },{}],836:[function(require,module,exports){
3584
3587
  const makeLogger=e=>{const{enabled:o}=Object.assign({},{enabled:!1},e);return{debug:(...e)=>{o&&console.debug(...e)},info:o?console.info.bind(window.console):()=>{},warning:(...e)=>{o&&console.warn(...e)},error:(...e)=>{o&&console.error(...e)}}};module.exports=makeLogger;
3585
3588
 
3586
- },{}],836:[function(require,module,exports){
3589
+ },{}],837:[function(require,module,exports){
3587
3590
  const omit=(e,t)=>Object.keys(t).reduce((c,i)=>(e.includes(i)||(c[i]=t[i]),c),{}),keep=(e,t)=>Object.keys(t).reduce((c,i)=>(e.includes(i)&&(c[i]=t[i]),c),{}),atKey=(e,t)=>e in t?e:{};module.exports={omit:omit,keep:keep,atKey:atKey};
3588
3591
 
3589
- },{}],837:[function(require,module,exports){
3592
+ },{}],838:[function(require,module,exports){
3590
3593
  const url=require("url"),fetchUriParams=(r,a,e)=>{const s=new URL(r);return s.searchParams.get(a)?s.searchParams.get(a):e},getAllUriParams=r=>url.parse(r,!0).query;module.exports={fetchUriParams:fetchUriParams,getAllUriParams:getAllUriParams};
3591
3594
 
3592
- },{"url":690}],838:[function(require,module,exports){
3595
+ },{"url":691}],839:[function(require,module,exports){
3593
3596
  const merge=(e={},s,o)=>(e=s,Object.keys(o).forEach(t=>{const r=o[t],c="object"==typeof r,f="function"==typeof r,n=Array.isArray(r);if(f)e[t]=o[t];else if(n){const r=s[t]||[];e[t]=Object.assign([],r,o[t])}else if(c){const o=s[t]||{};e[t]=merge({},o,r)}else e[t]=o[t]}),e);module.exports={merge:merge};
3594
3597
 
3595
- },{}]},{},[785])(785)
3598
+ },{}]},{},[786])(786)
3596
3599
  });