Skip to content

Instantly share code, notes, and snippets.

@edvakf
Created December 7, 2011 21:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save edvakf/1444656 to your computer and use it in GitHub Desktop.
Save edvakf/1444656 to your computer and use it in GitHub Desktop.
/***
P R O C E S S I N G . J S - 1.3.0
a port of the Processing visualization language
Processing.js is licensed under the MIT License, see LICENSE.
For a list of copyright holders, please refer to AUTHORS.
http://processingjs.org
***/
(function(U,at,ah,ae){var R=function(){};var af=(function(){if("console" in U){return function(a){U.console.log("Processing.js: "+a)}}return R()}());var ab=function(a){var b=new XMLHttpRequest();b.open("GET",a,false);if(b.overrideMimeType){b.overrideMimeType("text/plain")}b.setRequestHeader("If-Modified-Since","Fri, 01 Jan 1960 00:00:00 GMT");b.send(null);if(b.status!==200&&b.status!==0){throw ("XMLHttpRequest failed, status code "+b.status)}return b.responseText};var ak=("document" in this)&&!("fake" in this.document);function V(a,b){if(a in U){return U[a]}if(typeof U[b]==="function"){return U[b]}return function(c){if(c instanceof Array){return c}if(typeof c==="number"){var d=[];d.length=c;return d}}}var ar=V("Float32Array","WebGLFloatArray"),N=V("Int32Array","WebGLIntArray"),Z=V("Uint16Array","WebGLUnsignedShortArray"),av=V("Uint8Array","WebGLUnsignedByteArray");var W={X:0,Y:1,Z:2,R:3,G:4,B:5,A:6,U:7,V:8,NX:9,NY:10,NZ:11,EDGE:12,SR:13,SG:14,SB:15,SA:16,SW:17,TX:18,TY:19,TZ:20,VX:21,VY:22,VZ:23,VW:24,AR:25,AG:26,AB:27,DR:3,DG:4,DB:5,DA:6,SPR:28,SPG:29,SPB:30,SHINE:31,ER:32,EG:33,EB:34,BEEN_LIT:35,VERTEX_FIELD_COUNT:36,P2D:1,JAVA2D:1,WEBGL:2,P3D:2,OPENGL:2,PDF:0,DXF:0,OTHER:0,WINDOWS:1,MAXOSX:2,LINUX:3,EPSILON:0.0001,MAX_FLOAT:3.4028235e+38,MIN_FLOAT:-3.4028235e+38,MAX_INT:2147483647,MIN_INT:-2147483648,PI:ah.PI,TWO_PI:2*ah.PI,HALF_PI:ah.PI/2,THIRD_PI:ah.PI/3,QUARTER_PI:ah.PI/4,DEG_TO_RAD:ah.PI/180,RAD_TO_DEG:180/ah.PI,WHITESPACE:" \t\n\r\f\u00A0",RGB:1,ARGB:2,HSB:3,ALPHA:4,CMYK:5,TIFF:0,TARGA:1,JPEG:2,GIF:3,BLUR:11,GRAY:12,INVERT:13,OPAQUE:14,POSTERIZE:15,THRESHOLD:16,ERODE:17,DILATE:18,REPLACE:0,BLEND:1<<0,ADD:1<<1,SUBTRACT:1<<2,LIGHTEST:1<<3,DARKEST:1<<4,DIFFERENCE:1<<5,EXCLUSION:1<<6,MULTIPLY:1<<7,SCREEN:1<<8,OVERLAY:1<<9,HARD_LIGHT:1<<10,SOFT_LIGHT:1<<11,DODGE:1<<12,BURN:1<<13,ALPHA_MASK:4278190080,RED_MASK:16711680,GREEN_MASK:65280,BLUE_MASK:255,CUSTOM:0,ORTHOGRAPHIC:2,PERSPECTIVE:3,POINT:2,POINTS:2,LINE:4,LINES:4,TRIANGLE:8,TRIANGLES:9,TRIANGLE_STRIP:10,TRIANGLE_FAN:11,QUAD:16,QUADS:16,QUAD_STRIP:17,POLYGON:20,PATH:21,RECT:30,ELLIPSE:31,ARC:32,SPHERE:40,BOX:41,GROUP:0,PRIMITIVE:1,GEOMETRY:3,VERTEX:0,BEZIER_VERTEX:1,CURVE_VERTEX:2,BREAK:3,CLOSESHAPE:4,OPEN:1,CLOSE:2,CORNER:0,CORNERS:1,RADIUS:2,CENTER_RADIUS:2,CENTER:3,DIAMETER:3,CENTER_DIAMETER:3,BASELINE:0,TOP:101,BOTTOM:102,NORMAL:1,NORMALIZED:1,IMAGE:2,MODEL:4,SHAPE:5,SQUARE:"butt",ROUND:"round",PROJECT:"square",MITER:"miter",BEVEL:"bevel",AMBIENT:0,DIRECTIONAL:1,SPOT:3,BACKSPACE:8,TAB:9,ENTER:10,RETURN:13,ESC:27,DELETE:127,CODED:65535,SHIFT:16,CONTROL:17,ALT:18,CAPSLK:20,PGUP:33,PGDN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLK:144,META:157,INSERT:155,ARROW:"default",CROSS:"crosshair",HAND:"pointer",MOVE:"move",TEXT:"text",WAIT:"wait",NOCURSOR:"url('data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='), auto",DISABLE_OPENGL_2X_SMOOTH:1,ENABLE_OPENGL_2X_SMOOTH:-1,ENABLE_OPENGL_4X_SMOOTH:2,ENABLE_NATIVE_FONTS:3,DISABLE_DEPTH_TEST:4,ENABLE_DEPTH_TEST:-4,ENABLE_DEPTH_SORT:5,DISABLE_DEPTH_SORT:-5,DISABLE_OPENGL_ERROR_REPORT:6,ENABLE_OPENGL_ERROR_REPORT:-6,ENABLE_ACCURATE_TEXTURES:7,DISABLE_ACCURATE_TEXTURES:-7,HINT_COUNT:10,SINCOS_LENGTH:720,PRECISIONB:15,PRECISIONF:1<<15,PREC_MAXVAL:(1<<15)-1,PREC_ALPHA_SHIFT:24-15,PREC_RED_SHIFT:16-15,NORMAL_MODE_AUTO:0,NORMAL_MODE_SHAPE:1,NORMAL_MODE_VERTEX:2,MAX_LIGHTS:8};function ao(b){if(typeof(b)==="string"){var c=0;for(var a=0;a<b.length;++a){c=(c*31+b.charCodeAt(a))&4294967295}return c}if(typeof(b)!=="object"){return b&4294967295}if(b.hashCode instanceof Function){return b.hashCode()}if(b.$id===ae){b.$id=((ah.floor(ah.random()*65536)-32768)<<16)|ah.floor(ah.random()*65536)}return b.$id}function ag(b,a){if(b===null||a===null){return(b===null)&&(a===null)}if(typeof(b)==="string"){return b===a}if(typeof(b)!=="object"){return b===a}if(b.equals instanceof Function){return b.equals(a)}return b===a}var aj=function(b){if(b.iterator instanceof Function){return b.iterator()}if(b instanceof Array){var a=-1;this.hasNext=function(){return ++a<b.length};this.next=function(){return b[a]}}else{throw"Unable to iterate: "+b}};var aq=(function(){function b(c){var d=0;this.hasNext=function(){return d<c.length};this.next=function(){return c[d++]};this.remove=function(){c.splice(d,1)}}function a(){var c;if(arguments.length===0){c=[]}else{if(arguments.length>0&&typeof arguments[0]!=="number"){c=arguments[0].toArray()}else{c=[];c.length=0|arguments[0]}}this.get=function(d){return c[d]};this.contains=function(d){return this.indexOf(d)>-1};this.indexOf=function(d){for(var e=0,f=c.length;e<f;++e){if(ag(d,c[e])){return e}}return -1};this.add=function(){if(arguments.length===1){c.push(arguments[0])}else{if(arguments.length===2){var d=arguments[0];if(typeof d==="number"){if(d>=0&&d<=c.length){c.splice(d,0,arguments[1])}else{throw (d+" is not a valid index")}}else{throw (typeof d+" is not a number")}}else{throw ("Please use the proper number of parameters.")}}};this.addAll=function(e,f){var d;if(typeof e==="number"){if(e<0||e>c.length){throw ("Index out of bounds for addAll: "+e+" greater or equal than "+c.length)}d=new aj(f);while(d.hasNext()){c.splice(e++,0,d.next())}}else{d=new aj(e);while(d.hasNext()){c.push(d.next())}}};this.set=function(){if(arguments.length===2){var d=arguments[0];if(typeof d==="number"){if(d>=0&&d<c.length){c.splice(d,1,arguments[1])}else{throw (d+" is not a valid index.")}}else{throw (typeof d+" is not a number")}}else{throw ("Please use the proper number of parameters.")}};this.size=function(){return c.length};this.clear=function(){c.length=0};this.remove=function(d){if(typeof d==="number"){return c.splice(d,1)[0]}d=this.indexOf(d);if(d>-1){c.splice(d,1);return true}return false};this.isEmpty=function(){return !c.length};this.clone=function(){return new a(this)};this.toArray=function(){return c.slice(0)};this.iterator=function(){return new b(c)}}return a}());var aa=(function(){function a(){if(arguments.length===1&&arguments[0] instanceof a){return arguments[0].clone()}var c=arguments.length>0?arguments[0]:16;var b=arguments.length>1?arguments[1]:0.75;var i=[];i.length=c;var g=0;var k=this;function e(m){var l=ao(m)%i.length;return l<0?i.length+l:l}function h(){if(g<=b*i.length){return}var o=[];for(var p=0;p<i.length;++p){if(i[p]!==ae){o=o.concat(i[p])}}var n=i.length*2;i=[];i.length=n;for(var q=0;q<o.length;++q){var l=e(o[q].key);var m=i[l];if(m===ae){i[l]=m=[]}m.push(o[q])}}function j(o,m){var l=0;var n=-1;var p=false;function q(){while(!p){++n;if(l>=i.length){p=true}else{if(i[l]===ae||n>=i[l].length){n=-1;++l}else{return}}}}this.hasNext=function(){return !p};this.next=function(){var r=o(i[l][n]);q();return r};this.remove=function(){m(this.next());--n};q()}function d(l,n,m){this.clear=function(){k.clear()};this.contains=function(o){return n(o)};this.containsAll=function(p){var o=p.iterator();while(o.hasNext()){if(!this.contains(o.next())){return false}}return true};this.isEmpty=function(){return k.isEmpty()};this.iterator=function(){return new j(l,m)};this.remove=function(o){if(this.contains(o)){m(o);return true}return false};this.removeAll=function(o){var r=o.iterator();var p=false;while(r.hasNext()){var q=r.next();if(this.contains(q)){m(q);p=true}}return true};this.retainAll=function(o){var q=this.iterator();var s=[];while(q.hasNext()){var p=q.next();if(!o.contains(p)){s.push(p)}}for(var r=0;r<s.length;++r){m(s[r])}return s.length>0};this.size=function(){return k.size()};this.toArray=function(){var p=[];var o=this.iterator();while(o.hasNext()){p.push(o.next())}return p}}function f(l){this._isIn=function(m){return m===k&&(l.removed===ae)};this.equals=function(m){return ag(l.key,m.getKey())};this.getKey=function(){return l.key};this.getValue=function(){return l.value};this.hashCode=function(m){return ao(l.key)};this.setValue=function(m){var n=l.value;l.value=m;return n}}this.clear=function(){g=0;i=[];i.length=c};this.clone=function(){var l=new a();l.putAll(this);return l};this.containsKey=function(n){var l=e(n);var m=i[l];if(m===ae){return false}for(var o=0;o<m.length;++o){if(ag(m[o].key,n)){return true}}return false};this.containsValue=function(n){for(var o=0;o<i.length;++o){var m=i[o];if(m===ae){continue}for(var l=0;l<m.length;++l){if(ag(m[l].value,n)){return true}}}return false};this.entrySet=function(){return new d(function(l){return new f(l)},function(l){return(l instanceof f)&&l._isIn(k)},function(l){return k.remove(l.getKey())})};this.get=function(n){var l=e(n);var m=i[l];if(m===ae){return null}for(var o=0;o<m.length;++o){if(ag(m[o].key,n)){return m[o].value}}return null};this.isEmpty=function(){return g===0};this.keySet=function(){return new d(function(l){return l.key},function(l){return k.containsKey(l)},function(l){return k.remove(l)})};this.values=function(){return new d(function(l){return l.value},function(l){return k.containsValue(l)},function(l){return k.removeByValue(l)})};this.put=function(p,o){var l=e(p);var m=i[l];if(m===ae){++g;i[l]=[{key:p,value:o}];h();return null}for(var q=0;q<m.length;++q){if(ag(m[q].key,p)){var n=m[q].value;m[q].value=o;return n}}++g;m.push({key:p,value:o});h();return null};this.putAll=function(l){var n=l.entrySet().iterator();while(n.hasNext()){var m=n.next();this.put(m.getKey(),m.getValue())}};this.remove=function(o){var l=e(o);var n=i[l];if(n===ae){return null}for(var p=0;p<n.length;++p){if(ag(n[p].key,o)){--g;var m=n[p].value;n[p].removed=true;if(n.length>1){n.splice(p,1)}else{i[l]=ae}return m}}return null};this.removeByValue=function(o){var n,p,l,m;for(n in i){if(i.hasOwnProperty(n)){for(p=0,l=i[n].length;p<l;p++){m=i[n][p];if(m.value===o){i[n].splice(p,1);return true}}}}return false};this.size=function(){return g}}return a}());var X=(function(){function a(f,d,e){this.x=f||0;this.y=d||0;this.z=e||0}a.dist=function(d,e){return d.dist(e)};a.dot=function(d,e){return d.dot(e)};a.cross=function(d,e){return d.cross(e)};a.angleBetween=function(d,e){return ah.acos(d.dot(e)/(d.mag()*e.mag()))};a.prototype={set:function(f,d,e){if(arguments.length===1){this.set(f.x||f[0]||0,f.y||f[1]||0,f.z||f[2]||0)}else{this.x=f;this.y=d;this.z=e}},get:function(){return new a(this.x,this.y,this.z)},mag:function(){var f=this.x,d=this.y,e=this.z;return ah.sqrt(f*f+d*d+e*e)},add:function(f,d,e){if(arguments.length===1){this.x+=f.x;this.y+=f.y;this.z+=f.z}else{this.x+=f;this.y+=d;this.z+=e}},sub:function(f,d,e){if(arguments.length===1){this.x-=f.x;this.y-=f.y;this.z-=f.z}else{this.x-=f;this.y-=d;this.z-=e}},mult:function(d){if(typeof d==="number"){this.x*=d;this.y*=d;this.z*=d}else{this.x*=d.x;this.y*=d.y;this.z*=d.z}},div:function(d){if(typeof d==="number"){this.x/=d;this.y/=d;this.z/=d}else{this.x/=d.x;this.y/=d.y;this.z/=d.z}},dist:function(d){var e=this.x-d.x,f=this.y-d.y,g=this.z-d.z;return ah.sqrt(e*e+f*f+g*g)},dot:function(f,d,e){if(arguments.length===1){return(this.x*f.x+this.y*f.y+this.z*f.z)}return(this.x*f+this.y*d+this.z*e)},cross:function(f){var g=this.x,d=this.y,e=this.z;return new a(d*f.z-f.y*e,e*f.x-f.z*g,g*f.y-f.x*d)},normalize:function(){var d=this.mag();if(d>0){this.div(d)}},limit:function(d){if(this.mag()>d){this.normalize();this.mult(d)}},heading2D:function(){return(-ah.atan2(-this.y,this.x))},toString:function(){return"["+this.x+", "+this.y+", "+this.z+"]"},array:function(){return[this.x,this.y,this.z]}};function c(d){return function(e,f){var g=e.get();g[d](f);return g}}for(var b in a.prototype){if(a.prototype.hasOwnProperty(b)&&!a.hasOwnProperty(b)){a[b]=c(b)}}return a}());function L(){}L.prototype=W;var ap=new L();ap.ArrayList=aq;ap.HashMap=aa;ap.PVector=X;ap.ObjectIterator=aj;ap.PConstants=W;ap.defineProperty=function(c,a,b){if("defineProperty" in Object){Object.defineProperty(c,a,b)}else{if(b.hasOwnProperty("get")){c.__defineGetter__(a,b.get)}if(b.hasOwnProperty("set")){c.__defineSetter__(a,b.set)}}};function an(c,d){function b(f){ap.defineProperty(c,f,{get:function(){return d[f]},set:function(g){d[f]=g},enumerable:true})}var e=[];for(var a in d){if(typeof d[a]==="function"){if(!c.hasOwnProperty(a)){c[a]=d[a]}}else{if(a.charAt(0)!=="$"&&!(a in c)){e.push(a)}}}while(e.length>0){b(e.shift())}}ap.extendClassChain=function(c){var b=[c];for(var a=c.$upcast;a;a=a.$upcast){an(a,c);b.push(a);c=a}while(b.length>0){b.pop().$self=c}};ap.extendStaticMembers=function(a,b){an(a,b)};ap.extendInterfaceMembers=function(a,b){an(a,b)};ap.addMethod=function(d,e,b,c){if(d[e]){var f=b.length,a=d[e];d[e]=function(){if(arguments.length===f){return b.apply(this,arguments)}return a.apply(this,arguments)}}else{d[e]=b}};ap.createJavaArray=function(d,c){var g=null;if(typeof c[0]==="number"){var a=0|c[0];if(c.length<=1){g=[];g.length=a;for(var e=0;e<a;++e){g[e]=0}}else{g=[];var b=c.slice(1);for(var f=0;f<a;++f){g.push(ap.createJavaArray(d,b))}}}return g};var T={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};(function(f){var c=("open() createOutput() createInput() BufferedReader selectFolder() dataPath() createWriter() selectOutput() beginRecord() saveStream() endRecord() selectInput() saveBytes() createReader() beginRaw() endRaw() PrintWriter").split(" "),d=c.length,a,b;function e(g){return function(){throw"Processing.js does not support "+g+"."}}while(d--){a=c[d];b=a.replace("()","");f[b]=e(a)}}(ap));ap.defineProperty(ap,"screenWidth",{get:function(){return U.innerWidth}});ap.defineProperty(ap,"screenHeight",{get:function(){return U.innerHeight}});var al=[];var O={};var M=function(a){al.splice(O[a],1);delete O[a]};var aw=function(a){if(a.externals.canvas.id===ae||!a.externals.canvas.id.length){a.externals.canvas.id="__processing"+al.length}O[a.externals.canvas.id]=al.length;al.push(a)};function ai(e){var l=250,p=e.size/l,o=at.createElement("canvas");o.width=2*l;o.height=2*l;o.style.opacity=0;var f=e.getCSSDefinition(l+"px","normal"),d=o.getContext("2d");d.font=f;e.context2d=d;var r="dbflkhyjqpg";o.width=d.measureText(r).width;d.font=f;var i=at.createElement("div");i.style.position="absolute";i.style.opacity=0;i.style.fontFamily='"'+e.name+'"';i.style.fontSize=l+"px";i.innerHTML=r+"<br/>"+r;at.body.appendChild(i);var h=o.width,a=o.height,g=a/2;d.fillStyle="white";d.fillRect(0,0,h,a);d.fillStyle="black";d.fillText(r,0,g);var m=d.getImageData(0,0,h,a).data;var c=0,j=h*4,b=m.length;while(++c<b&&m[c]===255){R()}var k=ah.round(c/j);c=b-1;while(--c>0&&m[c]===255){R()}var q=ah.round(c/j);e.ascent=p*(g-k);e.descent=p*(q-g);if(at.defaultView.getComputedStyle){var n=at.defaultView.getComputedStyle(i,null).getPropertyValue("height");n=p*n.replace("px","");if(n>=e.size*2){e.leading=ah.round(n/2)}}at.body.removeChild(i)}function Q(a,e){if(a===ae){a=""}this.name=a;if(e===ae){e=0}this.size=e;this.glyph=false;this.ascent=0;this.descent=0;this.leading=1.2*e;var b=a.indexOf(" Italic Bold");if(b!==-1){a=a.substring(0,b)}this.style="normal";var c=a.indexOf(" Italic");if(c!==-1){a=a.substring(0,c);this.style="italic"}this.weight="normal";var d=a.indexOf(" Bold");if(d!==-1){a=a.substring(0,d);this.weight="bold"}this.family="sans-serif";if(a!==ae){switch(a){case"sans-serif":case"serif":case"monospace":case"fantasy":case"cursive":this.family=a;break;default:this.family='"'+a+'", sans-serif';break}}this.context2d=null;ai(this);this.css=this.getCSSDefinition();this.context2d.font=this.css}Q.prototype.getCSSDefinition=function(b,a){if(b===ae){b=this.size+"px"}if(a===ae){a=this.leading+"px"}var c=[this.style,"normal",this.weight,b+"/"+a,this.family];return c.join(" ")};Q.prototype.measureTextWidth=function(a){return this.context2d.measureText(a).width};Q.PFontCache={};Q.get=function(c,b){var d=Q.PFontCache;var a=c+"/"+b;if(!d[a]){d[a]=new Q(c,b)}return d[a]};Q.list=function(){return["sans-serif","serif","monospace","fantasy","cursive"]};Q.preloading={template:{},initialized:false,initialize:function(){var b=function(){var d="#E3KAI2wAgT1MvMg7Eo3VmNtYX7ABi3CxnbHlm7Abw3kaGVhZ7ACs3OGhoZWE7A53CRobXR47AY3AGbG9jYQ7G03Bm1heH7ABC3CBuYW1l7Ae3AgcG9zd7AI3AE#B3AQ2kgTY18PPPUACwAg3ALSRoo3#yld0xg32QAB77#E777773B#E3C#I#Q77773E#Q7777777772CMAIw7AB77732B#M#Q3wAB#g3B#E#E2BB//82BB////w#B7#gAEg3E77x2B32B#E#Q#MTcBAQ32gAe#M#QQJ#E32M#QQJ#I#g32Q77#";var e=function(f){return"AAAAAAAA".substr(~~f?7-f:6)};return d.replace(/[#237]/g,e)};var a=at.createElement("style");a.setAttribute("type","text/css");a.innerHTML='@font-face {\n font-family: "PjsEmptyFont";\n src: url(\'data:application/x-font-ttf;base64,'+b()+"')\n format('truetype');\n}";at.head.appendChild(a);var c=at.createElement("span");c.style.cssText='position: absolute; top: 0; left: 0; opacity: 0; font-family: "PjsEmptyFont", fantasy;';c.innerHTML="AAAAAAAA";at.body.appendChild(c);this.template=c;this.initialized=true},getElementWidth:function(a){return at.defaultView.getComputedStyle(a,"").getPropertyValue("width")},timeAttempted:0,pending:function(b){if(!this.initialized){this.initialize()}var d,a,c=this.getElementWidth(this.template);for(var e=0;e<this.fontList.length;e++){d=this.fontList[e];a=this.getElementWidth(d);if(this.timeAttempted<4000&&a===c){this.timeAttempted+=b;return true}else{at.body.removeChild(d);this.fontList.splice(e--,1);this.timeAttempted=0}}if(this.fontList.length===0){return false}return true},fontList:[],addedList:{},add:function(a){if(!this.initialized){this.initialize()}var b=(typeof a==="object"?a.fontFace:a),c=(typeof a==="object"?a.url:a);if(this.addedList[b]){return}var d=at.createElement("style");d.setAttribute("type","text/css");d.innerHTML="@font-face{\n font-family: '"+b+"';\n src: url('"+c+"');\n}\n";at.head.appendChild(d);this.addedList[b]=true;var e=at.createElement("span");e.style.cssText="position: absolute; top: 0; left: 0; opacity: 0;";e.style.fontFamily='"'+b+'", "PjsEmptyFont", fantasy';e.innerHTML="AAAAAAAA";at.body.appendChild(e);this.fontList.push(e)}};ap.PFont=Q;var S=this.Processing=function(gl,c){if(!(this instanceof S)){throw ("called Processing constructor as if it were a function: missing 'new'.")}function p(ax){S.debug("Unimplemented - "+ax)}var ev=this;var ez=(arguments.length===0);if(ez){gl=at.createElement("canvas")}ev.externals={canvas:gl,context:ae,sketch:ae};ev.name="Processing.js Instance";ev.use3DContext=false;ev.focused=false;ev.breakShape=false;ev.glyphTable={};ev.pmouseX=0;ev.pmouseY=0;ev.mouseX=0;ev.mouseY=0;ev.mouseButton=0;ev.mouseScroll=0;ev.mouseClicked=ae;ev.mouseDragged=ae;ev.mouseMoved=ae;ev.mousePressed=ae;ev.mouseReleased=ae;ev.mouseScrolled=ae;ev.mouseOver=ae;ev.mouseOut=ae;ev.touchStart=ae;ev.touchEnd=ae;ev.touchMove=ae;ev.touchCancel=ae;ev.key=ae;ev.keyCode=ae;ev.keyPressed=R;ev.keyReleased=R;ev.keyTyped=R;ev.draw=ae;ev.setup=ae;ev.__mousePressed=false;ev.__keyPressed=false;ev.__frameRate=60;ev.frameCount=0;ev.width=100;ev.height=100;var eH,eR,cy,ei=true,gW=true,e1=[1,1,1,1],gu=4294967295,fU=true,ec=true,em=[0.8,0.8,0.8,1],a8=4294835709,gL=true,db=1,fz=false,dt=false,g0=true,gI=0,gd=W.CORNER,e2=W.CENTER,e=0,f=0,g=0,gt=W.NORMAL_MODE_AUTO,dk=false,dg=60,fv=1000/dg,eD=W.ARROW,dv=gl.style.cursor,dm=W.POLYGON,dw=0,eO=[],gU=0,e7=20,e5=false,i=-3355444,a3=20,fT=255,gh=255,gk=255,gn=255,eo=false,gT=false,eq=W.RGB,fr=null,ey=null,h=false,v=Date.now(),s=v,e9=0,fp,fW,gO,gS,ep,ee,eW,j={attributes:{},locations:{}},o,dn,fV,fm,fe,z,g1,gN,fo,gB,fN,gX,ej,fC,gi,fL,fZ,dc={width:0,height:0},eS=W.IMAGE,di=false,fj,gq,e4,fg=W.LEFT,ek=W.BASELINE,fh=W.MODEL,eG="Arial",a5=12,gs=9,l=2,eK=14,eN=Q.get(eG,a5),f9,dp=null,de=false,J,fA=1000,gg=[],ea=null,da=[W.SHIFT,W.CONTROL,W.ALT,W.CAPSLK,W.PGUP,W.PGDN,W.END,W.HOME,W.LEFT,W.UP,W.RIGHT,W.DOWN,W.NUMLK,W.INSERT,W.F1,W.F2,W.F3,W.F4,W.F5,W.F6,W.F7,W.F8,W.F9,W.F10,W.F11,W.F12,W.META];var go,w,gG,fJ;if(at.defaultView&&at.defaultView.getComputedStyle){go=parseInt(at.defaultView.getComputedStyle(gl,null)["paddingLeft"],10)||0;w=parseInt(at.defaultView.getComputedStyle(gl,null)["paddingTop"],10)||0;gG=parseInt(at.defaultView.getComputedStyle(gl,null)["borderLeftWidth"],10)||0;fJ=parseInt(at.defaultView.getComputedStyle(gl,null)["borderTopWidth"],10)||0}var dx=0;var gc=0,ga=0,eL=[],eP=[],eT=[],ge=new ar(W.SINCOS_LENGTH),fa=new ar(W.SINCOS_LENGTH),fn,K;var fO,dZ,d6,gJ,f4,fD,eu,H,fX=false,dz=false,fb=60*(ah.PI/180),y=ev.width/2,A=ev.height/2,B=A/ah.tan(fb/2),gx=B/10,fG=B*10,gH=ev.width/ev.height;var b=[],gv=[],f0=0,dr=false,ex=false,r=true;var e0=W.CORNER;var e8=[];var C=new ar([0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5]);var gm=new ar([0.5,0.5,0.5,0.5,-0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5]);var D=new ar([0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0]);var f8=new ar([0,0,0,0,1,0,1,1,0,1,0,0]);var gb=new ar([0,0,1,0,0,1,0,0,1,0,0,1]);var fR="varying vec4 frontColor;attribute vec3 aVertex;attribute vec4 aColor;uniform mat4 uView;uniform mat4 uProjection;uniform float pointSize;void main(void) { frontColor = aColor; gl_PointSize = pointSize; gl_Position = uProjection * uView * vec4(aVertex, 1.0);}";var fi="#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 frontColor;void main(void){ gl_FragColor = frontColor;}";var gj="varying vec4 frontColor;attribute vec3 Vertex;attribute vec2 aTextureCoord;uniform vec4 color;uniform mat4 model;uniform mat4 view;uniform mat4 projection;uniform float pointSize;varying vec2 vTextureCoord;void main(void) { gl_PointSize = pointSize; frontColor = color; gl_Position = projection * view * model * vec4(Vertex, 1.0); vTextureCoord = aTextureCoord;}";var fB="#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 frontColor;varying vec2 vTextureCoord;uniform sampler2D uSampler;uniform int picktype;void main(void){ if(picktype == 0){ gl_FragColor = frontColor; } else if(picktype == 1){ float alpha = texture2D(uSampler, vTextureCoord).a; gl_FragColor = vec4(frontColor.rgb*alpha, alpha);\n }}";var en=/Windows/.test(navigator.userAgent);var eC="varying vec4 frontColor;attribute vec3 Vertex;attribute vec3 Normal;attribute vec4 aColor;attribute vec2 aTexture;varying vec2 vTexture;uniform vec4 color;uniform bool usingMat;uniform vec3 specular;uniform vec3 mat_emissive;uniform vec3 mat_ambient;uniform vec3 mat_specular;uniform float shininess;uniform mat4 model;uniform mat4 view;uniform mat4 projection;uniform mat4 normalTransform;uniform int lightCount;uniform vec3 falloff;struct Light { int type; vec3 color; vec3 position; vec3 direction; float angle; vec3 halfVector; float concentration;};uniform Light lights0;uniform Light lights1;uniform Light lights2;uniform Light lights3;uniform Light lights4;uniform Light lights5;uniform Light lights6;uniform Light lights7;Light getLight(int index){ if(index == 0) return lights0; if(index == 1) return lights1; if(index == 2) return lights2; if(index == 3) return lights3; if(index == 4) return lights4; if(index == 5) return lights5; if(index == 6) return lights6; return lights7;}void AmbientLight( inout vec3 totalAmbient, in vec3 ecPos, in Light light ) { float d = length( light.position - ecPos ); float attenuation = 1.0 / ( falloff[0] + ( falloff[1] * d ) + ( falloff[2] * d * d )); totalAmbient += light.color * attenuation;}void DirectionalLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) { float powerfactor = 0.0; float nDotVP = max(0.0, dot( vertNormal, normalize(-light.position) )); float nDotVH = max(0.0, dot( vertNormal, normalize(-light.position-normalize(ecPos) ))); if( nDotVP != 0.0 ){ powerfactor = pow( nDotVH, shininess ); } col += light.color * nDotVP; spec += specular * powerfactor;}void PointLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) { float powerfactor; vec3 VP = light.position - ecPos; float d = length( VP ); VP = normalize( VP ); float attenuation = 1.0 / ( falloff[0] + ( falloff[1] * d ) + ( falloff[2] * d * d )); float nDotVP = max( 0.0, dot( vertNormal, VP )); vec3 halfVector = normalize( VP - normalize(ecPos) ); float nDotHV = max( 0.0, dot( vertNormal, halfVector )); if( nDotVP == 0.0) { powerfactor = 0.0; } else{ powerfactor = pow( nDotHV, shininess ); } spec += specular * powerfactor * attenuation; col += light.color * nDotVP * attenuation;}void SpotLight( inout vec3 col, inout vec3 spec, in vec3 vertNormal, in vec3 ecPos, in Light light ) { float spotAttenuation; float powerfactor; vec3 VP = light.position - ecPos; vec3 ldir = normalize( -light.direction ); float d = length( VP ); VP = normalize( VP ); float attenuation = 1.0 / ( falloff[0] + ( falloff[1] * d ) + ( falloff[2] * d * d ) ); float spotDot = dot( VP, ldir );"+(en?" spotAttenuation = 1.0; ":" if( spotDot > cos( light.angle ) ) { spotAttenuation = pow( spotDot, light.concentration ); } else{ spotAttenuation = 0.0; } attenuation *= spotAttenuation;")+" float nDotVP = max( 0.0, dot( vertNormal, VP )); vec3 halfVector = normalize( VP - normalize(ecPos) ); float nDotHV = max( 0.0, dot( vertNormal, halfVector )); if( nDotVP == 0.0 ) { powerfactor = 0.0; } else { powerfactor = pow( nDotHV, shininess ); } spec += specular * powerfactor * attenuation; col += light.color * nDotVP * attenuation;}void main(void) { vec3 finalAmbient = vec3( 0.0, 0.0, 0.0 ); vec3 finalDiffuse = vec3( 0.0, 0.0, 0.0 ); vec3 finalSpecular = vec3( 0.0, 0.0, 0.0 ); vec4 col = color; if(color[0] == -1.0){ col = aColor; } vec3 norm = normalize(vec3( normalTransform * vec4( Normal, 0.0 ) )); vec4 ecPos4 = view * model * vec4(Vertex,1.0); vec3 ecPos = (vec3(ecPos4))/ecPos4.w; if( lightCount == 0 ) { frontColor = col + vec4(mat_specular,1.0); } else { for( int i = 0; i < 8; i++ ) { Light l = getLight(i); if( i >= lightCount ){ break; } if( l.type == 0 ) { AmbientLight( finalAmbient, ecPos, l ); } else if( l.type == 1 ) { DirectionalLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } else if( l.type == 2 ) { PointLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } else { SpotLight( finalDiffuse, finalSpecular, norm, ecPos, l ); } } if( usingMat == false ) { frontColor = vec4( vec3(col) * finalAmbient + vec3(col) * finalDiffuse + vec3(col) * finalSpecular, col[3] ); } else{ frontColor = vec4( mat_emissive + (vec3(col) * mat_ambient * finalAmbient) + (vec3(col) * finalDiffuse) + (mat_specular * finalSpecular), col[3] ); } } vTexture.xy = aTexture.xy; gl_Position = projection * view * model * vec4( Vertex, 1.0 );}";var gf="#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 frontColor;uniform sampler2D sampler;uniform bool usingTexture;uniform bool usingTint;varying vec2 vTexture;void main(void){ if(usingTexture){ gl_FragColor = vec4(texture2D(sampler, vTexture.xy)); if(usingTint){ gl_FragColor = gl_FragColor*frontColor; } } else{ gl_FragColor = frontColor; }}";function a1(ax,ay,aA,aB){var az=j.locations[ax];if(az===ae){az=eH.getUniformLocation(ay,aA);j.locations[ax]=az}if(az!==-1){if(aB.length===4){eH.uniform4fv(az,aB)}else{if(aB.length===3){eH.uniform3fv(az,aB)}else{if(aB.length===2){eH.uniform2fv(az,aB)}else{eH.uniform1f(az,aB)}}}}}function a7(ax,ay,aA,aB){var az=j.locations[ax];if(az===ae){az=eH.getUniformLocation(ay,aA);j.locations[ax]=az}if(az!==-1){if(aB.length===4){eH.uniform4iv(az,aB)}else{if(aB.length===3){eH.uniform3iv(az,aB)}else{if(aB.length===2){eH.uniform2iv(az,aB)}else{eH.uniform1i(az,aB)}}}}}function G(aB,ax,aA,ay,aC){var az=j.attributes[aB];if(az===ae){az=eH.getAttribLocation(ax,aA);j.attributes[aB]=az}if(az!==-1){eH.bindBuffer(eH.ARRAY_BUFFER,aC);eH.vertexAttribPointer(az,ay,eH.FLOAT,false,0,0);eH.enableVertexAttribArray(az)}}function d8(ax,ay,aA){var az=j.attributes[ax];if(az===ae){az=eH.getAttribLocation(ay,aA);j.attributes[ax]=az}if(az!==-1){eH.disableVertexAttribArray(az)}}function d(aB,ax,aA,aC,ay){var az=j.locations[aB];if(az===ae){az=eH.getUniformLocation(ax,aA);j.locations[aB]=az}if(az!==-1){if(ay.length===16){eH.uniformMatrix4fv(az,aC,ay)}else{if(ay.length===9){eH.uniformMatrix3fv(az,aC,ay)}else{eH.uniformMatrix2fv(az,aC,ay)}}}}var gz=function(az,aA,ay,aB,ax){return{x:az,y:aA,w:ay,h:aB}};var fd=gz;var fu=function(az,aA,ay,aB,ax){return{x:az,y:aA,w:ax?ay:ay-az,h:ax?aB:aB-aA}};var gQ=function(az,aA,ay,aB,ax){return{x:az-ay/2,y:aA-aB/2,w:ay,h:aB}};var gp=function(ax,aB,ay){var aA=ax.createShader(ax.VERTEX_SHADER);ax.shaderSource(aA,aB);ax.compileShader(aA);if(!ax.getShaderParameter(aA,ax.COMPILE_STATUS)){throw ax.getShaderInfoLog(aA)}var aC=ax.createShader(ax.FRAGMENT_SHADER);ax.shaderSource(aC,ay);ax.compileShader(aC);if(!ax.getShaderParameter(aC,ax.COMPILE_STATUS)){throw ax.getShaderInfoLog(aC)}var az=ax.createProgram();ax.attachShader(az,aA);ax.attachShader(az,aC);ax.linkProgram(az);if(!ax.getProgramParameter(az,ax.LINK_STATUS)){throw"Error linking shaders."}return az};var t=function(){};var f2=function(){};var el=function(){};var gw=function(){};f2.prototype=new t();f2.prototype.constructor=f2;el.prototype=new t();el.prototype.constructor=el;gw.prototype=new t();gw.prototype.constructor=gw;t.prototype.a3DOnlyFunction=R;var ds={};var f3=ev.Character=function(ax){if(typeof ax==="string"&&ax.length===1){this.code=ax.charCodeAt(0)}else{if(typeof ax==="number"){this.code=ax}else{if(ax instanceof f3){this.code=ax}else{this.code=NaN}}}return(ds[this.code]===ae)?ds[this.code]=this:ds[this.code]};f3.prototype.toString=function(){return String.fromCharCode(this.code)};f3.prototype.valueOf=function(){return this.code};var fc=ev.PShape=function(ax){this.family=ax||W.GROUP;this.visible=true;this.style=true;this.children=[];this.nameTable=[];this.params=[];this.name="";this.image=null;this.matrix=null;this.kind=null;this.close=null;this.width=null;this.height=null;this.parent=null};fc.prototype={isVisible:function(){return this.visible},setVisible:function(ax){this.visible=ax},disableStyle:function(){this.style=false;for(var ax=0,ay=this.children.length;ax<ay;ax++){this.children[ax].disableStyle()}},enableStyle:function(){this.style=true;for(var ax=0,ay=this.children.length;ax<ay;ax++){this.children[ax].enableStyle()}},getFamily:function(){return this.family},getWidth:function(){return this.width},getHeight:function(){return this.height},setName:function(ax){this.name=ax},getName:function(){return this.name},draw:function(){if(this.visible){this.pre();this.drawImpl();this.post()}},drawImpl:function(){if(this.family===W.GROUP){this.drawGroup()}else{if(this.family===W.PRIMITIVE){this.drawPrimitive()}else{if(this.family===W.GEOMETRY){this.drawGeometry()}else{if(this.family===W.PATH){this.drawPath()}}}}},drawPath:function(){var ax,ay;if(this.vertices.length===0){return}ev.beginShape();if(this.vertexCodes.length===0){if(this.vertices[0].length===2){for(ax=0,ay=this.vertices.length;ax<ay;ax++){ev.vertex(this.vertices[ax][0],this.vertices[ax][1])}}else{for(ax=0,ay=this.vertices.length;ax<ay;ax++){ev.vertex(this.vertices[ax][0],this.vertices[ax][1],this.vertices[ax][2])}}}else{var az=0;if(this.vertices[0].length===2){for(ax=0,ay=this.vertexCodes.length;ax<ay;ax++){if(this.vertexCodes[ax]===W.VERTEX){ev.vertex(this.vertices[az][0],this.vertices[az][1]);if(this.vertices[az]["moveTo"]===true){b[b.length-1]["moveTo"]=true}else{if(this.vertices[az]["moveTo"]===false){b[b.length-1]["moveTo"]=false}}ev.breakShape=false;az++}else{if(this.vertexCodes[ax]===W.BEZIER_VERTEX){ev.bezierVertex(this.vertices[az+0][0],this.vertices[az+0][1],this.vertices[az+1][0],this.vertices[az+1][1],this.vertices[az+2][0],this.vertices[az+2][1]);az+=3}else{if(this.vertexCodes[ax]===W.CURVE_VERTEX){ev.curveVertex(this.vertices[az][0],this.vertices[az][1]);az++}else{if(this.vertexCodes[ax]===W.BREAK){ev.breakShape=true}}}}}}else{for(ax=0,ay=this.vertexCodes.length;ax<ay;ax++){if(this.vertexCodes[ax]===W.VERTEX){ev.vertex(this.vertices[az][0],this.vertices[az][1],this.vertices[az][2]);if(this.vertices[az]["moveTo"]===true){b[b.length-1]["moveTo"]=true}else{if(this.vertices[az]["moveTo"]===false){b[b.length-1]["moveTo"]=false}}ev.breakShape=false}else{if(this.vertexCodes[ax]===W.BEZIER_VERTEX){ev.bezierVertex(this.vertices[az+0][0],this.vertices[az+0][1],this.vertices[az+0][2],this.vertices[az+1][0],this.vertices[az+1][1],this.vertices[az+1][2],this.vertices[az+2][0],this.vertices[az+2][1],this.vertices[az+2][2]);az+=3}else{if(this.vertexCodes[ax]===W.CURVE_VERTEX){ev.curveVertex(this.vertices[az][0],this.vertices[az][1],this.vertices[az][2]);az++}else{if(this.vertexCodes[ax]===W.BREAK){ev.breakShape=true}}}}}}}ev.endShape(this.close?W.CLOSE:W.OPEN)},drawGeometry:function(){var ax,ay;ev.beginShape(this.kind);if(this.style){for(ax=0,ay=this.vertices.length;ax<ay;ax++){ev.vertex(this.vertices[ax])}}else{for(ax=0,ay=this.vertices.length;ax<ay;ax++){var az=this.vertices[ax];if(az[2]===0){ev.vertex(az[0],az[1])}else{ev.vertex(az[0],az[1],az[2])}}}ev.endShape()},drawGroup:function(){for(var ax=0,ay=this.children.length;ax<ay;ax++){this.children[ax].draw()}},drawPrimitive:function(){if(this.kind===W.POINT){ev.point(this.params[0],this.params[1])}else{if(this.kind===W.LINE){if(this.params.length===4){ev.line(this.params[0],this.params[1],this.params[2],this.params[3])}else{ev.line(this.params[0],this.params[1],this.params[2],this.params[3],this.params[4],this.params[5])}}else{if(this.kind===W.TRIANGLE){ev.triangle(this.params[0],this.params[1],this.params[2],this.params[3],this.params[4],this.params[5])}else{if(this.kind===W.QUAD){ev.quad(this.params[0],this.params[1],this.params[2],this.params[3],this.params[4],this.params[5],this.params[6],this.params[7])}else{if(this.kind===W.RECT){if(this.image!==null){ev.imageMode(W.CORNER);ev.image(this.image,this.params[0],this.params[1],this.params[2],this.params[3])}else{ev.rectMode(W.CORNER);ev.rect(this.params[0],this.params[1],this.params[2],this.params[3])}}else{if(this.kind===W.ELLIPSE){ev.ellipseMode(W.CORNER);ev.ellipse(this.params[0],this.params[1],this.params[2],this.params[3])}else{if(this.kind===W.ARC){ev.ellipseMode(W.CORNER);ev.arc(this.params[0],this.params[1],this.params[2],this.params[3],this.params[4],this.params[5])}else{if(this.kind===W.BOX){if(this.params.length===1){ev.box(this.params[0])}else{ev.box(this.params[0],this.params[1],this.params[2])}}else{if(this.kind===W.SPHERE){ev.sphere(this.params[0])}}}}}}}}}},pre:function(){if(this.matrix){ev.pushMatrix();eH.transform(this.matrix.elements[0],this.matrix.elements[3],this.matrix.elements[1],this.matrix.elements[4],this.matrix.elements[2],this.matrix.elements[5])}if(this.style){ev.pushStyle();this.styles()}},post:function(){if(this.matrix){ev.popMatrix()}if(this.style){ev.popStyle()}},styles:function(){if(this.stroke){ev.stroke(this.strokeColor);ev.strokeWeight(this.strokeWeight);ev.strokeCap(this.strokeCap);ev.strokeJoin(this.strokeJoin)}else{ev.noStroke()}if(this.fill){ev.fill(this.fillColor)}else{ev.noFill()}},getChild:function(aA){var ay,az;if(typeof aA==="number"){return this.children[aA]}var ax;if(aA===""||this.name===aA){return this}if(this.nameTable.length>0){for(ay=0,az=this.nameTable.length;ay<az||ax;ay++){if(this.nameTable[ay].getName===aA){ax=this.nameTable[ay];break}}if(ax){return ax}}for(ay=0,az=this.children.length;ay<az;ay++){ax=this.children[ay].getChild(aA);if(ax){return ax}}return null},getChildCount:function(){return this.children.length},addChild:function(ax){this.children.push(ax);ax.parent=this;if(ax.getName()!==null){this.addName(ax.getName(),ax)}},addName:function(ax,ay){if(this.parent!==null){this.parent.addName(ax,ay)}else{this.nameTable.push([ax,ay])}},translate:function(){if(arguments.length===2){this.checkMatrix(2);this.matrix.translate(arguments[0],arguments[1])}else{this.checkMatrix(3);this.matrix.translate(arguments[0],arguments[1],0)}},checkMatrix:function(ax){if(this.matrix===null){if(ax===2){this.matrix=new ev.PMatrix2D()}else{this.matrix=new ev.PMatrix3D()}}else{if(ax===3&&this.matrix instanceof ev.PMatrix2D){this.matrix=new ev.PMatrix3D()}}},rotateX:function(ax){this.rotate(ax,1,0,0)},rotateY:function(ax){this.rotate(ax,0,1,0)},rotateZ:function(ax){this.rotate(ax,0,0,1)},rotate:function(){if(arguments.length===1){this.checkMatrix(2);this.matrix.rotate(arguments[0])}else{this.checkMatrix(3);this.matrix.rotate(arguments[0],arguments[1],arguments[2],arguments[3])}},scale:function(){if(arguments.length===2){this.checkMatrix(2);this.matrix.scale(arguments[0],arguments[1])}else{if(arguments.length===3){this.checkMatrix(2);this.matrix.scale(arguments[0],arguments[1],arguments[2])}else{this.checkMatrix(2);this.matrix.scale(arguments[0])}}},resetMatrix:function(){this.checkMatrix(2);this.matrix.reset()},applyMatrix:function(ax){if(arguments.length===1){this.applyMatrix(ax.elements[0],ax.elements[1],0,ax.elements[2],ax.elements[3],ax.elements[4],0,ax.elements[5],0,0,1,0,0,0,0,1)}else{if(arguments.length===6){this.checkMatrix(2);this.matrix.apply(arguments[0],arguments[1],arguments[2],0,arguments[3],arguments[4],arguments[5],0,0,0,1,0,0,0,0,1)}else{if(arguments.length===16){this.checkMatrix(3);this.matrix.apply(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15])}}}}};var dd=ev.PShapeSVG=function(){ev.PShape.call(this);if(arguments.length===1){this.element=arguments[0];this.vertexCodes=[];this.vertices=[];this.opacity=1;this.stroke=false;this.strokeColor=W.ALPHA_MASK;this.strokeWeight=1;this.strokeCap=W.SQUARE;this.strokeJoin=W.MITER;this.strokeGradient=null;this.strokeGradientPaint=null;this.strokeName=null;this.strokeOpacity=1;this.fill=true;this.fillColor=W.ALPHA_MASK;this.fillGradient=null;this.fillGradientPaint=null;this.fillName=null;this.fillOpacity=1;if(this.element.getName()!=="svg"){throw ("root is not <svg>, it's <"+this.element.getName()+">")}}else{if(arguments.length===2){if(typeof arguments[1]==="string"){if(arguments[1].indexOf(".svg")>-1){this.element=new ev.XMLElement(null,arguments[1]);this.vertexCodes=[];this.vertices=[];this.opacity=1;this.stroke=false;this.strokeColor=W.ALPHA_MASK;this.strokeWeight=1;this.strokeCap=W.SQUARE;this.strokeJoin=W.MITER;this.strokeGradient="";this.strokeGradientPaint="";this.strokeName="";this.strokeOpacity=1;this.fill=true;this.fillColor=W.ALPHA_MASK;this.fillGradient=null;this.fillGradientPaint=null;this.fillOpacity=1}}else{if(arguments[0]){this.element=arguments[1];this.vertexCodes=arguments[0].vertexCodes.slice();this.vertices=arguments[0].vertices.slice();this.stroke=arguments[0].stroke;this.strokeColor=arguments[0].strokeColor;this.strokeWeight=arguments[0].strokeWeight;this.strokeCap=arguments[0].strokeCap;this.strokeJoin=arguments[0].strokeJoin;this.strokeGradient=arguments[0].strokeGradient;this.strokeGradientPaint=arguments[0].strokeGradientPaint;this.strokeName=arguments[0].strokeName;this.fill=arguments[0].fill;this.fillColor=arguments[0].fillColor;this.fillGradient=arguments[0].fillGradient;this.fillGradientPaint=arguments[0].fillGradientPaint;this.fillName=arguments[0].fillName;this.strokeOpacity=arguments[0].strokeOpacity;this.fillOpacity=arguments[0].fillOpacity;this.opacity=arguments[0].opacity}}}}this.name=this.element.getStringAttribute("id");var az=this.element.getStringAttribute("display","inline");this.visible=az!=="none";var aA=this.element.getAttribute("transform");if(aA){this.matrix=this.parseMatrix(aA)}var ax=this.element.getStringAttribute("viewBox");if(ax!==null){var aB=ax.split(" ");this.width=aB[2];this.height=aB[3]}var ay=this.element.getStringAttribute("width");var aC=this.element.getStringAttribute("height");if(ay!==null){this.width=this.parseUnitSize(ay);this.height=this.parseUnitSize(aC)}else{if((this.width===0)||(this.height===0)){this.width=1;this.height=1;throw ("The width and/or height is not readable in the <svg> tag of this file.")}}this.parseColors(this.element);this.parseChildren(this.element)};dd.prototype=new fc();dd.prototype.parseMatrix=(function(){function ax(ay){var az=[];ay.replace(/\((.*?)\)/,(function(){return function(aB,aA){az=aA.replace(/,+/g," ").split(/\s+/)}}()));return az}return function(aA){this.checkMatrix(2);var aH=[];aA.replace(/\s*(\w+)\((.*?)\)/g,function(aI){aH.push(ev.trim(aI))});if(aH.length===0){return null}for(var aC=0,aE=aH.length;aC<aE;aC++){var aG=ax(aH[aC]);if(aH[aC].indexOf("matrix")!==-1){this.matrix.set(aG[0],aG[2],aG[4],aG[1],aG[3],aG[5])}else{if(aH[aC].indexOf("translate")!==-1){var aB=aG[0];var aD=(aG.length===2)?aG[1]:0;this.matrix.translate(aB,aD)}else{if(aH[aC].indexOf("scale")!==-1){var ay=aG[0];var az=(aG.length===2)?aG[1]:aG[0];this.matrix.scale(ay,az)}else{if(aH[aC].indexOf("rotate")!==-1){var aF=aG[0];if(aG.length===1){this.matrix.rotate(ev.radians(aF))}else{if(aG.length===3){this.matrix.translate(aG[1],aG[2]);this.matrix.rotate(ev.radians(aG[0]));this.matrix.translate(-aG[1],-aG[2])}}}else{if(aH[aC].indexOf("skewX")!==-1){this.matrix.skewX(parseFloat(aG[0]))}else{if(aH[aC].indexOf("skewY")!==-1){this.matrix.skewY(aG[0])}}}}}}}return this.matrix}}());dd.prototype.parseChildren=function(aA){var ay=aA.getChildren();var aB=new ev.PShape();for(var aC=0,ax=ay.length;aC<ax;aC++){var az=this.parseChild(ay[aC]);if(az){aB.addChild(az)}}this.children.push(aB)};dd.prototype.getName=function(){return this.name};dd.prototype.parseChild=function(ax){var ay=ax.getName();var az;if(ay==="g"){az=new dd(this,ax)}else{if(ay==="defs"){az=new dd(this,ax)}else{if(ay==="line"){az=new dd(this,ax);az.parseLine()}else{if(ay==="circle"){az=new dd(this,ax);az.parseEllipse(true)}else{if(ay==="ellipse"){az=new dd(this,ax);az.parseEllipse(false)}else{if(ay==="rect"){az=new dd(this,ax);az.parseRect()}else{if(ay==="polygon"){az=new dd(this,ax);az.parsePoly(true)}else{if(ay==="polyline"){az=new dd(this,ax);az.parsePoly(false)}else{if(ay==="path"){az=new dd(this,ax);az.parsePath()}else{if(ay==="radialGradient"){p("PShapeSVG.prototype.parseChild, name = radialGradient")}else{if(ay==="linearGradient"){p("PShapeSVG.prototype.parseChild, name = linearGradient")}else{if(ay==="text"){p("PShapeSVG.prototype.parseChild, name = text")}else{if(ay==="filter"){p("PShapeSVG.prototype.parseChild, name = filter")}else{if(ay==="mask"){p("PShapeSVG.prototype.parseChild, name = mask")}else{R()}}}}}}}}}}}}}}return az};dd.prototype.parsePath=function(){this.family=W.PATH;this.kind=0;var aK=[];var aP;var aR=ev.trim(this.element.getStringAttribute("d").replace(/[\s,]+/g," "));if(aR===null){return}aR=ev.__toCharArray(aR);var aM=0,aN=0,aF=0,aH=0,aG=0,aI=0,az=0,aA=0,aO=0,aQ=0,aD=0,aE=0,aB=0,aC=0,aS=0,aW=0;var ay="";var aU=[];var aT=false;var aJ;var aL;var aV,ax;while(aS<aR.length){aW=aR[aS].valueOf();if((aW>=65&&aW<=90)||(aW>=97&&aW<=122)){aV=aS;aS++;if(aS<aR.length){aU=[];aW=aR[aS].valueOf();while(!((aW>=65&&aW<=90)||(aW>=97&&aW<=100)||(aW>=102&&aW<=122))&&aT===false){if(aW===32){if(ay!==""){aU.push(parseFloat(ay));ay=""}aS++}else{if(aW===45){if(aR[aS-1].valueOf()===101){ay+=aR[aS].toString();aS++}else{if(ay!==""){aU.push(parseFloat(ay))}ay=aR[aS].toString();aS++}}else{ay+=aR[aS].toString();aS++}}if(aS===aR.length){aT=true}else{aW=aR[aS].valueOf()}}}if(ay!==""){aU.push(parseFloat(ay));ay=""}aL=aR[aV];aW=aL.valueOf();if(aW===77){if(aU.length>=2&&aU.length%2===0){aM=aU[0];aN=aU[1];this.parsePathMoveto(aM,aN);if(aU.length>2){for(aV=2,ax=aU.length;aV<ax;aV+=2){aM=aU[aV];aN=aU[aV+1];this.parsePathLineto(aM,aN)}}}}else{if(aW===109){if(aU.length>=2&&aU.length%2===0){aM+=aU[0];aN+=aU[1];this.parsePathMoveto(aM,aN);if(aU.length>2){for(aV=2,ax=aU.length;aV<ax;aV+=2){aM+=aU[aV];aN+=aU[aV+1];this.parsePathLineto(aM,aN)}}}}else{if(aW===76){if(aU.length>=2&&aU.length%2===0){for(aV=0,ax=aU.length;aV<ax;aV+=2){aM=aU[aV];aN=aU[aV+1];this.parsePathLineto(aM,aN)}}}else{if(aW===108){if(aU.length>=2&&aU.length%2===0){for(aV=0,ax=aU.length;aV<ax;aV+=2){aM+=aU[aV];aN+=aU[aV+1];this.parsePathLineto(aM,aN)}}}else{if(aW===72){for(aV=0,ax=aU.length;aV<ax;aV++){aM=aU[aV];this.parsePathLineto(aM,aN)}}else{if(aW===104){for(aV=0,ax=aU.length;aV<ax;aV++){aM+=aU[aV];this.parsePathLineto(aM,aN)}}else{if(aW===86){for(aV=0,ax=aU.length;aV<ax;aV++){aN=aU[aV];this.parsePathLineto(aM,aN)}}else{if(aW===118){for(aV=0,ax=aU.length;aV<ax;aV++){aN+=aU[aV];this.parsePathLineto(aM,aN)}}else{if(aW===67){if(aU.length>=6&&aU.length%6===0){for(aV=0,ax=aU.length;aV<ax;aV+=6){aG=aU[aV];az=aU[aV+1];aI=aU[aV+2];aA=aU[aV+3];aO=aU[aV+4];aQ=aU[aV+5];this.parsePathCurveto(aG,az,aI,aA,aO,aQ);aM=aO;aN=aQ}}}else{if(aW===99){if(aU.length>=6&&aU.length%6===0){for(aV=0,ax=aU.length;aV<ax;aV+=6){aG=aM+aU[aV];az=aN+aU[aV+1];aI=aM+aU[aV+2];aA=aN+aU[aV+3];aO=aM+aU[aV+4];aQ=aN+aU[aV+5];this.parsePathCurveto(aG,az,aI,aA,aO,aQ);aM=aO;aN=aQ}}}else{if(aW===83){if(aU.length>=4&&aU.length%4===0){for(aV=0,ax=aU.length;aV<ax;aV+=4){if(aJ.toLowerCase()==="c"||aJ.toLowerCase()==="s"){aD=this.vertices[this.vertices.length-2][0];aE=this.vertices[this.vertices.length-2][1];aB=this.vertices[this.vertices.length-1][0];aC=this.vertices[this.vertices.length-1][1];aG=aB+(aB-aD);az=aC+(aC-aE)}else{aG=this.vertices[this.vertices.length-1][0];az=this.vertices[this.vertices.length-1][1]}aI=aU[aV];aA=aU[aV+1];aO=aU[aV+2];aQ=aU[aV+3];this.parsePathCurveto(aG,az,aI,aA,aO,aQ);aM=aO;aN=aQ}}}else{if(aW===115){if(aU.length>=4&&aU.length%4===0){for(aV=0,ax=aU.length;aV<ax;aV+=4){if(aJ.toLowerCase()==="c"||aJ.toLowerCase()==="s"){aD=this.vertices[this.vertices.length-2][0];aE=this.vertices[this.vertices.length-2][1];aB=this.vertices[this.vertices.length-1][0];aC=this.vertices[this.vertices.length-1][1];aG=aB+(aB-aD);az=aC+(aC-aE)}else{aG=this.vertices[this.vertices.length-1][0];az=this.vertices[this.vertices.length-1][1]}aI=aM+aU[aV];aA=aN+aU[aV+1];aO=aM+aU[aV+2];aQ=aN+aU[aV+3];this.parsePathCurveto(aG,az,aI,aA,aO,aQ);aM=aO;aN=aQ}}}else{if(aW===81){if(aU.length>=4&&aU.length%4===0){for(aV=0,ax=aU.length;aV<ax;aV+=4){aF=aU[aV];aH=aU[aV+1];aO=aU[aV+2];aQ=aU[aV+3];this.parsePathQuadto(aM,aN,aF,aH,aO,aQ);aM=aO;aN=aQ}}}else{if(aW===113){if(aU.length>=4&&aU.length%4===0){for(aV=0,ax=aU.length;aV<ax;aV+=4){aF=aM+aU[aV];aH=aN+aU[aV+1];aO=aM+aU[aV+2];aQ=aN+aU[aV+3];this.parsePathQuadto(aM,aN,aF,aH,aO,aQ);aM=aO;aN=aQ}}}else{if(aW===84){if(aU.length>=2&&aU.length%2===0){for(aV=0,ax=aU.length;aV<ax;aV+=2){if(aJ.toLowerCase()==="q"||aJ.toLowerCase()==="t"){aD=this.vertices[this.vertices.length-2][0];aE=this.vertices[this.vertices.length-2][1];aB=this.vertices[this.vertices.length-1][0];aC=this.vertices[this.vertices.length-1][1];aF=aB+(aB-aD);aH=aC+(aC-aE)}else{aF=aM;aH=aN}aO=aU[aV];aQ=aU[aV+1];this.parsePathQuadto(aM,aN,aF,aH,aO,aQ);aM=aO;aN=aQ}}}else{if(aW===116){if(aU.length>=2&&aU.length%2===0){for(aV=0,ax=aU.length;aV<ax;aV+=2){if(aJ.toLowerCase()==="q"||aJ.toLowerCase()==="t"){aD=this.vertices[this.vertices.length-2][0];aE=this.vertices[this.vertices.length-2][1];aB=this.vertices[this.vertices.length-1][0];aC=this.vertices[this.vertices.length-1][1];aF=aB+(aB-aD);aH=aC+(aC-aE)}else{aF=aM;aH=aN}aO=aM+aU[aV];aQ=aN+aU[aV+1];this.parsePathQuadto(aM,aN,aF,aH,aO,aQ);aM=aO;aN=aQ}}}else{if(aW===90||aW===122){this.close=true}}}}}}}}}}}}}}}}}aJ=aL.toString()}else{aS++}}};dd.prototype.parsePathQuadto=function(ax,aB,az,aA,ay,aC){if(this.vertices.length>0){this.parsePathCode(W.BEZIER_VERTEX);this.parsePathVertex(ax+((az-ax)*2/3),aB+((aA-aB)*2/3));this.parsePathVertex(ay+((az-ay)*2/3),aC+((aA-aC)*2/3));this.parsePathVertex(ay,aC)}else{throw ("Path must start with M/m")}};dd.prototype.parsePathCurveto=function(aC,aA,ay,aB,az,ax){if(this.vertices.length>0){this.parsePathCode(W.BEZIER_VERTEX);this.parsePathVertex(aC,aA);this.parsePathVertex(ay,aB);this.parsePathVertex(az,ax)}else{throw ("Path must start with M/m")}};dd.prototype.parsePathLineto=function(ax,ay){if(this.vertices.length>0){this.parsePathCode(W.VERTEX);this.parsePathVertex(ax,ay);this.vertices[this.vertices.length-1]["moveTo"]=false}else{throw ("Path must start with M/m")}};dd.prototype.parsePathMoveto=function(ax,ay){if(this.vertices.length>0){this.parsePathCode(W.BREAK)}this.parsePathCode(W.VERTEX);this.parsePathVertex(ax,ay);this.vertices[this.vertices.length-1]["moveTo"]=true};dd.prototype.parsePathVertex=function(az,ax){var ay=[];ay[0]=az;ay[1]=ax;this.vertices.push(ay)};dd.prototype.parsePathCode=function(ax){this.vertexCodes.push(ax)};dd.prototype.parsePoly=function(aB){this.family=W.PATH;this.close=aB;var ay=ev.trim(this.element.getStringAttribute("points").replace(/[,\s]+/g," "));if(ay!==null){var az=ay.split(" ");if(az.length%2===0){for(var aC=0,ax=az.length;aC<ax;aC++){var aA=[];aA[0]=az[aC];aA[1]=az[++aC];this.vertices.push(aA)}}else{throw ("Error parsing polygon points: odd number of coordinates provided")}}};dd.prototype.parseRect=function(){this.kind=W.RECT;this.family=W.PRIMITIVE;this.params=[];this.params[0]=this.element.getFloatAttribute("x");this.params[1]=this.element.getFloatAttribute("y");this.params[2]=this.element.getFloatAttribute("width");this.params[3]=this.element.getFloatAttribute("height");if(this.params[2]<0||this.params[3]<0){throw ("svg error: negative width or height found while parsing <rect>")}};dd.prototype.parseEllipse=function(ax){this.kind=W.ELLIPSE;this.family=W.PRIMITIVE;this.params=[];this.params[0]=this.element.getFloatAttribute("cx")|0;this.params[1]=this.element.getFloatAttribute("cy")|0;var ay,az;if(ax){ay=az=this.element.getFloatAttribute("r");if(ay<0){throw ("svg error: negative radius found while parsing <circle>")}}else{ay=this.element.getFloatAttribute("rx");az=this.element.getFloatAttribute("ry");if(ay<0||az<0){throw ("svg error: negative x-axis radius or y-axis radius found while parsing <ellipse>")}}this.params[0]-=ay;this.params[1]-=az;this.params[2]=ay*2;this.params[3]=az*2};dd.prototype.parseLine=function(){this.kind=W.LINE;this.family=W.PRIMITIVE;this.params=[];this.params[0]=this.element.getFloatAttribute("x1");this.params[1]=this.element.getFloatAttribute("y1");this.params[2]=this.element.getFloatAttribute("x2");this.params[3]=this.element.getFloatAttribute("y2")};dd.prototype.parseColors=function(ax){if(ax.hasAttribute("opacity")){this.setOpacity(ax.getAttribute("opacity"))}if(ax.hasAttribute("stroke")){this.setStroke(ax.getAttribute("stroke"))}if(ax.hasAttribute("stroke-width")){this.setStrokeWeight(ax.getAttribute("stroke-width"))}if(ax.hasAttribute("stroke-linejoin")){this.setStrokeJoin(ax.getAttribute("stroke-linejoin"))}if(ax.hasAttribute("stroke-linecap")){this.setStrokeCap(ax.getStringAttribute("stroke-linecap"))}if(ax.hasAttribute("fill")){this.setFill(ax.getStringAttribute("fill"))}if(ax.hasAttribute("style")){var aA=ax.getStringAttribute("style");var aC=aA.toString().split(";");for(var ay=0,az=aC.length;ay<az;ay++){var aB=ev.trim(aC[ay].split(":"));if(aB[0]==="fill"){this.setFill(aB[1])}else{if(aB[0]==="fill-opacity"){this.setFillOpacity(aB[1])}else{if(aB[0]==="stroke"){this.setStroke(aB[1])}else{if(aB[0]==="stroke-width"){this.setStrokeWeight(aB[1])}else{if(aB[0]==="stroke-linecap"){this.setStrokeCap(aB[1])}else{if(aB[0]==="stroke-linejoin"){this.setStrokeJoin(aB[1])}else{if(aB[0]==="stroke-opacity"){this.setStrokeOpacity(aB[1])}else{if(aB[0]==="opacity"){this.setOpacity(aB[1])}}}}}}}}}}};dd.prototype.setFillOpacity=function(ax){this.fillOpacity=parseFloat(ax);this.fillColor=this.fillOpacity*255<<24|this.fillColor&16777215};dd.prototype.setFill=function(ay){var ax=this.fillColor&4278190080;if(ay==="none"){this.fill=false}else{if(ay.indexOf("#")===0){this.fill=true;if(ay.length===4){ay=ay.replace(/#(.)(.)(.)/,"#$1$1$2$2$3$3")}this.fillColor=ax|(parseInt(ay.substring(1),16))&16777215}else{if(ay.indexOf("rgb")===0){this.fill=true;this.fillColor=ax|this.parseRGB(ay)}else{if(ay.indexOf("url(#")===0){this.fillName=ay.substring(5,ay.length-1)}else{if(T[ay]){this.fill=true;this.fillColor=ax|(parseInt(T[ay].substring(1),16))&16777215}}}}}};dd.prototype.setOpacity=function(ax){this.strokeColor=parseFloat(ax)*255<<24|this.strokeColor&16777215;this.fillColor=parseFloat(ax)*255<<24|this.fillColor&16777215};dd.prototype.setStroke=function(ay){var ax=this.strokeColor&4278190080;if(ay==="none"){this.stroke=false}else{if(ay.charAt(0)==="#"){this.stroke=true;if(ay.length===4){ay=ay.replace(/#(.)(.)(.)/,"#$1$1$2$2$3$3")}this.strokeColor=ax|(parseInt(ay.substring(1),16))&16777215}else{if(ay.indexOf("rgb")===0){this.stroke=true;this.strokeColor=ax|this.parseRGB(ay)}else{if(ay.indexOf("url(#")===0){this.strokeName=ay.substring(5,ay.length-1)}else{if(T[ay]){this.stroke=true;this.strokeColor=ax|(parseInt(T[ay].substring(1),16))&16777215}}}}}};dd.prototype.setStrokeWeight=function(ax){this.strokeWeight=this.parseUnitSize(ax)};dd.prototype.setStrokeJoin=function(ax){if(ax==="miter"){this.strokeJoin=W.MITER}else{if(ax==="round"){this.strokeJoin=W.ROUND}else{if(ax==="bevel"){this.strokeJoin=W.BEVEL}}}};dd.prototype.setStrokeCap=function(ax){if(ax==="butt"){this.strokeCap=W.SQUARE}else{if(ax==="round"){this.strokeCap=W.ROUND}else{if(ax==="square"){this.strokeCap=W.PROJECT}}}};dd.prototype.setStrokeOpacity=function(ax){this.strokeOpacity=parseFloat(ax);this.strokeColor=this.strokeOpacity*255<<24|this.strokeColor&16777215};dd.prototype.parseRGB=function(ay){var ax=ay.substring(ay.indexOf("(")+1,ay.indexOf(")"));var az=ax.split(", ");return(az[0]<<16)|(az[1]<<8)|(az[2])};dd.prototype.parseUnitSize=function(ax){var ay=ax.length-2;if(ay<0){return ax}if(ax.indexOf("pt")===ay){return parseFloat(ax.substring(0,ay))*1.25}if(ax.indexOf("pc")===ay){return parseFloat(ax.substring(0,ay))*15}if(ax.indexOf("mm")===ay){return parseFloat(ax.substring(0,ay))*3.543307}if(ax.indexOf("cm")===ay){return parseFloat(ax.substring(0,ay))*35.43307}if(ax.indexOf("in")===ay){return parseFloat(ax.substring(0,ay))*90}if(ax.indexOf("px")===ay){return parseFloat(ax.substring(0,ay))}return parseFloat(ax)};ev.shape=function(ax,ay,aA,aB,az){if(arguments.length>=1&&arguments[0]!==null){if(ax.isVisible()){ev.pushMatrix();if(e0===W.CENTER){if(arguments.length===5){ev.translate(ay-aB/2,aA-az/2);ev.scale(aB/ax.getWidth(),az/ax.getHeight())}else{if(arguments.length===3){ev.translate(ay-ax.getWidth()/2,-ax.getHeight()/2)}else{ev.translate(-ax.getWidth()/2,-ax.getHeight()/2)}}}else{if(e0===W.CORNER){if(arguments.length===5){ev.translate(ay,aA);ev.scale(aB/ax.getWidth(),az/ax.getHeight())}else{if(arguments.length===3){ev.translate(ay,aA)}}}else{if(e0===W.CORNERS){if(arguments.length===5){aB-=ay;az-=aA;ev.translate(ay,aA);ev.scale(aB/ax.getWidth(),az/ax.getHeight())}else{if(arguments.length===3){ev.translate(ay,aA)}}}}}ax.draw();if((arguments.length===1&&e0===W.CENTER)||arguments.length>1){ev.popMatrix()}}}};ev.shapeMode=function(ax){e0=ax};ev.loadShape=function(ax){if(arguments.length===1){if(ax.indexOf(".svg")>-1){return new dd(null,ax)}}return null};var eF=function(aA,aB,az,ay,ax){this.fullName=aA||"";this.name=aB||"";this.namespace=az||"";this.value=ay;this.type=ax};eF.prototype={getName:function(){return this.name},getFullName:function(){return this.fullName},getNamespace:function(){return this.namespace},getValue:function(){return this.value},getType:function(){return this.type},setValue:function(ax){this.value=ax}};var gy=ev.XMLElement=function(){this.attributes=[];this.children=[];this.fullName=null;this.name=null;this.namespace="";this.content=null;this.parent=null;this.lineNr="";this.systemID="";this.type="ELEMENT";if(arguments.length===4){this.fullName=arguments[0]||"";if(arguments[1]){this.name=arguments[1]}else{var ax=this.fullName.indexOf(":");if(ax>=0){this.name=this.fullName.substring(ax+1)}else{this.name=this.fullName}}this.namespace=arguments[1];this.lineNr=arguments[3];this.systemID=arguments[2]}else{if((arguments.length===2&&arguments[1].indexOf(".")>-1)){this.parse(arguments[arguments.length-1])}else{if(arguments.length===1&&typeof arguments[0]==="string"){this.parse(arguments[0])}}}};gy.prototype={parse:function(az){var ax;try{var aA=az.substring(az.length-4);if(aA===".xml"||aA===".svg"){az=ab(az)}ax=new DOMParser().parseFromString(az,"text/xml");var ay=ax.documentElement;if(ay){this.parseChildrenRecursive(null,ay)}else{throw ("Error loading document")}return this}catch(aB){throw (aB)}},parseChildrenRecursive:function(ax,az){var aA,aE,ay,aB,aC,aF;if(!ax){this.fullName=az.localName;this.name=az.nodeName;aA=this}else{aA=new gy(az.localName,az.nodeName,"","");aA.parent=ax}if(az.nodeType===3&&az.textContent!==""){return this.createPCDataElement(az.textContent)}for(aB=0,aC=az.attributes.length;aB<aC;aB++){ay=az.attributes[aB];aE=new eF(ay.getname,ay.nodeName,ay.namespaceURI,ay.nodeValue,ay.nodeType);aA.attributes.push(aE)}for(aB=0,aC=az.childNodes.length;aB<aC;aB++){var aD=az.childNodes[aB];if(aD.nodeType===1||aD.nodeType===3){aF=aA.parseChildrenRecursive(aA,aD);if(aF!==null){aA.children.push(aF)}}}return aA},createElement:function(){if(arguments.length===2){return new gy(arguments[0],arguments[1],null,null)}return new gy(arguments[0],arguments[1],arguments[2],arguments[3])},createPCDataElement:function(ay){if(ay.replace(/^\s+$/g,"")===""){return null}var ax=new gy();ax.content=ay;ax.type="TEXT";return ax},hasAttribute:function(){if(arguments.length===1){return this.getAttribute(arguments[0])!==null}if(arguments.length===2){return this.getAttribute(arguments[0],arguments[1])!==null}},equals:function(aB){if(!(aB instanceof gy)){return false}var aE,aF;if(this.name!==aB.getLocalName()){return false}if(this.attributes.length!==aB.getAttributeCount()){return false}if(this.attributes.length!==aB.attributes.length){return false}var ax,az,aG,aA,ay;for(aE=0,aF=this.attributes.length;aE<aF;aE++){ax=this.attributes[aE].getName();az=this.attributes[aE].getNamespace();ay=aB.findAttribute(ax,az);if(ay===null){return false}if(this.attributes[aE].getValue()!==ay.getValue()){return false}if(this.attributes[aE].getType()!==ay.getType()){return false}}if(this.children.length!==aB.getChildCount()){return false}if(this.children.length>0){var aC,aD;for(aE=0,aF=this.children.length;aE<aF;aE++){aC=this.getChild(aE);aD=aB.getChild(aE);if(!aC.equals(aD)){return false}}return true}return(this.content===aB.content)},getContent:function(){if(this.type==="TEXT"){return this.content}var ax=this.children;if(ax.length===1&&ax[0].type==="TEXT"){return ax[0].content}return null},getAttribute:function(){var ax;if(arguments.length===2){ax=this.findAttribute(arguments[0]);if(ax){return ax.getValue()}return arguments[1]}else{if(arguments.length===1){ax=this.findAttribute(arguments[0]);if(ax){return ax.getValue()}return null}else{if(arguments.length===3){ax=this.findAttribute(arguments[0],arguments[1]);if(ax){return ax.getValue()}return arguments[2]}}}},getStringAttribute:function(){if(arguments.length===1){return this.getAttribute(arguments[0])}if(arguments.length===2){return this.getAttribute(arguments[0],arguments[1])}return this.getAttribute(arguments[0],arguments[1],arguments[2])},getString:function(ax){return this.getStringAttribute(ax)},getFloatAttribute:function(){if(arguments.length===1){return parseFloat(this.getAttribute(arguments[0],0))}if(arguments.length===2){return this.getAttribute(arguments[0],arguments[1])}return this.getAttribute(arguments[0],arguments[1],arguments[2])},getFloat:function(ax){return this.getFloatAttribute(ax)},getIntAttribute:function(){if(arguments.length===1){return this.getAttribute(arguments[0],0)}if(arguments.length===2){return this.getAttribute(arguments[0],arguments[1])}return this.getAttribute(arguments[0],arguments[1],arguments[2])},getInt:function(ax){return this.getIntAttribute(ax)},hasChildren:function(){return this.children.length>0},addChild:function(ax){if(ax!==null){ax.parent=this;this.children.push(ax)}},insertChild:function(ax,az){if(ax){if((ax.getLocalName()===null)&&(!this.hasChildren())){var ay=this.children[this.children.length-1];if(ay.getLocalName()===null){ay.setContent(ay.getContent()+ax.getContent());return}}ax.parent=this;this.children.splice(az,0,ax)}},getChild:function(){if(typeof arguments[0]==="number"){return this.children[arguments[0]]}if(arguments[0].indexOf("/")!==-1){this.getChildRecursive(arguments[0].split("/"),0);return null}var az,aA;for(var ax=0,ay=this.getChildCount();ax<ay;ax++){az=this.getChild(ax);aA=az.getName();if(aA!==null&&aA===arguments[0]){return az}}return null},getChildren:function(){if(arguments.length===1){if(typeof arguments[0]==="number"){return this.getChild(arguments[0])}if(arguments[0].indexOf("/")!==-1){return this.getChildrenRecursive(arguments[0].split("/"),0)}var aA=[];var az,aB;for(var ax=0,ay=this.getChildCount();ax<ay;ax++){az=this.getChild(ax);aB=az.getName();if(aB!==null&&aB===arguments[0]){aA.push(az)}}return aA}return this.children},getChildCount:function(){return this.children.length},getChildRecursive:function(ay,aA){var az,aB;for(var aC=0,ax=this.getChildCount();aC<ax;aC++){az=this.getChild(aC);aB=az.getName();if(aB!==null&&aB===ay[aA]){if(aA===ay.length-1){return az}aA+=1;return az.getChildRecursive(ay,aA)}}return null},getChildrenRecursive:function(az,aA){if(aA===az.length-1){return this.getChildren(az[aA])}var aB=this.getChildren(az[aA]);var ax=[];for(var ay=0;ay<aB.length;ay++){ax=ax.concat(aB[ay].getChildrenRecursive(az,aA+1))}return ax},isLeaf:function(){return !this.hasChildren()},listChildren:function(){var az=[];for(var ax=0,ay=this.children.length;ax<ay;ax++){az.push(this.getChild(ax).getName())}return az},removeAttribute:function(ay,aA){this.namespace=aA||"";for(var ax=0,az=this.attributes.length;ax<az;ax++){if(this.attributes[ax].getName()===ay&&this.attributes[ax].getNamespace()===this.namespace){this.attributes.splice(ax,1);break}}},removeChild:function(ax){if(ax){for(var ay=0,az=this.children.length;ay<az;ay++){if(this.children[ay].equals(ax)){this.children.splice(ay,1);break}}}},removeChildAtIndex:function(ax){if(this.children.length>ax){this.children.splice(ax,1)}},findAttribute:function(ay,aA){this.namespace=aA||"";for(var ax=0,az=this.attributes.length;ax<az;ax++){if(this.attributes[ax].getName()===ay&&this.attributes[ax].getNamespace()===this.namespace){return this.attributes[ax]}}return null},setAttribute:function(){var az;if(arguments.length===3){var ax=arguments[0].indexOf(":");var ay=arguments[0].substring(ax+1);az=this.findAttribute(ay,arguments[1]);if(az){az.setValue(arguments[2])}else{az=new eF(arguments[0],ay,arguments[1],arguments[2],"CDATA");this.attributes.push(az)}}else{az=this.findAttribute(arguments[0]);if(az){az.setValue(arguments[1])}else{az=new eF(arguments[0],arguments[0],null,arguments[1],"CDATA");this.attributes.push(az)}}},setString:function(ay,ax){this.setAttribute(ay,ax)},setInt:function(ay,ax){this.setAttribute(ay,ax)},setFloat:function(ay,ax){this.setAttribute(ay,ax)},setContent:function(ax){if(this.children.length>0){S.debug("Tried to set content for XMLElement with children")}this.content=ax},setName:function(){if(arguments.length===1){this.name=arguments[0];this.fullName=arguments[0];this.namespace=null}else{var ax=arguments[0].indexOf(":");if((arguments[1]===null)||(ax<0)){this.name=arguments[0]}else{this.name=arguments[0].substring(ax+1)}this.fullName=arguments[0];this.namespace=arguments[1]}},getName:function(){return this.fullName},getLocalName:function(){return this.name},getAttributeCount:function(){return this.attributes.length},toString:function(){if(this.type==="TEXT"){return this.content}var ax=(this.namespace!==""&&this.namespace!==this.name?this.namespace+":":"")+this.name;var aB="<"+ax;var ay,aA;for(ay=0;ay<this.attributes.length;ay++){var az=this.attributes[ay];aB+=" "+az.getName()+'="'+az.getValue()+'"'}if(this.children.length===0){if(this.content===""){aB+="/>"}else{aB+=">"+this.content+"</"+ax+">"}}else{aB+=">";for(aA=0;aA<this.children.length;aA++){aB+=this.children[aA].toString()}aB+="</"+ax+">"}return aB}};gy.parse=function(ax){var ay=new gy();ay.parse(ax);return ay};var dq=function(aA){var az=0;for(var ay=0;ay<aA.length;ay++){if(ay!==0){az=ah.max(az,ah.abs(aA[ay]))}else{az=ah.abs(aA[ay])}}var ax=(az+"").indexOf(".");if(ax===0){ax=1}else{if(ax===-1){ax=(az+"").length}}return ax};var gD=ev.PMatrix2D=function(){if(arguments.length===0){this.reset()}else{if(arguments.length===1&&arguments[0] instanceof gD){this.set(arguments[0].array())}else{if(arguments.length===6){this.set(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])}}}};gD.prototype={set:function(){if(arguments.length===6){var ax=arguments;this.set([ax[0],ax[1],ax[2],ax[3],ax[4],ax[5]])}else{if(arguments.length===1&&arguments[0] instanceof gD){this.elements=arguments[0].array()}else{if(arguments.length===1&&arguments[0] instanceof Array){this.elements=arguments[0].slice()}}}},get:function(){var ax=new gD();ax.set(this.elements);return ax},reset:function(){this.set([1,0,0,0,1,0])},array:function gY(){return this.elements.slice()},translate:function(ax,ay){this.elements[2]=ax*this.elements[0]+ay*this.elements[1]+this.elements[2];this.elements[5]=ax*this.elements[3]+ay*this.elements[4]+this.elements[5]},invTranslate:function(ax,ay){this.translate(-ax,-ay)},transpose:function(){},mult:function(ay,ax){var az,aA;if(ay instanceof X){az=ay.x;aA=ay.y;if(!ax){ax=new X()}}else{if(ay instanceof Array){az=ay[0];aA=ay[1];if(!ax){ax=[]}}}if(ax instanceof Array){ax[0]=this.elements[0]*az+this.elements[1]*aA+this.elements[2];ax[1]=this.elements[3]*az+this.elements[4]*aA+this.elements[5]}else{if(ax instanceof X){ax.x=this.elements[0]*az+this.elements[1]*aA+this.elements[2];ax.y=this.elements[3]*az+this.elements[4]*aA+this.elements[5];ax.z=0}}return ax},multX:function(ay,ax){return(ay*this.elements[0]+ax*this.elements[1]+this.elements[2])},multY:function(ay,ax){return(ay*this.elements[3]+ax*this.elements[4]+this.elements[5])},skewX:function(ax){this.apply(1,0,1,ax,0,0)},skewY:function(ax){this.apply(1,0,1,0,ax,0)},determinant:function(){return(this.elements[0]*this.elements[4]-this.elements[1]*this.elements[3])},invert:function(){var aB=this.determinant();if(ah.abs(aB)>W.MIN_INT){var ay=this.elements[0];var aA=this.elements[1];var aC=this.elements[2];var aD=this.elements[3];var ax=this.elements[4];var az=this.elements[5];this.elements[0]=ax/aB;this.elements[3]=-aD/aB;this.elements[1]=-aA/aB;this.elements[4]=ay/aB;this.elements[2]=(aA*az-ax*aC)/aB;this.elements[5]=(aD*aC-ay*az)/aB;return true}return false},scale:function(ax,ay){if(ax&&!ay){ay=ax}if(ax&&ay){this.elements[0]*=ax;this.elements[1]*=ay;this.elements[3]*=ax;this.elements[4]*=ay}},invScale:function(ax,ay){if(ax&&!ay){ay=ax}this.scale(1/ax,1/ay)},apply:function(){var ax;if(arguments.length===1&&arguments[0] instanceof gD){ax=arguments[0].array()}else{if(arguments.length===6){ax=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof Array){ax=arguments[0]}}}var az=[0,0,this.elements[2],0,0,this.elements[5]];var aB=0;for(var aA=0;aA<2;aA++){for(var ay=0;ay<3;ay++,aB++){az[aB]+=this.elements[aA*3+0]*ax[ay+0]+this.elements[aA*3+1]*ax[ay+3]}}this.elements=az.slice()},preApply:function(){var ax;if(arguments.length===1&&arguments[0] instanceof gD){ax=arguments[0].array()}else{if(arguments.length===6){ax=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof Array){ax=arguments[0]}}}var ay=[0,0,ax[2],0,0,ax[5]];ay[2]=ax[2]+this.elements[2]*ax[0]+this.elements[5]*ax[1];ay[5]=ax[5]+this.elements[2]*ax[3]+this.elements[5]*ax[4];ay[0]=this.elements[0]*ax[0]+this.elements[3]*ax[1];ay[3]=this.elements[0]*ax[3]+this.elements[3]*ax[4];ay[1]=this.elements[1]*ax[0]+this.elements[4]*ax[1];ay[4]=this.elements[1]*ax[3]+this.elements[4]*ax[4];this.elements=ay.slice()},rotate:function(ax){var aA=ah.cos(ax);var az=ah.sin(ax);var aB=this.elements[0];var ay=this.elements[1];this.elements[0]=aA*aB+az*ay;this.elements[1]=-az*aB+aA*ay;aB=this.elements[3];ay=this.elements[4];this.elements[3]=aA*aB+az*ay;this.elements[4]=-az*aB+aA*ay},rotateZ:function(ax){this.rotate(ax)},invRotateZ:function(ax){this.rotateZ(ax-ah.PI)},print:function(){var ax=dq(this.elements);var ay=""+ev.nfs(this.elements[0],ax,4)+" "+ev.nfs(this.elements[1],ax,4)+" "+ev.nfs(this.elements[2],ax,4)+"\n"+ev.nfs(this.elements[3],ax,4)+" "+ev.nfs(this.elements[4],ax,4)+" "+ev.nfs(this.elements[5],ax,4)+"\n\n";ev.println(ay)}};var gP=ev.PMatrix3D=function(){this.reset()};gP.prototype={set:function(){if(arguments.length===16){this.elements=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof gP){this.elements=arguments[0].array()}else{if(arguments.length===1&&arguments[0] instanceof Array){this.elements=arguments[0].slice()}}}},get:function(){var ax=new gP();ax.set(this.elements);return ax},reset:function(){this.set([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])},array:function gY(){return this.elements.slice()},translate:function(ay,az,ax){if(ax===ae){ax=0}this.elements[3]+=ay*this.elements[0]+az*this.elements[1]+ax*this.elements[2];this.elements[7]+=ay*this.elements[4]+az*this.elements[5]+ax*this.elements[6];this.elements[11]+=ay*this.elements[8]+az*this.elements[9]+ax*this.elements[10];this.elements[15]+=ay*this.elements[12]+az*this.elements[13]+ax*this.elements[14]},transpose:function(){var ax=this.elements.slice();this.elements[0]=ax[0];this.elements[1]=ax[4];this.elements[2]=ax[8];this.elements[3]=ax[12];this.elements[4]=ax[1];this.elements[5]=ax[5];this.elements[6]=ax[9];this.elements[7]=ax[13];this.elements[8]=ax[2];this.elements[9]=ax[6];this.elements[10]=ax[10];this.elements[11]=ax[14];this.elements[12]=ax[3];this.elements[13]=ax[7];this.elements[14]=ax[11];this.elements[15]=ax[15]},mult:function(ax,aC){var az,aA,aB,ay;if(ax instanceof X){az=ax.x;aA=ax.y;aB=ax.z;ay=1;if(!aC){aC=new X()}}else{if(ax instanceof Array){az=ax[0];aA=ax[1];aB=ax[2];ay=ax[3]||1;if(!aC||(aC.length!==3&&aC.length!==4)){aC=[0,0,0]}}}if(aC instanceof Array){if(aC.length===3){aC[0]=this.elements[0]*az+this.elements[1]*aA+this.elements[2]*aB+this.elements[3];aC[1]=this.elements[4]*az+this.elements[5]*aA+this.elements[6]*aB+this.elements[7];aC[2]=this.elements[8]*az+this.elements[9]*aA+this.elements[10]*aB+this.elements[11]}else{if(aC.length===4){aC[0]=this.elements[0]*az+this.elements[1]*aA+this.elements[2]*aB+this.elements[3]*ay;aC[1]=this.elements[4]*az+this.elements[5]*aA+this.elements[6]*aB+this.elements[7]*ay;aC[2]=this.elements[8]*az+this.elements[9]*aA+this.elements[10]*aB+this.elements[11]*ay;aC[3]=this.elements[12]*az+this.elements[13]*aA+this.elements[14]*aB+this.elements[15]*ay}}}if(aC instanceof X){aC.x=this.elements[0]*az+this.elements[1]*aA+this.elements[2]*aB+this.elements[3];aC.y=this.elements[4]*az+this.elements[5]*aA+this.elements[6]*aB+this.elements[7];aC.z=this.elements[8]*az+this.elements[9]*aA+this.elements[10]*aB+this.elements[11]}return aC},preApply:function(){var ax;if(arguments.length===1&&arguments[0] instanceof gP){ax=arguments[0].array()}else{if(arguments.length===16){ax=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof Array){ax=arguments[0]}}}var az=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var aB=0;for(var aA=0;aA<4;aA++){for(var ay=0;ay<4;ay++,aB++){az[aB]+=this.elements[ay+0]*ax[aA*4+0]+this.elements[ay+4]*ax[aA*4+1]+this.elements[ay+8]*ax[aA*4+2]+this.elements[ay+12]*ax[aA*4+3]}}this.elements=az.slice()},apply:function(){var ax;if(arguments.length===1&&arguments[0] instanceof gP){ax=arguments[0].array()}else{if(arguments.length===16){ax=Array.prototype.slice.call(arguments)}else{if(arguments.length===1&&arguments[0] instanceof Array){ax=arguments[0]}}}var az=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var aB=0;for(var aA=0;aA<4;aA++){for(var ay=0;ay<4;ay++,aB++){az[aB]+=this.elements[aA*4+0]*ax[ay+0]+this.elements[aA*4+1]*ax[ay+4]+this.elements[aA*4+2]*ax[ay+8]+this.elements[aA*4+3]*ax[ay+12]}}this.elements=az.slice()},rotate:function(aC,az,aA,aD){if(!aA){this.rotateZ(aC)}else{var aB=ev.cos(aC);var ax=ev.sin(aC);var ay=1-aB;this.apply((ay*az*az)+aB,(ay*az*aA)-(ax*aD),(ay*az*aD)+(ax*aA),0,(ay*az*aA)+(ax*aD),(ay*aA*aA)+aB,(ay*aA*aD)-(ax*az),0,(ay*az*aD)-(ax*aA),(ay*aA*aD)+(ax*az),(ay*aD*aD)+aB,0,0,0,0,1)}},invApply:function(){if(eu===ae){eu=new gP()}var ax=arguments;eu.set(ax[0],ax[1],ax[2],ax[3],ax[4],ax[5],ax[6],ax[7],ax[8],ax[9],ax[10],ax[11],ax[12],ax[13],ax[14],ax[15]);if(!eu.invert()){return false}this.preApply(eu);return true},rotateX:function(ay){var ax=ev.cos(ay);var az=ev.sin(ay);this.apply([1,0,0,0,0,ax,-az,0,0,az,ax,0,0,0,0,1])},rotateY:function(ay){var ax=ev.cos(ay);var az=ev.sin(ay);this.apply([ax,0,az,0,0,1,0,0,-az,0,ax,0,0,0,0,1])},rotateZ:function(ay){var ax=ah.cos(ay);var az=ah.sin(ay);this.apply([ax,-az,0,0,az,ax,0,0,0,0,1,0,0,0,0,1])},scale:function(ax,ay,az){if(ax&&!ay&&!az){ay=az=ax}else{if(ax&&ay&&!az){az=1}}if(ax&&ay&&az){this.elements[0]*=ax;this.elements[1]*=ay;this.elements[2]*=az;this.elements[4]*=ax;this.elements[5]*=ay;this.elements[6]*=az;this.elements[8]*=ax;this.elements[9]*=ay;this.elements[10]*=az;this.elements[12]*=ax;this.elements[13]*=ay;this.elements[14]*=az}},skewX:function(ax){var ay=ah.tan(ax);this.apply(1,ay,0,0,0,1,0,0,0,0,1,0,0,0,0,1)},skewY:function(ax){var ay=ah.tan(ax);this.apply(1,0,0,0,ay,1,0,0,0,0,1,0,0,0,0,1)},multX:function(az,aA,ax,ay){if(!ax){return this.elements[0]*az+this.elements[1]*aA+this.elements[3]}if(!ay){return this.elements[0]*az+this.elements[1]*aA+this.elements[2]*ax+this.elements[3]}return this.elements[0]*az+this.elements[1]*aA+this.elements[2]*ax+this.elements[3]*ay},multY:function(az,aA,ax,ay){if(!ax){return this.elements[4]*az+this.elements[5]*aA+this.elements[7]}if(!ay){return this.elements[4]*az+this.elements[5]*aA+this.elements[6]*ax+this.elements[7]}return this.elements[4]*az+this.elements[5]*aA+this.elements[6]*ax+this.elements[7]*ay},multZ:function(az,aA,ax,ay){if(!ay){return this.elements[8]*az+this.elements[9]*aA+this.elements[10]*ax+this.elements[11]}return this.elements[8]*az+this.elements[9]*aA+this.elements[10]*ax+this.elements[11]*ay},multW:function(az,aA,ax,ay){if(!ay){return this.elements[12]*az+this.elements[13]*aA+this.elements[14]*ax+this.elements[15]}return this.elements[12]*az+this.elements[13]*aA+this.elements[14]*ax+this.elements[15]*ay},invert:function(){var aC=this.elements[0]*this.elements[5]-this.elements[1]*this.elements[4];var aD=this.elements[0]*this.elements[6]-this.elements[2]*this.elements[4];var aE=this.elements[0]*this.elements[7]-this.elements[3]*this.elements[4];var aF=this.elements[1]*this.elements[6]-this.elements[2]*this.elements[5];var aG=this.elements[1]*this.elements[7]-this.elements[3]*this.elements[5];var aH=this.elements[2]*this.elements[7]-this.elements[3]*this.elements[6];var aI=this.elements[8]*this.elements[13]-this.elements[9]*this.elements[12];var aJ=this.elements[8]*this.elements[14]-this.elements[10]*this.elements[12];var aK=this.elements[8]*this.elements[15]-this.elements[11]*this.elements[12];var ax=this.elements[9]*this.elements[14]-this.elements[10]*this.elements[13];var az=this.elements[9]*this.elements[15]-this.elements[11]*this.elements[13];var aA=this.elements[10]*this.elements[15]-this.elements[11]*this.elements[14];var ay=aC*aA-aD*az+aE*ax+aF*aK-aG*aJ+aH*aI;if(ah.abs(ay)<=1e-9){return false}var aB=[];aB[0]=+this.elements[5]*aA-this.elements[6]*az+this.elements[7]*ax;aB[4]=-this.elements[4]*aA+this.elements[6]*aK-this.elements[7]*aJ;aB[8]=+this.elements[4]*az-this.elements[5]*aK+this.elements[7]*aI;aB[12]=-this.elements[4]*ax+this.elements[5]*aJ-this.elements[6]*aI;aB[1]=-this.elements[1]*aA+this.elements[2]*az-this.elements[3]*ax;aB[5]=+this.elements[0]*aA-this.elements[2]*aK+this.elements[3]*aJ;aB[9]=-this.elements[0]*az+this.elements[1]*aK-this.elements[3]*aI;aB[13]=+this.elements[0]*ax-this.elements[1]*aJ+this.elements[2]*aI;aB[2]=+this.elements[13]*aH-this.elements[14]*aG+this.elements[15]*aF;aB[6]=-this.elements[12]*aH+this.elements[14]*aE-this.elements[15]*aD;aB[10]=+this.elements[12]*aG-this.elements[13]*aE+this.elements[15]*aC;aB[14]=-this.elements[12]*aF+this.elements[13]*aD-this.elements[14]*aC;aB[3]=-this.elements[9]*aH+this.elements[10]*aG-this.elements[11]*aF;aB[7]=+this.elements[8]*aH-this.elements[10]*aE+this.elements[11]*aD;aB[11]=-this.elements[8]*aG+this.elements[9]*aE-this.elements[11]*aC;aB[15]=+this.elements[8]*aF-this.elements[9]*aD+this.elements[10]*aC;var aL=1/ay;aB[0]*=aL;aB[1]*=aL;aB[2]*=aL;aB[3]*=aL;aB[4]*=aL;aB[5]*=aL;aB[6]*=aL;aB[7]*=aL;aB[8]*=aL;aB[9]*=aL;aB[10]*=aL;aB[11]*=aL;aB[12]*=aL;aB[13]*=aL;aB[14]*=aL;aB[15]*=aL;this.elements=aB.slice();return true},toString:function(){var ax="";for(var ay=0;ay<15;ay++){ax+=this.elements[ay]+", "}ax+=this.elements[15];return ax},print:function(){var ax=dq(this.elements);var ay=""+ev.nfs(this.elements[0],ax,4)+" "+ev.nfs(this.elements[1],ax,4)+" "+ev.nfs(this.elements[2],ax,4)+" "+ev.nfs(this.elements[3],ax,4)+"\n"+ev.nfs(this.elements[4],ax,4)+" "+ev.nfs(this.elements[5],ax,4)+" "+ev.nfs(this.elements[6],ax,4)+" "+ev.nfs(this.elements[7],ax,4)+"\n"+ev.nfs(this.elements[8],ax,4)+" "+ev.nfs(this.elements[9],ax,4)+" "+ev.nfs(this.elements[10],ax,4)+" "+ev.nfs(this.elements[11],ax,4)+"\n"+ev.nfs(this.elements[12],ax,4)+" "+ev.nfs(this.elements[13],ax,4)+" "+ev.nfs(this.elements[14],ax,4)+" "+ev.nfs(this.elements[15],ax,4)+"\n\n";ev.println(ay)},invTranslate:function(ay,az,ax){this.preApply(1,0,0,-ay,0,1,0,-az,0,0,1,-ax,0,0,0,1)},invRotateX:function(ay){var ax=ah.cos(-ay);var az=ah.sin(-ay);this.preApply([1,0,0,0,0,ax,-az,0,0,az,ax,0,0,0,0,1])},invRotateY:function(ay){var ax=ah.cos(-ay);var az=ah.sin(-ay);this.preApply([ax,0,az,0,0,1,0,0,-az,0,ax,0,0,0,0,1])},invRotateZ:function(ay){var ax=ah.cos(-ay);var az=ah.sin(-ay);this.preApply([ax,-az,0,0,az,ax,0,0,0,0,1,0,0,0,0,1])},invScale:function(az,ax,ay){this.preApply([1/az,0,0,0,0,1/ax,0,0,0,0,1/ay,0,0,0,0,1])}};var eQ=ev.PMatrixStack=function(){this.matrixStack=[]};eQ.prototype.load=function(){var ax=cy.$newPMatrix();if(arguments.length===1){ax.set(arguments[0])}else{ax.set(arguments)}this.matrixStack.push(ax)};f2.prototype.$newPMatrix=function(){return new gD()};el.prototype.$newPMatrix=function(){return new gP()};eQ.prototype.push=function(){this.matrixStack.push(this.peek())};eQ.prototype.pop=function(){return this.matrixStack.pop()};eQ.prototype.peek=function(){var ax=cy.$newPMatrix();ax.set(this.matrixStack[this.matrixStack.length-1]);return ax};eQ.prototype.mult=function(ax){this.matrixStack[this.matrixStack.length-1].apply(ax)};ev.split=function(ax,ay){return ax.split(ay)};ev.splitTokens=function(aB,ax){if(arguments.length===1){ax="\n\t\r\f "}ax="["+ax+"]";var ay=[];var az=0;var aA=aB.search(ax);while(aA>=0){if(aA===0){aB=aB.substring(1)}else{ay[az]=aB.substring(0,aA);az++;aB=aB.substring(aA)}aA=aB.search(ax)}if(aB.length>0){ay[az]=aB}if(ay.length===0){ay=ae}return ay};ev.append=function(ax,ay){ax[ax.length]=ay;return ax};ev.concat=function(ax,ay){return ax.concat(ay)};ev.sort=function(aA,aC){var ay=[];if(aA.length>0){var aB=aC>0?aC:aA.length;for(var ax=0;ax<aB;ax++){ay.push(aA[ax])}if(typeof aA[0]==="string"){ay.sort()}else{ay.sort(function(aD,aE){return aD-aE})}if(aC>0){for(var az=ay.length;az<aA.length;az++){ay.push(aA[az])}}}return ay};ev.splice=function(aA,aB,ay){if(aB.length===0){return aA}if(aB instanceof Array){for(var ax=0,az=ay;ax<aB.length;az++,ax++){aA.splice(az,0,aB[ax])}}else{aA.splice(ay,0,aB)}return aA};ev.subset=function(aA,ax,ay){var az=(ay!==ae)?ax+ay:aA.length;return aA.slice(ax,az)};ev.join=function(ax,ay){return ax.join(ay)};ev.shorten=function(aA){var ay=[];var az=aA.length;for(var ax=0;ax<az;ax++){ay[ax]=aA[ax]}ay.pop();return ay};ev.expand=function(ax,aA){var ay=ax.slice(0),az=aA||ax.length*2;ay.length=az;return ay};ev.arrayCopy=function(){var aA,aC=0,ax,ay=0,aB;if(arguments.length===2){aA=arguments[0];ax=arguments[1];aB=aA.length}else{if(arguments.length===3){aA=arguments[0];ax=arguments[1];aB=arguments[2]}else{if(arguments.length===5){aA=arguments[0];aC=arguments[1];ax=arguments[2];ay=arguments[3];aB=arguments[4]}}}for(var aD=aC,az=ay;aD<aB+aC;aD++,az++){if(ax[az]!==ae){ax[az]=aA[aD]}else{throw"array index out of bounds exception"}}};ev.reverse=function(ax){return ax.reverse()};ev.mix=function(ay,az,ax){return ay+(((az-ay)*ax)>>8)};ev.peg=function(ax){return(ax<0)?0:((ax>255)?255:ax)};ev.modes=(function(){var aB=W.ALPHA_MASK,ax=W.RED_MASK,ay=W.GREEN_MASK,aC=W.BLUE_MASK,aD=ah.min,az=ah.max;function aA(aL,aI,aM,aS,aQ,aR,aK,aG,aH,aO,aN){var aE=aD(((aL&4278190080)>>>24)+aI,255)<<24;var aP=(aM+(((aH-aM)*aI)>>8));aP=((aP<0)?0:((aP>255)?255:aP))<<16;var aJ=(aS+(((aO-aS)*aI)>>8));aJ=((aJ<0)?0:((aJ>255)?255:aJ))<<8;var aF=aQ+(((aN-aQ)*aI)>>8);aF=(aF<0)?0:((aF>255)?255:aF);return(aE|aP|aJ|aF)}return{replace:function(aE,aF){return aF},blend:function(aK,aL){var aI=(aL&aB)>>>24,aM=(aK&ax),aG=(aK&ay),aE=(aK&aC),aF=(aL&ax),aJ=(aL&ay),aH=(aL&aC);return(aD(((aK&aB)>>>24)+aI,255)<<24|(aM+(((aF-aM)*aI)>>8))&ax|(aG+(((aJ-aG)*aI)>>8))&ay|(aE+(((aH-aE)*aI)>>8))&aC)},add:function(aF,aG){var aE=(aG&aB)>>>24;return(aD(((aF&aB)>>>24)+aE,255)<<24|aD(((aF&ax)+((aG&ax)>>8)*aE),ax)&ax|aD(((aF&ay)+((aG&ay)>>8)*aE),ay)&ay|aD((aF&aC)+(((aG&aC)*aE)>>8),aC))},subtract:function(aF,aG){var aE=(aG&aB)>>>24;return(aD(((aF&aB)>>>24)+aE,255)<<24|az(((aF&ax)-((aG&ax)>>8)*aE),ay)&ax|az(((aF&ay)-((aG&ay)>>8)*aE),aC)&ay|az((aF&aC)-(((aG&aC)*aE)>>8),0))},lightest:function(aF,aG){var aE=(aG&aB)>>>24;return(aD(((aF&aB)>>>24)+aE,255)<<24|az(aF&ax,((aG&ax)>>8)*aE)&ax|az(aF&ay,((aG&ay)>>8)*aE)&ay|az(aF&aC,((aG&aC)*aE)>>8))},darkest:function(aK,aL){var aI=(aL&aB)>>>24,aM=(aK&ax),aG=(aK&ay),aE=(aK&aC),aF=aD(aK&ax,((aL&ax)>>8)*aI),aJ=aD(aK&ay,((aL&ay)>>8)*aI),aH=aD(aK&aC,((aL&aC)*aI)>>8);return(aD(((aK&aB)>>>24)+aI,255)<<24|(aM+(((aF-aM)*aI)>>8))&ax|(aG+(((aJ-aG)*aI)>>8))&ay|(aE+(((aH-aE)*aI)>>8))&aC)},difference:function(aL,aM){var aJ=(aM&aB)>>>24,aN=(aL&ax)>>16,aG=(aL&ay)>>8,aE=(aL&aC),aF=(aM&ax)>>16,aK=(aM&ay)>>8,aH=(aM&aC),aI=(aN>aF)?(aN-aF):(aF-aN),aP=(aG>aK)?(aG-aK):(aK-aG),aO=(aE>aH)?(aE-aH):(aH-aE);return aA(aL,aJ,aN,aG,aE,aF,aK,aH,aI,aP,aO)},exclusion:function(aL,aM){var aJ=(aM&aB)>>>24,aN=(aL&ax)>>16,aG=(aL&ay)>>8,aE=(aL&aC),aF=(aM&ax)>>16,aK=(aM&ay)>>8,aH=(aM&aC),aI=aN+aF-((aN*aF)>>7),aP=aG+aK-((aG*aK)>>7),aO=aE+aH-((aE*aH)>>7);return aA(aL,aJ,aN,aG,aE,aF,aK,aH,aI,aP,aO)},multiply:function(aL,aM){var aJ=(aM&aB)>>>24,aN=(aL&ax)>>16,aG=(aL&ay)>>8,aE=(aL&aC),aF=(aM&ax)>>16,aK=(aM&ay)>>8,aH=(aM&aC),aI=(aN*aF)>>8,aP=(aG*aK)>>8,aO=(aE*aH)>>8;return aA(aL,aJ,aN,aG,aE,aF,aK,aH,aI,aP,aO)},screen:function(aL,aM){var aJ=(aM&aB)>>>24,aN=(aL&ax)>>16,aG=(aL&ay)>>8,aE=(aL&aC),aF=(aM&ax)>>16,aK=(aM&ay)>>8,aH=(aM&aC),aI=255-(((255-aN)*(255-aF))>>8),aP=255-(((255-aG)*(255-aK))>>8),aO=255-(((255-aE)*(255-aH))>>8);return aA(aL,aJ,aN,aG,aE,aF,aK,aH,aI,aP,aO)},hard_light:function(aL,aM){var aJ=(aM&aB)>>>24,aN=(aL&ax)>>16,aG=(aL&ay)>>8,aE=(aL&aC),aF=(aM&ax)>>16,aK=(aM&ay)>>8,aH=(aM&aC),aI=(aF<128)?((aN*aF)>>7):(255-(((255-aN)*(255-aF))>>7)),aP=(aK<128)?((aG*aK)>>7):(255-(((255-aG)*(255-aK))>>7)),aO=(aH<128)?((aE*aH)>>7):(255-(((255-aE)*(255-aH))>>7));return aA(aL,aJ,aN,aG,aE,aF,aK,aH,aI,aP,aO)},soft_light:function(aL,aM){var aJ=(aM&aB)>>>24,aN=(aL&ax)>>16,aG=(aL&ay)>>8,aE=(aL&aC),aF=(aM&ax)>>16,aK=(aM&ay)>>8,aH=(aM&aC),aI=((aN*aF)>>7)+((aN*aN)>>8)-((aN*aN*aF)>>15),aP=((aG*aK)>>7)+((aG*aG)>>8)-((aG*aG*aK)>>15),aO=((aE*aH)>>7)+((aE*aE)>>8)-((aE*aE*aH)>>15);return aA(aL,aJ,aN,aG,aE,aF,aK,aH,aI,aP,aO)},overlay:function(aL,aM){var aJ=(aM&aB)>>>24,aN=(aL&ax)>>16,aG=(aL&ay)>>8,aE=(aL&aC),aF=(aM&ax)>>16,aK=(aM&ay)>>8,aH=(aM&aC),aI=(aN<128)?((aN*aF)>>7):(255-(((255-aN)*(255-aF))>>7)),aP=(aG<128)?((aG*aK)>>7):(255-(((255-aG)*(255-aK))>>7)),aO=(aE<128)?((aE*aH)>>7):(255-(((255-aE)*(255-aH))>>7));return aA(aL,aJ,aN,aG,aE,aF,aK,aH,aI,aP,aO)},dodge:function(aL,aM){var aJ=(aM&aB)>>>24,aN=(aL&ax)>>16,aG=(aL&ay)>>8,aE=(aL&aC),aF=(aM&ax)>>16,aK=(aM&ay)>>8,aH=(aM&aC);var aI=255;if(aF!==255){aI=(aN<<8)/(255-aF);aI=(aI<0)?0:((aI>255)?255:aI)}var aP=255;if(aK!==255){aP=(aG<<8)/(255-aK);aP=(aP<0)?0:((aP>255)?255:aP)}var aO=255;if(aH!==255){aO=(aE<<8)/(255-aH);aO=(aO<0)?0:((aO>255)?255:aO)}return aA(aL,aJ,aN,aG,aE,aF,aK,aH,aI,aP,aO)},burn:function(aL,aM){var aJ=(aM&aB)>>>24,aN=(aL&ax)>>16,aG=(aL&ay)>>8,aE=(aL&aC),aF=(aM&ax)>>16,aK=(aM&ay)>>8,aH=(aM&aC);var aI=0;if(aF!==0){aI=((255-aN)<<8)/aF;aI=255-((aI<0)?0:((aI>255)?255:aI))}var aP=0;if(aK!==0){aP=((255-aG)<<8)/aK;aP=255-((aP<0)?0:((aP>255)?255:aP))}var aO=0;if(aH!==0){aO=((255-aE)<<8)/aH;aO=255-((aO<0)?0:((aO>255)?255:aO))}return aA(aL,aJ,aN,aG,aE,aF,aK,aH,aI,aP,aO)}}}());function eb(aA,aB,aD,aE){var aF,aC,ay,ax;if(eq===W.HSB){var az=ev.color.toRGB(aA,aB,aD);aF=az[0];aC=az[1];ay=az[2]}else{aF=ah.round(255*(aA/gh));aC=ah.round(255*(aB/gk));ay=ah.round(255*(aD/gn))}ax=ah.round(255*(aE/fT));aF=(aF<0)?0:aF;aC=(aC<0)?0:aC;ay=(ay<0)?0:ay;ax=(ax<0)?0:ax;aF=(aF>255)?255:aF;aC=(aC>255)?255:aC;ay=(ay>255)?255:ay;ax=(ax>255)?255:ax;return(ax<<24)&W.ALPHA_MASK|(aF<<16)&W.RED_MASK|(aC<<8)&W.GREEN_MASK|ay&W.BLUE_MASK}function dy(az,ax){var ay;if(az&W.ALPHA_MASK){ay=ah.round(255*(ax/fT));ay=(ay>255)?255:ay;ay=(ay<0)?0:ay;return az-(az&W.ALPHA_MASK)+((ay<<24)&W.ALPHA_MASK)}if(eq===W.RGB){return eb(az,az,az,ax)}if(eq===W.HSB){return eb(0,0,(az/gh)*gn,ax)}}function du(ax){if(ax<=gh&&ax>=0){if(eq===W.RGB){return eb(ax,ax,ax,fT)}if(eq===W.HSB){return eb(0,0,(ax/gh)*gn,fT)}}if(ax){if(ax>2147483647){ax-=4294967296}return ax}}ev.color=function(az,aA,ax,ay){if(az!==ae&&aA!==ae&&ax!==ae&&ay!==ae){return eb(az,aA,ax,ay)}if(az!==ae&&aA!==ae&&ax!==ae){return eb(az,aA,ax,fT)}if(az!==ae&&aA!==ae){return dy(az,aA)}if(typeof az==="number"){return du(az)}return eb(gh,gk,gn,fT)};ev.color.toString=function(ax){return"rgba("+((ax&W.RED_MASK)>>>16)+","+((ax&W.GREEN_MASK)>>>8)+","+((ax&W.BLUE_MASK))+","+((ax&W.ALPHA_MASK)>>>24)/255+")"};ev.color.toInt=function(aA,ax,az,ay){return(ay<<24)&W.ALPHA_MASK|(aA<<16)&W.RED_MASK|(ax<<8)&W.GREEN_MASK|az&W.BLUE_MASK};ev.color.toArray=function(ax){return[(ax&W.RED_MASK)>>>16,(ax&W.GREEN_MASK)>>>8,ax&W.BLUE_MASK,(ax&W.ALPHA_MASK)>>>24]};ev.color.toGLArray=function(ax){return[((ax&W.RED_MASK)>>>16)/255,((ax&W.GREEN_MASK)>>>8)/255,(ax&W.BLUE_MASK)/255,((ax&W.ALPHA_MASK)>>>24)/255]};ev.color.toRGB=function(aD,ax,aA){aD=(aD>gh)?gh:aD;ax=(ax>gk)?gk:ax;aA=(aA>gn)?gn:aA;aD=(aD/gh)*360;ax=(ax/gk)*100;aA=(aA/gn)*100;var ay=ah.round(aA/100*255);if(ax===0){return[ay,ay,ay]}var aC=aD%360;var aB=aC%60;var aE=ah.round((aA*(100-ax))/10000*255);var aF=ah.round((aA*(6000-ax*aB))/600000*255);var az=ah.round((aA*(6000-ax*(60-aB)))/600000*255);switch(ah.floor(aC/60)){case 0:return[ay,az,aE];case 1:return[aF,ay,aE];case 2:return[aE,ay,az];case 3:return[aE,aF,ay];case 4:return[az,aE,ay];case 5:return[ay,aE,aF]}};function gK(aA){var aB,aC,ay;aB=((aA&W.RED_MASK)>>>16)/255;aC=((aA&W.GREEN_MASK)>>>8)/255;ay=(aA&W.BLUE_MASK)/255;var az=ev.max(ev.max(aB,aC),ay),aE=ev.min(ev.min(aB,aC),ay),ax,aD;if(aE===az){return[0,0,az*gn]}aD=(az-aE)/az;if(aB===az){ax=(aC-ay)/(az-aE)}else{if(aC===az){ax=2+((ay-aB)/(az-aE))}else{ax=4+((aB-aC)/(az-aE))}}ax/=6;if(ax<0){ax+=1}else{if(ax>1){ax-=1}}return[ax*gh,aD*gk,az*gn]}ev.brightness=function(ax){return gK(ax)[2]};ev.saturation=function(ax){return gK(ax)[1]};ev.hue=function(ax){return gK(ax)[0]};ev.red=function(ax){return((ax&W.RED_MASK)>>>16)/255*gh};ev.green=function(ax){return((ax&W.GREEN_MASK)>>>8)/255*gk};ev.blue=function(ax){return(ax&W.BLUE_MASK)/255*gn};ev.alpha=function(ax){return((ax&W.ALPHA_MASK)>>>24)/255*fT};ev.lerpColor=function(aD,aE,aK){var aF,az,ay,ax,aB,aP,aJ,aR,aC,aQ,aL,aS;var aH,aI,aO,aA,aG;var aM=ev.color(aD);var aN=ev.color(aE);if(eq===W.HSB){aH=gK(aM);aR=((aM&W.ALPHA_MASK)>>>24)/fT;aI=gK(aN);aS=((aN&W.ALPHA_MASK)>>>24)/fT;aA=ev.lerp(aH[0],aI[0],aK);aG=ev.lerp(aH[1],aI[1],aK);ay=ev.lerp(aH[2],aI[2],aK);aO=ev.color.toRGB(aA,aG,ay);ax=ev.lerp(aR,aS,aK)*fT;return(ax<<24)&W.ALPHA_MASK|(aO[0]<<16)&W.RED_MASK|(aO[1]<<8)&W.GREEN_MASK|aO[2]&W.BLUE_MASK}aB=(aM&W.RED_MASK)>>>16;aP=(aM&W.GREEN_MASK)>>>8;aJ=(aM&W.BLUE_MASK);aR=((aM&W.ALPHA_MASK)>>>24)/fT;aC=(aN&W.RED_MASK)>>>16;aQ=(aN&W.GREEN_MASK)>>>8;aL=(aN&W.BLUE_MASK);aS=((aN&W.ALPHA_MASK)>>>24)/fT;aF=ev.lerp(aB,aC,aK)|0;az=ev.lerp(aP,aQ,aK)|0;ay=ev.lerp(aJ,aL,aK)|0;ax=ev.lerp(aR,aS,aK)*fT;return(ax<<24)&W.ALPHA_MASK|(aF<<16)&W.RED_MASK|(az<<8)&W.GREEN_MASK|ay&W.BLUE_MASK};ev.colorMode=function(){eq=arguments[0];if(arguments.length>1){gh=arguments[1];gk=arguments[2]||arguments[1];gn=arguments[3]||arguments[1];fT=arguments[4]||arguments[1]}};ev.blendColor=function(ay,az,ax){if(ax===W.REPLACE){return ev.modes.replace(ay,az)}else{if(ax===W.BLEND){return ev.modes.blend(ay,az)}else{if(ax===W.ADD){return ev.modes.add(ay,az)}else{if(ax===W.SUBTRACT){return ev.modes.subtract(ay,az)}else{if(ax===W.LIGHTEST){return ev.modes.lightest(ay,az)}else{if(ax===W.DARKEST){return ev.modes.darkest(ay,az)}else{if(ax===W.DIFFERENCE){return ev.modes.difference(ay,az)}else{if(ax===W.EXCLUSION){return ev.modes.exclusion(ay,az)}else{if(ax===W.MULTIPLY){return ev.modes.multiply(ay,az)}else{if(ax===W.SCREEN){return ev.modes.screen(ay,az)}else{if(ax===W.HARD_LIGHT){return ev.modes.hard_light(ay,az)}else{if(ax===W.SOFT_LIGHT){return ev.modes.soft_light(ay,az)}else{if(ax===W.OVERLAY){return ev.modes.overlay(ay,az)}else{if(ax===W.DODGE){return ev.modes.dodge(ay,az)}else{if(ax===W.BURN){return ev.modes.burn(ay,az)}}}}}}}}}}}}}}}};function gZ(){eH.save()}function eV(){eH.restore();gL=true;fU=true}ev.printMatrix=function(){d6.print()};f2.prototype.translate=function(ay,ax){d6.translate(ay,ax);gJ.invTranslate(ay,ax);eH.translate(ay,ax)};el.prototype.translate=function(az,ax,ay){d6.translate(az,ax,ay);gJ.invTranslate(az,ax,ay)};f2.prototype.scale=function(ay,ax){d6.scale(ay,ax);gJ.invScale(ay,ax);eH.scale(ay,ax||ay)};el.prototype.scale=function(az,ax,ay){d6.scale(az,ax,ay);gJ.invScale(az,ax,ay)};f2.prototype.pushMatrix=function(){f4.load(d6);fD.load(gJ);gZ()};el.prototype.pushMatrix=function(){f4.load(d6);fD.load(gJ)};f2.prototype.popMatrix=function(){d6.set(f4.pop());gJ.set(fD.pop());eV()};el.prototype.popMatrix=function(){d6.set(f4.pop());gJ.set(fD.pop())};f2.prototype.resetMatrix=function(){d6.reset();gJ.reset();eH.setTransform(1,0,0,1,0,0)};el.prototype.resetMatrix=function(){d6.reset();gJ.reset()};t.prototype.applyMatrix=function(){var ax=arguments;d6.apply(ax[0],ax[1],ax[2],ax[3],ax[4],ax[5],ax[6],ax[7],ax[8],ax[9],ax[10],ax[11],ax[12],ax[13],ax[14],ax[15]);gJ.invApply(ax[0],ax[1],ax[2],ax[3],ax[4],ax[5],ax[6],ax[7],ax[8],ax[9],ax[10],ax[11],ax[12],ax[13],ax[14],ax[15])};f2.prototype.applyMatrix=function(){var ay=arguments;for(var ax=ay.length;ax<16;ax++){ay[ax]=0}ay[10]=ay[15]=1;t.prototype.applyMatrix.apply(this,ay)};ev.rotateX=function(ax){d6.rotateX(ax);gJ.invRotateX(ax)};f2.prototype.rotateZ=function(){throw"rotateZ() is not supported in 2D mode. Use rotate(float) instead."};el.prototype.rotateZ=function(ax){d6.rotateZ(ax);gJ.invRotateZ(ax)};ev.rotateY=function(ax){d6.rotateY(ax);gJ.invRotateY(ax)};f2.prototype.rotate=function(ax){d6.rotateZ(ax);gJ.invRotateZ(ax);eH.rotate(ax)};el.prototype.rotate=function(ax){ev.rotateZ(ax)};ev.pushStyle=function(){gZ();ev.pushMatrix();var ax={doFill:gW,currentFillColor:gu,doStroke:ec,currentStrokeColor:a8,curTint:fr,curRectMode:gd,curColorMode:eq,colorModeX:gh,colorModeZ:gn,colorModeY:gk,colorModeA:fT,curTextFont:eN,horizontalTextAlignment:fg,verticalTextAlignment:ek,textMode:fh,curFontName:eG,curTextSize:a5,curTextAscent:gs,curTextDescent:l,curTextLeading:eK};e8.push(ax)};ev.popStyle=function(){var ax=e8.pop();if(ax){eV();ev.popMatrix();gW=ax.doFill;gu=ax.currentFillColor;ec=ax.doStroke;a8=ax.currentStrokeColor;fr=ax.curTint;gd=ax.curRectmode;eq=ax.curColorMode;gh=ax.colorModeX;gn=ax.colorModeZ;gk=ax.colorModeY;fT=ax.colorModeA;eN=ax.curTextFont;eG=ax.curFontName;a5=ax.curTextSize;fg=ax.horizontalTextAlignment;ek=ax.verticalTextAlignment;fh=ax.textMode;gs=ax.curTextAscent;l=ax.curTextDescent;eK=ax.curTextLeading}else{throw"Too many popStyle() without enough pushStyle()"}};ev.year=function(){return new Date().getFullYear()};ev.month=function(){return new Date().getMonth()+1};ev.day=function(){return new Date().getDate()};ev.hour=function(){return new Date().getHours()};ev.minute=function(){return new Date().getMinutes()};ev.second=function(){return new Date().getSeconds()};ev.millis=function(){return Date.now()-v};t.prototype.redraw=function(){var ay=(Date.now()-s)/1000;e9++;var ax=e9/ay;if(ay>0.5){s=Date.now();e9=0;ev.__frameRate=ax}ev.frameCount++};f2.prototype.redraw=function(){t.prototype.redraw.apply(this,arguments);eH.lineWidth=db;dk=true;gZ();ev.draw();eV();dk=false};el.prototype.redraw=function(){t.prototype.redraw.apply(this,arguments);dk=true;eH.clear(eH.DEPTH_BUFFER_BIT);j={attributes:{},locations:{}};ev.noLights();ev.lightFalloff(1,0,0);ev.shininess(1);ev.ambient(255,255,255);ev.specular(0,0,0);ev.emissive(0,0,0);ev.camera();ev.draw();dk=false};ev.noLoop=function(){g0=false;fz=false;clearInterval(gI);eR.onPause()};ev.loop=function(){if(fz){return}s=Date.now();e9=0;gI=U.setInterval(function(){try{eR.onFrameStart();ev.redraw();eR.onFrameEnd()}catch(ax){U.clearInterval(gI);throw ax}},fv);g0=true;fz=true;eR.onLoop()};ev.frameRate=function(ax){dg=ax;fv=1000/dg;if(g0){ev.noLoop();ev.loop()}};var fI=[];function f6(ax,ay,az){if(ax.addEventListener){ax.addEventListener(ay,az,false)}else{ax.attachEvent("on"+ay,az)}fI.push({elem:ax,type:ay,fn:az})}function E(az){var aA=az.elem,ax=az.type,ay=az.fn;if(aA.removeEventListener){aA.removeEventListener(ax,ay,false)}else{if(aA.detachEvent){aA.detachEvent("on"+ax,ay)}}}ev.exit=function(){U.clearInterval(gI);M(ev.externals.canvas.id);for(var ax in S.lib){if(S.lib.hasOwnProperty(ax)){if(S.lib[ax].hasOwnProperty("detach")){S.lib[ax].detach(ev)}}}var ay=fI.length;while(ay--){E(fI[ay])}eR.onExit()};ev.cursor=function(){if(arguments.length>1||(arguments.length===1&&arguments[0] instanceof ev.PImage)){var aC=arguments[0],az,aA;if(arguments.length>=3){az=arguments[1];aA=arguments[2];if(az<0||aA<0||aA>=aC.height||az>=aC.width){throw"x and y must be non-negative and less than the dimensions of the image"}}else{az=aC.width>>>1;aA=aC.height>>>1}var ay=aC.toDataURL();var ax='url("'+ay+'") '+az+" "+aA+", default";eD=gl.style.cursor=ax}else{if(arguments.length===1){var aB=arguments[0];eD=gl.style.cursor=aB}else{eD=gl.style.cursor=dv}}};ev.noCursor=function(){eD=gl.style.cursor=W.NOCURSOR};ev.link=function(ay,ax){if(ax!==ae){U.open(ay,ax)}else{U.location=ay}};ev.beginDraw=R;ev.endDraw=R;ev.Import=function(ax){};ev.status=function(ax){U.status=ax};ev.binary=function(ay,ax){var aA;if(ax>0){aA=ax}else{if(ay instanceof f3){aA=16;ay|=0}else{aA=32;while(aA>1&&!((ay>>>(aA-1))&1)){aA--}}}var az="";while(aA>0){az+=((ay>>>(--aA))&1)?"1":"0"}return az};ev.unbinary=function(ay){var aB=ay.length-1,ax=1,az=0;while(aB>=0){var aA=ay[aB--];if(aA!=="0"&&aA!=="1"){throw"the value passed into unbinary was not an 8 bit binary number"}if(aA==="1"){az+=ax}ax<<=1}return az};function es(aA,aC,aI,ax,aG,az){var aK=(aA<0)?aI:aC;var aL=aG===0;var aB=(aG===ae||aG<0)?0:aG;var aD=ah.abs(aA);if(aL){aB=1;aD*=10;while(ah.abs(ah.round(aD)-aD)>0.000001&&aB<7){++aB;aD*=10}}else{if(aB!==0){aD*=ah.pow(10,aB)}}var aJ,aE=aD*2;if(ah.floor(aD)===aD){aJ=aD}else{if(ah.floor(aE)===aE){var aM=ah.floor(aD);aJ=aM+(aM%2)}else{aJ=ah.round(aD)}}var aH="";var ay=ax+aB;while(ay>0||aJ>0){ay--;aH=""+(aJ%10)+aH;aJ=ah.floor(aJ/10)}if(az!==ae){var aF=aH.length-3-aB;while(aF>0){aH=aH.substring(0,aF)+az+aH.substring(aF);aF-=3}}if(aB>0){return aK+aH.substring(0,aH.length-aB)+"."+aH.substring(aH.length-aB,aH.length)}return aK+aH}function fY(az,aA,aF,ax,aE,ay){if(az instanceof Array){var aC=[];for(var aD=0,aB=az.length;aD<aB;aD++){aC.push(es(az[aD],aA,aF,ax,aE,ay))}return aC}return es(az,aA,aF,ax,aE,ay)}ev.nf=function(ax,az,ay){return fY(ax,"","-",az,ay)};ev.nfs=function(ax,az,ay){return fY(ax," ","-",az,ay)};ev.nfp=function(ax,az,ay){return fY(ax,"+","-",az,ay)};ev.nfc=function(ax,az,ay){return fY(ax,"","-",az,ay,",")};var gR=function(ax,ay){ay=(ay===ae||ay===null)?ay=8:ay;if(ax<0){ax=4294967295+ax+1}var az=Number(ax).toString(16).toUpperCase();while(az.length<ay){az="0"+az}if(az.length>=ay){az=az.substring(az.length-ay,az.length)}return az};ev.hex=function(ax,ay){if(arguments.length===1){if(ax instanceof f3){ay=4}else{ay=8}}return gR(ax,ay)};function eg(ay){var ax=parseInt("0x"+ay,16);if(ax>2147483647){ax-=4294967296}return ax}ev.unhex=function(ax){if(ax instanceof Array){var az=[];for(var ay=0;ay<ax.length;ay++){az.push(eg(ax[ay]))}return az}return eg(ax)};ev.loadStrings=function(ax){if(localStorage[ax]){return localStorage[ax].split("\n")}var ay=ab(ax);if(typeof ay!=="string"||ay===""){return[]}ay=ay.replace(/(\r\n?)/g,"\n").replace(/\n$/,"");return ay.split("\n")};ev.saveStrings=function(ax,ay){localStorage[ax]=ay.join("\n")};ev.loadBytes=function(ax){var ay=ab(ax);var az=[];for(var aA=0;aA<ay.length;aA++){az.push(ay.charCodeAt(aA))}return az};function a(ax){return Array.prototype.slice.call(ax,1)}ev.matchAll=function(ay,az){var aB=[],ax;var aA=new RegExp(az,"g");while((ax=aA.exec(ay))!==null){aB.push(ax);if(ax[0].length===0){++aA.lastIndex}}return aB.length>0?aB:null};ev.__contains=function(ax,ay){if(typeof ax!=="string"){return ax.contains.apply(ax,a(arguments))}return((ax!==null)&&(ay!==null)&&(typeof ay==="string")&&(ax.indexOf(ay)>-1))};ev.__replaceAll=function(az,ax,ay){if(typeof az!=="string"){return az.replaceAll.apply(az,a(arguments))}return az.replace(new RegExp(ax,"g"),ay)};ev.__replaceFirst=function(az,ax,ay){if(typeof az!=="string"){return az.replaceFirst.apply(az,a(arguments))}return az.replace(new RegExp(ax,""),ay)};ev.__replace=function(aC,aA,aB){if(typeof aC!=="string"){return aC.replace.apply(aC,a(arguments))}if(aA instanceof RegExp){return aC.replace(aA,aB)}if(typeof aA!=="string"){aA=aA.toString()}if(aA===""){return aC}var ax=aC.indexOf(aA);if(ax<0){return aC}var ay=0,az="";do{az+=aC.substring(ay,ax)+aB;ay=ax+aA.length}while((ax=aC.indexOf(aA,ay))>=0);return az+aC.substring(ay)};ev.__equals=function(ax,ay){if(ax.equals instanceof Function){return ax.equals.apply(ax,a(arguments))}return ax.valueOf()===ay.valueOf()};ev.__equalsIgnoreCase=function(ax,ay){if(typeof ax!=="string"){return ax.equalsIgnoreCase.apply(ax,a(arguments))}return ax.toLowerCase()===ay.toLowerCase()};ev.__toCharArray=function(ax){if(typeof ax!=="string"){return ax.toCharArray.apply(ax,a(arguments))}var aA=[];for(var ay=0,az=ax.length;ay<az;++ay){aA[ay]=new f3(ax.charAt(ay))}return aA};ev.__split=function(aE,aD,ay){if(typeof aE!=="string"){return aE.split.apply(aE,a(arguments))}var aB=new RegExp(aD);if((ay===ae)||(ay<1)){return aE.split(aB)}var aA=[],aC=aE,az;while(((az=aC.search(aB))!==-1)&&(aA.length<(ay-1))){var ax=aB.exec(aC).toString();aA.push(aC.substring(0,az));aC=aC.substring(az+ax.length)}if((az!==-1)||(aC!=="")){aA.push(aC)}return aA};ev.__codePointAt=function(aB,ay){var aA=aB.charCodeAt(ay),ax,az;if(55296<=aA&&aA<=56319){ax=aA;az=aB.charCodeAt(ay+1);return((ax-55296)*1024)+(az-56320)+65536}return aA};ev.match=function(ax,ay){return ax.match(ay)};ev.__startsWith=function(az,ax,ay){if(typeof az!=="string"){return az.startsWith.apply(az,a(arguments))}ay=ay||0;if(ay<0||ay>az.length){return false}return(ax===""||ax===az)?true:(az.indexOf(ax)===ay)};ev.__endsWith=function(ay,ax){if(typeof ay!=="string"){return ay.endsWith.apply(ay,a(arguments))}var az=ax?ax.length:0;return(ax===""||ax===ay)?true:(ay.indexOf(ax)===ay.length-az)};ev.__hashCode=function(ax){if(ax.hashCode instanceof Function){return ax.hashCode.apply(ax,a(arguments))}return ao(ax)};ev.__printStackTrace=function(ax){ev.println("Exception: "+ax.toString())};var ew=[];ev.println=function(ay){var ax=ew.length;if(ax){S.logger.log(ew.join(""));ew.length=0}if(arguments.length===0&&ax===0){S.logger.log("")}else{if(arguments.length!==0){S.logger.log(ay)}}};ev.print=function(ax){ew.push(ax)};ev.str=function(ax){if(ax instanceof Array){var az=[];for(var ay=0;ay<ax.length;ay++){az.push(ax[ay].toString()+"")}return az}return(ax.toString()+"")};ev.trim=function(ax){if(ax instanceof Array){var az=[];for(var ay=0;ay<ax.length;ay++){az.push(ax[ay].replace(/^\s*/,"").replace(/\s*$/,"").replace(/\r*$/,""))}return az}return ax.replace(/^\s*/,"").replace(/\s*$/,"").replace(/\r*$/,"")};function gM(ax){if(typeof ax==="number"){return ax!==0}if(typeof ax==="boolean"){return ax}if(typeof ax==="string"){return ax.toLowerCase()==="true"}if(ax instanceof f3){return ax.code===49||ax.code===84||ax.code===116}}ev.parseBoolean=function(ax){if(ax instanceof Array){var az=[];for(var ay=0;ay<ax.length;ay++){az.push(gM(ax[ay]))}return az}return gM(ax)};ev.parseByte=function(ax){if(ax instanceof Array){var az=[];for(var ay=0;ay<ax.length;ay++){az.push((0-(ax[ay]&128))|(ax[ay]&127))}return az}return(0-(ax&128))|(ax&127)};ev.parseChar=function(ax){if(typeof ax==="number"){return new f3(String.fromCharCode(ax&65535))}if(ax instanceof Array){var az=[];for(var ay=0;ay<ax.length;ay++){az.push(new f3(String.fromCharCode(ax[ay]&65535)))}return az}throw"char() may receive only one argument of type int, byte, int[], or byte[]."};function eZ(ax){if(typeof ax==="number"){return ax}if(typeof ax==="boolean"){return ax?1:0}if(typeof ax==="string"){return parseFloat(ax)}if(ax instanceof f3){return ax.code}}ev.parseFloat=function(ax){if(ax instanceof Array){var az=[];for(var ay=0;ay<ax.length;ay++){az.push(eZ(ax[ay]))}return az}return eZ(ax)};function f5(ax,az){if(typeof ax==="number"){return ax&4294967295}if(typeof ax==="boolean"){return ax?1:0}if(typeof ax==="string"){var ay=parseInt(ax,az||10);return ay&4294967295}if(ax instanceof f3){return ax.code}}ev.parseInt=function(aA,ax){if(aA instanceof Array){var az=[];for(var ay=0;ay<aA.length;ay++){if(typeof aA[ay]==="string"&&!/^\s*[+\-]?\d+\s*$/.test(aA[ay])){az.push(0)}else{az.push(f5(aA[ay],ax))}}return az}return f5(aA,ax)};ev.__int_cast=function(ax){return 0|ax};ev.__instanceof=function(ax,ay){if(typeof ay!=="function"){throw"Function is expected as type argument for instanceof operator"}if(typeof ax==="string"){return ay===Object||ay===String}if(ax instanceof ay){return true}if(typeof ax!=="object"||ax===null){return false}var aA=ax.constructor;if(ay.$isInterface){var aB=[];while(aA){if(aA.$interfaces){aB=aB.concat(aA.$interfaces)}aA=aA.$base}while(aB.length>0){var az=aB.shift();if(az===ay){return true}if(az.$interfaces){aB=aB.concat(az.$interfaces)}}return false}while(aA.hasOwnProperty("$base")){aA=aA.$base;if(aA===ay){return true}}return false};ev.abs=ah.abs;ev.ceil=ah.ceil;ev.constrain=function(ay,ax,az){return ay>az?az:ay<ax?ax:ay};ev.dist=function(){var ax,ay,az;if(arguments.length===4){ax=arguments[0]-arguments[2];ay=arguments[1]-arguments[3];return ah.sqrt(ax*ax+ay*ay)}if(arguments.length===6){ax=arguments[0]-arguments[3];ay=arguments[1]-arguments[4];az=arguments[2]-arguments[5];return ah.sqrt(ax*ax+ay*ay+az*az)}};ev.exp=ah.exp;ev.floor=ah.floor;ev.lerp=function(ay,az,ax){return((az-ay)*ax)+ay};ev.log=ah.log;ev.mag=function(ay,az,ax){if(ax){return ah.sqrt(ay*ay+az*az+ax*ax)}return ah.sqrt(ay*ay+az*az)};ev.map=function(aB,ay,ax,az,aA){return az+(aA-az)*((aB-ay)/(ax-ay))};ev.max=function(){if(arguments.length===2){return arguments[0]<arguments[1]?arguments[1]:arguments[0]}var ay=arguments.length===1?arguments[0]:arguments;if(!("length" in ay&&ay.length>0)){throw"Non-empty array is expected"}var az=ay[0],aA=ay.length;for(var ax=1;ax<aA;++ax){if(az<ay[ax]){az=ay[ax]}}return az};ev.min=function(){if(arguments.length===2){return arguments[0]<arguments[1]?arguments[0]:arguments[1]}var az=arguments.length===1?arguments[0]:arguments;if(!("length" in az&&az.length>0)){throw"Non-empty array is expected"}var ax=az[0],aA=az.length;for(var ay=1;ay<aA;++ay){if(ax>az[ay]){ax=az[ay]}}return ax};ev.norm=function(ay,az,ax){return(ay-az)/(ax-az)};ev.pow=ah.pow;ev.round=ah.round;ev.sq=function(ax){return ax*ax};ev.sqrt=ah.sqrt;ev.acos=ah.acos;ev.asin=ah.asin;ev.atan=ah.atan;ev.atan2=ah.atan2;ev.cos=ah.cos;ev.degrees=function(ax){return(ax*180)/ah.PI};ev.radians=function(ax){return(ax/180)*ah.PI};ev.sin=ah.sin;ev.tan=ah.tan;var fF=ah.random;ev.random=function(){if(arguments.length===0){return fF()}if(arguments.length===1){return fF()*arguments[0]}var ax=arguments[0],ay=arguments[1];return fF()*(ay-ax)+ax};function dl(ax,ay){var aA=ax||362436069,az=ay||521288629;var aB=function(){aA=(36969*(aA&65535)+(aA>>>16))&4294967295;az=(18000*(az&65535)+(az>>>16))&4294967295;return(((aA&65535)<<16)|(az&65535))&4294967295};this.nextDouble=function(){var aC=aB()/4294967296;return aC<0?1+aC:aC};this.nextInt=aB}dl.createRandomized=function(){var ax=new Date();return new dl((ax/60000)&4294967295,ax&4294967295)};ev.randomSeed=function(ax){fF=(new dl(ax)).nextDouble};ev.Random=function(az){var aA=false,ay,ax;this.nextGaussian=function(){if(aA){aA=false;return ay}var aB,aD,aE;do{aB=2*ax()-1;aD=2*ax()-1;aE=aB*aB+aD*aD}while(aE>=1||aE===0);var aC=ah.sqrt(-2*ah.log(aE)/aE);ay=aD*aC;aA=true;return aB*aC};ax=(az===ae)?ah.random:(new dl(az)).nextDouble};function m(az){var aF=az!==ae?new dl(az):dl.createRandomized();var aA,aC;var aD=new av(512);for(aA=0;aA<256;++aA){aD[aA]=aA}for(aA=0;aA<256;++aA){var ax=aD[aC=aF.nextInt()&255];aD[aC]=aD[aA];aD[aA]=ax}for(aA=0;aA<256;++aA){aD[aA+256]=aD[aA]}function aG(aK,aN,aH,aI){var aJ=aK&15;var aL=aJ<8?aN:aH,aM=aJ<4?aH:aJ===12||aJ===14?aN:aI;return((aJ&1)===0?aL:-aL)+((aJ&2)===0?aM:-aM)}function aB(aI,aK,aH){var aJ=(aI&1)===0?aK:aH;return(aI&2)===0?-aJ:aJ}function ay(aH,aI){return(aH&1)===0?-aI:aI}function aE(aH,aI,aJ){return aI+aH*(aJ-aI)}this.noise3d=function(aS,aT,aU){var aM=ah.floor(aS)&255,aO=ah.floor(aT)&255,aP=ah.floor(aU)&255;aS-=ah.floor(aS);aT-=ah.floor(aT);aU-=ah.floor(aU);var aI=(3-2*aS)*aS*aS,aJ=(3-2*aT)*aT*aT,aK=(3-2*aU)*aU*aU;var aQ=aD[aM]+aO,aV=aD[aQ]+aP,aH=aD[aQ+1]+aP,aR=aD[aM+1]+aO,aL=aD[aR]+aP,aN=aD[aR+1]+aP;return aE(aK,aE(aJ,aE(aI,aG(aD[aV],aS,aT,aU),aG(aD[aL],aS-1,aT,aU)),aE(aI,aG(aD[aH],aS,aT-1,aU),aG(aD[aN],aS-1,aT-1,aU))),aE(aJ,aE(aI,aG(aD[aV+1],aS,aT,aU-1),aG(aD[aL+1],aS-1,aT,aU-1)),aE(aI,aG(aD[aH+1],aS,aT-1,aU-1),aG(aD[aN+1],aS-1,aT-1,aU-1))))};this.noise2d=function(aO,aH){var aI=ah.floor(aO)&255,aK=ah.floor(aH)&255;aO-=ah.floor(aO);aH-=ah.floor(aH);var aM=(3-2*aO)*aO*aO,aN=(3-2*aH)*aH*aH;var aJ=aD[aI]+aK,aL=aD[aI+1]+aK;return aE(aN,aE(aM,aB(aD[aJ],aO,aH),aB(aD[aL],aO-1,aH)),aE(aM,aB(aD[aJ+1],aO,aH-1),aB(aD[aL+1],aO-1,aH-1)))};this.noise1d=function(aJ){var aH=ah.floor(aJ)&255;aJ-=ah.floor(aJ);var aI=(3-2*aJ)*aJ*aJ;return aE(aI,ay(aD[aH],aJ),ay(aD[aH+1],aJ-1))}}var fK={generator:ae,octaves:4,fallout:0.5,seed:ae};ev.noise=function(aA,az,aB){if(fK.generator===ae){fK.generator=new m(fK.seed)}var aC=fK.generator;var aD=1,ay=1,aE=0;for(var ax=0;ax<fK.octaves;++ax){aD*=fK.fallout;switch(arguments.length){case 1:aE+=aD*(1+aC.noise1d(ay*aA))/2;break;case 2:aE+=aD*(1+aC.noise2d(ay*aA,ay*az))/2;break;case 3:aE+=aD*(1+aC.noise3d(ay*aA,ay*az,ay*aB))/2;break}ay*=2}return aE};ev.noiseDetail=function(ax,ay){fK.octaves=ax;if(ay!==ae){fK.fallout=ay}};ev.noiseSeed=function(ax){fK.seed=ax;fK.generator=ae};t.prototype.size=function(ay,aB,aC){ev.stroke(0);ev.fill(255);var ax={fillStyle:eH.fillStyle,strokeStyle:eH.strokeStyle,lineCap:eH.lineCap,lineJoin:eH.lineJoin};if(gl.style.length>0){gl.style.removeProperty("width");gl.style.removeProperty("height")}gl.width=ev.width=ay||100;gl.height=ev.height=aB||100;for(var aA in ax){if(ax.hasOwnProperty(aA)){eH[aA]=ax[aA]}}ev.textFont(eN);ev.background();fA=ah.max(1000,ay*aB*0.05);ev.externals.context=eH;for(var az=0;az<W.SINCOS_LENGTH;az++){ge[az]=ev.sin(az*(W.PI/180)*0.5);fa[az]=ev.cos(az*(W.PI/180)*0.5)}};f2.prototype.size=function(az,ax,ay){if(eH===ae){eH=gl.getContext("2d");f4=new eQ();fD=new eQ();d6=new gD();gJ=new gD()}t.prototype.size.apply(this,arguments)};el.prototype.size=(function(){var ax=false;return function ay(aD,aB,aC){if(ax){throw"Multiple calls to size() for 3D renders are not allowed."}ax=true;function aA(aF){var aH=["experimental-webgl","webgl","webkit-3d"],aI;for(var aE=0,aG=aH.length;aE<aG;aE++){aI=aF.getContext(aH[aE]);if(aI){break}}return aI}try{if(gl.width!==aD||gl.height!==aB){gl.setAttribute("width",aD);gl.setAttribute("height",aB)}eH=aA(gl);fL=eH.createTexture();fZ=eH.createTexture()}catch(az){S.debug(az)}if(!eH){throw"WebGL context is not supported on this browser."}eH.viewport(0,0,gl.width,gl.height);eH.enable(eH.DEPTH_TEST);eH.enable(eH.BLEND);eH.blendFunc(eH.SRC_ALPHA,eH.ONE_MINUS_SRC_ALPHA);dn=gp(eH,gj,fB);fV=gp(eH,fR,fi);ev.strokeWeight(1);o=gp(eH,eC,gf);eH.useProgram(o);a7("usingTexture3d",o,"usingTexture",di);a7("usingTint3d",o,"usingTint",false);ev.lightFalloff(1,0,0);ev.shininess(1);ev.ambient(255,255,255);ev.specular(0,0,0);ev.emissive(0,0,0);fm=eH.createBuffer();eH.bindBuffer(eH.ARRAY_BUFFER,fm);eH.bufferData(eH.ARRAY_BUFFER,C,eH.STATIC_DRAW);fe=eH.createBuffer();eH.bindBuffer(eH.ARRAY_BUFFER,fe);eH.bufferData(eH.ARRAY_BUFFER,D,eH.STATIC_DRAW);z=eH.createBuffer();eH.bindBuffer(eH.ARRAY_BUFFER,z);eH.bufferData(eH.ARRAY_BUFFER,gm,eH.STATIC_DRAW);g1=eH.createBuffer();eH.bindBuffer(eH.ARRAY_BUFFER,g1);eH.bufferData(eH.ARRAY_BUFFER,f8,eH.STATIC_DRAW);gN=eH.createBuffer();eH.bindBuffer(eH.ARRAY_BUFFER,gN);eH.bufferData(eH.ARRAY_BUFFER,gb,eH.STATIC_DRAW);fo=eH.createBuffer();gB=eH.createBuffer();fN=eH.createBuffer();gX=eH.createBuffer();ej=eH.createBuffer();gi=eH.createBuffer();fC=eH.createBuffer();eH.bindBuffer(eH.ARRAY_BUFFER,fC);eH.bufferData(eH.ARRAY_BUFFER,new ar([0,0,0]),eH.STATIC_DRAW);fj=eH.createBuffer();eH.bindBuffer(eH.ARRAY_BUFFER,fj);eH.bufferData(eH.ARRAY_BUFFER,new ar([1,1,0,-1,1,0,-1,-1,0,1,-1,0]),eH.STATIC_DRAW);gq=eH.createBuffer();eH.bindBuffer(eH.ARRAY_BUFFER,gq);eH.bufferData(eH.ARRAY_BUFFER,new ar([0,0,1,0,1,1,0,1]),eH.STATIC_DRAW);e4=eH.createBuffer();eH.bindBuffer(eH.ELEMENT_ARRAY_BUFFER,e4);eH.bufferData(eH.ELEMENT_ARRAY_BUFFER,new Z([0,1,2,2,3,0]),eH.STATIC_DRAW);fO=new gP();dZ=new gP();d6=new gP();gJ=new gP();H=new gP();ev.camera();ev.perspective();f4=new eQ();fD=new eQ();fW=new gP();gO=new gP();gS=new gP();ep=new gP();ee=new gP();eW=new gP();eW.set(-1,3,-3,1,3,-6,3,0,-3,3,0,0,1,0,0,0);t.prototype.size.apply(this,arguments)}}());f2.prototype.ambientLight=t.prototype.a3DOnlyFunction;el.prototype.ambientLight=function(aD,aE,ay,aA,az,aC){if(dx===W.MAX_LIGHTS){throw"can only create "+W.MAX_LIGHTS+" lights"}var aB=new X(aA,az,aC);var ax=new gP();ax.scale(1,-1,1);ax.apply(d6.array());ax.mult(aB,aB);eH.useProgram(o);a1("lights.color.3d."+dx,o,"lights"+dx+".color",[aD/255,aE/255,ay/255]);a1("lights.position.3d."+dx,o,"lights"+dx+".position",aB.array());a7("lights.type.3d."+dx,o,"lights"+dx+".type",0);a7("lightCount3d",o,"lightCount",++dx)};f2.prototype.directionalLight=t.prototype.a3DOnlyFunction;el.prototype.directionalLight=function(aD,aE,ay,aA,az,aB){if(dx===W.MAX_LIGHTS){throw"can only create "+W.MAX_LIGHTS+" lights"}eH.useProgram(o);var aC=new gP();aC.scale(1,-1,1);aC.apply(d6.array());aC=aC.array();var ax=[aC[0]*aA+aC[4]*az+aC[8]*aB,aC[1]*aA+aC[5]*az+aC[9]*aB,aC[2]*aA+aC[6]*az+aC[10]*aB];a1("lights.color.3d."+dx,o,"lights"+dx+".color",[aD/255,aE/255,ay/255]);a1("lights.position.3d."+dx,o,"lights"+dx+".position",ax);a7("lights.type.3d."+dx,o,"lights"+dx+".type",1);a7("lightCount3d",o,"lightCount",++dx)};f2.prototype.lightFalloff=t.prototype.a3DOnlyFunction;el.prototype.lightFalloff=function(ay,az,ax){eH.useProgram(o);a1("falloff3d",o,"falloff",[ay,az,ax])};f2.prototype.lightSpecular=t.prototype.a3DOnlyFunction;el.prototype.lightSpecular=function(ax,ay,az){eH.useProgram(o);a1("specular3d",o,"specular",[ax/255,ay/255,az/255])};ev.lights=function(){ev.ambientLight(128,128,128);ev.directionalLight(128,128,128,0,0,-1);ev.lightFalloff(1,0,0);ev.lightSpecular(0,0,0)};f2.prototype.pointLight=t.prototype.a3DOnlyFunction;el.prototype.pointLight=function(aD,aE,ay,aA,az,aC){if(dx===W.MAX_LIGHTS){throw"can only create "+W.MAX_LIGHTS+" lights"}var aB=new X(aA,az,aC);var ax=new gP();ax.scale(1,-1,1);ax.apply(d6.array());ax.mult(aB,aB);eH.useProgram(o);a1("lights.color.3d."+dx,o,"lights"+dx+".color",[aD/255,aE/255,ay/255]);a1("lights.position.3d."+dx,o,"lights"+dx+".position",aB.array());a7("lights.type.3d."+dx,o,"lights"+dx+".type",2);a7("lightCount3d",o,"lightCount",++dx)};f2.prototype.noLights=t.prototype.a3DOnlyFunction;el.prototype.noLights=function(){dx=0;eH.useProgram(o);a7("lightCount3d",o,"lightCount",dx)};f2.prototype.spotLight=t.prototype.a3DOnlyFunction;el.prototype.spotLight=function(aK,aE,az,ay,aA,aC,aD,aF,aH,aI,aG){if(dx===W.MAX_LIGHTS){throw"can only create "+W.MAX_LIGHTS+" lights"}eH.useProgram(o);var aB=new X(ay,aA,aC);var ax=new gP();ax.scale(1,-1,1);ax.apply(d6.array());ax.mult(aB,aB);ax=ax.array();var aJ=[ax[0]*aD+ax[4]*aF+ax[8]*aH,ax[1]*aD+ax[5]*aF+ax[9]*aH,ax[2]*aD+ax[6]*aF+ax[10]*aH];a1("lights.color.3d."+dx,o,"lights"+dx+".color",[aK/255,aE/255,az/255]);a1("lights.position.3d."+dx,o,"lights"+dx+".position",aB.array());a1("lights.direction.3d."+dx,o,"lights"+dx+".direction",aJ);a1("lights.concentration.3d."+dx,o,"lights"+dx+".concentration",aG);a1("lights.angle.3d."+dx,o,"lights"+dx+".angle",aI);a7("lights.type.3d."+dx,o,"lights"+dx+".type",3);a7("lightCount3d",o,"lightCount",++dx)};f2.prototype.beginCamera=function(){throw ("beginCamera() is not available in 2D mode")};el.prototype.beginCamera=function(){if(fX){throw ("You cannot call beginCamera() again before calling endCamera()")}fX=true;d6=dZ;gJ=fO};f2.prototype.endCamera=function(){throw ("endCamera() is not available in 2D mode")};el.prototype.endCamera=function(){if(!fX){throw ("You cannot call endCamera() before calling beginCamera()")}d6.set(fO);gJ.set(dZ);fX=false};ev.camera=function(ax,ay,az,aH,aJ,aL,aD,aE,aF){if(arguments.length===0){y=gl.width/2;A=gl.height/2;B=A/ah.tan(fb/2);ax=y;ay=A;az=B;aH=y;aJ=A;aL=0;aD=0;aE=1;aF=0}var aC=new X(ax-aH,ay-aJ,az-aL);var aB=new X(aD,aE,aF);var aG,aI,aK;aC.normalize();var aA=X.cross(aB,aC);aB=X.cross(aC,aA);aA.normalize();aB.normalize();fO.set(aA.x,aA.y,aA.z,0,aB.x,aB.y,aB.z,0,aC.x,aC.y,aC.z,0,0,0,0,1);fO.translate(-ax,-ay,-az);dZ.reset();dZ.invApply(aA.x,aA.y,aA.z,0,aB.x,aB.y,aB.z,0,aC.x,aC.y,aC.z,0,0,0,0,1);dZ.translate(ax,ay,az);d6.set(fO);gJ.set(dZ)};ev.perspective=function(aD,ax,aC,ay){if(arguments.length===0){A=gl.height/2;B=A/ah.tan(fb/2);gx=B/10;fG=B*10;gH=gl.width/gl.height;aD=fb;ax=gH;aC=gx;ay=fG}var aB,aA,az,aE;aB=aC*ah.tan(aD/2);aA=-aB;az=aB*ax;aE=aA*ax;ev.frustum(aE,az,aA,aB,aC,ay)};ev.frustum=function(aA,ax,ay,aB,aC,az){dz=true;H=new gP();H.set((2*aC)/(ax-aA),0,(ax+aA)/(ax-aA),0,0,(2*aC)/(aB-ay),(aB+ay)/(aB-ay),0,0,0,-(az+aC)/(az-aC),-(2*az*aC)/(az-aC),0,0,-1,0);var aD=new gP();aD.set(H);aD.transpose();eH.useProgram(dn);d("projection2d",dn,"projection",false,aD.array());eH.useProgram(o);d("projection3d",o,"projection",false,aD.array());eH.useProgram(fV);d("uProjectionUS",fV,"uProjection",false,aD.array())};ev.ortho=function(aI,ax,aJ,az,aC,aD){if(arguments.length===0){aI=0;ax=ev.width;aJ=0;az=ev.height;aC=-10;aD=10}var ay=2/(ax-aI);var aA=2/(az-aJ);var aB=-2/(aD-aC);var aE=-(ax+aI)/(ax-aI);var aF=-(az+aJ)/(az-aJ);var aG=-(aD+aC)/(aD-aC);H=new gP();H.set(ay,0,0,aE,0,aA,0,aF,0,0,aB,aG,0,0,0,1);var aH=new gP();aH.set(H);aH.transpose();eH.useProgram(dn);d("projection2d",dn,"projection",false,aH.array());eH.useProgram(o);d("projection3d",o,"projection",false,aH.array());eH.useProgram(fV);d("uProjectionUS",fV,"uProjection",false,aH.array());dz=false};ev.printProjection=function(){H.print()};ev.printCamera=function(){fO.print()};f2.prototype.box=t.prototype.a3DOnlyFunction;el.prototype.box=function(ax,aC,aA){if(!aC||!aA){aC=aA=ax}var aD=new gP();aD.scale(ax,aC,aA);var ay=new gP();ay.scale(1,-1,1);ay.apply(d6.array());ay.transpose();if(gW){eH.useProgram(o);d("model3d",o,"model",false,aD.array());d("view3d",o,"view",false,ay.array());eH.enable(eH.POLYGON_OFFSET_FILL);eH.polygonOffset(1,1);a1("color3d",o,"color",e1);if(dx>0){var aE=new gP();aE.set(ay);var az=new gP();az.set(aD);aE.mult(az);var aB=new gP();aB.set(aE);aB.invert();aB.transpose();d("normalTransform3d",o,"normalTransform",false,aB.array());G("normal3d",o,"Normal",3,fe)}else{d8("normal3d",o,"Normal")}G("vertex3d",o,"Vertex",3,fm);d8("aColor3d",o,"aColor");d8("aTexture3d",o,"aTexture");eH.drawArrays(eH.TRIANGLES,0,C.length/3);eH.disable(eH.POLYGON_OFFSET_FILL)}if(db>0&&ec){eH.useProgram(dn);d("model2d",dn,"model",false,aD.array());d("view2d",dn,"view",false,ay.array());a1("color2d",dn,"color",em);a7("picktype2d",dn,"picktype",0);G("vertex2d",dn,"Vertex",3,z);d8("aTextureCoord2d",dn,"aTextureCoord");eH.drawArrays(eH.LINES,0,gm.length/3)}};var fq=function(){var ay;fn=[];for(ay=0;ay<ga;ay++){fn.push(0);fn.push(-1);fn.push(0);fn.push(eL[ay]);fn.push(eP[ay]);fn.push(eT[ay])}fn.push(0);fn.push(-1);fn.push(0);fn.push(eL[0]);fn.push(eP[0]);fn.push(eT[0]);var aA,ax,aB;var aC=0;for(ay=2;ay<gc;ay++){aA=ax=aC;aC+=ga;aB=aC;for(var az=0;az<ga;az++){fn.push(eL[aA]);fn.push(eP[aA]);fn.push(eT[aA++]);fn.push(eL[aB]);fn.push(eP[aB]);fn.push(eT[aB++])}aA=ax;aB=aC;fn.push(eL[aA]);fn.push(eP[aA]);fn.push(eT[aA]);fn.push(eL[aB]);fn.push(eP[aB]);fn.push(eT[aB])}for(ay=0;ay<ga;ay++){aB=aC+ay;fn.push(eL[aB]);fn.push(eP[aB]);fn.push(eT[aB]);fn.push(0);fn.push(1);fn.push(0)}fn.push(eL[aC]);fn.push(eP[aC]);fn.push(eT[aC]);fn.push(0);fn.push(1);fn.push(0);eH.bindBuffer(eH.ARRAY_BUFFER,fo);eH.bufferData(eH.ARRAY_BUFFER,new ar(fn),eH.STATIC_DRAW)};ev.sphereDetail=function(aI,ax){var aC;if(arguments.length===1){aI=ax=arguments[0]}if(aI<3){aI=3}if(ax<2){ax=2}if((aI===ga)&&(ax===gc)){return}var ay=W.SINCOS_LENGTH/aI;var aE=new ar(aI);var aH=new ar(aI);for(aC=0;aC<aI;aC++){aE[aC]=fa[((aC*ay)%W.SINCOS_LENGTH)|0];aH[aC]=ge[((aC*ay)%W.SINCOS_LENGTH)|0]}var az=aI*(ax-1)+2;var aA=0;eL=new ar(az);eP=new ar(az);eT=new ar(az);var aB=(W.SINCOS_LENGTH*0.5)/ax;var aF=aB;for(aC=1;aC<ax;aC++){var aG=ge[(aF%W.SINCOS_LENGTH)|0];var aJ=-fa[(aF%W.SINCOS_LENGTH)|0];for(var aD=0;aD<aI;aD++){eL[aA]=aE[aD]*aG;eP[aA]=aJ;eT[aA++]=aH[aD]*aG}aF+=aB}ga=aI;gc=ax;fq()};f2.prototype.sphere=t.prototype.a3DOnlyFunction;el.prototype.sphere=function(){var aB=arguments[0];if((ga<3)||(gc<2)){ev.sphereDetail(30)}var aC=new gP();aC.scale(aB,aB,aB);var ay=new gP();ay.scale(1,-1,1);ay.apply(d6.array());ay.transpose();if(gW){if(dx>0){var ax=new gP();ax.set(ay);var az=new gP();az.set(aC);ax.mult(az);var aA=new gP();aA.set(ax);aA.invert();aA.transpose();d("normalTransform3d",o,"normalTransform",false,aA.array());G("normal3d",o,"Normal",3,fo)}else{d8("normal3d",o,"Normal")}eH.useProgram(o);d8("aTexture3d",o,"aTexture");d("model3d",o,"model",false,aC.array());d("view3d",o,"view",false,ay.array());G("vertex3d",o,"Vertex",3,fo);d8("aColor3d",o,"aColor");eH.enable(eH.POLYGON_OFFSET_FILL);eH.polygonOffset(1,1);a1("color3d",o,"color",e1);eH.drawArrays(eH.TRIANGLE_STRIP,0,fn.length/3);eH.disable(eH.POLYGON_OFFSET_FILL)}if(db>0&&ec){eH.useProgram(dn);d("model2d",dn,"model",false,aC.array());d("view2d",dn,"view",false,ay.array());G("vertex2d",dn,"Vertex",3,fo);d8("aTextureCoord2d",dn,"aTextureCoord");a1("color2d",dn,"color",em);a7("picktype2d",dn,"picktype",0);eH.drawArrays(eH.LINE_STRIP,0,fn.length/3)}};ev.modelX=function(aB,aC,aD){var az=d6.array();var ax=dZ.array();var aH=az[0]*aB+az[1]*aC+az[2]*aD+az[3];var ay=az[4]*aB+az[5]*aC+az[6]*aD+az[7];var aA=az[8]*aB+az[9]*aC+az[10]*aD+az[11];var aG=az[12]*aB+az[13]*aC+az[14]*aD+az[15];var aF=ax[0]*aH+ax[1]*ay+ax[2]*aA+ax[3]*aG;var aE=ax[12]*aH+ax[13]*ay+ax[14]*aA+ax[15]*aG;return(aE!==0)?aF/aE:aF};ev.modelY=function(aB,aC,aD){var az=d6.array();var ax=dZ.array();var aH=az[0]*aB+az[1]*aC+az[2]*aD+az[3];var ay=az[4]*aB+az[5]*aC+az[6]*aD+az[7];var aA=az[8]*aB+az[9]*aC+az[10]*aD+az[11];var aG=az[12]*aB+az[13]*aC+az[14]*aD+az[15];var aF=ax[4]*aH+ax[5]*ay+ax[6]*aA+ax[7]*aG;var aE=ax[12]*aH+ax[13]*ay+ax[14]*aA+ax[15]*aG;return(aE!==0)?aF/aE:aF};ev.modelZ=function(aB,aC,aD){var az=d6.array();var ax=dZ.array();var aH=az[0]*aB+az[1]*aC+az[2]*aD+az[3];var ay=az[4]*aB+az[5]*aC+az[6]*aD+az[7];var aA=az[8]*aB+az[9]*aC+az[10]*aD+az[11];var aF=az[12]*aB+az[13]*aC+az[14]*aD+az[15];var aG=ax[8]*aH+ax[9]*ay+ax[10]*aA+ax[11]*aF;var aE=ax[12]*aH+ax[13]*ay+ax[14]*aA+ax[15]*aF;return(aE!==0)?aG/aE:aG};f2.prototype.ambient=t.prototype.a3DOnlyFunction;el.prototype.ambient=function(){var ay=arguments;eH.useProgram(o);a7("usingMat3d",o,"usingMat",true);if(ay.length===1){if(typeof ay[0]==="string"){var ax=ay[0].slice(5,-1).split(",");a1("mat_ambient3d",o,"mat_ambient",[ax[0]/255,ax[1]/255,ax[2]/255])}else{a1("mat_ambient3d",o,"mat_ambient",[ay[0]/255,ay[0]/255,ay[0]/255])}}else{a1("mat_ambient3d",o,"mat_ambient",[ay[0]/255,ay[1]/255,ay[2]/255])}};f2.prototype.emissive=t.prototype.a3DOnlyFunction;el.prototype.emissive=function(){var ay=arguments;eH.useProgram(o);a7("usingMat3d",o,"usingMat",true);if(ay.length===1){if(typeof ay[0]==="string"){var ax=ay[0].slice(5,-1).split(",");a1("mat_emissive3d",o,"mat_emissive",[ax[0]/255,ax[1]/255,ax[2]/255])}else{a1("mat_emissive3d",o,"mat_emissive",[ay[0]/255,ay[0]/255,ay[0]/255])}}else{a1("mat_emissive3d",o,"mat_emissive",[ay[0]/255,ay[1]/255,ay[2]/255])}};f2.prototype.shininess=t.prototype.a3DOnlyFunction;el.prototype.shininess=function(ax){eH.useProgram(o);a7("usingMat3d",o,"usingMat",true);a1("shininess3d",o,"shininess",ax)};f2.prototype.specular=t.prototype.a3DOnlyFunction;el.prototype.specular=function(ay,az,aA){var ax=ev.color(ay,az,aA);eH.useProgram(o);a7("usingMat3d",o,"usingMat",true);a1("mat_specular3d",o,"mat_specular",ev.color.toGLArray(ax).slice(0,3))};ev.screenX=function(aA,aB,aC){var ay=d6.array();if(ay.length===16){var aH=ay[0]*aA+ay[1]*aB+ay[2]*aC+ay[3];var ax=ay[4]*aA+ay[5]*aB+ay[6]*aC+ay[7];var az=ay[8]*aA+ay[9]*aB+ay[10]*aC+ay[11];var aG=ay[12]*aA+ay[13]*aB+ay[14]*aC+ay[15];var aD=H.array();var aF=aD[0]*aH+aD[1]*ax+aD[2]*az+aD[3]*aG;var aE=aD[12]*aH+aD[13]*ax+aD[14]*az+aD[15]*aG;if(aE!==0){aF/=aE}return ev.width*(1+aF)/2}return d6.multX(aA,aB)};ev.screenY=function ft(aA,aB,aC){var ay=d6.array();if(ay.length===16){var aH=ay[0]*aA+ay[1]*aB+ay[2]*aC+ay[3];var ax=ay[4]*aA+ay[5]*aB+ay[6]*aC+ay[7];var az=ay[8]*aA+ay[9]*aB+ay[10]*aC+ay[11];var aG=ay[12]*aA+ay[13]*aB+ay[14]*aC+ay[15];var aD=H.array();var aF=aD[4]*aH+aD[5]*ax+aD[6]*az+aD[7]*aG;var aE=aD[12]*aH+aD[13]*ax+aD[14]*az+aD[15]*aG;if(aE!==0){aF/=aE}return ev.height*(1+aF)/2}return d6.multY(aA,aB)};ev.screenZ=function fx(aA,aB,aC){var ay=d6.array();if(ay.length!==16){return 0}var aD=H.array();var aH=ay[0]*aA+ay[1]*aB+ay[2]*aC+ay[3];var ax=ay[4]*aA+ay[5]*aB+ay[6]*aC+ay[7];var az=ay[8]*aA+ay[9]*aB+ay[10]*aC+ay[11];var aF=ay[12]*aA+ay[13]*aB+ay[14]*aC+ay[15];var aG=aD[8]*aH+aD[9]*ax+aD[10]*az+aD[11]*aF;var aE=aD[12]*aH+aD[13]*ax+aD[14]*az+aD[15]*aF;if(aE!==0){aG/=aE}return(aG+1)/2};t.prototype.fill=function(){var ax=ev.color(arguments[0],arguments[1],arguments[2],arguments[3]);if(ax===gu&&gW){return}gW=true;gu=ax};f2.prototype.fill=function(){t.prototype.fill.apply(this,arguments);fU=true};el.prototype.fill=function(){t.prototype.fill.apply(this,arguments);e1=ev.color.toGLArray(gu)};function e3(){if(gW){if(fU){eH.fillStyle=ev.color.toString(gu);fU=false}eH.fill()}}ev.noFill=function(){gW=false};t.prototype.stroke=function(){var ax=ev.color(arguments[0],arguments[1],arguments[2],arguments[3]);if(ax===a8&&ec){return}ec=true;a8=ax};f2.prototype.stroke=function(){t.prototype.stroke.apply(this,arguments);gL=true};el.prototype.stroke=function(){t.prototype.stroke.apply(this,arguments);em=ev.color.toGLArray(a8)};function F(){if(ec){if(gL){eH.strokeStyle=ev.color.toString(a8);gL=false}eH.stroke()}}ev.noStroke=function(){ec=false};t.prototype.strokeWeight=function(ax){db=ax};f2.prototype.strokeWeight=function(ax){t.prototype.strokeWeight.apply(this,arguments);eH.lineWidth=ax};el.prototype.strokeWeight=function(ax){t.prototype.strokeWeight.apply(this,arguments);eH.useProgram(dn);a1("pointSize2d",dn,"pointSize",ax);eH.useProgram(fV);a1("pointSizeUnlitShape",fV,"pointSize",ax);eH.lineWidth(ax)};ev.strokeCap=function(ax){cy.$ensureContext().lineCap=ax};ev.strokeJoin=function(ax){cy.$ensureContext().lineJoin=ax};f2.prototype.smooth=function(){dt=true;var ax=gl.style;ax.setProperty("image-rendering","optimizeQuality","important");ax.setProperty("-ms-interpolation-mode","bicubic","important");if(eH.hasOwnProperty("mozImageSmoothingEnabled")){eH.mozImageSmoothingEnabled=true}};el.prototype.smooth=R;f2.prototype.noSmooth=function(){dt=false;var ax=gl.style;ax.setProperty("image-rendering","optimizeSpeed","important");ax.setProperty("image-rendering","-moz-crisp-edges","important");ax.setProperty("image-rendering","-webkit-optimize-contrast","important");ax.setProperty("image-rendering","optimize-contrast","important");ax.setProperty("-ms-interpolation-mode","nearest-neighbor","important");if(eH.hasOwnProperty("mozImageSmoothingEnabled")){eH.mozImageSmoothingEnabled=false}};el.prototype.noSmooth=R;f2.prototype.point=function(ay,ax){if(!ec){return}ay=ah.round(ay);ax=ah.round(ax);eH.fillStyle=ev.color.toString(a8);fU=true;if(db>1){eH.beginPath();eH.arc(ay,ax,db/2,0,W.TWO_PI,false);eH.fill()}else{eH.fillRect(ay,ax,1,1)}};el.prototype.point=function(az,aA,aB){var ax=new gP();ax.translate(az,aA,aB||0);ax.transpose();var ay=new gP();ay.scale(1,-1,1);ay.apply(d6.array());ay.transpose();eH.useProgram(dn);d("model2d",dn,"model",false,ax.array());d("view2d",dn,"view",false,ay.array());if(db>0&&ec){a1("color2d",dn,"color",em);a7("picktype2d",dn,"picktype",0);G("vertex2d",dn,"Vertex",3,fC);d8("aTextureCoord2d",dn,"aTextureCoord");eH.drawArrays(eH.POINTS,0,1)}};ev.beginShape=function(ax){dm=ax;eO=[];b=[]};f2.prototype.vertex=function(az,aA,aB,ax){var ay=[];if(r){r=false}ay.isVert=true;ay[0]=az;ay[1]=aA;ay[2]=0;ay[3]=aB;ay[4]=ax;ay[5]=gu;ay[6]=a8;b.push(ay)};el.prototype.vertex=function(az,aA,aB,aC,ax){var ay=[];if(r){r=false}ay.isVert=true;if(ax===ae&&di){ax=aC;aC=aB;aB=0}ay[0]=az;ay[1]=aA;ay[2]=aB||0;ay[3]=aC||0;ay[4]=ax||0;ay[5]=e1[0];ay[6]=e1[1];ay[7]=e1[2];ay[8]=e1[3];ay[9]=em[0];ay[10]=em[1];ay[11]=em[2];ay[12]=em[3];ay[13]=e;ay[14]=f;ay[15]=g;b.push(ay)};var a2=function(ax,ay){var az=new gP();az.scale(1,-1,1);az.apply(d6.array());az.transpose();eH.useProgram(fV);d("uViewUS",fV,"uView",false,az.array());G("aVertexUS",fV,"aVertex",3,fC);eH.bufferData(eH.ARRAY_BUFFER,new ar(ax),eH.STREAM_DRAW);G("aColorUS",fV,"aColor",4,gX);eH.bufferData(eH.ARRAY_BUFFER,new ar(ay),eH.STREAM_DRAW);eH.drawArrays(eH.POINTS,0,ax.length/3)};var ff=function(aA,aB,ax){var ay;if(aB==="LINES"){ay=eH.LINES}else{if(aB==="LINE_LOOP"){ay=eH.LINE_LOOP}else{ay=eH.LINE_STRIP}}var az=new gP();az.scale(1,-1,1);az.apply(d6.array());az.transpose();eH.useProgram(fV);d("uViewUS",fV,"uView",false,az.array());G("aVertexUS",fV,"aVertex",3,gB);eH.bufferData(eH.ARRAY_BUFFER,new ar(aA),eH.STREAM_DRAW);G("aColorUS",fV,"aColor",4,ej);eH.bufferData(eH.ARRAY_BUFFER,new ar(ax),eH.STREAM_DRAW);eH.drawArrays(ay,0,aA.length/3)};var x=function(aA,aB,aC,ax){var ay;if(aB==="TRIANGLES"){ay=eH.TRIANGLES}else{if(aB==="TRIANGLE_FAN"){ay=eH.TRIANGLE_FAN}else{ay=eH.TRIANGLE_STRIP}}var az=new gP();az.scale(1,-1,1);az.apply(d6.array());az.transpose();eH.useProgram(o);d("model3d",o,"model",false,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);d("view3d",o,"view",false,az.array());eH.enable(eH.POLYGON_OFFSET_FILL);eH.polygonOffset(1,1);a1("color3d",o,"color",[-1,0,0,0]);G("vertex3d",o,"Vertex",3,fN);eH.bufferData(eH.ARRAY_BUFFER,new ar(aA),eH.STREAM_DRAW);if(di&&fr!==null){ey(aC);a7("usingTint3d",o,"usingTint",true)}G("aColor3d",o,"aColor",4,gX);eH.bufferData(eH.ARRAY_BUFFER,new ar(aC),eH.STREAM_DRAW);d8("normal3d",o,"Normal");var aD;if(di){if(eS===W.IMAGE){for(aD=0;aD<ax.length;aD+=2){ax[aD]=ax[aD]/dc.width;ax[aD+1]/=dc.height}}for(aD=0;aD<ax.length;aD+=2){if(ax[aD+0]>1){ax[aD+0]-=(ax[aD+0]-1)}if(ax[aD+1]>1){ax[aD+1]-=(ax[aD+1]-1)}}a7("usingTexture3d",o,"usingTexture",di);G("aTexture3d",o,"aTexture",2,gi);eH.bufferData(eH.ARRAY_BUFFER,new ar(ax),eH.STREAM_DRAW)}eH.drawArrays(ay,0,aA.length/3);eH.disable(eH.POLYGON_OFFSET_FILL)};function eJ(){e3();F();eH.closePath()}f2.prototype.endShape=function(aD){if(b.length===0){return}var aH=aD===W.CLOSE;if(aH){b.push(b[0])}var aI=[];var aK=[];var aB=[];var ay=[];var aF=[];var aC;r=true;var aE,aG,aJ;var az=b.length;for(aE=0;aE<az;aE++){aC=b[aE];for(aG=0;aG<3;aG++){aK.push(aC[aG])}}for(aE=0;aE<az;aE++){aC=b[aE];for(aG=5;aG<9;aG++){aB.push(aC[aG])}}for(aE=0;aE<az;aE++){aC=b[aE];for(aG=9;aG<13;aG++){ay.push(aC[aG])}}for(aE=0;aE<az;aE++){aC=b[aE];aF.push(aC[3]);aF.push(aC[4])}if(dr&&(dm===W.POLYGON||dm===ae)){if(az>3){var aA=[],ax=1-gU;eH.beginPath();eH.moveTo(b[1][0],b[1][1]);for(aE=1;(aE+2)<az;aE++){aC=b[aE];aA[0]=[aC[0],aC[1]];aA[1]=[aC[0]+(ax*b[aE+1][0]-ax*b[aE-1][0])/6,aC[1]+(ax*b[aE+1][1]-ax*b[aE-1][1])/6];aA[2]=[b[aE+1][0]+(ax*b[aE][0]-ax*b[aE+2][0])/6,b[aE+1][1]+(ax*b[aE][1]-ax*b[aE+2][1])/6];aA[3]=[b[aE+1][0],b[aE+1][1]];eH.bezierCurveTo(aA[1][0],aA[1][1],aA[2][0],aA[2][1],aA[3][0],aA[3][1])}eJ()}}else{if(ex&&(dm===W.POLYGON||dm===ae)){eH.beginPath();for(aE=0;aE<az;aE++){aC=b[aE];if(b[aE]["isVert"]){if(b[aE]["moveTo"]){eH.moveTo(aC[0],aC[1])}else{eH.lineTo(aC[0],aC[1])}}else{eH.bezierCurveTo(b[aE][0],b[aE][1],b[aE][2],b[aE][3],b[aE][4],b[aE][5])}}eJ()}else{if(dm===W.POINTS){for(aE=0;aE<az;aE++){aC=b[aE];if(ec){ev.stroke(aC[6])}ev.point(aC[0],aC[1])}}else{if(dm===W.LINES){for(aE=0;(aE+1)<az;aE+=2){aC=b[aE];if(ec){ev.stroke(b[aE+1][6])}ev.line(aC[0],aC[1],b[aE+1][0],b[aE+1][1])}}else{if(dm===W.TRIANGLES){for(aE=0;(aE+2)<az;aE+=3){aC=b[aE];eH.beginPath();eH.moveTo(aC[0],aC[1]);eH.lineTo(b[aE+1][0],b[aE+1][1]);eH.lineTo(b[aE+2][0],b[aE+2][1]);eH.lineTo(aC[0],aC[1]);if(gW){ev.fill(b[aE+2][5]);e3()}if(ec){ev.stroke(b[aE+2][6]);F()}eH.closePath()}}else{if(dm===W.TRIANGLE_STRIP){for(aE=0;(aE+1)<az;aE++){aC=b[aE];eH.beginPath();eH.moveTo(b[aE+1][0],b[aE+1][1]);eH.lineTo(aC[0],aC[1]);if(ec){ev.stroke(b[aE+1][6])}if(gW){ev.fill(b[aE+1][5])}if(aE+2<az){eH.lineTo(b[aE+2][0],b[aE+2][1]);if(ec){ev.stroke(b[aE+2][6])}if(gW){ev.fill(b[aE+2][5])}}eJ()}}else{if(dm===W.TRIANGLE_FAN){if(az>2){eH.beginPath();eH.moveTo(b[0][0],b[0][1]);eH.lineTo(b[1][0],b[1][1]);eH.lineTo(b[2][0],b[2][1]);if(gW){ev.fill(b[2][5]);e3()}if(ec){ev.stroke(b[2][6]);F()}eH.closePath();for(aE=3;aE<az;aE++){aC=b[aE];eH.beginPath();eH.moveTo(b[0][0],b[0][1]);eH.lineTo(b[aE-1][0],b[aE-1][1]);eH.lineTo(aC[0],aC[1]);if(gW){ev.fill(aC[5]);e3()}if(ec){ev.stroke(aC[6]);F()}eH.closePath()}}}else{if(dm===W.QUADS){for(aE=0;(aE+3)<az;aE+=4){aC=b[aE];eH.beginPath();eH.moveTo(aC[0],aC[1]);for(aG=1;aG<4;aG++){eH.lineTo(b[aE+aG][0],b[aE+aG][1])}eH.lineTo(aC[0],aC[1]);if(gW){ev.fill(b[aE+3][5]);e3()}if(ec){ev.stroke(b[aE+3][6]);F()}eH.closePath()}}else{if(dm===W.QUAD_STRIP){if(az>3){for(aE=0;(aE+1)<az;aE+=2){aC=b[aE];eH.beginPath();if(aE+3<az){eH.moveTo(b[aE+2][0],b[aE+2][1]);eH.lineTo(aC[0],aC[1]);eH.lineTo(b[aE+1][0],b[aE+1][1]);eH.lineTo(b[aE+3][0],b[aE+3][1]);if(gW){ev.fill(b[aE+3][5])}if(ec){ev.stroke(b[aE+3][6])}}else{eH.moveTo(aC[0],aC[1]);eH.lineTo(b[aE+1][0],b[aE+1][1])}eJ()}}}else{eH.beginPath();eH.moveTo(b[0][0],b[0][1]);for(aE=1;aE<az;aE++){aC=b[aE];if(aC.isVert){if(aC.moveTo){eH.moveTo(aC[0],aC[1])}else{eH.lineTo(aC[0],aC[1])}}}eJ()}}}}}}}}}dr=false;ex=false;gv=[];f0=0;if(aH){b.pop()}};el.prototype.endShape=function(aC){if(b.length===0){return}var aG=aC===W.CLOSE;var aH=[];var aJ=[];var aA=[];var ax=[];var aE=[];var aB;r=true;var aD,aF,aI;var ay=b.length;for(aD=0;aD<ay;aD++){aB=b[aD];for(aF=0;aF<3;aF++){aJ.push(aB[aF])}}for(aD=0;aD<ay;aD++){aB=b[aD];for(aF=5;aF<9;aF++){aA.push(aB[aF])}}for(aD=0;aD<ay;aD++){aB=b[aD];for(aF=9;aF<13;aF++){ax.push(aB[aF])}}for(aD=0;aD<ay;aD++){aB=b[aD];aE.push(aB[3]);aE.push(aB[4])}if(aG){aJ.push(b[0][0]);aJ.push(b[0][1]);aJ.push(b[0][2]);for(aD=5;aD<9;aD++){aA.push(b[0][aD])}for(aD=9;aD<13;aD++){ax.push(b[0][aD])}aE.push(b[0][3]);aE.push(b[0][4])}if(dr&&(dm===W.POLYGON||dm===ae)){aH=aJ;if(ec){ff(aH,null,ax)}if(gW){x(aJ,null,aA)}}else{if(ex&&(dm===W.POLYGON||dm===ae)){aH=aJ;aH.splice(aH.length-3);ax.splice(ax.length-4);if(ec){ff(aH,null,ax)}if(gW){x(aJ,"TRIANGLES",aA)}}else{if(dm===W.POINTS){for(aD=0;aD<ay;aD++){aB=b[aD];for(aF=0;aF<3;aF++){aH.push(aB[aF])}}a2(aH,ax)}else{if(dm===W.LINES){for(aD=0;aD<ay;aD++){aB=b[aD];for(aF=0;aF<3;aF++){aH.push(aB[aF])}}for(aD=0;aD<ay;aD++){aB=b[aD];for(aF=5;aF<9;aF++){aA.push(aB[aF])}}ff(aH,"LINES",ax)}else{if(dm===W.TRIANGLES){if(ay>2){for(aD=0;(aD+2)<ay;aD+=3){aJ=[];aE=[];aH=[];aA=[];ax=[];for(aF=0;aF<3;aF++){for(aI=0;aI<3;aI++){aH.push(b[aD+aF][aI]);aJ.push(b[aD+aF][aI])}}for(aF=0;aF<3;aF++){for(aI=3;aI<5;aI++){aE.push(b[aD+aF][aI])}}for(aF=0;aF<3;aF++){for(aI=5;aI<9;aI++){aA.push(b[aD+aF][aI]);ax.push(b[aD+aF][aI+4])}}if(ec){ff(aH,"LINE_LOOP",ax)}if(gW||di){x(aJ,"TRIANGLES",aA,aE)}}}}else{if(dm===W.TRIANGLE_STRIP){if(ay>2){for(aD=0;(aD+2)<ay;aD++){aH=[];aJ=[];ax=[];aA=[];aE=[];for(aF=0;aF<3;aF++){for(aI=0;aI<3;aI++){aH.push(b[aD+aF][aI]);aJ.push(b[aD+aF][aI])}}for(aF=0;aF<3;aF++){for(aI=3;aI<5;aI++){aE.push(b[aD+aF][aI])}}for(aF=0;aF<3;aF++){for(aI=5;aI<9;aI++){ax.push(b[aD+aF][aI+4]);aA.push(b[aD+aF][aI])}}if(gW||di){x(aJ,"TRIANGLE_STRIP",aA,aE)}if(ec){ff(aH,"LINE_LOOP",ax)}}}}else{if(dm===W.TRIANGLE_FAN){if(ay>2){for(aD=0;aD<3;aD++){aB=b[aD];for(aF=0;aF<3;aF++){aH.push(aB[aF])}}for(aD=0;aD<3;aD++){aB=b[aD];for(aF=9;aF<13;aF++){ax.push(aB[aF])}}if(ec){ff(aH,"LINE_LOOP",ax)}for(aD=2;(aD+1)<ay;aD++){aH=[];ax=[];aH.push(b[0][0]);aH.push(b[0][1]);aH.push(b[0][2]);ax.push(b[0][9]);ax.push(b[0][10]);ax.push(b[0][11]);ax.push(b[0][12]);for(aF=0;aF<2;aF++){for(aI=0;aI<3;aI++){aH.push(b[aD+aF][aI])}}for(aF=0;aF<2;aF++){for(aI=9;aI<13;aI++){ax.push(b[aD+aF][aI])}}if(ec){ff(aH,"LINE_STRIP",ax)}}if(gW||di){x(aJ,"TRIANGLE_FAN",aA,aE)}}}else{if(dm===W.QUADS){for(aD=0;(aD+3)<ay;aD+=4){aH=[];for(aF=0;aF<4;aF++){aB=b[aD+aF];for(aI=0;aI<3;aI++){aH.push(aB[aI])}}if(ec){ff(aH,"LINE_LOOP",ax)}if(gW){aJ=[];aA=[];aE=[];for(aF=0;aF<3;aF++){aJ.push(b[aD][aF])}for(aF=5;aF<9;aF++){aA.push(b[aD][aF])}for(aF=0;aF<3;aF++){aJ.push(b[aD+1][aF])}for(aF=5;aF<9;aF++){aA.push(b[aD+1][aF])}for(aF=0;aF<3;aF++){aJ.push(b[aD+3][aF])}for(aF=5;aF<9;aF++){aA.push(b[aD+3][aF])}for(aF=0;aF<3;aF++){aJ.push(b[aD+2][aF])}for(aF=5;aF<9;aF++){aA.push(b[aD+2][aF])}if(di){aE.push(b[aD+0][3]);aE.push(b[aD+0][4]);aE.push(b[aD+1][3]);aE.push(b[aD+1][4]);aE.push(b[aD+3][3]);aE.push(b[aD+3][4]);aE.push(b[aD+2][3]);aE.push(b[aD+2][4])}x(aJ,"TRIANGLE_STRIP",aA,aE)}}}else{if(dm===W.QUAD_STRIP){var az=[];if(ay>3){for(aD=0;aD<2;aD++){aB=b[aD];for(aF=0;aF<3;aF++){aH.push(aB[aF])}}for(aD=0;aD<2;aD++){aB=b[aD];for(aF=9;aF<13;aF++){ax.push(aB[aF])}}ff(aH,"LINE_STRIP",ax);if(ay>4&&ay%2>0){az=aJ.splice(aJ.length-3);b.pop()}for(aD=0;(aD+3)<ay;aD+=2){aH=[];ax=[];for(aF=0;aF<3;aF++){aH.push(b[aD+1][aF])}for(aF=0;aF<3;aF++){aH.push(b[aD+3][aF])}for(aF=0;aF<3;aF++){aH.push(b[aD+2][aF])}for(aF=0;aF<3;aF++){aH.push(b[aD+0][aF])}for(aF=9;aF<13;aF++){ax.push(b[aD+1][aF])}for(aF=9;aF<13;aF++){ax.push(b[aD+3][aF])}for(aF=9;aF<13;aF++){ax.push(b[aD+2][aF])}for(aF=9;aF<13;aF++){ax.push(b[aD+0][aF])}if(ec){ff(aH,"LINE_STRIP",ax)}}if(gW||di){x(aJ,"TRIANGLE_LIST",aA,aE)}}}else{if(ay===1){for(aF=0;aF<3;aF++){aH.push(b[0][aF])}for(aF=9;aF<13;aF++){ax.push(b[0][aF])}a2(aH,ax)}else{for(aD=0;aD<ay;aD++){aB=b[aD];for(aF=0;aF<3;aF++){aH.push(aB[aF])}for(aF=5;aF<9;aF++){ax.push(aB[aF])}}if(ec&&aG){ff(aH,"LINE_LOOP",ax)}else{if(ec&&!aG){ff(aH,"LINE_STRIP",ax)}}if(gW||di){x(aJ,"TRIANGLE_FAN",aA,aE)}}}}}}}}}di=false;eH.useProgram(o);a7("usingTexture3d",o,"usingTexture",di)}}dr=false;ex=false;gv=[];f0=0};var gA=function(aB,ax){var aA=1/aB;var ay=aA*aA;var az=ay*aA;ax.set(0,0,0,1,az,ay,aA,0,6*az,2*ay,0,0,6*az,0,0,0)};var u=function(){if(!gS){fW=new gP();gS=new gP();e5=true}var ax=gU;fW.set((ax-1)/2,(ax+3)/2,(-3-ax)/2,(1-ax)/2,(1-ax),(-5-ax)/2,(ax+2),(ax-1)/2,(ax-1)/2,0,(1-ax)/2,0,0,1,0,0);gA(e7,gS);if(!ee){gO=new gP()}gO.set(fW);gO.preApply(ee);gS.apply(fW)};f2.prototype.bezierVertex=function(){ex=true;var ay=[];if(r){throw ("vertex() must be used at least once before calling bezierVertex()")}for(var ax=0;ax<arguments.length;ax++){ay[ax]=arguments[ax]}b.push(ay);b[b.length-1]["isVert"]=false};el.prototype.bezierVertex=function(){ex=true;var aF=[];if(r){throw ("vertex() must be used at least once before calling bezierVertex()")}if(arguments.length===9){if(ep===ae){ep=new gP()}var aA=b.length-1;gA(a3,ep);ep.apply(eW);var ay=ep.array();var aJ=b[aA][0],az=b[aA][1],aG=b[aA][2];var aD=ay[4]*aJ+ay[5]*arguments[0]+ay[6]*arguments[3]+ay[7]*arguments[6];var aE=ay[8]*aJ+ay[9]*arguments[0]+ay[10]*arguments[3]+ay[11]*arguments[6];var aH=ay[12]*aJ+ay[13]*arguments[0]+ay[14]*arguments[3]+ay[15]*arguments[6];var ax=ay[4]*az+ay[5]*arguments[1]+ay[6]*arguments[4]+ay[7]*arguments[7];var aB=ay[8]*az+ay[9]*arguments[1]+ay[10]*arguments[4]+ay[11]*arguments[7];var aC=ay[12]*az+ay[13]*arguments[1]+ay[14]*arguments[4]+ay[15]*arguments[7];var aK=ay[4]*aG+ay[5]*arguments[2]+ay[6]*arguments[5]+ay[7]*arguments[8];var aL=ay[8]*aG+ay[9]*arguments[2]+ay[10]*arguments[5]+ay[11]*arguments[8];var aM=ay[12]*aG+ay[13]*arguments[2]+ay[14]*arguments[5]+ay[15]*arguments[8];for(var aI=0;aI<a3;aI++){aJ+=aD;aD+=aE;aE+=aH;az+=ax;ax+=aB;aB+=aC;aG+=aK;aK+=aL;aL+=aM;ev.vertex(aJ,az,aG)}ev.vertex(arguments[6],arguments[7],arguments[8])}};var d7=function(){var ay=at.createElement("canvas");try{eH.texImage2D(eH.TEXTURE_2D,0,eH.RGBA,eH.RGBA,eH.UNSIGNED_BYTE,ay);d7=function(az){eH.texImage2D(eH.TEXTURE_2D,0,eH.RGBA,eH.RGBA,eH.UNSIGNED_BYTE,az)}}catch(ax){d7=function(az){eH.texImage2D(eH.TEXTURE_2D,0,az,false)}}d7.apply(this,arguments)};ev.texture=function(aC){var ay=cy.$ensureContext();if(aC.localName==="canvas"){ay.bindTexture(ay.TEXTURE_2D,fL);d7(aC);ay.texParameteri(ay.TEXTURE_2D,ay.TEXTURE_MAG_FILTER,ay.LINEAR);ay.texParameteri(ay.TEXTURE_2D,ay.TEXTURE_MIN_FILTER,ay.LINEAR);ay.generateMipmap(ay.TEXTURE_2D)}else{if(!aC.__texture){var ax=ay.createTexture();aC.__texture=ax;var aA=at.createElement("canvas");var aB;if(aC.width&(aC.width-1)===0){aA.width=aC.width}else{aB=1;while(aB<aC.width){aB*=2}aA.width=aB}if(aC.height&(aC.height-1)===0){aA.height=aC.height}else{aB=1;while(aB<aC.height){aB*=2}aA.height=aB}aC.resize(aA.width,aA.height);var az=aA.getContext("2d");az.putImageData(aC.imageData,0,0);aC.__cvs=aA;ay.bindTexture(ay.TEXTURE_2D,aC.__texture);ay.texParameteri(ay.TEXTURE_2D,ay.TEXTURE_MIN_FILTER,ay.LINEAR_MIPMAP_LINEAR);ay.texParameteri(ay.TEXTURE_2D,ay.TEXTURE_MAG_FILTER,ay.LINEAR);ay.texParameteri(ay.TEXTURE_2D,ay.TEXTURE_WRAP_T,ay.CLAMP_TO_EDGE);ay.texParameteri(ay.TEXTURE_2D,ay.TEXTURE_WRAP_S,ay.CLAMP_TO_EDGE);d7(aC.__cvs);ay.generateMipmap(ay.TEXTURE_2D)}else{ay.bindTexture(ay.TEXTURE_2D,aC.__texture)}}dc.width=aC.width;dc.height=aC.height;di=true;ay.useProgram(o);a7("usingTexture3d",o,"usingTexture",di)};ev.textureMode=function(ax){eS=ax};var fQ=function(aU,aJ,aD,aW,aK,aE,ay,aL,aF,aA,aM,aH){var aT=aW;var aI=aK;var aC=aE;var aG=gS.array();var aV=aG[4]*aU+aG[5]*aW+aG[6]*ay+aG[7]*aA;var ax=aG[8]*aU+aG[9]*aW+aG[10]*ay+aG[11]*aA;var az=aG[12]*aU+aG[13]*aW+aG[14]*ay+aG[15]*aA;var aP=aG[4]*aJ+aG[5]*aK+aG[6]*aL+aG[7]*aM;var aR=aG[8]*aJ+aG[9]*aK+aG[10]*aL+aG[11]*aM;var aS=aG[12]*aJ+aG[13]*aK+aG[14]*aL+aG[15]*aM;var aN=aG[4]*aD+aG[5]*aE+aG[6]*aF+aG[7]*aH;var aO=aG[8]*aD+aG[9]*aE+aG[10]*aF+aG[11]*aH;var aQ=aG[12]*aD+aG[13]*aE+aG[14]*aF+aG[15]*aH;ev.vertex(aT,aI,aC);for(var aB=0;aB<e7;aB++){aT+=aV;aV+=ax;ax+=az;aI+=aP;aP+=aR;aR+=aS;aC+=aN;aN+=aO;aO+=aQ;ev.vertex(aT,aI,aC)}};f2.prototype.curveVertex=function(ay,ax){dr=true;ev.vertex(ay,ax)};el.prototype.curveVertex=function(az,aA,ax){dr=true;if(!e5){u()}var ay=[];ay[0]=az;ay[1]=aA;ay[2]=ax;gv.push(ay);f0++;if(f0>3){fQ(gv[f0-4][0],gv[f0-4][1],gv[f0-4][2],gv[f0-3][0],gv[f0-3][1],gv[f0-3][2],gv[f0-2][0],gv[f0-2][1],gv[f0-2][2],gv[f0-1][0],gv[f0-1][1],gv[f0-1][2])}};f2.prototype.curve=function(){if(arguments.length===8){ev.beginShape();ev.curveVertex(arguments[0],arguments[1]);ev.curveVertex(arguments[2],arguments[3]);ev.curveVertex(arguments[4],arguments[5]);ev.curveVertex(arguments[6],arguments[7]);ev.endShape()}};el.prototype.curve=function(){if(arguments.length===12){ev.beginShape();ev.curveVertex(arguments[0],arguments[1],arguments[2]);ev.curveVertex(arguments[3],arguments[4],arguments[5]);ev.curveVertex(arguments[6],arguments[7],arguments[8]);ev.curveVertex(arguments[9],arguments[10],arguments[11]);ev.endShape()}};ev.curveTightness=function(ax){gU=ax};ev.curveDetail=function(ax){e7=ax;u()};ev.rectMode=function(ax){gd=ax};ev.imageMode=function(ax){switch(ax){case W.CORNER:fd=gz;break;case W.CORNERS:fd=fu;break;case W.CENTER:fd=gQ;break;default:throw"Invalid imageMode"}};ev.ellipseMode=function(ax){e2=ax};ev.arc=function(aA,aC,aJ,ay,aK,aB){if(aJ<=0||aB<aK){return}if(e2===W.CORNERS){aJ=aJ-aA;ay=ay-aC}else{if(e2===W.RADIUS){aA=aA-aJ;aC=aC-ay;aJ=aJ*2;ay=ay*2}else{if(e2===W.CENTER){aA=aA-aJ/2;aC=aC-ay/2}}}while(aK<0){aK+=W.TWO_PI;aB+=W.TWO_PI}if(aB-aK>W.TWO_PI){aK=0;aB=W.TWO_PI}var az=aJ/2;var ax=ay/2;var aF=aA+az;var aH=aC+ax;var aL=0|(-0.5+(aK/W.TWO_PI)*W.SINCOS_LENGTH);var aD=0|(0.5+(aB/W.TWO_PI)*W.SINCOS_LENGTH);var aE,aG;if(gW){var aI=ec;ec=false;ev.beginShape();ev.vertex(aF,aH);for(aE=aL,aG=aL;aE<aD;aE++,aG++){if(aG>=W.SINCOS_LENGTH){aG=aG-W.SINCOS_LENGTH}ev.vertex(aF+fa[aG]*az,aH+ge[aG]*ax)}ev.endShape(W.CLOSE);ec=aI}if(ec){var aM=gW;gW=false;ev.beginShape();for(aE=aL,aG=aL;aE<aD;aE++,aG++){if(aG>=W.SINCOS_LENGTH){aG=aG-W.SINCOS_LENGTH}ev.vertex(aF+fa[aG]*az,aH+ge[aG]*ax)}aG=aD%W.SINCOS_LENGTH;ev.vertex(aF+fa[aG]*az,aH+ge[aG]*ax);ev.endShape();gW=aM}};f2.prototype.line=function(aF,ay,aG,aA){if(!ec){return}aF=ah.round(aF);aG=ah.round(aG);ay=ah.round(ay);aA=ah.round(aA);if(aF===aG&&ay===aA){ev.point(aF,ay);return}var aE=ae,ax=ae,aB=true,az=d6.array(),aD=[1,0,0,0,1,0];for(var aC=0;aC<6&&aB;aC++){aB=az[aC]===aD[aC]}if(aB){if(aF===aG){if(ay>aA){aE=ay;ay=aA;aA=aE}aA++;if(db%2===1){eH.translate(0.5,0)}}else{if(ay===aA){if(aF>aG){aE=aF;aF=aG;aG=aE}aG++;if(db%2===1){eH.translate(0,0.5)}}}if(db===1){ax=eH.lineCap;eH.lineCap="butt"}}eH.beginPath();eH.moveTo(aF||0,ay||0);eH.lineTo(aG||0,aA||0);F();if(aB){if(aF===aG&&db%2===1){eH.translate(-0.5,0)}else{if(ay===aA&&db%2===1){eH.translate(0,-0.5)}}if(db===1){eH.lineCap=ax}}};el.prototype.line=function(ax,aC,aA,ay,aE,aB){if(aE===ae||aB===ae){aB=0;aE=ay;ay=aA;aA=0}if(ax===ay&&aC===aE&&aA===aB){ev.point(ax,aC,aA);return}var aD=[ax,aC,aA,ay,aE,aB];var az=new gP();az.scale(1,-1,1);az.apply(d6.array());az.transpose();if(db>0&&ec){eH.useProgram(dn);d("model2d",dn,"model",false,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);d("view2d",dn,"view",false,az.array());a1("color2d",dn,"color",em);a7("picktype2d",dn,"picktype",0);G("vertex2d",dn,"Vertex",3,gB);d8("aTextureCoord2d",dn,"aTextureCoord");eH.bufferData(eH.ARRAY_BUFFER,new ar(aD),eH.STREAM_DRAW);eH.drawArrays(eH.LINES,0,2)}};f2.prototype.bezier=function(){if(arguments.length!==8){throw ("You must use 8 parameters for bezier() in 2D mode")}ev.beginShape();ev.vertex(arguments[0],arguments[1]);ev.bezierVertex(arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7]);ev.endShape()};el.prototype.bezier=function(){if(arguments.length!==12){throw ("You must use 12 parameters for bezier() in 3D mode")}ev.beginShape();ev.vertex(arguments[0],arguments[1],arguments[2]);ev.bezierVertex(arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11]);ev.endShape()};ev.bezierDetail=function(ax){a3=ax};ev.bezierPoint=function(ay,az,aA,aB,ax){return(1-ax)*(1-ax)*(1-ax)*ay+3*(1-ax)*(1-ax)*ax*az+3*(1-ax)*ax*ax*aA+ax*ax*ax*aB};ev.bezierTangent=function(ay,az,aA,aB,ax){return(3*ax*ax*(-ay+3*az-3*aA+aB)+6*ax*(ay-2*az+aA)+3*(-ay+az))};ev.curvePoint=function(ay,az,aA,aB,ax){return 0.5*((2*az)+(-ay+aA)*ax+(2*ay-5*az+4*aA-aB)*ax*ax+(-ay+3*az-3*aA+aB)*ax*ax*ax)};ev.curveTangent=function(ay,az,aA,aB,ax){return 0.5*((-ay+aA)+2*(2*ay-5*az+4*aA-aB)*ax+3*(-ay+3*az-3*aA+aB)*ax*ax)};ev.triangle=function(aC,aA,ay,aB,az,ax){ev.beginShape(W.TRIANGLES);ev.vertex(aC,aA,0);ev.vertex(ay,aB,0);ev.vertex(az,ax,0);ev.endShape()};ev.quad=function(aC,aA,aE,aB,ay,aD,az,ax){ev.beginShape(W.QUADS);ev.vertex(aC,aA,0);ev.vertex(aE,aB,0);ev.vertex(ay,aD,0);ev.vertex(az,ax,0);ev.endShape()};var f7=function(aA,aB,aG,az,ax,aC,ay,aF){if(aF===ae){aC=ax;ay=ax;aF=ax}var aE=aG/2,aD=az/2;if(ax>aE||ax>aD){ax=ah.min(aE,aD)}if(aC>aE||aC>aD){aC=ah.min(aE,aD)}if(ay>aE||ay>aD){ay=ah.min(aE,aD)}if(aF>aE||aF>aD){aF=ah.min(aE,aD)}if(!gW||ec){eH.translate(0.5,0.5)}eH.beginPath();eH.moveTo(aA+ax,aB);eH.lineTo(aA+aG-aC,aB);eH.quadraticCurveTo(aA+aG,aB,aA+aG,aB+aC);eH.lineTo(aA+aG,aB+az-ay);eH.quadraticCurveTo(aA+aG,aB+az,aA+aG-ay,aB+az);eH.lineTo(aA+aF,aB+az);eH.quadraticCurveTo(aA,aB+az,aA,aB+az-aF);eH.lineTo(aA,aB+ax);eH.quadraticCurveTo(aA,aB,aA+ax,aB);if(!gW||ec){eH.translate(-0.5,-0.5)}e3();F()};f2.prototype.rect=function(ay,aA,aD,az,ax,aC,aE,aB){if(!aD&&!az){return}if(gd===W.CORNERS){aD-=ay;az-=aA}if(gd===W.RADIUS){aD*=2;az*=2}if(gd===W.CENTER||gd===W.RADIUS){ay-=aD/2;aA-=az/2}ay=ah.round(ay);aA=ah.round(aA);aD=ah.round(aD);az=ah.round(az);if(ax!==ae){f7(ay,aA,aD,az,ax,aC,aE,aB);return}if(ec&&db%2===1){eH.translate(0.5,0.5)}eH.beginPath();eH.rect(ay,aA,aD,az);e3();F();if(ec&&db%2===1){eH.translate(-0.5,-0.5)}};el.prototype.rect=function(aB,aC,aJ,az,ax,aE,ay,aI){if(ax!==ae){throw"rect() with rounded corners is not supported in 3D mode"}var aF=new gP();aF.translate(aB,aC,0);aF.scale(aJ,az,1);aF.transpose();var aD=new gP();aD.scale(1,-1,1);aD.apply(d6.array());aD.transpose();if(db>0&&ec){eH.useProgram(dn);d("model2d",dn,"model",false,aF.array());d("view2d",dn,"view",false,aD.array());a1("color2d",dn,"color",em);a7("picktype2d",dn,"picktype",0);G("vertex2d",dn,"Vertex",3,g1);d8("aTextureCoord2d",dn,"aTextureCoord");eH.drawArrays(eH.LINE_LOOP,0,f8.length/3)}if(gW){eH.useProgram(o);d("model3d",o,"model",false,aF.array());d("view3d",o,"view",false,aD.array());eH.enable(eH.POLYGON_OFFSET_FILL);eH.polygonOffset(1,1);a1("color3d",o,"color",e1);if(dx>0){var aA=new gP();aA.set(aD);var aH=new gP();aH.set(aF);aA.mult(aH);var aG=new gP();aG.set(aA);aG.invert();aG.transpose();d("normalTransform3d",o,"normalTransform",false,aG.array());G("normal3d",o,"Normal",3,gN)}else{d8("normal3d",o,"Normal")}G("vertex3d",o,"Vertex",3,g1);eH.drawArrays(eH.TRIANGLE_FAN,0,f8.length/3);eH.disable(eH.POLYGON_OFFSET_FILL)}};t.prototype.ellipse=function(ay,aA,ax,az){ay=ay||0;aA=aA||0;if(ax<=0&&az<=0){return}if(e2===W.RADIUS){ax*=2;az*=2}if(e2===W.CORNERS){ax=ax-ay;az=az-aA}if(e2===W.CORNER||e2===W.CORNERS){ay+=ax/2;aA+=az/2}return{x:ay,y:aA,width:ax,height:az}};f2.prototype.ellipse=function(az,aA,aG,ax){var aD=t.prototype.ellipse.apply(this,arguments),aB=0;if(!aD){return}az=aD.x;aA=aD.y;aG=aD.width;ax=aD.height;if(aG===ax){eH.beginPath();eH.arc(az-aB,aA-aB,aG/2,0,W.TWO_PI,false);e3();F();eH.closePath()}else{var ay=aG/2,aC=ax/2,aH=0.5522847498307933;var aE=aH*ay,aF=aH*aC;ev.beginShape();ev.vertex(az+ay,aA);ev.bezierVertex(az+ay,aA-aF,az+aE,aA-aC,az,aA-aC);ev.bezierVertex(az-aE,aA-aC,az-ay,aA-aF,az-ay,aA);ev.bezierVertex(az-ay,aA+aF,az-aE,aA+aC,az,aA+aC);ev.bezierVertex(az+aE,aA+aC,az+ay,aA+aF,az+ay,aA);ev.endShape()}};el.prototype.ellipse=function(aL,aM,aE,aF){var ay=t.prototype.ellipse.apply(this,arguments),aN=0;if(!ay){return}aL=ay.x;aM=ay.y;aE=ay.width;aF=ay.height;var aK=aE/2,aB=aF/2,aG=0.5522847498307933;var aH=aG*aK,aJ=aG*aB;ev.beginShape();ev.vertex(aL+aK,aM);ev.bezierVertex(aL+aK,aM-aJ,0,aL+aH,aM-aB,0,aL,aM-aB,0);ev.bezierVertex(aL-aH,aM-aB,0,aL-aK,aM-aJ,0,aL-aK,aM,0);ev.bezierVertex(aL-aK,aM+aJ,0,aL-aH,aM+aB,0,aL,aM+aB,0);ev.bezierVertex(aL+aH,aM+aB,0,aL+aK,aM+aJ,0,aL+aK,aM,0);ev.endShape();if(gW){var ax=0,aI=0,aC,aD;for(aC=0;aC<b.length;aC++){ax+=b[aC][0];aI+=b[aC][1]}ax/=b.length;aI/=b.length;var aA=[],az=[],aO=[];aA[0]=ax;aA[1]=aI;aA[2]=0;aA[3]=0;aA[4]=0;aA[5]=e1[0];aA[6]=e1[1];aA[7]=e1[2];aA[8]=e1[3];aA[9]=em[0];aA[10]=em[1];aA[11]=em[2];aA[12]=em[3];aA[13]=e;aA[14]=f;aA[15]=g;b.unshift(aA);for(aC=0;aC<b.length;aC++){for(aD=0;aD<3;aD++){az.push(b[aC][aD])}for(aD=5;aD<9;aD++){aO.push(b[aC][aD])}}x(az,"TRIANGLE_FAN",aO)}};ev.normal=function(az,ax,ay){if(arguments.length!==3||!(typeof az==="number"&&typeof ax==="number"&&typeof ay==="number")){throw"normal() requires three numeric arguments."}e=az;f=ax;g=ay;if(dm!==0){if(gt===W.NORMAL_MODE_AUTO){gt=W.NORMAL_MODE_SHAPE}else{if(gt===W.NORMAL_MODE_SHAPE){gt=W.NORMAL_MODE_VERTEX}}}};ev.save=function(ax,ay){if(ay!==ae){return U.open(ay.toDataURL(),"_blank")}return U.open(ev.externals.canvas.toDataURL(),"_blank")};var a6=0;ev.saveFrame=function(ay){if(ay===ae){ay="screen-####.png"}var ax=ay.replace(/#+/,function(aA){var az=""+(a6++);while(az.length<aA.length){az="0"+az}return az});ev.save(ax)};var ef=at.createElement("canvas").getContext("2d");var eI=[ae,ae,ae];function er(aA,ay,aB){var aE=eI.shift();if(aE===ae){aE={};aE.canvas=at.createElement("canvas");aE.context=aE.canvas.getContext("2d")}eI.push(aE);var ax=aE.canvas,aD=aE.context,aC=ay||aA.width,az=aB||aA.height;ax.width=aC;ax.height=az;if(!aA){aD.clearRect(0,0,aC,az)}else{if("data" in aA){aD.putImageData(aA,0,0)}else{aD.clearRect(0,0,aC,az);aD.drawImage(aA,0,0,aC,az)}}return aE}function fw(ax){return{getLength:(function(ay){return function(){if(ay.isRemote){throw"Image is loaded remotely. Cannot get length."}else{return ay.imageData.data.length?ay.imageData.data.length/4:0}}}(ax)),getPixel:(function(ay){return function(az){var aA=az*4,aB=ay.imageData.data;if(ay.isRemote){throw"Image is loaded remotely. Cannot get pixels."}return(aB[aA+3]<<24)&W.ALPHA_MASK|(aB[aA]<<16)&W.RED_MASK|(aB[aA+1]<<8)&W.GREEN_MASK|aB[aA+2]&W.BLUE_MASK}}(ax)),setPixel:(function(ay){return function(az,aA){var aB=az*4,aC=ay.imageData.data;if(ay.isRemote){throw"Image is loaded remotely. Cannot set pixel."}aC[aB+0]=(aA&W.RED_MASK)>>>16;aC[aB+1]=(aA&W.GREEN_MASK)>>>8;aC[aB+2]=(aA&W.BLUE_MASK);aC[aB+3]=(aA&W.ALPHA_MASK)>>>24;ay.__isDirty=true}}(ax)),toArray:(function(ay){return function(){var az=[],aB=ay.imageData.data,aC=ay.width*ay.height;if(ay.isRemote){throw"Image is loaded remotely. Cannot get pixels."}for(var aD=0,aA=0;aD<aC;aD++,aA+=4){az.push((aB[aA+3]<<24)&W.ALPHA_MASK|(aB[aA]<<16)&W.RED_MASK|(aB[aA+1]<<8)&W.GREEN_MASK|aB[aA+2]&W.BLUE_MASK)}return az}}(ax)),set:(function(ay){return function(az){var aB,aC,aA;if(this.isRemote){throw"Image is loaded remotely. Cannot set pixels."}aC=ay.imageData.data;for(var aE=0,aD=az.length;aE<aD;aE++){aA=az[aE];aB=aE*4;aC[aB+0]=(aA&W.RED_MASK)>>>16;aC[aB+1]=(aA&W.GREEN_MASK)>>>8;aC[aB+2]=(aA&W.BLUE_MASK);aC[aB+3]=(aA&W.ALPHA_MASK)>>>24}ay.__isDirty=true}}(ax))}}var fl=function(aE,aB,aD){this.__isDirty=false;if(aE instanceof HTMLImageElement){this.fromHTMLImageData(aE)}else{if(aB||aD){this.width=aE||1;this.height=aB||1;var ay=this.sourceImg=at.createElement("canvas");ay.width=this.width;ay.height=this.height;var aA=this.imageData=ay.getContext("2d").createImageData(this.width,this.height);this.format=(aD===W.ARGB||aD===W.ALPHA)?aD:W.RGB;if(this.format===W.RGB){for(var ax=3,aC=this.imageData.data,az=aC.length;ax<az;ax+=4){aC[ax]=255}}this.__isDirty=true;this.updatePixels()}else{this.width=0;this.height=0;this.imageData=ef.createImageData(1,1);this.format=W.ARGB}}this.pixels=fw(this)};fl.prototype={updatePixels:function(){var ax=this.sourceImg;if(ax&&ax instanceof HTMLCanvasElement&&this.__isDirty){ax.getContext("2d").putImageData(this.imageData,0,0)}this.__isDirty=false},fromHTMLImageData:function(az){var ay=er(az);try{var aA=ay.context.getImageData(0,0,az.width,az.height);this.fromImageData(aA)}catch(ax){if(az.width&&az.height){this.isRemote=true;this.width=az.width;this.height=az.height}}this.sourceImg=az},get:function(az,aA,ay,ax){if(!arguments.length){return ev.get(this)}if(arguments.length===2){return ev.get(az,aA,this)}if(arguments.length===4){return ev.get(az,aA,ay,ax,this)}},set:function(az,ax,ay){ev.set(az,ax,ay,this);this.__isDirty=true},blend:function(ay,aC,aD,aF,aA,ax,az,aB,aG,aE){if(arguments.length===9){ev.blend(this,ay,aC,aD,aF,aA,ax,az,aB,aG,this)}else{if(arguments.length===10){ev.blend(ay,aC,aD,aF,aA,ax,az,aB,aG,aE,this)}}delete this.sourceImg},copy:function(ay,aB,aC,aD,aE,ax,az,aA,aF){if(arguments.length===8){ev.blend(this,ay,aB,aC,aD,aE,ax,az,aA,W.REPLACE,this)}else{if(arguments.length===9){ev.blend(ay,aB,aC,aD,aE,ax,az,aA,aF,W.REPLACE,this)}}delete this.sourceImg},filter:function(ax,ay){if(arguments.length===2){ev.filter(ax,ay,this)}else{if(arguments.length===1){ev.filter(ax,null,this)}}delete this.sourceImg},save:function(ax){ev.save(ax,this)},resize:function(az,ax){if(this.isRemote){throw"Image is loaded remotely. Cannot resize."}if(this.width!==0||this.height!==0){if(az===0&&ax!==0){az=ah.floor(this.width/this.height*ax)}else{if(ax===0&&az!==0){ax=ah.floor(this.height/this.width*az)}}var ay=er(this.imageData).canvas;var aA=er(ay,az,ax).context.getImageData(0,0,az,ax);this.fromImageData(aA)}},mask:function(ax){this.__mask=ae;if(ax instanceof fl){if(ax.width===this.width&&ax.height===this.height){this.__mask=ax}else{throw"mask must have the same dimensions as PImage."}}else{if(ax instanceof Array){if(this.pixels.length===ax.length){this.__mask=ax}else{throw"mask array must be the same length as PImage pixels array."}}}},loadPixels:R,toImageData:function(){if(this.isRemote){return this.sourceImg}var ax=er(this.imageData);return ax.context.getImageData(0,0,this.width,this.height)},toDataURL:function(){if(this.isRemote){throw"Image is loaded remotely. Cannot create dataURI."}var ax=er(this.imageData);return ax.canvas.toDataURL()},fromImageData:function(aA){var ay=aA.width,aB=aA.height,ax=at.createElement("canvas"),az=ax.getContext("2d");this.width=ax.width=ay;this.height=ax.height=aB;az.putImageData(aA,0,0);this.format=W.ARGB;this.imageData=aA;this.sourceImg=ax}};ev.PImage=fl;ev.createImage=function(az,ay,ax){return new fl(az,ay,ax)};ev.loadImage=function(ay,ax,aA){if(ax){ay=ay+"."+ax}var aB;if(eR.imageCache.images[ay]){aB=new fl(eR.imageCache.images[ay]);aB.loaded=true;return aB}aB=new fl();var az=at.createElement("img");aB.sourceImg=az;az.onload=(function(aD,aF,aG){var aC=aD;var aE=aF;var aH=aG;return function(){aE.fromHTMLImageData(aC);aE.loaded=true;if(aH){aH()}}}(az,aB,aA));az.src=ay;return aB};ev.requestImage=ev.loadImage;function fy(){var ax=new fl(ev.width,ev.height,W.RGB);ax.fromImageData(eH.getImageData(0,0,ev.width,ev.height));return ax}function fE(az,aA){var ay;if(az<ev.width&&az>=0&&aA>=0&&aA<ev.height){if(de){var ax=((0|az)+ev.width*(0|aA))*4;ay=ev.imageData.data;return ev.color.toInt(ay[ax],ay[ax+1],ay[ax+2],ay[ax+3])}ay=eH.getImageData(0|az,0|aA,1,1).data;return ev.color.toInt(ay[0],ay[1],ay[2],ay[3])}return 0}function fH(az,aA,ay){if(ay.isRemote){throw"Image is loaded remotely. Cannot get x,y."}var ax=aA*ay.width*4+(az*4);return ev.color.toInt(ay.imageData.data[ax],ay.imageData.data[ax+1],ay.imageData.data[ax+2],ay.imageData.data[ax+3])}function fM(az,aA,ay,ax){var aB=new fl(ay,ax,W.RGB);aB.fromImageData(eH.getImageData(az,aA,ay,ax));return aB}function fP(aJ,aK,aI,aD,ax){if(ax.isRemote){throw"Image is loaded remotely. Cannot get x,y,w,h."}var az=new fl(aI,aD,W.RGB),aM=az.imageData.data,aL=ax.width,aC=ax.height,aA=ax.imageData.data;var aO=ah.max(0,-aK),aN=ah.max(0,-aJ),aH=ah.min(aD,aC-aK),aG=ah.min(aI,aL-aJ);for(var aE=aO;aE<aH;++aE){var aB=((aK+aE)*aL+(aJ+aN))*4;var ay=(aE*aI+aN)*4;for(var aF=aN;aF<aG;++aF){aM[ay++]=aA[aB++];aM[ay++]=aA[aB++];aM[ay++]=aA[aB++];aM[ay++]=aA[aB++]}}az.__isDirty=true;return az}ev.get=function(az,aA,ay,aB,ax){if(arguments.length===2){return fE(az,aA)}if(arguments.length===0){return fy()}if(arguments.length===5){return fP(az,aA,ay,aB,ax)}if(arguments.length===4){return fM(az,aA,ay,aB)}if(arguments.length===3){return fH(az,aA,ay)}if(arguments.length===1){return az}};ev.createGraphics=function(az,ax,ay){var aA=new S();aA.size(az,ax,ay);return aA};function eY(){if(de){eH=f9;de=false;ev.updatePixels()}}function df(){function ay(aA,aC){function aB(){eY();eH[aC].apply(eH,arguments)}aA[aC]=aB}function az(aA,aC){function aD(){eY();return eH[aC]}function aB(aE){eY();eH[aC]=aE}ev.defineProperty(aA,aC,{get:aD,set:aB})}for(var ax in eH){if(typeof eH[ax]==="function"){ay(this,ax)}else{az(this,ax)}}}function fs(){if(de){return}ev.loadPixels();if(dp===null){f9=eH;dp=new df()}de=true;eH=dp;J=0}function et(az,ax,ay){if(az<ev.width&&az>=0&&ax>=0&&ax<ev.height){fs();ev.pixels.setPixel((0|az)+ev.width*(0|ax),ay);if(++J>fA){eY()}}}function eB(az,aA,aD,ay){if(ay.isRemote){throw"Image is loaded remotely. Cannot set x,y."}var aB=ev.color.toArray(aD);var aC=aA*ay.width*4+(az*4);var ax=ay.imageData.data;ax[aC]=aB[0];ax[aC+1]=aB[1];ax[aC+2]=aB[2];ax[aC+3]=aB[3]}ev.set=function(az,aA,aC,ax){var ay,aB;if(arguments.length===3){if(typeof aC==="number"){et(az,aA,aC)}else{if(aC instanceof fl){ev.image(aC,az,aA)}}}else{if(arguments.length===4){eB(az,aA,aC,ax)}}};ev.imageData={};ev.pixels={getLength:function(){return ev.imageData.data.length?ev.imageData.data.length/4:0},getPixel:function(az){var ax=az*4,ay=ev.imageData.data;return(ay[ax+3]<<24)&4278190080|(ay[ax+0]<<16)&16711680|(ay[ax+1]<<8)&65280|ay[ax+2]&255},setPixel:function(az,aA){var ax=az*4,ay=ev.imageData.data;ay[ax+0]=(aA&16711680)>>>16;ay[ax+1]=(aA&65280)>>>8;ay[ax+2]=(aA&255);ay[ax+3]=(aA&4278190080)>>>24},toArray:function(){var az=[],ax=ev.imageData.width*ev.imageData.height,aB=ev.imageData.data;for(var ay=0,aA=0;ay<ax;ay++,aA+=4){az.push((aB[aA+3]<<24)&4278190080|(aB[aA+0]<<16)&16711680|(aB[aA+1]<<8)&65280|aB[aA+2]&255)}return az},set:function(az){for(var ay=0,ax=az.length;ay<ax;ay++){this.setPixel(ay,az[ay])}}};ev.loadPixels=function(){ev.imageData=cy.$ensureContext().getImageData(0,0,ev.width,ev.height)};ev.updatePixels=function(){if(ev.imageData){cy.$ensureContext().putImageData(ev.imageData,0,0)}};ev.hint=function(ax){var ay=cy.$ensureContext();if(ax===W.DISABLE_DEPTH_TEST){ay.disable(ay.DEPTH_TEST);ay.depthMask(false);ay.clear(ay.DEPTH_BUFFER_BIT)}else{if(ax===W.ENABLE_DEPTH_TEST){ay.enable(ay.DEPTH_TEST);ay.depthMask(true)}}};var gr=function(aB,ax,ay,az){var aA;if(aB instanceof fl){aA=aB;if(!aA.loaded){throw"Error using image in background(): PImage not loaded."}if(aA.width!==ev.width||aA.height!==ev.height){throw"Background image must be the same dimensions as the canvas."}}else{aA=ev.color(aB,ax,ay,az)}i=aA};f2.prototype.background=function(aA,ax,ay,az){if(aA!==ae){gr(aA,ax,ay,az)}if(i instanceof fl){gZ();eH.setTransform(1,0,0,1,0,0);ev.image(i,0,0);eV()}else{gZ();eH.setTransform(1,0,0,1,0,0);if(ev.alpha(i)!==fT){eH.clearRect(0,0,ev.width,ev.height)}eH.fillStyle=ev.color.toString(i);eH.fillRect(0,0,ev.width,ev.height);fU=true;eV()}};el.prototype.background=function(aB,ax,ay,az){if(arguments.length>0){gr(aB,ax,ay,az)}var aA=ev.color.toGLArray(i);eH.clearColor(aA[0],aA[1],aA[2],aA[3]);eH.clear(eH.COLOR_BUFFER_BIT|eH.DEPTH_BUFFER_BIT)};f2.prototype.image=function(aG,aA,aC,az,aE){aA=ah.round(aA);aC=ah.round(aC);if(aG.width>0){var ax=az||aG.width;var aB=aE||aG.height;var aK=fd(aA||0,aC||0,az||aG.width,aE||aG.height,arguments.length<4);var aD=!!aG.sourceImg&&fr===null&&!aG.__mask;if(aD){var aJ=aG.sourceImg;if(aG.__isDirty){aG.updatePixels()}eH.drawImage(aJ,0,0,aJ.width,aJ.height,aK.x,aK.y,aK.w,aK.h)}else{var aH=aG.toImageData();if(aG.__mask){var aI,ay;if(aG.__mask instanceof fl){var aF=aG.__mask.toImageData();for(aI=2,ay=aG.width*aG.height*4;aI<ay;aI+=4){aH.data[aI+1]=aF.data[aI]}}else{for(aI=0,ay=aG.__mask.length;aI<ay;++aI){aH.data[(aI<<2)+3]=aG.__mask[aI]}}}if(fr!==null){fr(aH)}eH.drawImage(er(aH).canvas,0,0,aG.width,aG.height,aK.x,aK.y,aK.w,aK.h)}}};el.prototype.image=function(ax,az,aA,ay,aB){if(ax.width>0){az=ah.round(az);aA=ah.round(aA);ay=ay||ax.width;aB=aB||ax.height;ev.beginShape(ev.QUADS);ev.texture(ax);ev.vertex(az,aA,0,0,0);ev.vertex(az,aA+aB,0,0,aB);ev.vertex(az+ay,aA+aB,0,ay,aB);ev.vertex(az+ay,aA,0,ay,0);ev.endShape()}};ev.tint=function(aE,ay,aA){var aB=ev.color(aE,ay,aA);var aC=ev.red(aB)/gh;var aD=ev.green(aB)/gk;var az=ev.blue(aB)/gn;var ax=ev.alpha(aB)/fT;fr=function(aH){var aI=aH.data,aF=4*aH.width*aH.height;for(var aG=0;aG<aF;){aI[aG++]*=aC;aI[aG++]*=aD;aI[aG++]*=az;aI[aG++]*=ax}};ey=function(aF){for(var aG=0;aG<aF.length;){aF[aG++]=aC;aF[aG++]=aD;aF[aG++]=az;aF[aG++]=ax}}};ev.noTint=function(){fr=null;ey=null};ev.copy=function(aF,aA,aB,az,aD,ax,ay,aE,aC){if(arguments.length===8){aC=aE;aE=ay;ay=ax;ax=aD;aD=az;az=aB;aB=aA;aA=aF;aF=ev}ev.blend(aF,aA,aB,az,aD,ax,ay,aE,aC,W.REPLACE)};ev.blend=function(aM,aC,aD,az,aH,ax,ay,aL,aF,aG,aJ){if(arguments.length===9){aG=aF;aF=aL;aL=ay;ay=ax;ax=aH;aH=az;az=aD;aD=aC;aC=aM;aM=ev}var aK=aC+az;var aE=aD+aH;var aA=ax+aL;var aI=ay+aF;var aB;if(aM.isRemote){throw"Image is loaded remotely. Cannot blend image."}if(arguments.length===10||arguments.length===9){ev.loadPixels();aB=ev}else{if(arguments.length===11&&aJ&&aJ.imageData){aB=aJ}}if(aM===ev){if(ev.intersect(aC,aD,aK,aE,ax,ay,aA,aI)){ev.blit_resize(ev.get(aC,aD,aK-aC,aE-aD),0,0,aK-aC-1,aE-aD-1,aB.imageData.data,aB.width,aB.height,ax,ay,aA,aI,aG)}else{ev.blit_resize(aM,aC,aD,aK,aE,aB.imageData.data,aB.width,aB.height,ax,ay,aA,aI,aG)}}else{aM.loadPixels();ev.blit_resize(aM,aC,aD,aK,aE,aB.imageData.data,aB.width,aB.height,ax,ay,aA,aI,aG)}if(arguments.length===10){ev.updatePixels()}};var eX=function(aD){var aA=ev.floor(aD*3.5),ax,ay;aA=(aA<1)?1:((aA<248)?aA:248);if(ev.shared.blurRadius!==aA){ev.shared.blurRadius=aA;ev.shared.blurKernelSize=1+(ev.shared.blurRadius<<1);ev.shared.blurKernel=new ar(ev.shared.blurKernelSize);var aB=ev.shared.blurKernel;var aC=ev.shared.blurKernelSize;var aE=ev.shared.blurRadius;for(ax=0;ax<aC;ax++){aB[ax]=0}var az=(aA-1)*(aA-1);for(ax=1;ax<aA;ax++){aB[aA+ax]=aB[ay]=az}aB[aA]=aA*aA}};var gC=function(aB,a9){var aQ,aK,aE,az,ay,aR,ax;var aY,aC,aT,aV,aA;var aH=a9.pixels.getLength();var aZ=new ar(aH);var aM=new ar(aH);var aI=new ar(aH);var aN=new ar(aH);var aP=0;var aF,aG,aW,aL;eX(aB);var aS=a9.height;var aU=a9.width;var aX=ev.shared.blurKernelSize;var aD=ev.shared.blurRadius;var aJ=ev.shared.blurKernel;var aO=a9.imageData.data;for(aG=0;aG<aS;aG++){for(aF=0;aF<aU;aF++){az=aE=aK=ay=aQ=0;aY=aF-aD;if(aY<0){aA=-aY;aY=0}else{if(aY>=aU){break}aA=0}for(aW=aA;aW<aX;aW++){if(aY>=aU){break}aL=(aY+aP)*4;ax=aJ[aW];ay+=ax*aO[aL+3];aK+=ax*aO[aL];aE+=ax*aO[aL+1];az+=ax*aO[aL+2];aQ+=ax;aY++}aC=aP+aF;aN[aC]=ay/aQ;aZ[aC]=aK/aQ;aM[aC]=aE/aQ;aI[aC]=az/aQ}aP+=aU}aP=0;aT=-aD;aV=aT*aU;for(aG=0;aG<aS;aG++){for(aF=0;aF<aU;aF++){az=aE=aK=ay=aQ=0;if(aT<0){aA=aC=-aT;aY=aF}else{if(aT>=aS){break}aA=0;aC=aT;aY=aF+aV}for(aW=aA;aW<aX;aW++){if(aC>=aS){break}ax=aJ[aW];ay+=ax*aN[aY];aK+=ax*aZ[aY];aE+=ax*aM[aY];az+=ax*aI[aY];aQ+=ax;aC++;aY+=aU}aL=(aF+aP)*4;aO[aL]=aK/aQ;aO[aL+1]=aE/aQ;aO[aL+2]=az/aQ;aO[aL+3]=ay/aQ}aP+=aU;aV+=aU;aT++}};var d9=function(ay,aE){var aI=0;var aQ=aE.pixels.getLength();var aD=new N(aQ);var aA,aO,aF,aG,aM;var az,aL,aJ,aH,aN,aC,aR,aP,ax,aK,aS,aB;if(!ay){while(aI<aQ){aA=aI;aO=aI+aE.width;while(aI<aO){aF=aG=aE.pixels.getPixel(aI);aL=aI-1;az=aI+1;aJ=aI-aE.width;aH=aI+aE.width;if(aL<aA){aL=aI}if(az>=aO){az=aI}if(aJ<0){aJ=0}if(aH>=aQ){aH=aI}aR=aE.pixels.getPixel(aJ);aC=aE.pixels.getPixel(aL);aP=aE.pixels.getPixel(aH);aN=aE.pixels.getPixel(az);aM=77*(aF>>16&255)+151*(aF>>8&255)+28*(aF&255);aK=77*(aC>>16&255)+151*(aC>>8&255)+28*(aC&255);ax=77*(aN>>16&255)+151*(aN>>8&255)+28*(aN&255);aS=77*(aR>>16&255)+151*(aR>>8&255)+28*(aR&255);aB=77*(aP>>16&255)+151*(aP>>8&255)+28*(aP&255);if(aK>aM){aG=aC;aM=aK}if(ax>aM){aG=aN;aM=ax}if(aS>aM){aG=aR;aM=aS}if(aB>aM){aG=aP;aM=aB}aD[aI++]=aG}}}else{while(aI<aQ){aA=aI;aO=aI+aE.width;while(aI<aO){aF=aG=aE.pixels.getPixel(aI);aL=aI-1;az=aI+1;aJ=aI-aE.width;aH=aI+aE.width;if(aL<aA){aL=aI}if(az>=aO){az=aI}if(aJ<0){aJ=0}if(aH>=aQ){aH=aI}aR=aE.pixels.getPixel(aJ);aC=aE.pixels.getPixel(aL);aP=aE.pixels.getPixel(aH);aN=aE.pixels.getPixel(az);aM=77*(aF>>16&255)+151*(aF>>8&255)+28*(aF&255);aK=77*(aC>>16&255)+151*(aC>>8&255)+28*(aC&255);ax=77*(aN>>16&255)+151*(aN>>8&255)+28*(aN&255);aS=77*(aR>>16&255)+151*(aR>>8&255)+28*(aR&255);aB=77*(aP>>16&255)+151*(aP>>8&255)+28*(aP&255);if(aK<aM){aG=aC;aM=aK}if(ax<aM){aG=aN;aM=ax}if(aS<aM){aG=aR;aM=aS}if(aB<aM){aG=aP;aM=aB}aD[aI++]=aG}}}aE.pixels.set(aD)};ev.filter=function(aF,aG,aJ){var aC,aH,aL,aD;if(arguments.length===3){aJ.loadPixels();aC=aJ}else{ev.loadPixels();aC=ev}if(aG===ae){aG=null}if(aC.isRemote){throw"Image is loaded remotely. Cannot filter image."}var aB=aC.pixels.getLength();switch(aF){case W.BLUR:var aA=aG||1;gC(aA,aC);break;case W.GRAY:if(aC.format===W.ALPHA){for(aD=0;aD<aB;aD++){aH=255-aC.pixels.getPixel(aD);aC.pixels.setPixel(aD,(4278190080|(aH<<16)|(aH<<8)|aH))}aC.format=W.RGB}else{for(aD=0;aD<aB;aD++){aH=aC.pixels.getPixel(aD);aL=(77*(aH>>16&255)+151*(aH>>8&255)+28*(aH&255))>>8;aC.pixels.setPixel(aD,((aH&W.ALPHA_MASK)|aL<<16|aL<<8|aL))}}break;case W.INVERT:for(aD=0;aD<aB;aD++){aC.pixels.setPixel(aD,(aC.pixels.getPixel(aD)^16777215))}break;case W.POSTERIZE:if(aG===null){throw"Use filter(POSTERIZE, int levels) instead of filter(POSTERIZE)"}var ax=ev.floor(aG);if((ax<2)||(ax>255)){throw"Levels must be between 2 and 255 for filter(POSTERIZE, levels)"}var aE=ax-1;for(aD=0;aD<aB;aD++){var aM=(aC.pixels.getPixel(aD)>>16)&255;var az=(aC.pixels.getPixel(aD)>>8)&255;var aK=aC.pixels.getPixel(aD)&255;aM=(((aM*ax)>>8)*255)/aE;az=(((az*ax)>>8)*255)/aE;aK=(((aK*ax)>>8)*255)/aE;aC.pixels.setPixel(aD,((4278190080&aC.pixels.getPixel(aD))|(aM<<16)|(az<<8)|aK))}break;case W.OPAQUE:for(aD=0;aD<aB;aD++){aC.pixels.setPixel(aD,(aC.pixels.getPixel(aD)|4278190080))}aC.format=W.RGB;break;case W.THRESHOLD:if(aG===null){aG=0.5}if((aG<0)||(aG>1)){throw"Level must be between 0 and 1 for filter(THRESHOLD, level)"}var aI=ev.floor(aG*255);for(aD=0;aD<aB;aD++){var ay=ev.max((aC.pixels.getPixel(aD)&W.RED_MASK)>>16,ev.max((aC.pixels.getPixel(aD)&W.GREEN_MASK)>>8,(aC.pixels.getPixel(aD)&W.BLUE_MASK)));aC.pixels.setPixel(aD,((aC.pixels.getPixel(aD)&W.ALPHA_MASK)|((ay<aI)?0:16777215)))}break;case W.ERODE:d9(true,aC);break;case W.DILATE:d9(false,aC);break}aC.updatePixels()};ev.shared={fracU:0,ifU:0,fracV:0,ifV:0,u1:0,u2:0,v1:0,v2:0,sX:0,sY:0,iw:0,iw1:0,ih1:0,ul:0,ll:0,ur:0,lr:0,cUL:0,cLL:0,cUR:0,cLR:0,srcXOffset:0,srcYOffset:0,r:0,g:0,b:0,a:0,srcBuffer:null,blurRadius:0,blurKernelSize:0,blurKernel:null};ev.intersect=function(aI,aB,aJ,aC,ax,aE,ay,aF){var az=aJ-aI+1;var aG=aC-aB+1;var aK=ay-ax+1;var aD=aF-aE+1;if(ax<aI){aK+=ax-aI;if(aK>az){aK=az}}else{var aA=az+aI-ax;if(aK>aA){aK=aA}}if(aE<aB){aD+=aE-aB;if(aD>aG){aD=aG}}else{var aH=aG+aB-aE;if(aD>aH){aD=aH}}return !(aK<=0||aD<=0)};var dj={};dj[W.BLEND]=ev.modes.blend;dj[W.ADD]=ev.modes.add;dj[W.SUBTRACT]=ev.modes.subtract;dj[W.LIGHTEST]=ev.modes.lightest;dj[W.DARKEST]=ev.modes.darkest;dj[W.REPLACE]=ev.modes.replace;dj[W.DIFFERENCE]=ev.modes.difference;dj[W.EXCLUSION]=ev.modes.exclusion;dj[W.MULTIPLY]=ev.modes.multiply;dj[W.SCREEN]=ev.modes.screen;dj[W.OVERLAY]=ev.modes.overlay;dj[W.HARD_LIGHT]=ev.modes.hard_light;dj[W.SOFT_LIGHT]=ev.modes.soft_light;dj[W.DODGE]=ev.modes.dodge;dj[W.BURN]=ev.modes.burn;ev.blit_resize=function(bf,aU,a9,aV,ba,aL,bj,bb,aW,be,aX,bg,bd){var aO,aQ;if(aU<0){aU=0}if(a9<0){a9=0}if(aV>=bf.width){aV=bf.width-1}if(ba>=bf.height){ba=bf.height-1}var aH=aV-aU;var aC=ba-a9;var aT=aX-aW;var bi=bg-be;if(aT<=0||bi<=0||aH<=0||aC<=0||aW>=bj||be>=bb||aU>=bf.width||a9>=bf.height){return}var bl=ah.floor(aH/aT*W.PRECISIONF);var ay=ah.floor(aC/bi*W.PRECISIONF);var aJ=ev.shared;aJ.srcXOffset=ah.floor(aW<0?-aW*bl:aU*W.PRECISIONF);aJ.srcYOffset=ah.floor(be<0?-be*ay:a9*W.PRECISIONF);if(aW<0){aT+=aW;aW=0}if(be<0){bi+=be;be=0}aT=ah.min(aT,bj-aW);bi=ah.min(bi,bb-be);var aZ=be*bj+aW;var az;aJ.srcBuffer=bf.imageData.data;aJ.iw=bf.width;aJ.iw1=bf.width-1;aJ.ih1=bf.height-1;var aY=ev.filter_bilinear,aF=ev.filter_new_scanline,bk=dj[bd],aI,aD,aK,aG,aP,aN,aS=W.ALPHA_MASK,aE=W.RED_MASK,aR=W.GREEN_MASK,bm=W.BLUE_MASK,aA=W.PREC_MAXVAL,aM=W.PRECISIONB,bh=W.PREC_RED_SHIFT,bc=W.PREC_ALPHA_SHIFT,ax=aJ.srcBuffer,aB=ah.min;for(aQ=0;aQ<bi;aQ++){aJ.sX=aJ.srcXOffset;aJ.fracV=aJ.srcYOffset&aA;aJ.ifV=aA-aJ.fracV;aJ.v1=(aJ.srcYOffset>>aM)*aJ.iw;aJ.v2=aB((aJ.srcYOffset>>aM)+1,aJ.ih1)*aJ.iw;for(aO=0;aO<aT;aO++){aD=(aZ+aO)*4;az=(aL[aD+3]<<24)&aS|(aL[aD]<<16)&aE|(aL[aD+1]<<8)&aR|aL[aD+2]&bm;aJ.fracU=aJ.sX&aA;aJ.ifU=aA-aJ.fracU;aJ.ul=(aJ.ifU*aJ.ifV)>>aM;aJ.ll=(aJ.ifU*aJ.fracV)>>aM;aJ.ur=(aJ.fracU*aJ.ifV)>>aM;aJ.lr=(aJ.fracU*aJ.fracV)>>aM;aJ.u1=(aJ.sX>>aM);aJ.u2=aB(aJ.u1+1,aJ.iw1);aK=(aJ.v1+aJ.u1)*4;aG=(aJ.v1+aJ.u2)*4;aP=(aJ.v2+aJ.u1)*4;aN=(aJ.v2+aJ.u2)*4;aJ.cUL=(ax[aK+3]<<24)&aS|(ax[aK]<<16)&aE|(ax[aK+1]<<8)&aR|ax[aK+2]&bm;aJ.cUR=(ax[aG+3]<<24)&aS|(ax[aG]<<16)&aE|(ax[aG+1]<<8)&aR|ax[aG+2]&bm;aJ.cLL=(ax[aP+3]<<24)&aS|(ax[aP]<<16)&aE|(ax[aP+1]<<8)&aR|ax[aP+2]&bm;aJ.cLR=(ax[aN+3]<<24)&aS|(ax[aN]<<16)&aE|(ax[aN+1]<<8)&aR|ax[aN+2]&bm;aJ.r=((aJ.ul*((aJ.cUL&aE)>>16)+aJ.ll*((aJ.cLL&aE)>>16)+aJ.ur*((aJ.cUR&aE)>>16)+aJ.lr*((aJ.cLR&aE)>>16))<<bh)&aE;aJ.g=((aJ.ul*(aJ.cUL&aR)+aJ.ll*(aJ.cLL&aR)+aJ.ur*(aJ.cUR&aR)+aJ.lr*(aJ.cLR&aR))>>>aM)&aR;aJ.b=(aJ.ul*(aJ.cUL&bm)+aJ.ll*(aJ.cLL&bm)+aJ.ur*(aJ.cUR&bm)+aJ.lr*(aJ.cLR&bm))>>>aM;aJ.a=((aJ.ul*((aJ.cUL&aS)>>>24)+aJ.ll*((aJ.cLL&aS)>>>24)+aJ.ur*((aJ.cUR&aS)>>>24)+aJ.lr*((aJ.cLR&aS)>>>24))<<bc)&aS;aI=bk(az,(aJ.a|aJ.r|aJ.g|aJ.b));aL[aD]=(aI&aE)>>>16;aL[aD+1]=(aI&aR)>>>8;aL[aD+2]=(aI&bm);aL[aD+3]=(aI&aS)>>>24;aJ.sX+=bl}aZ+=bj;aJ.srcYOffset+=ay}};ev.loadFont=function(ay,ax){if(ay===ae){throw ("font name required in loadFont.")}if(ay.indexOf(".svg")===-1){if(ax===ae){ax=eN.size}return Q.get(ay,ax)}var az=ev.loadGlyphs(ay);return{name:ay,css:"12px sans-serif",glyph:true,units_per_em:az.units_per_em,horiz_adv_x:1/az.units_per_em*az.horiz_adv_x,ascent:az.ascent,descent:az.descent,width:function(aA){var aC=0;var aE=aA.length;for(var aD=0;aD<aE;aD++){try{aC+=parseFloat(ev.glyphLook(ev.glyphTable[ay],aA[aD]).horiz_adv_x)}catch(aB){S.debug(aB)}}return aC/ev.glyphTable[ay].units_per_em}}};ev.createFont=function(ay,ax){return ev.loadFont(ay,ax)};ev.textFont=function(az,ax){if(ax!==ae){if(!az.glyph){az=Q.get(az.name,ax)}a5=ax}eN=az;eG=eN.name;gs=eN.ascent;l=eN.descent;eK=eN.leading;var ay=cy.$ensureContext();ay.font=eN.css};ev.textSize=function(ax){if(ax!==a5){eN=Q.get(eG,ax);a5=ax;gs=eN.ascent;l=eN.descent;eK=eN.leading;var ay=cy.$ensureContext();ay.font=eN.css}};ev.textAscent=function(){return gs};ev.textDescent=function(){return l};ev.textLeading=function(ax){eK=ax};ev.textAlign=function(ax,ay){fg=ax;ek=ay||W.BASELINE};function eE(ax){if(ax instanceof String){return ax}if(typeof ax==="number"){if(ax===(0|ax)){return ax.toString()}return ev.nf(ax,0,3)}if(ax===null||ax===ae){return""}return ax.toString()}f2.prototype.textWidth=function(aA){var az=eE(aA).split(/\r?\n/g),ax=0;var ay,aB=az.length;eH.font=eN.css;for(ay=0;ay<aB;++ay){ax=ah.max(ax,eN.measureTextWidth(az[ay]))}return ax.toFixed(1)};el.prototype.textWidth=function(aA){var az=eE(aA).split(/\r?\n/g),aC=0;var ax,aB=az.length;if(fp===ae){fp=at.createElement("canvas")}var ay=fp.getContext("2d");ay.font=eN.css;for(ax=0;ax<aB;++ax){aC=ah.max(aC,ay.measureText(az[ax]).width)}return aC.toFixed(1)};ev.glyphLook=function(az,ay){try{switch(ay){case"1":return az.one;case"2":return az.two;case"3":return az.three;case"4":return az.four;case"5":return az.five;case"6":return az.six;case"7":return az.seven;case"8":return az.eight;case"9":return az.nine;case"0":return az.zero;case" ":return az.space;case"$":return az.dollar;case"!":return az.exclam;case'"':return az.quotedbl;case"#":return az.numbersign;case"%":return az.percent;case"&":return az.ampersand;case"'":return az.quotesingle;case"(":return az.parenleft;case")":return az.parenright;case"*":return az.asterisk;case"+":return az.plus;case",":return az.comma;case"-":return az.hyphen;case".":return az.period;case"/":return az.slash;case"_":return az.underscore;case":":return az.colon;case";":return az.semicolon;case"<":return az.less;case"=":return az.equal;case">":return az.greater;case"?":return az.question;case"@":return az.at;case"[":return az.bracketleft;case"\\":return az.backslash;case"]":return az.bracketright;case"^":return az.asciicircum;case"`":return az.grave;case"{":return az.braceleft;case"|":return az.bar;case"}":return az.braceright;case"~":return az.asciitilde;default:return az[ay]}}catch(ax){S.debug(ax)}};f2.prototype.text$line=function(aB,ay,az,aA,aE){var aC=0,aD=0;if(!eN.glyph){if(aB&&("fillText" in eH)){if(fU){eH.fillStyle=ev.color.toString(gu);fU=false}if(aE===W.RIGHT||aE===W.CENTER){aC=eN.measureTextWidth(aB);if(aE===W.RIGHT){aD=-aC}else{aD=-aC/2}}eH.fillText(aB,ay+aD,az)}}else{var aJ=ev.glyphTable[eG];gZ();eH.translate(ay,az+a5);if(aE===W.RIGHT||aE===W.CENTER){aC=aJ.width(aB);if(aE===W.RIGHT){aD=-aC}else{aD=-aC/2}}var ax=aJ.units_per_em,aF=1/ax*a5;eH.scale(aF,aF);for(var aI=0,aH=aB.length;aI<aH;aI++){try{ev.glyphLook(aJ,aB[aI]).draw()}catch(aG){S.debug(aG)}}eV()}};el.prototype.text$line=function(aB,ax,ay,aA,aD){if(fp===ae){fp=at.createElement("canvas")}var aH=eH;eH=fp.getContext("2d");eH.font=eN.css;var aC=eN.measureTextWidth(aB);fp.width=aC;fp.height=a5;eH=fp.getContext("2d");eH.font=eN.css;eH.textBaseline="top";f2.prototype.text$line(aB,0,0,0,W.LEFT);var aI=fp.width/fp.height;eH=aH;eH.bindTexture(eH.TEXTURE_2D,fZ);d7(fp);eH.texParameteri(eH.TEXTURE_2D,eH.TEXTURE_MAG_FILTER,eH.LINEAR);eH.texParameteri(eH.TEXTURE_2D,eH.TEXTURE_MIN_FILTER,eH.LINEAR);eH.texParameteri(eH.TEXTURE_2D,eH.TEXTURE_WRAP_T,eH.CLAMP_TO_EDGE);eH.texParameteri(eH.TEXTURE_2D,eH.TEXTURE_WRAP_S,eH.CLAMP_TO_EDGE);var aE=0;if(aD===W.RIGHT){aE=-aC}else{if(aD===W.CENTER){aE=-aC/2}}var aG=new gP();var aF=a5*0.5;aG.translate(ax+aE-aF/2,ay-aF,aA);aG.scale(-aI*aF,-aF,aF);aG.translate(-1,-1,-1);aG.transpose();var az=new gP();az.scale(1,-1,1);az.apply(d6.array());az.transpose();eH.useProgram(dn);G("vertex2d",dn,"Vertex",3,fj);G("aTextureCoord2d",dn,"aTextureCoord",2,gq);a7("uSampler2d",dn,"uSampler",[0]);a7("picktype2d",dn,"picktype",1);d("model2d",dn,"model",false,aG.array());d("view2d",dn,"view",false,az.array());a1("color2d",dn,"color",e1);eH.bindBuffer(eH.ELEMENT_ARRAY_BUFFER,e4);eH.drawElements(eH.TRIANGLES,6,eH.UNSIGNED_SHORT,0)};function fk(aC,az,aA,aB){var ax,aD;if(aC.indexOf("\n")<0){ax=[aC];aD=1}else{ax=aC.split(/\r?\n/g);aD=ax.length}var aF=0;if(ek===W.TOP){aF=gs+l}else{if(ek===W.CENTER){aF=gs/2-(aD-1)*eK/2}else{if(ek===W.BOTTOM){aF=-(l+(aD-1)*eK)}}}for(var aE=0;aE<aD;++aE){var ay=ax[aE];cy.text$line(ay,az,aA+aF,aB,fg);aF+=eK}}function g2(az,aE,aF,aA,aC,aG){if(az.length===0||aA===0||aC===0){return}if(a5>aC){return}var aD=-1;var aL=0;var aP=0;var aJ=[];for(var aK=0,ax=az.length;aK<ax;aK++){var aI=az[aK];var aQ=(aI===" ");var aB=eN.measureTextWidth(aI);if(aI!=="\n"&&(aP+aB<=aA)){if(aQ){aD=aK}aP+=aB}else{if(aD+1===aL){if(aK>0){aD=aK}else{return}}if(aI==="\n"){aJ.push({text:az.substring(aL,aK),width:aP});aL=aK+1}else{aJ.push({text:az.substring(aL,aD+1),width:aP});aL=aD+1}aP=0;aK=aL-1}}if(aL<ax){aJ.push({text:az.substring(aL),width:aP})}var aR=0,aH=gs;if(fg===W.CENTER){aR=aA/2}else{if(fg===W.RIGHT){aR=aA}}var aO=ah.floor(aC/eK);if(ek===W.TOP){aH=gs+l}else{if(ek===W.CENTER){aH=eK+l}else{if(ek===W.BOTTOM){aH=l+eK}}}var aN,aM,ay=aJ.length,aS;for(aN=0;aN<ay;aN++){aS=aN*eK;if(aH+aS>aC-l){break}aM=aJ[aN];cy.text$line(aM.text,aE+aR,aF+aH+aS,aG,fg)}}ev.text=function(){if(fh===W.SHAPE){return}if(arguments.length===3){fk(eE(arguments[0]),arguments[1],arguments[2],0)}else{if(arguments.length===4){fk(eE(arguments[0]),arguments[1],arguments[2],arguments[3])}else{if(arguments.length===5){g2(eE(arguments[0]),arguments[1],arguments[2],arguments[3],arguments[4],0)}else{if(arguments.length===6){g2(eE(arguments[0]),arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])}}}}};ev.textMode=function(ax){fh=ax};ev.loadGlyphs=function(aI){var aG,aH,aK,aM,az,aA,aB,ay,aE,ax,aD,aC="[0-9\\-]+",aF;var aJ=function(aS,aT){var aP=0,aQ=[],aR,aU=new RegExp(aS,"g");aR=aQ[aP]=aU.exec(aT);while(aR){aP++;aR=aQ[aP]=aU.exec(aT)}return aQ};var aN=function(aT){var aS=aJ("[A-Za-z][0-9\\- ]+|Z",aT);var aU=function(){gZ();return cy.$ensureContext()};var aP=function(){e3();F();eV()};aF="return {draw:function(){var curContext=beforePathDraw();curContext.beginPath();";aG=0;aH=0;aK=0;aM=0;az=0;aA=0;aT=0;ay=0;aE="";ax=aS.length-1;for(var aQ=0;aQ<ax;aQ++){var aR=aS[aQ][0],aV=aJ(aC,aR);switch(aR[0]){case"M":aG=parseFloat(aV[0][0]);aH=parseFloat(aV[1][0]);aF+="curContext.moveTo("+aG+","+(-aH)+");";break;case"L":aG=parseFloat(aV[0][0]);aH=parseFloat(aV[1][0]);aF+="curContext.lineTo("+aG+","+(-aH)+");";break;case"H":aG=parseFloat(aV[0][0]);aF+="curContext.lineTo("+aG+","+(-aH)+");";break;case"V":aH=parseFloat(aV[0][0]);aF+="curContext.lineTo("+aG+","+(-aH)+");";break;case"T":az=parseFloat(aV[0][0]);aA=parseFloat(aV[1][0]);if(aE==="Q"||aE==="T"){aT=ah.sqrt(ah.pow(aG-aK,2)+ah.pow(aM-aH,2));ay=ah.PI+ah.atan2(aK-aG,aM-aH);aK=aG+(ah.sin(ay)*(aT));aM=aH+(ah.cos(ay)*(aT))}else{aK=aG;aM=aH}aF+="curContext.quadraticCurveTo("+aK+","+(-aM)+","+az+","+(-aA)+");";aG=az;aH=aA;break;case"Q":aK=parseFloat(aV[0][0]);aM=parseFloat(aV[1][0]);az=parseFloat(aV[2][0]);aA=parseFloat(aV[3][0]);aF+="curContext.quadraticCurveTo("+aK+","+(-aM)+","+az+","+(-aA)+");";aG=az;aH=aA;break;case"Z":aF+="curContext.closePath();";break}aE=aR[0]}aF+="afterPathDraw();";aF+="curContext.translate("+aD+",0);";aF+="}}";return((new Function("beforePathDraw","afterPathDraw",aF))(aU,aP))};var aO=function(aW){var aP=aW.getElementsByTagName("font");ev.glyphTable[aI].horiz_adv_x=aP[0].getAttribute("horiz-adv-x");var aU=aW.getElementsByTagName("font-face")[0];ev.glyphTable[aI].units_per_em=parseFloat(aU.getAttribute("units-per-em"));ev.glyphTable[aI].ascent=parseFloat(aU.getAttribute("ascent"));ev.glyphTable[aI].descent=parseFloat(aU.getAttribute("descent"));var aS=aW.getElementsByTagName("glyph"),aQ=aS.length;for(var aT=0;aT<aQ;aT++){var aR=aS[aT].getAttribute("unicode");var aV=aS[aT].getAttribute("glyph-name");aD=aS[aT].getAttribute("horiz-adv-x");if(aD===null){aD=ev.glyphTable[aI].horiz_adv_x}aB=aS[aT].getAttribute("d");if(aB!==ae){aF=aN(aB);ev.glyphTable[aI][aV]={name:aV,unicode:aR,horiz_adv_x:aD,draw:aF.draw}}}};var aL=function(){var aP;try{aP=at.implementation.createDocument("","",null)}catch(aS){S.debug(aS.message);return}try{aP.async=false;aP.load(aI);aO(aP.getElementsByTagName("svg")[0])}catch(aQ){S.debug(aQ);try{var aR=new U.XMLHttpRequest();aR.open("GET",aI,false);aR.send(null);aO(aR.responseXML.documentElement)}catch(aT){S.debug(aQ)}}};ev.glyphTable[aI]={};aL(aI);return ev.glyphTable[aI]};ev.param=function(ax){var ay="data-processing-"+ax;if(gl.hasAttribute(ay)){return gl.getAttribute(ay)}for(var aB=0,az=gl.childNodes.length;aB<az;++aB){var aA=gl.childNodes.item(aB);if(aA.nodeType!==1||aA.tagName.toLowerCase()!=="param"){continue}if(aA.getAttribute("name")===ax){return aA.getAttribute("value")}}if(eR.params.hasOwnProperty(ax)){return eR.params[ax]}return null};function e6(ax){if(ax==="3D"){cy=new el()}else{if(ax==="2D"){cy=new f2()}else{cy=new gw()}}for(var ay in gw.prototype){if(gw.prototype.hasOwnProperty(ay)&&ay.indexOf("$")<0){ev[ay]=cy[ay]}}cy.$init()}function eA(ax){return function(){e6("2D");return cy[ax].apply(this,arguments)}}gw.prototype.translate=eA("translate");gw.prototype.scale=eA("scale");gw.prototype.pushMatrix=eA("pushMatrix");gw.prototype.popMatrix=eA("popMatrix");gw.prototype.resetMatrix=eA("resetMatrix");gw.prototype.applyMatrix=eA("applyMatrix");gw.prototype.rotate=eA("rotate");gw.prototype.rotateZ=eA("rotateZ");gw.prototype.redraw=eA("redraw");gw.prototype.ambientLight=eA("ambientLight");gw.prototype.directionalLight=eA("directionalLight");gw.prototype.lightFalloff=eA("lightFalloff");gw.prototype.lightSpecular=eA("lightSpecular");gw.prototype.pointLight=eA("pointLight");gw.prototype.noLights=eA("noLights");gw.prototype.spotLight=eA("spotLight");gw.prototype.beginCamera=eA("beginCamera");gw.prototype.endCamera=eA("endCamera");gw.prototype.box=eA("box");gw.prototype.sphere=eA("sphere");gw.prototype.ambient=eA("ambient");gw.prototype.emissive=eA("emissive");gw.prototype.shininess=eA("shininess");gw.prototype.specular=eA("specular");gw.prototype.fill=eA("fill");gw.prototype.stroke=eA("stroke");gw.prototype.strokeWeight=eA("strokeWeight");gw.prototype.smooth=eA("smooth");gw.prototype.noSmooth=eA("noSmooth");gw.prototype.point=eA("point");gw.prototype.vertex=eA("vertex");gw.prototype.endShape=eA("endShape");gw.prototype.bezierVertex=eA("bezierVertex");gw.prototype.curveVertex=eA("curveVertex");gw.prototype.curve=eA("curve");gw.prototype.line=eA("line");gw.prototype.bezier=eA("bezier");gw.prototype.rect=eA("rect");gw.prototype.ellipse=eA("ellipse");gw.prototype.background=eA("background");gw.prototype.image=eA("image");gw.prototype.textWidth=eA("textWidth");gw.prototype.text$line=eA("text$line");gw.prototype.$ensureContext=eA("$ensureContext");gw.prototype.$newPMatrix=eA("$newPMatrix");gw.prototype.size=function(az,ax,ay){e6(ay===W.WEBGL?"3D":"2D");ev.size(az,ax,ay)};gw.prototype.$init=R;f2.prototype.$init=function(){ev.size(ev.width,ev.height);eH.lineCap="round";ev.noSmooth();ev.disableContextMenu()};el.prototype.$init=function(){ev.use3DContext=true};t.prototype.$ensureContext=function(){return eH};function n(ay,aB){var ax=ay,az=0,aA=0;ev.pmouseX=ev.mouseX;ev.pmouseY=ev.mouseY;if(ax.offsetParent){do{az+=ax.offsetLeft;aA+=ax.offsetTop}while(!!(ax=ax.offsetParent))}ax=ay;do{az-=ax.scrollLeft||0;aA-=ax.scrollTop||0}while(!!(ax=ax.parentNode));az+=go;aA+=w;az+=gG;aA+=fJ;az+=U.pageXOffset;aA+=U.pageYOffset;return{X:az,Y:aA}}function gV(az,ay){var ax=n(az,ay);ev.mouseX=ay.pageX-ax.X;ev.mouseY=ay.pageY-ax.Y}function cz(ay){var aC=n(ay.changedTouches[0].target,ay.changedTouches[0]),az;for(az=0;az<ay.touches.length;az++){var aA=ay.touches[az];aA.offsetX=aA.pageX-aC.X;aA.offsetY=aA.pageY-aC.Y}for(az=0;az<ay.targetTouches.length;az++){var ax=ay.targetTouches[az];ax.offsetX=ax.pageX-aC.X;ax.offsetY=ax.pageY-aC.Y}for(az=0;az<ay.changedTouches.length;az++){var aB=ay.changedTouches[az];aB.offsetX=aB.pageX-aC.X;aB.offsetY=aB.pageY-aC.Y}return ay}f6(gl,"touchstart",function(ax){gl.setAttribute("style","-webkit-user-select: none");gl.setAttribute("onclick","void(0)");gl.setAttribute("style","-webkit-tap-highlight-color:rgba(0,0,0,0)");for(var ay=0,az=fI.length;ay<az;ay++){var aA=fI[ay].type;if(aA==="mouseout"||aA==="mousemove"||aA==="mousedown"||aA==="mouseup"||aA==="DOMMouseScroll"||aA==="mousewheel"||aA==="touchstart"){E(fI[ay])}}if(ev.touchStart!==ae||ev.touchMove!==ae||ev.touchEnd!==ae||ev.touchCancel!==ae){f6(gl,"touchstart",function(aB){if(ev.touchStart!==ae){aB=cz(aB);ev.touchStart(aB)}});f6(gl,"touchmove",function(aB){if(ev.touchMove!==ae){aB.preventDefault();aB=cz(aB);ev.touchMove(aB)}});f6(gl,"touchend",function(aB){if(ev.touchEnd!==ae){aB=cz(aB);ev.touchEnd(aB)}});f6(gl,"touchcancel",function(aB){if(ev.touchCancel!==ae){aB=cz(aB);ev.touchCancel(aB)}})}else{f6(gl,"touchstart",function(aB){gV(gl,aB.touches[0]);ev.__mousePressed=true;ev.mouseDragging=false;ev.mouseButton=W.LEFT;if(typeof ev.mousePressed==="function"){ev.mousePressed()}});f6(gl,"touchmove",function(aB){aB.preventDefault();gV(gl,aB.touches[0]);if(typeof ev.mouseMoved==="function"&&!ev.__mousePressed){ev.mouseMoved()}if(typeof ev.mouseDragged==="function"&&ev.__mousePressed){ev.mouseDragged();ev.mouseDragging=true}});f6(gl,"touchend",function(aB){ev.__mousePressed=false;if(typeof ev.mouseClicked==="function"&&!ev.mouseDragging){ev.mouseClicked()}if(typeof ev.mouseReleased==="function"){ev.mouseReleased()}})}gl.dispatchEvent(ax)});(function(){var ay=true,ax=function(az){az.preventDefault();az.stopPropagation()};ev.disableContextMenu=function(){if(!ay){return}f6(gl,"contextmenu",ax);ay=false};ev.enableContextMenu=function(){if(ay){return}E({elem:gl,type:"contextmenu",fn:ax});ay=true}}());f6(gl,"mousemove",function(ax){gV(gl,ax);if(typeof ev.mouseMoved==="function"&&!ev.__mousePressed){ev.mouseMoved()}if(typeof ev.mouseDragged==="function"&&ev.__mousePressed){ev.mouseDragged();ev.mouseDragging=true}});f6(gl,"mouseout",function(ax){if(typeof ev.mouseOut==="function"){ev.mouseOut()}});f6(gl,"mouseover",function(ax){gV(gl,ax);if(typeof ev.mouseOver==="function"){ev.mouseOver()}});f6(gl,"mousedown",function(ax){ev.__mousePressed=true;ev.mouseDragging=false;switch(ax.which){case 1:ev.mouseButton=W.LEFT;break;case 2:ev.mouseButton=W.CENTER;break;case 3:ev.mouseButton=W.RIGHT;break}if(typeof ev.mousePressed==="function"){ev.mousePressed()}});f6(gl,"mouseup",function(ax){ev.__mousePressed=false;if(typeof ev.mouseClicked==="function"&&!ev.mouseDragging){ev.mouseClicked()}if(typeof ev.mouseReleased==="function"){ev.mouseReleased()}});var f1=function(ay){var ax=0;if(ay.wheelDelta){ax=ay.wheelDelta/120;if(U.opera){ax=-ax}}else{if(ay.detail){ax=-ay.detail/3}}ev.mouseScroll=ax;if(ax&&typeof ev.mouseScrolled==="function"){ev.mouseScrolled()}};f6(at,"DOMMouseScroll",f1);f6(at,"mousewheel",f1);if(typeof gl==="string"){gl=at.getElementById(gl)}if(!gl.getAttribute("tabindex")){gl.setAttribute("tabindex",0)}function eh(ax){var ay=ax.which||ax.keyCode;switch(ay){case 13:return 10;case 91:case 93:case 224:return 157;case 57392:return 17;case 46:return 127;case 45:return 155}return ay}function I(ay){var ax=ay.which||ay.keyCode;var az=ay.shiftKey||ay.ctrlKey||ay.altKey||ay.metaKey;switch(ax){case 13:ax=az?13:10;break;case 8:ax=az?127:8;break}return new f3(ax)}function eM(ax){if(typeof ax.preventDefault==="function"){ax.preventDefault()}else{if(typeof ax.stopPropagation==="function"){ax.stopPropagation()}}return false}function ed(){var ax;for(ax in gg){if(gg.hasOwnProperty(ax)){ev.__keyPressed=true;return}}ev.__keyPressed=false}function a4(){ev.__keyPressed=false;gg=[];ea=null}function eU(ay,ax){gg[ay]=ax;ea=null;ev.key=ax;ev.keyCode=ay;ev.keyPressed();ev.keyCode=0;ev.keyTyped();ed()}function a0(ay){var az=eh(ay);if(az===W.DELETE){eU(az,new f3(127));return}if(da.indexOf(az)<0){ea=az;return}var ax=new f3(W.CODED);ev.key=ax;ev.keyCode=az;gg[az]=ax;ev.keyPressed();ea=null;ed();return eM(ay)}function q(ay){if(ea===null){return}var az=ea,ax=I(ay);eU(az,ax);return eM(ay)}function dh(ay){var az=eh(ay),ax=gg[az];if(ax===ae){return}ev.key=ax;ev.keyCode=az;ev.keyReleased();delete gg[az];ed()}if(!ez){if(c instanceof S.Sketch){eR=c}else{if(typeof c==="function"){eR=new S.Sketch(c)}else{if(!c){eR=new S.Sketch(function(){})}else{eR=S.compile(c)}}}ev.externals.sketch=eR;e6();gl.onfocus=function(){ev.focused=true};gl.onblur=function(){ev.focused=false;if(!eR.options.globalKeyEvents){a4()}};if(eR.options.pauseOnBlur){f6(U,"focus",function(){if(g0){ev.loop()}});f6(U,"blur",function(){if(g0&&fz){ev.noLoop();g0=true}a4()})}var gF=eR.options.globalKeyEvents?U:gl;f6(gF,"keydown",a0);f6(gF,"keypress",q);f6(gF,"keyup",dh);for(var fS in S.lib){if(S.lib.hasOwnProperty(fS)){if(S.lib[fS].hasOwnProperty("attach")){S.lib[fS].attach(ev)}else{if(S.lib[fS] instanceof Function){S.lib[fS].call(this)}}}}var k=100;var gE=function(aA){if(!(eR.imageCache.pending||Q.preloading.pending(k))){if(U.opera){var ax,ay,az=eR.imageCache.operaCache;for(ax in az){if(az.hasOwnProperty(ax)){ay=az[ax];if(ay!==null){at.body.removeChild(ay)}delete (az[ax])}}}eR.attach(aA,ap);eR.onLoad();if(aA.setup){aA.setup();aA.resetMatrix();eR.onSetup()}eY();if(aA.draw){if(!g0){aA.redraw()}else{aA.loop()}}}else{U.setTimeout(function(){gE(aA)},k)}};aw(this);gE(ev)}else{eR=new S.Sketch();e6();ev.size=function(az,ax,ay){if(ay&&ay===W.WEBGL){e6("3D")}else{e6("2D")}if(ay===W.WEBGL){ev.toImageData=function(){var aC=at.createElement("canvas");var aA=aC.getContext("2d");var aG=aA.createImageData(this.width,this.height);var aH=new av(this.width*this.height*4);eH.readPixels(0,0,this.width,this.height,eH.RGBA,eH.UNSIGNED_BYTE,aH);for(var aF=0,aD=aH.length,aE=this.height,aB=this.width,aI=aG.data;aF<aD;aF++){aI[aF]=aH[(aE-1-ah.floor(aF/4/aB))*aB*4+(aF%(aB*4))]}return aG}}else{ev.toImageData=function(){return eH.getImageData(0,0,this.width,this.height)}}ev.size(az,ax,ay)}}};S.debug=af;S.prototype=ap;function ad(){var c=["abs","acos","alpha","ambient","ambientLight","append","applyMatrix","arc","arrayCopy","asin","atan","atan2","background","beginCamera","beginDraw","beginShape","bezier","bezierDetail","bezierPoint","bezierTangent","bezierVertex","binary","blend","blendColor","blit_resize","blue","box","breakShape","brightness","camera","ceil","Character","color","colorMode","concat","constrain","copy","cos","createFont","createGraphics","createImage","cursor","curve","curveDetail","curvePoint","curveTangent","curveTightness","curveVertex","day","degrees","directionalLight","disableContextMenu","dist","draw","ellipse","ellipseMode","emissive","enableContextMenu","endCamera","endDraw","endShape","exit","exp","expand","externals","fill","filter","floor","focused","frameCount","frameRate","frustum","get","glyphLook","glyphTable","green","height","hex","hint","hour","hue","image","imageMode","Import","intersect","join","key","keyCode","keyPressed","keyReleased","keyTyped","lerp","lerpColor","lightFalloff","lights","lightSpecular","line","link","loadBytes","loadFont","loadGlyphs","loadImage","loadPixels","loadShape","loadStrings","log","loop","mag","map","match","matchAll","max","millis","min","minute","mix","modelX","modelY","modelZ","modes","month","mouseButton","mouseClicked","mouseDragged","mouseMoved","mouseOut","mouseOver","mousePressed","mouseReleased","mouseScroll","mouseScrolled","mouseX","mouseY","name","nf","nfc","nfp","nfs","noCursor","noFill","noise","noiseDetail","noiseSeed","noLights","noLoop","norm","normal","noSmooth","noStroke","noTint","ortho","param","parseBoolean","parseByte","parseChar","parseFloat","parseInt","peg","perspective","PImage","pixels","PMatrix2D","PMatrix3D","PMatrixStack","pmouseX","pmouseY","point","pointLight","popMatrix","popStyle","pow","print","printCamera","println","printMatrix","printProjection","PShape","PShapeSVG","pushMatrix","pushStyle","quad","radians","random","Random","randomSeed","rect","rectMode","red","redraw","requestImage","resetMatrix","reverse","rotate","rotateX","rotateY","rotateZ","round","saturation","save","saveFrame","saveStrings","scale","screenX","screenY","screenZ","second","set","setup","shape","shapeMode","shared","shininess","shorten","sin","size","smooth","sort","specular","sphere","sphereDetail","splice","split","splitTokens","spotLight","sq","sqrt","status","str","stroke","strokeCap","strokeJoin","strokeWeight","subset","tan","text","textAlign","textAscent","textDescent","textFont","textLeading","textMode","textSize","texture","textureMode","textWidth","tint","touchCancel","touchEnd","touchMove","touchStart","translate","triangle","trim","unbinary","unhex","updatePixels","use3DContext","vertex","width","XMLElement","year","__contains","__equals","__equalsIgnoreCase","__frameRate","__hashCode","__int_cast","__instanceof","__keyPressed","__mousePressed","__printStackTrace","__replace","__replaceAll","__replaceFirst","__toCharArray","__split","__codePointAt","__startsWith","__endsWith"];var e={};var d,f;for(d=0,f=c.length;d<f;++d){e[c[d]]=null}for(var b in S.lib){if(S.lib.hasOwnProperty(b)){if(S.lib[b].exports){var a=S.lib[b].exports;for(d=0,f=a.length;d<f;++d){e[a[d]]=null}}}}return e}function au(az){var bs=ad();function bL(aB){var aH=[];var aF=aB.split(/([\{\[\(\)\]\}])/);var aC=aF[0];var aE=[];for(var aI=1;aI<aF.length;aI+=2){var aD=aF[aI];if(aD==="["||aD==="{"||aD==="("){aE.push(aC);aC=aD}else{if(aD==="]"||aD==="}"||aD===")"){var aA=aD==="}"?"A":aD===")"?"B":"C";var aG=aH.length;aH.push(aC+aD);aC=aE.pop()+'"'+aA+(aG+1)+'"'}}aC+=aF[aI+1]}aH.unshift(aC);return aH}function bg(aA,aB){return aA.replace(/'(\d+)'/g,function(aD,aE){var aC=aB[aE];if(aC.charAt(0)==="/"){return aC}return(/^'((?:[^'\\\n])|(?:\\.[0-9A-Fa-f]*))'$/).test(aC)?"(new $p.Character("+aC+"))":aC})}function bA(aA){var aB=/^\s*/.exec(aA),aD;if(aB[0].length===aA.length){aD={left:aB[0],middle:"",right:""}}else{var aC=/\s*$/.exec(aA);aD={left:aB[0],middle:aA.substring(aB[0].length,aC.index),right:aC[0]}}aD.untrim=function(aE){return this.left+aE+this.right};return aD}function bT(aA){return aA.replace(/^\s+/,"").replace(/\s+$/,"")}function K(aB,aA){for(var aC=0,aD=aA.length;aC<aD;++aC){aB[aA[aC]]=null}return aB}function bP(aA){for(var aB in aA){if(aA.hasOwnProperty(aB)){return false}}return true}function bz(aA){return aA.substring(2,aA.length-1)}var s=az.replace(/\r\n?|\n\r/g,"\n");var D=[];var bW=s.replace(/("(?:[^"\\\n]|\\.)*")|('(?:[^'\\\n]|\\.)*')|(([\[\(=|&!\^:?]\s*)(\/(?![*\/])(?:[^\/\\\n]|\\.)*\/[gim]*)\b)|(\/\/[^\n]*\n)|(\/\*(?:(?!\*\/)(?:.|\n))*\*\/)/g,function(aC,aA,aF,aE,aH,aD,aB,aI){var aG;if(aA||aF){aG=D.length;D.push(aC);return"'"+aG+"'"}if(aE){aG=D.length;D.push(aD);return aH+"'"+aG+"'"}return aI!==""?" ":"\n"});var i;var F=bW;var g=function(aC,aB,aD,aA){if(!!aB||!!aA){return aC}i=true;return""};do{i=false;F=F.replace(/([<]?)<\s*((?:\?|[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\s+(?:extends|super)\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)?(?:\s*,\s*(?:\?|[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\s+(?:extends|super)\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)?)*)\s*>([=]?)/g,g)}while(i);var j=bL(F);var be;var bG={},bQ,G=0;function A(aB,aC){var aA=j.length;j.push(aB);return'"'+aC+aA+'"'}function bS(){return"class"+(++G)}function h(aB,aA,aC){aB.classId=aA;aB.scopeId=aC;bG[aA]=aB}var q,w,ba,bu,n,bq;var C=/\b((?:(?:public|private|final|protected|static|abstract)\s+)*)(class|interface)\s+([A-Za-z_$][\w$]*\b)(\s+extends\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\b)*)?(\s+implements\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\b)*)?\s*("A\d+")/g;var bO=/\b((?:(?:public|private|final|protected|static|abstract|synchronized)\s+)*)((?!(?:else|new|return|throw|function|public|private|protected)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*([A-Za-z_$][\w$]*\b)\s*("B\d+")(\s*throws\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)*)?\s*("A\d+"|;)/g;var bD=/^((?:(?:public|private|final|protected|static)\s+)*)((?!(?:else|new|return|throw)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*([A-Za-z_$][\w$]*\b)\s*(?:"C\d+"\s*)*([=,]|$)/;var f=/\b((?:(?:public|private|final|protected|static|abstract)\s+)*)((?!(?:new|return|throw)\b)[A-Za-z_$][\w$]*\b)\s*("B\d+")(\s*throws\s+[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*,\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)*)?\s*("A\d+")/g;var o=/^((?:(?:public|private|final|protected|static)\s+)*)((?!(?:new|return|throw)\b)[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*(?:\s*"C\d+")*)\s*/;var ax=/\bfunction(?:\s+([A-Za-z_$][\w$]*))?\s*("B\d+")\s*("A\d+")/g;function bl(aA){var aB=aA;aB=aB.replace(C,function(aC){return A(aC,"E")});aB=aB.replace(bO,function(aC){return A(aC,"D")});aB=aB.replace(ax,function(aC){return A(aC,"H")});return aB}function x(aA,aB){var aC=aA.replace(f,function(aD,aG,aF,aI,aE,aH){if(aF!==aB){return aD}return A(aD,"G")});return aC}function bI(aA){this.name=aA}bI.prototype.toString=function(){return this.name};function bb(aA){this.params=aA}bb.prototype.getNames=function(){var aA=[];for(var aB=0,aC=this.params.length;aB<aC;++aB){aA.push(this.params[aB].name)}return aA};bb.prototype.toString=function(){if(this.params.length===0){return"()"}var aC="(";for(var aA=0,aB=this.params.length;aA<aB;++aA){aC+=this.params[aA]+", "}return aC.substring(0,aC.length-2)+")"};function bM(aA){var aC=bT(aA.substring(1,aA.length-1));var aF=[];if(aC!==""){var aE=aC.split(",");for(var aD=0;aD<aE.length;++aD){var aB=/\b([A-Za-z_$][\w$]*\b)(\s*"[ABC][\d]*")*\s*$/.exec(aE[aD]);aF.push(new bI(aB[1]))}}return new bb(aF)}function a0(aA){var aB=aA;aB=aB.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\s*"C\d+")+\s*("A\d+")/g,function(aG,aH,aF){return aF});aB=aB.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\s*"B\d+")\s*("A\d+")/g,function(aG,aH,aF){return A(aG,"F")});aB=aB.replace(ax,function(aF){return A(aF,"H")});aB=aB.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)\s*("C\d+"(?:\s*"C\d+")*)/g,function(aI,aJ,aF){var aG=aF.replace(/"C(\d+)"/g,function(aM,aL){return j[aL]}).replace(/\[\s*\]/g,"[null]").replace(/\s*\]\s*\[\s*/g,", ");var aK="{"+aG.substring(1,aG.length-1)+"}";var aH="('"+aJ+"', "+A(aK,"A")+")";return"$p.createJavaArray"+A(aH,"B")});aB=aB.replace(/(\.\s*length)\s*"B\d+"/g,"$1");aB=aB.replace(/#([0-9A-Fa-f]{6})\b/g,function(aG,aF){return"0xFF"+aF});aB=aB.replace(/"B(\d+)"(\s*(?:[\w$']|"B))/g,function(aJ,aG,aF){var aI=j[aG];if(!/^\(\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\s*(?:"C\d+"\s*)*\)$/.test(aI)){return aJ}if(/^\(\s*int\s*\)$/.test(aI)){return"(int)"+aF}var aH=aI.split(/"C(\d+)"/g);if(aH.length>1){if(!/^\[\s*\]$/.test(j[aH[1]])){return aJ}}return""+aF});aB=aB.replace(/\(int\)([^,\]\)\}\?\:\*\+\-\/\^\|\%\&\~<\>\=]+)/g,function(aG,aH){var aF=bA(aH);return aF.untrim("__int_cast("+aF.middle+")")});aB=aB.replace(/\bsuper(\s*"B\d+")/g,"$$superCstr$1").replace(/\bsuper(\s*\.)/g,"$$super$1");aB=aB.replace(/\b0+((\d*)(?:\.[\d*])?(?:[eE][\-\+]?\d+)?[fF]?)\b/,function(aF,aG,aH){if(aG===aH){return aF}return aH===""?"0"+aG:aG});aB=aB.replace(/\b(\.?\d+\.?)[fF]\b/g,"$1");aB=aB.replace(/([^\s])%([^=\s])/g,"$1 % $2");aB=aB.replace(/\b(frameRate|keyPressed|mousePressed)\b(?!\s*"B)/g,"__$1");aB=aB.replace(/\b(boolean|byte|char|float|int)\s*"B/g,function(aF,aG){return"parse"+aG.substring(0,1).toUpperCase()+aG.substring(1)+'"B'});aB=aB.replace(/\bpixels\s*(("C(\d+)")|\.length)?(\s*=(?!=)([^,\]\)\}]+))?/g,function(aG,aJ,aH,aK,aL,aI){if(aH){var aF=j[aK];if(aL){return"pixels.setPixel"+A("("+aF.substring(1,aF.length-1)+","+aI+")","B")}return"pixels.getPixel"+A("("+aF.substring(1,aF.length-1)+")","B")}if(aJ){return"pixels.getLength"+A("()","B")}if(aL){return"pixels.set"+A("("+aI+")","B")}return"pixels.toArray"+A("()","B")});var aC;function aD(aG,aH,aI,aK){var aF=j[aK];aC=true;var aJ=bA(aF.substring(1,aF.length-1));return"__"+aI+(aJ.middle===""?A("("+aH.replace(/\.\s*$/,"")+")","B"):A("("+aH.replace(/\.\s*$/,"")+","+aJ.middle+")","B"))}do{aC=false;aB=aB.replace(/((?:'\d+'|\b[A-Za-z_$][\w$]*\s*(?:"[BC]\d+")*)\s*\.\s*(?:[A-Za-z_$][\w$]*\s*(?:"[BC]\d+"\s*)*\.\s*)*)(replace|replaceAll|replaceFirst|contains|equals|equalsIgnoreCase|hashCode|toCharArray|printStackTrace|split|startsWith|endsWith|codePointAt)\s*"B(\d+)"/g,aD)}while(aC);function aE(aF,aH,aG){aC=true;return"__instanceof"+A("("+aH+", "+aG+")","B")}do{aC=false;aB=aB.replace(/((?:'\d+'|\b[A-Za-z_$][\w$]*\s*(?:"[BC]\d+")*)\s*(?:\.\s*[A-Za-z_$][\w$]*\s*(?:"[BC]\d+"\s*)*)*)instanceof\s+([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)/g,aE)}while(aC);aB=aB.replace(/\bthis(\s*"B\d+")/g,"$$constr$1");return aB}function bN(aA,aB){this.baseInterfaceName=aA;this.body=aB;aB.owner=this}bN.prototype.toString=function(){return"new ("+this.body+")"};function bh(aD){var aE=new RegExp(/\bnew\s*([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)\s*"B\d+"\s*"A(\d+)"/).exec(aD);var aA=bQ,aB=bS();bQ=aB;var aF=aE[1]+"$"+aB;var aC=new bN(aF,q(j[aE[2]],aF,"","implements "+aE[1]));h(aC,aB,aA);bQ=aA;return aC}function bk(aB,aA,aC){this.name=aB;this.params=aA;this.body=aC}bk.prototype.toString=function(){var aB=be;var aA=K({"this":null},this.params.getNames());be=function(aD){return aA.hasOwnProperty(aD.name)?aD.name:aB(aD)};var aC="function";if(this.name){aC+=" "+this.name}aC+=this.params+" "+this.body;be=aB;return aC};function bF(aA){var aB=new RegExp(/\b([A-Za-z_$][\w$]*)\s*"B(\d+)"\s*"A(\d+)"/).exec(aA);return new bk(aB[1]!=="function"?aB[1]:null,bM(j[aB[2]]),ba(j[aB[3]]))}function bm(aA){this.members=aA}bm.prototype.toString=function(){var aB=be;be=function(aE){return aE.name==="this"?"this":aB(aE)};var aD="";for(var aA=0,aC=this.members.length;aA<aC;++aA){if(this.members[aA].label){aD+=this.members[aA].label+": "}aD+=this.members[aA].value.toString()+", "}be=aB;return aD.substring(0,aD.length-2)};function bK(aA){var aD=aA.split(",");for(var aB=0;aB<aD.length;++aB){var aC=aD[aB].indexOf(":");if(aC<0){aD[aB]={value:bq(aD[aB])}}else{aD[aB]={label:bT(aD[aB].substring(0,aC)),value:bq(bT(aD[aB].substring(aC+1)))}}}return new bm(aD)}function H(aA){if(aA.charAt(0)==="("||aA.charAt(0)==="["){return aA.charAt(0)+H(aA.substring(1,aA.length-1))+aA.charAt(aA.length-1)}if(aA.charAt(0)==="{"){if(/^\{\s*(?:[A-Za-z_$][\w$]*|'\d+')\s*:/.test(aA)){return"{"+A(aA.substring(1,aA.length-1),"I")+"}"}return"["+H(aA.substring(1,aA.length-1))+"]"}var aB=bA(aA);var aC=a0(aB.middle);aC=aC.replace(/"[ABC](\d+)"/g,function(aD,aE){return H(j[aE])});return aB.untrim(aC)}function y(aA){return aA.replace(/(\.\s*)?(\b[A-Za-z_$][\w$]*\b)(\s*\.\s*(\b[A-Za-z_$][\w$]*\b)(\s*\()?)?/g,function(aF,aD,aH,aB,aC,aE){if(aD){return aF}var aG={name:aH,member:aC,callSign:!!aE};return be(aG)+(aB===ae?"":aB)})}function b(aA,aB){this.expr=aA;this.transforms=aB}b.prototype.toString=function(){var aB=this.transforms;var aA=y(this.expr);return aA.replace(/"!(\d+)"/g,function(aC,aD){return aB[aD].toString()})};bq=function(aA){var aB=[];var aC=H(aA);aC=aC.replace(/"H(\d+)"/g,function(aD,aE){aB.push(bF(j[aE]));return'"!'+(aB.length-1)+'"'});aC=aC.replace(/"F(\d+)"/g,function(aD,aE){aB.push(bh(j[aE]));return'"!'+(aB.length-1)+'"'});aC=aC.replace(/"I(\d+)"/g,function(aD,aE){aB.push(bK(j[aE]));return'"!'+(aB.length-1)+'"'});return new b(aC,aB)};function bV(aC,aA,aB){this.name=aC;this.value=aA;this.isDefault=aB}bV.prototype.toString=function(){return this.name+" = "+this.value};function bf(aB,aE){var aA=aB.indexOf("=");var aF,aC,aD;if(aA<0){aF=aB;aC=aE;aD=true}else{aF=aB.substring(0,aA);aC=bq(aB.substring(aA+1));aD=false}return new bV(bT(aF.replace(/(\s*"C\d+")+/g,"")),aC,aD)}function bw(aA){if(aA==="int"||aA==="float"){return"0"}if(aA==="boolean"){return"false"}if(aA==="color"){return"0x00000000"}return"null"}function bH(aA,aB){this.definitions=aA;this.varType=aB}bH.prototype.getNames=function(){var aA=[];for(var aB=0,aC=this.definitions.length;aB<aC;++aB){aA.push(this.definitions[aB].name)}return aA};bH.prototype.toString=function(){return"var "+this.definitions.join(",")};function bi(aA){this.expression=aA}bi.prototype.toString=function(){return this.expression.toString()};function d(aA){if(bD.test(aA)){var aB=o.exec(aA);var aC=aA.substring(aB[0].length).split(",");var aE=bw(aB[2]);for(var aD=0;aD<aC.length;++aD){aC[aD]=bf(aC[aD],aE)}return new bH(aC,aB[2])}return new bi(bq(aA))}function bo(aC,aA,aB){this.initStatement=aC;this.condition=aA;this.step=aB}bo.prototype.toString=function(){return"("+this.initStatement+"; "+this.condition+"; "+this.step+")"};function bx(aA,aB){this.initStatement=aA;this.container=aB}bx.prototype.toString=function(){var aA=this.initStatement.toString();if(aA.indexOf("=")>=0){aA=aA.substring(0,aA.indexOf("="))}return"("+aA+" in "+this.container+")"};function br(aA,aB){this.initStatement=aA;this.container=aB}br.iteratorId=0;br.prototype.toString=function(){var aA=this.initStatement.toString();var aD="$it"+(br.iteratorId++);var aB=aA.replace(/^\s*var\s*/,"").split("=")[0];var aC="var "+aD+" = new $p.ObjectIterator("+this.container+"), "+aB+" = void(0)";var aE=aD+".hasNext() && (("+aB+" = "+aD+".next()) || true)";return"("+aC+"; "+aE+";)"};function k(aA){var aB;if(/\bin\b/.test(aA)){aB=aA.substring(1,aA.length-1).split(/\bin\b/g);return new bx(d(bT(aB[0])),bq(aB[1]))}if(aA.indexOf(":")>=0&&aA.indexOf(";")<0){aB=aA.substring(1,aA.length-1).split(":");return new br(d(bT(aB[0])),bq(aB[1]))}aB=aA.substring(1,aA.length-1).split(";");return new bo(d(bT(aB[0])),bq(aB[1]),bq(aB[2]))}function a(aA){aA.sort(function(aB,aC){return aC.weight-aB.weight})}function e(aA,aC,aB){this.name=aA;this.body=aC;this.isStatic=aB;aC.owner=this}e.prototype.toString=function(){return""+this.body};function bc(aA,aC,aB){this.name=aA;this.body=aC;this.isStatic=aB;aC.owner=this}bc.prototype.toString=function(){return""+this.body};function u(aE){var aF=C.exec(aE);C.lastIndex=0;var aD=aF[1].indexOf("static")>=0;var aG=j[bz(aF[6])],aB;var aA=bQ,aC=bS();bQ=aC;if(aF[2]==="interface"){aB=new e(aF[3],w(aG,aF[3],aF[4]),aD)}else{aB=new bc(aF[3],q(aG,aF[3],aF[4],aF[5]),aD)}h(aB,aC,aA);bQ=aA;return aB}function bn(aB,aA,aD,aC){this.name=aB;this.params=aA;this.body=aD;this.isStatic=aC}bn.prototype.toString=function(){var aA=K({},this.params.getNames());var aB=be;be=function(aD){return aA.hasOwnProperty(aD.name)?aD.name:aB(aD)};var aC="function "+this.methodId+this.params+" "+this.body+"\n";be=aB;return aC};function B(aA){var aC=bO.exec(aA);bO.lastIndex=0;var aB=aC[1].indexOf("static")>=0;var aD=aC[6]!==";"?j[bz(aC[6])]:"{}";return new bn(aC[3],bM(j[bz(aC[4])]),ba(aD),aB)}function bd(aA,aB,aC){this.definitions=aA;this.fieldType=aB;this.isStatic=aC}bd.prototype.getNames=function(){var aA=[];for(var aB=0,aC=this.definitions.length;aB<aC;++aB){aA.push(this.definitions[aB].name)}return aA};bd.prototype.toString=function(){var aD=be({name:"[this]"});if(this.isStatic){var aE=this.owner.name;var aG=[];for(var aF=0,aH=this.definitions.length;aF<aH;++aF){var aI=this.definitions[aF];var aB=aI.name,aC=aE+"."+aB;var aA="if("+aC+" === void(0)) {\n "+aC+" = "+aI.value+"; }\n$p.defineProperty("+aD+", '"+aB+"', { get: function(){return "+aC+";}, set: function(val){"+aC+" = val;} });\n";aG.push(aA)}return aG.join("")}return aD+"."+this.definitions.join("; "+aD+".")};function t(aA){var aB=o.exec(aA);var aF=aB[1].indexOf("static")>=0;var aC=aA.substring(aB[0].length).split(/,\s*/g);var aE=bw(aB[2]);for(var aD=0;aD<aC.length;++aD){aC[aD]=bf(aC[aD],aE)}return new bd(aC,aB[2],aF)}function bC(aA,aB){this.params=aA;this.body=aB}bC.prototype.toString=function(){var aA=K({},this.params.getNames());var aC=be;be=function(aE){return aA.hasOwnProperty(aE.name)?aE.name:aC(aE)};var aB="function $constr_"+this.params.params.length+this.params.toString();var aD=this.body.toString();if(!/\$(superCstr|constr)\b/.test(aD)){aD="{\n$superCstr();\n"+aD.substring(1)}be=aC;return aB+aD+"\n"};function ay(aA){var aC=new RegExp(/"B(\d+)"\s*"A(\d+)"/).exec(aA);var aB=bM(j[aC[1]]);return new bC(aB,ba(j[aC[2]]))}function bB(aF,aC,aD,aH,aB,aA){var aE,aG;this.name=aF;this.interfacesNames=aC;this.methodsNames=aD;this.fields=aH;this.innerClasses=aB;this.misc=aA;for(aE=0,aG=aH.length;aE<aG;++aE){aH[aE].owner=this}}bB.prototype.getMembers=function(aE,aB,aG){if(this.owner.base){this.owner.base.body.getMembers(aE,aB,aG)}var aH,aI,aJ,aA;for(aH=0,aJ=this.fields.length;aH<aJ;++aH){var aC=this.fields[aH].getNames();for(aI=0,aA=aC.length;aI<aA;++aI){aE[aC[aI]]=this.fields[aH]}}for(aH=0,aJ=this.methodsNames.length;aH<aJ;++aH){var aF=this.methodsNames[aH];aB[aF]=true}for(aH=0,aJ=this.innerClasses.length;aH<aJ;++aH){var aD=this.innerClasses[aH];aG[aD.name]=aD}};bB.prototype.toString=function(){function aB(aQ){var aR=0;while(aQ){++aR;aQ=aQ.scope}return aR}var aF=aB(this.owner);var aE=this.name;var aI="";var aD="";var aP={},aG={},aH={};this.getMembers(aP,aG,aH);var aJ,aL,aK,aN;if(this.owner.interfaces){var aC=[],aO;for(aJ=0,aL=this.interfacesNames.length;aJ<aL;++aJ){if(!this.owner.interfaces[aJ]){continue}aO=be({name:this.interfacesNames[aJ]});aC.push(aO);aI+="$p.extendInterfaceMembers("+aE+", "+aO+");\n"}aD+=aE+".$interfaces = ["+aC.join(", ")+"];\n"}aD+=aE+".$isInterface = true;\n";aD+=aE+".$methods = ['"+this.methodsNames.join("', '")+"'];\n";a(this.innerClasses);for(aJ=0,aL=this.innerClasses.length;aJ<aL;++aJ){var aM=this.innerClasses[aJ];if(aM.isStatic){aI+=aE+"."+aM.name+" = "+aM+";\n"}}for(aJ=0,aL=this.fields.length;aJ<aL;++aJ){var aA=this.fields[aJ];if(aA.isStatic){aI+=aE+"."+aA.definitions.join(";\n"+aE+".")+";\n"}}return"(function() {\nfunction "+aE+"() { throw 'Unable to create the interface'; }\n"+aI+aD+"return "+aE+";\n})()"};w=function(aI,aA,aD){var aC=aI.substring(1,aI.length-1);aC=bl(aC);aC=x(aC,aA);var aF=[],aL=[];aC=aC.replace(/"([DE])(\d+)"/g,function(aN,aO,aP){if(aO==="D"){aF.push(aP)}else{if(aO==="E"){aL.push(aP)}}return""});var aH=aC.split(/;(?:\s*;)*/g);var aK;var aJ,aM;if(aD!==ae){aK=aD.replace(/^\s*extends\s+(.+?)\s*$/g,"$1").split(/\s*,\s*/g)}for(aJ=0,aM=aF.length;aJ<aM;++aJ){var aB=B(j[aF[aJ]]);aF[aJ]=aB.name}for(aJ=0,aM=aH.length-1;aJ<aM;++aJ){var aE=bA(aH[aJ]);aH[aJ]=t(aE.middle)}var aG=aH.pop();for(aJ=0,aM=aL.length;aJ<aM;++aJ){aL[aJ]=u(j[aL[aJ]])}return new bB(aA,aK,aF,aH,aL,{tail:aG})};function E(aA,aE,aF,aG,aK,aD,aC,aI,aB){var aH,aJ;this.name=aA;this.baseClassName=aE;this.interfacesNames=aF;this.functions=aG;this.methods=aK;this.fields=aD;this.cstrs=aC;this.innerClasses=aI;this.misc=aB;for(aH=0,aJ=aD.length;aH<aJ;++aH){aD[aH].owner=this}}E.prototype.getMembers=function(aE,aA,aF){if(this.owner.base){this.owner.base.body.getMembers(aE,aA,aF)}var aG,aH,aI,aJ;for(aG=0,aI=this.fields.length;aG<aI;++aG){var aC=this.fields[aG].getNames();for(aH=0,aJ=aC.length;aH<aJ;++aH){aE[aC[aH]]=this.fields[aG]}}for(aG=0,aI=this.methods.length;aG<aI;++aG){var aB=this.methods[aG];aA[aB.name]=aB}for(aG=0,aI=this.innerClasses.length;aG<aI;++aG){var aD=this.innerClasses[aG];aF[aD.name]=aD}};E.prototype.toString=function(){function aH(a3){var a4=0;while(a3){++a4;a3=a3.scope}return a4}var aG=aH(this.owner);var aW="$this_"+aG;var aY=this.name;var aO="var "+aW+" = this;\n";var aU="";var aK="";var aB={},aA={},aP={};this.getMembers(aB,aA,aP);var aC=be;be=function(a3){var a4=a3.name;if(a4==="this"){return a3.callSign||!a3.member?aW+".$self":aW}if(aB.hasOwnProperty(a4)){return aB[a4].isStatic?aY+"."+a4:aW+"."+a4}if(aP.hasOwnProperty(a4)){return aW+"."+a4}if(aA.hasOwnProperty(a4)){return aA[a4].isStatic?aY+"."+a4:aW+".$self."+a4}return aC(a3)};var aI;if(this.baseClassName){aI=aC({name:this.baseClassName});aO+="var $super = { $upcast: "+aW+" };\n";aO+="function $superCstr(){"+aI+".apply($super,arguments);if(!('$self' in $super)) $p.extendClassChain($super)}\n";aK+=aY+".$base = "+aI+";\n"}else{aO+="function $superCstr(){$p.extendClassChain("+aW+")}\n"}if(this.owner.base){aU+="$p.extendStaticMembers("+aY+", "+aI+");\n"}var aJ,aN,aM,aS;if(this.owner.interfaces){var aQ=[],a2;for(aJ=0,aN=this.interfacesNames.length;aJ<aN;++aJ){if(!this.owner.interfaces[aJ]){continue}a2=aC({name:this.interfacesNames[aJ]});aQ.push(a2);aU+="$p.extendInterfaceMembers("+aY+", "+a2+");\n"}aK+=aY+".$interfaces = ["+aQ.join(", ")+"];\n"}if(this.functions.length>0){aO+=this.functions.join("\n")+"\n"}a(this.innerClasses);for(aJ=0,aN=this.innerClasses.length;aJ<aN;++aJ){var aX=this.innerClasses[aJ];if(aX.isStatic){aU+=aY+"."+aX.name+" = "+aX+";\n";aO+=aW+"."+aX.name+" = "+aY+"."+aX.name+";\n"}else{aO+=aW+"."+aX.name+" = "+aX+";\n"}}for(aJ=0,aN=this.fields.length;aJ<aN;++aJ){var a1=this.fields[aJ];if(a1.isStatic){aU+=aY+"."+a1.definitions.join(";\n"+aY+".")+";\n";for(aM=0,aS=a1.definitions.length;aM<aS;++aM){var aT=a1.definitions[aM].name,aL=aY+"."+aT;aO+="$p.defineProperty("+aW+", '"+aT+"', {get: function(){return "+aL+"}, set: function(val){"+aL+" = val}});\n"}}else{aO+=aW+"."+a1.definitions.join(";\n"+aW+".")+";\n"}}var aZ={};for(aJ=0,aN=this.methods.length;aJ<aN;++aJ){var aV=this.methods[aJ];var aE=aZ[aV.name];var aR=aV.name+"$"+aV.params.params.length;if(aE){++aE;aR+="_"+aE}else{aE=1}aV.methodId=aR;aZ[aV.name]=aE;if(aV.isStatic){aU+=aV;aU+="$p.addMethod("+aY+", '"+aV.name+"', "+aR+");\n";aO+="$p.addMethod("+aW+", '"+aV.name+"', "+aR+");\n"}else{aO+=aV;aO+="$p.addMethod("+aW+", '"+aV.name+"', "+aR+");\n"}}aO+=bT(this.misc.tail);if(this.cstrs.length>0){aO+=this.cstrs.join("\n")+"\n"}aO+="function $constr() {\n";var aD=[];for(aJ=0,aN=this.cstrs.length;aJ<aN;++aJ){var aF=this.cstrs[aJ].params.params.length;aD.push("if(arguments.length === "+aF+") { $constr_"+aF+".apply("+aW+", arguments); }")}if(aD.length>0){aO+=aD.join(" else ")+" else "}aO+="$superCstr();\n}\n";aO+="$constr.apply(null, arguments);\n";be=aC;return"(function() {\nfunction "+aY+"() {\n"+aO+"}\n"+aU+aK+"return "+aY+";\n})()"};q=function(aG,aB,aD,aC){var aN=aG.substring(1,aG.length-1);aN=bl(aN);aN=x(aN,aB);var aO=[],aM=[],aA=[],aJ=[];aN=aN.replace(/"([DEGH])(\d+)"/g,function(aP,aQ,aR){if(aQ==="D"){aO.push(aR)}else{if(aQ==="E"){aM.push(aR)}else{if(aQ==="H"){aJ.push(aR)}else{aA.push(aR)}}}return""});var aH=aN.replace(/^(?:\s*;)+/,"").split(/;(?:\s*;)*/g);var aI,aK;var aL;if(aD!==ae){aI=aD.replace(/^\s*extends\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)\s*$/g,"$1")}if(aC!==ae){aK=aC.replace(/^\s*implements\s+(.+?)\s*$/g,"$1").split(/\s*,\s*/g)}for(aL=0;aL<aJ.length;++aL){aJ[aL]=bF(j[aJ[aL]])}for(aL=0;aL<aO.length;++aL){aO[aL]=B(j[aO[aL]])}for(aL=0;aL<aH.length-1;++aL){var aE=bA(aH[aL]);aH[aL]=t(aE.middle)}var aF=aH.pop();for(aL=0;aL<aA.length;++aL){aA[aL]=ay(j[aA[aL]])}for(aL=0;aL<aM.length;++aL){aM[aL]=u(j[aM[aL]])}return new E(aB,aI,aK,aJ,aO,aH,aA,aM,{tail:aF})};function J(aA,aB){this.name=aA;this.body=aB;aB.owner=this}J.prototype.toString=function(){return"var "+this.name+" = "+this.body+";\n$p."+this.name+" = "+this.name+";\n"};function bU(aA,aB){this.name=aA;this.body=aB;aB.owner=this}bU.prototype.toString=function(){return"var "+this.name+" = "+this.body+";\n$p."+this.name+" = "+this.name+";\n"};function c(aD){var aE=C.exec(aD);C.lastIndex=0;var aF=j[bz(aE[6])];var aA=bQ,aC=bS();bQ=aC;var aB;if(aE[2]==="interface"){aB=new J(aE[3],w(aF,aE[3],aE[4]))}else{aB=new bU(aE[3],q(aF,aE[3],aE[4],aE[5]))}h(aB,aC,aA);bQ=aA;return aB}function by(aB,aA,aC){this.name=aB;this.params=aA;this.body=aC}by.prototype.toString=function(){var aA=K({},this.params.getNames());var aB=be;be=function(aD){return aA.hasOwnProperty(aD.name)?aD.name:aB(aD)};var aC="function "+this.name+this.params+" "+this.body+"\n$p."+this.name+" = "+this.name+";";be=aB;return aC};function bt(aA){var aB=bO.exec(aA);var aC=bO.lastIndex=0;return new by(aB[3],bM(j[bz(aB[4])]),ba(j[bz(aB[6])]))}function bj(aB){var aA=aB;aA=aA.replace(/\b(catch\s*"B\d+"\s*"A\d+")(\s*catch\s*"B\d+"\s*"A\d+")+/g,"$1");return aA}function bv(aB,aA){this.argument=aB;this.misc=aA}bv.prototype.toString=function(){return this.misc.prefix+this.argument.toString()};function z(aB,aA){this.argument=aB;this.misc=aA}z.prototype.toString=function(){return this.misc.prefix+this.argument.toString()};function I(aC,aB,aA){this.name=aC;this.argument=aB;this.misc=aA}I.prototype.toString=function(){var aA=this.misc.prefix;if(this.argument!==ae){aA+=this.argument.toString()}return aA};function bE(aA){this.expr=aA}bE.prototype.toString=function(){return"case "+this.expr+":"};function m(aA){this.label=aA}m.prototype.toString=function(){return this.label};bu=function(aH,aG,aN){var aA=new RegExp(/\b(catch|for|if|switch|while|with)\s*"B(\d+)"|\b(do|else|finally|return|throw|try|break|continue)\b|("[ADEH](\d+)")|\b(case)\s+([^:]+):|\b([A-Za-z_$][\w$]*\s*:)|(;)/g);var aF=[];aH=bj(aH);var aI=0,aM,aB;while((aM=aA.exec(aH))!==null){if(aM[1]!==ae){var aJ=aH.lastIndexOf('"B',aA.lastIndex);var aD=aH.substring(aI,aJ);if(aM[1]==="for"){aF.push(new bv(k(j[aM[2]]),{prefix:aD}))}else{if(aM[1]==="catch"){aF.push(new z(bM(j[aM[2]]),{prefix:aD}))}else{aF.push(new I(aM[1],bq(j[aM[2]]),{prefix:aD}))}}}else{if(aM[3]!==ae){aF.push(new I(aM[3],ae,{prefix:aH.substring(aI,aA.lastIndex)}))}else{if(aM[4]!==ae){aB=aH.substring(aI,aA.lastIndex-aM[4].length);if(bT(aB).length!==0){continue}aF.push(aB);var aL=aM[4].charAt(1),aC=aM[5];if(aL==="D"){aF.push(aG(j[aC]))}else{if(aL==="E"){aF.push(aN(j[aC]))}else{if(aL==="H"){aF.push(bF(j[aC]))}else{aF.push(ba(j[aC]))}}}}else{if(aM[6]!==ae){aF.push(new bE(bq(bT(aM[7]))))}else{if(aM[8]!==ae){aB=aH.substring(aI,aA.lastIndex-aM[8].length);if(bT(aB).length!==0){continue}aF.push(new m(aH.substring(aI,aA.lastIndex)))}else{var aE=bA(aH.substring(aI,aA.lastIndex-1));aF.push(aE.left);aF.push(d(aE.middle));aF.push(aE.right+";")}}}}}aI=aA.lastIndex}var aK=bA(aH.substring(aI));aF.push(aK.left);if(aK.middle!==""){aF.push(d(aK.middle));aF.push(";"+aK.right)}return aF};function v(aD){var aC=[];for(var aB=0,aE=aD.length;aB<aE;++aB){var aA=aD[aB];if(aA instanceof bH){aC=aC.concat(aA.getNames())}else{if(aA instanceof bv&&aA.argument.initStatement instanceof bH){aC=aC.concat(aA.argument.initStatement.getNames())}else{if(aA instanceof e||aA instanceof bc||aA instanceof J||aA instanceof bU||aA instanceof by||aA instanceof bk){aC.push(aA.name)}}}}return K({},aC)}function r(aA){this.statements=aA}r.prototype.toString=function(){var aA=v(this.statements);var aB=be;if(!bP(aA)){be=function(aD){return aA.hasOwnProperty(aD.name)?aD.name:aB(aD)}}var aC="{\n"+this.statements.join("")+"\n}";be=aB;return aC};ba=function(aA){var aB=bA(aA.substring(1,aA.length-1));return new r(bu(aB.middle))};function bJ(aA){this.statements=aA}bJ.prototype.toString=function(){var aC=[],aB=[],aA;for(var aD=0,aF=this.statements.length;aD<aF;++aD){aA=this.statements[aD];if(aA instanceof bU||aA instanceof J){aC.push(aA)}else{aB.push(aA)}}a(aC);var aE=v(this.statements);be=function(aI){var aH=aI.name;if(aE.hasOwnProperty(aH)){return aH}if(bs.hasOwnProperty(aH)||W.hasOwnProperty(aH)||ap.hasOwnProperty(aH)){return"$p."+aH}return aH};var aG="// this code was autogenerated from PJS\n(function($p) {\n"+aC.join("")+"\n"+aB.join("")+"\n})";be=null;return aG};n=function(){var aA=bl(j[0]);aA=aA.replace(/\bimport\s+[^;]+;/g,"");return new bJ(bu(aA,bt,c))};function l(aD){var aL={};var aO,aH;for(aO in bG){if(bG.hasOwnProperty(aO)){aH=bG[aO];var aN=aH.scopeId,aB=aH.name;if(aN){var aA=bG[aN];aH.scope=aA;if(aA.inScope===ae){aA.inScope={}}aA.inScope[aB]=aH}else{aL[aB]=aH}}}function aE(aV,aS){var aP=aS.split(".");var aT=aV.scope,aQ;while(aT){if(aT.hasOwnProperty(aP[0])){aQ=aT[aP[0]];break}aT=aT.scope}if(aQ===ae){aQ=aL[aP[0]]}for(var aR=1,aU=aP.length;aR<aU&&aQ;++aR){aQ=aQ.inScope[aP[aR]]}return aQ}for(aO in bG){if(bG.hasOwnProperty(aO)){aH=bG[aO];var aI=aH.body.baseClassName;if(aI){var aF=aE(aH,aI);if(aF){aH.base=aF;if(!aF.derived){aF.derived=[]}aF.derived.push(aH)}}var aJ=aH.body.interfacesNames,aC=[],aK,aM;if(aJ&&aJ.length>0){for(aK=0,aM=aJ.length;aK<aM;++aK){var aG=aE(aH,aJ[aK]);aC.push(aG);if(!aG){continue}if(!aG.derived){aG.derived=[]}aG.derived.push(aH)}if(aC.length>0){aH.interfaces=aC}}}}}function bR(aB){var aG=[],aJ={};var aA,aD,aF;for(aA in bG){if(bG.hasOwnProperty(aA)){aF=bG[aA];if(!aF.inScope&&!aF.derived){aG.push(aA);aF.weight=0}else{var aE=[];if(aF.inScope){for(aD in aF.inScope){if(aF.inScope.hasOwnProperty(aD)){aE.push(aF.inScope[aD])}}}if(aF.derived){aE=aE.concat(aF.derived)}aJ[aA]=aE}}}function aC(aK,aM){var aL=aJ[aK];if(!aL){return false}var aN=aL.indexOf(aM);if(aN<0){return false}aL.splice(aN,1);if(aL.length>0){return false}delete aJ[aK];return true}while(aG.length>0){aA=aG.shift();aF=bG[aA];if(aF.scopeId&&aC(aF.scopeId,aF)){aG.push(aF.scopeId);bG[aF.scopeId].weight=aF.weight+1}if(aF.base&&aC(aF.base.classId,aF)){aG.push(aF.base.classId);aF.base.weight=aF.weight+1}if(aF.interfaces){var aH,aI;for(aH=0,aI=aF.interfaces.length;aH<aI;++aH){if(!aF.interfaces[aH]||!aC(aF.interfaces[aH].classId,aF)){continue}aG.push(aF.interfaces[aH].classId);aF.interfaces[aH].weight=aF.weight+1}}}}var p=n();l(p);bR(p);var bp=p.toString();bp=bp.replace(/\s*\n(?:[\t ]*\n)+/g,"\n\n");return bg(bp,D)}function Y(n,r){var e=new RegExp(/\/\*\s*@pjs\s+((?:[^\*]|\*+[^\*\/])*)\*\//g).exec(n);if(e&&e.length===2){var o=[],l=e.splice(1,2)[0].replace(/\{([\s\S]*?)\}/g,(function(){return function(u,t){o.push(t);return"{"+(o.length-1)+"}"}}())).replace("\n","").replace("\r","").split(";");var f=function(t){return t.replace(/^\s*["']?/,"").replace(/["']?\s*$/,"")};for(var b=0,d=l.length;b<d;b++){var h=l[b].split("=");if(h&&h.length===2){var p=f(h[0]),g=f(h[1]),q=[];if(p==="preload"){q=g.split(",");for(var c=0,a=q.length;c<a;c++){var s=f(q[c]);r.imageCache.add(s)}}else{if(p==="font"){q=g.split(",");for(var k=0,i=q.length;k<i;k++){var j=f(q[k]),m=/^\{(\d*?)\}$/.exec(j);Q.preloading.add(m?JSON.parse("{"+o[m[1]]+"}"):j)}}else{if(p==="pauseOnBlur"){r.options.pauseOnBlur=g==="true"}else{if(p==="globalKeyEvents"){r.options.globalKeyEvents=g==="true"}else{if(p.substring(0,6)==="param-"){r.params[p.substring(6)]=g}else{r.options[p]=g}}}}}}}}return n}S.compile=function(a){var b=new S.Sketch();var d=Y(a,b);var c=au(d);b.sourceCode=c;return b};var am=(function(){var b={},e="undefined",d="function",a=!1,c=!0,g=512,f="log";if(typeof tinylog!==e&&typeof tinylog[f]===d){b[f]=tinylog[f]}else{if(typeof at!==e&&!at.fake){(function(){var p=at,r="div",B="style",x="title",h={zIndex:10000,position:"fixed",bottom:"0px",width:"100%",height:"15%",fontFamily:"sans-serif",color:"#ccc",backgroundColor:"black"},z={position:"relative",fontFamily:"monospace",overflow:"auto",height:"100%",paddingTop:"5px"},v={height:"5px",marginTop:"-5px",cursor:"n-resize",backgroundColor:"darkgrey"},q={position:"absolute",top:"5px",right:"20px",color:"#111",MozBorderRadius:"4px",webkitBorderRadius:"4px",borderRadius:"4px",cursor:"pointer",fontWeight:"normal",textAlign:"center",padding:"3px 5px",backgroundColor:"#333",fontSize:"12px"},k={minHeight:"16px"},y={fontSize:"12px",margin:"0 8px 0 8px",maxWidth:"100%",whiteSpace:"pre-wrap",overflow:"auto"},A=p.defaultView,s=p.documentElement,o=s[B],m=function(){var E=arguments.length,F,C,D;while(E--){C=arguments[E--];F=arguments[E][B];for(D in C){if(C.hasOwnProperty(D)){F[D]=C[D]}}}},u=function(C,D,E){if(C.addEventListener){C.addEventListener(D,E,a)}else{if(C.attachEvent){C.attachEvent("on"+D,E)}}return[C,D,E]},n=function(C,D,E){if(C.removeEventListener){C.removeEventListener(D,E,a)}else{if(C.detachEvent){C.detachEvent("on"+D,E)}}},i=function(D){var E=D.childNodes,C=E.length;while(C--){D.removeChild(E.item(0))}},t=function(C,D){return C.appendChild(D)},w=function(C){return p.createElement(C)},j=function(C){return p.createTextNode(C)},l=b[f]=function(I){var F,E=o.paddingBottom,ax=w(r),aE=ax[B],aC=t(ax,w(r)),H=t(ax,w(r)),J=t(ax,w(r)),K=a,G=a,aB=a,D=0,aD=function(){o.paddingBottom=ax.clientHeight+"px"},aF=function(aA){var az=A.innerHeight,ay=aC.clientHeight;if(aA<0){aA=0}else{if(aA+ay>az){aA=az-ay}}aE.height=aA/az*100+"%";aD()},C=[u(p,"mousemove",function(ay){if(K){aF(A.innerHeight-ay.clientY);H.scrollTop=aB}}),u(p,"mouseup",function(){if(K){K=aB=a}}),u(aC,"dblclick",function(ay){ay.preventDefault();if(G){aF(G);G=a}else{G=ax.clientHeight;aE.height="0px"}}),u(aC,"mousedown",function(ay){ay.preventDefault();K=c;aB=H.scrollTop}),u(aC,"contextmenu",function(){K=a}),u(J,"click",function(){F()})];F=function(){var ay=C.length;while(ay--){n.apply(b,C[ay])}s.removeChild(ax);o.paddingBottom=E;i(H);i(ax);b[f]=l};m(ax,h,H,z,aC,v,J,q);J[x]="Close Log";t(J,j("\u2716"));aC[x]="Double-click to toggle log minimization";s.insertBefore(ax,s.firstChild);b[f]=function(ay){if(D===g){H.removeChild(H.firstChild)}else{D++}var az=t(H,w(r)),aA=t(az,w(r));az[x]=(new Date()).toLocaleTimeString();m(az,k,aA,y);t(aA,j(ay));H.scrollTop=H.scrollHeight};b[f](I);aD()}}())}else{if(typeof print===d){b[f]=print}}}return b}());S.logger=am;S.version="1.3.0";S.lib={};S.registerLibrary=function(a,b){S.lib[a]=b;if(b.hasOwnProperty("init")){b.init(ap)}};S.instances=al;S.getInstanceById=function(a){return al[O[a]]};S.Sketch=function(a){this.attachFunction=a;this.options={pauseOnBlur:false,globalKeyEvents:false};this.onLoad=R;this.onSetup=R;this.onPause=R;this.onLoop=R;this.onFrameStart=R;this.onFrameEnd=R;this.onExit=R;this.params={};this.imageCache={pending:0,images:{},operaCache:{},add:function(c,d){if(this.images[c]){return}if(!ak){this.images[c]=null}if(!d){d=new Image();d.onload=(function(e){return function(){e.pending--}}(this));this.pending++;d.src=c}this.images[c]=d;if(U.opera){var b=at.createElement("div");b.appendChild(d);b.style.position="absolute";b.style.opacity=0;b.style.width="1px";b.style.height="1px";if(!this.operaCache[c]){at.body.appendChild(b);this.operaCache[c]=b}}}};this.sourceCode=undefined;this.attach=function(b){if(typeof this.attachFunction==="function"){this.attachFunction(b)}else{if(this.sourceCode){var c=((new Function("return ("+this.sourceCode+");"))());c(b);this.attachFunction=c}else{throw"Unable to attach sketch to the processing instance"}}};this.toString=function(){var d;var c="((function(Sketch) {\n";c+="var sketch = new Sketch(\n"+this.sourceCode+");\n";for(d in this.options){if(this.options.hasOwnProperty(d)){var b=this.options[d];c+="sketch.options."+d+" = "+(typeof b==="string"?'"'+b+'"':""+b)+";\n"}}for(d in this.imageCache){if(this.options.hasOwnProperty(d)){c+='sketch.imageCache.add("'+d+'");\n'}}c+="return sketch;\n})(Processing.Sketch))";return c}};var ac=function(f,i){var h=[],b=[],a=i.length,d=0;function c(l,j){var k=new XMLHttpRequest();k.onreadystatechange=function(){if(k.readyState===4){var m;if(k.status!==200&&k.status!==0){m="Invalid XHR status "+k.status}else{if(k.responseText===""){if(("withCredentials" in new XMLHttpRequest())&&(new XMLHttpRequest()).withCredentials===false&&U.location.protocol==="file:"){m="XMLHttpRequest failure, possibly due to a same-origin policy violation. You can try loading this page in another browser, or load it from http://localhost using a local webserver. See the Processing.js README for a more detailed explanation of this problem and solutions."}else{m="File is empty."}}}j(k.responseText,m)}};k.open("GET",l,true);if(k.overrideMimeType){k.overrideMimeType("application/json")}k.setRequestHeader("If-Modified-Since","Fri, 01 Jan 1960 00:00:00 GMT");k.send(null)}function g(k,l){function m(o,p){h[k]=o;++d;if(p){b.push(l+" ==> "+p)}if(d===a){if(b.length===0){try{return new S(f,h.join("\n"))}catch(n){throw"Processing.js: Unable to execute pjs sketch: "+n}}else{throw"Processing.js: Unable to load pjs sketch files: "+b.join("\n")}}}if(l.charAt(0)==="#"){var j=at.getElementById(l.substring(1));if(j){m(j.text||j.textContent)}else{m("","Unable to load pjs sketch: element with id '"+l.substring(1)+"' was not found")}return}c(l,m)}for(var e=0;e<a;++e){g(e,i[e])}};var P=function(){at.removeEventListener("DOMContentLoaded",P,false);var m=at.getElementsByTagName("canvas"),g;for(var h=0,l=m.length;h<l;h++){var e=m[h].getAttribute("data-processing-sources");if(e===null){e=m[h].getAttribute("data-src");if(e===null){e=m[h].getAttribute("datasrc")}}if(e){g=e.split(" ");for(var i=0;i<g.length;){if(g[i]){i++}else{g.splice(i,1)}}ac(m[h],g)}}var k=at.getElementsByTagName("script");var a,n,b;for(a=0;a<k.length;a++){var c=k[a];if(!c.getAttribute){continue}var d=c.getAttribute("type");if(d&&(d.toLowerCase()==="text/processing"||d.toLowerCase()==="application/processing")){var f=c.getAttribute("data-processing-target");m=ae;if(f){m=at.getElementById(f)}else{var j=c.nextSibling;while(j&&j.nodeType!==1){j=j.nextSibling}if(j.nodeName.toLowerCase()==="canvas"){m=j}}if(m){if(c.getAttribute("src")){g=c.getAttribute("src").split(/\s+/);ac(m,g);continue}n=c.textContent||c.text;b=new S(m,n)}}}};S.loadSketchFromSources=ac;S.disableInit=function(){if(ak){at.removeEventListener("DOMContentLoaded",P,false)}};if(ak){U.Processing=S;at.addEventListener("DOMContentLoaded",P,false)}else{this.Processing=S}}(window,window.document,Math));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment