forked from processing-js/processing-js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprocessing.min.js
434 lines (434 loc) · 223 KB
/
processing.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
(function e$$0(z,U,h){function g(a,b){if(!U[a]){if(!z[a]){var c="function"==typeof require&&require;if(!b&&c)return c(a,!0);if(n)return n(a,!0);c=Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c;}c=U[a]={exports:{}};z[a][0].call(c.exports,function(d){var c=z[a][1][d];return g(c?c:d)},c,c.exports,e$$0,z,U,h)}return U[a].exports}for(var n="function"==typeof require&&require,p=0;p<h.length;p++)g(h[p]);return g})({1:[function(B,z,U){z={isDomPresent:!0,navigator:navigator,window:window,
document:document,ajax:function(h){var g=new XMLHttpRequest;g.open("GET",h,!1);g.overrideMimeType&&g.overrideMimeType("text/plain");g.setRequestHeader("If-Modified-Since","Fri, 01 Jan 1960 00:00:00 GMT");g.send(null);if(200!==g.status&&0!==g.status)throw"XMLHttpRequest failed, status code "+g.status;return g.responseText}};window.Processing=B("./src/")(z)},{"./src/":28}],2:[function(B,z,U){z.exports={name:"processing-js",version:"1.4.16",author:"Processing.js",repository:{type:"git",url:"[email protected]/processing-js/processing-js.git"},
main:"processing.min.js",bugs:"https://github.com/processing-js/processing-js/issues",devDependencies:{argv:"~0.0.2",browserify:"^11.0.1",express:"~3.3.3","node-minify":"~0.7.3",nunjucks:"~0.1.9",open:"0.0.3",grunt:"~0.4.1","grunt-cli":"~0.1.8","grunt-contrib-jshint":"~0.4.3"},scripts:{test:"node test",start:"browserify build.js -o processing.js && node minify"},license:"MIT"}},{}],3:[function(B,z,U){z.exports=function(h){if(h instanceof Array){var g=-1;this.hasNext=function(){return++g<h.length};
this.next=function(){return h[g]}}else{if(h.iterator instanceof Function)return h.iterator();throw"Unable to iterate: "+h;}}},{}],4:[function(B,z,U){z.exports={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:1E-4,
MAX_FLOAT:3.4028235E38,MIN_FLOAT:-3.4028235E38,MAX_INT:2147483647,MIN_INT:-2147483648,PI:Math.PI,TWO_PI:2*Math.PI,TAU:2*Math.PI,HALF_PI:Math.PI/2,THIRD_PI:Math.PI/3,QUARTER_PI:Math.PI/4,DEG_TO_RAD:Math.PI/180,RAD_TO_DEG:180/Math.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,ADD:2,SUBTRACT:4,LIGHTEST:8,DARKEST:16,DIFFERENCE:32,EXCLUSION:64,MULTIPLY:128,
SCREEN:256,OVERLAY:512,HARD_LIGHT:1024,SOFT_LIGHT:2048,DODGE:4096,BURN:8192,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:32768,PREC_MAXVAL:32767,PREC_ALPHA_SHIFT:9,PREC_RED_SHIFT:1,NORMAL_MODE_AUTO:0,NORMAL_MODE_SHAPE:1,NORMAL_MODE_VERTEX:2,MAX_LIGHTS:8}},{}],5:[function(B,z,U){z.exports=function(h){var g={BufferMax:200},n=h.createElement("style"),p=!1;n.textContent=".pjsconsole.hidden {\n display: none!important;\n}";g.wrapper=h.createElement("div");n.textContent+="\n.pjsconsole {\n opacity: .75;\n display: block;\n position: fixed;\n bottom: 0px;\n left: 0px;\n right: 0px;\n height: 50px;\n background-color: #aaa;\n}";
g.wrapper.classList.add("pjsconsole");g.dragger=h.createElement("div");n.textContent+="\n.pjsconsole .dragger {\n display: block;\n border: 3px black raised;\n cursor: n-resize;\n position: absolute;\n top: 0px;\n left: 0px;\n right: 0px;\n height: 5px;\n background-color: #333;\n}";g.dragger.classList.add("dragger");g.closer=h.createElement("div");n.textContent+="\n.pjsconsole .closer {\n opacity: .5;\n display: block;\n border: 3px black raised;\n position: absolute;\n top: 10px;\n right: 30px;\n height: 20px;\n width: 20px;\n background-color: #ddd;\n color: #000;\n line-height: 20px;\n text-align: center;\n cursor: pointer\n}";
g.closer.classList.add("closer");g.closer.innerHTML="✖";g.javaconsole=h.createElement("div");n.textContent+="\n.pjsconsole .console {\n overflow-x: auto;\n display: block;\n position: absolute;\n left: 10px;\n right: 0px;\n bottom: 5px;\n top: 10px;\n overflow-y: scroll;\n height: 40px;\n}";g.javaconsole.setAttribute("class","console");g.wrapper.appendChild(g.dragger);g.wrapper.appendChild(g.javaconsole);g.wrapper.appendChild(g.closer);g.dragger.onmousedown=function(a){g.divheight=
g.wrapper.style.height;h.selection?h.selection.empty():window.getSelection().removeAllRanges();var b=a.screenY;window.onmousemove=function(a){g.wrapper.style.height=parseFloat(g.divheight)+(b-a.screenY)+"px";g.javaconsole.style.height=parseFloat(g.divheight)+(b-a.screenY)-10+"px"};window.onmouseup=function(a){h.selection?h.selection.empty():window.getSelection().removeAllRanges();g.wrapper.style.height=parseFloat(g.divheight)+(b-a.screenY)+"px";g.javaconsole.style.height=parseFloat(g.divheight)+(b-
a.screenY)-10+"px";window.onmousemove=null;window.onmouseup=null}};g.BufferArray=[];g.print=g.log=function(){var a=Array.prototype.slice.call(arguments);t=a.map(function(b,c){return b+(c+1===a.length?"":" ")}).join("");g.BufferArray[g.BufferArray.length-1]?g.BufferArray[g.BufferArray.length-1]+=t+"":g.BufferArray.push(t);g.javaconsole.innerHTML=g.BufferArray.join("");g.showconsole()};g.println=function(){p||(h.body.appendChild(n),h.body.appendChild(g.wrapper),p=!0);var a=Array.prototype.slice.call(arguments);
a.push("<br>");g.print.apply(g,a);g.BufferArray.length>g.BufferMax?g.BufferArray.splice(0,1):g.javaconsole.scrollTop=g.javaconsole.scrollHeight};g.showconsole=function(){g.wrapper.classList.remove("hidden")};g.hideconsole=function(){g.wrapper.classList.add("hidden")};g.closer.onclick=function(){g.hideconsole()};g.hideconsole();return g}},{}],6:[function(B,z,U){z.exports=function(h){function g(){}function n(a,c,d){if(a.hasOwnProperty(c)&&"function"===typeof a[c]){var k=a[c];if("$overloads"in k)k.$defaultOverload=
d;else if("$overloads"in d||k.length!==d.length){var q;"$overloads"in d?(q=d.$overloads.slice(0),q[k.length]=k,k=d.$defaultOverload):(q=[],q[d.length]=d,q[k.length]=k);var S=function(){return(S.$overloads[arguments.length]||("$methodArgsIndex"in S&&arguments.length>S.$methodArgsIndex?S.$overloads[S.$methodArgsIndex]:null)||S.$defaultOverload).apply(this,arguments)};S.$overloads=q;"$methodArgsIndex"in d&&(S.$methodArgsIndex=d.$methodArgsIndex);S.$defaultOverload=k;S.name=c;a[c]=S}}else a[c]=d}function p(b,
c){function d(d){a.defineProperty(b,d,{get:function(){return c[d]},set:function(e){c[d]=e},enumerable:!0})}var k=[],q;for(q in c)"function"===typeof c[q]?n(b,q,c[q]):"$"===q.charAt(0)||q in b||k.push(q);for(;0<k.length;)d(k.shift());b.$super=c}g.prototype=h.PConstants;var a=new g;Object.keys(h).forEach(function(b){a[b]=h[b]});a.defineProperty=function(a,c,d){"defineProperty"in Object?Object.defineProperty(a,c,d):(d.hasOwnProperty("get")&&a.__defineGetter__(c,d.get),d.hasOwnProperty("set")&&a.__defineSetter__(c,
d.set))};a.extendClassChain=function(a){for(var c=[a],d=a.$upcast;d;d=d.$upcast)p(d,a),c.push(d),a=d;for(;0<c.length;)c.pop().$self=a};a.extendStaticMembers=function(a,c){p(a,c)};a.extendInterfaceMembers=function(a,c){p(a,c)};a.addMethod=function(a,c,d,k){var q=a[c];if(q||k){var S=d.length;if("$overloads"in q)q.$overloads[S]=d;else{var e=function(){return(e.$overloads[arguments.length]||("$methodArgsIndex"in e&&arguments.length>e.$methodArgsIndex?e.$overloads[e.$methodArgsIndex]:null)||e.$defaultOverload).apply(this,
arguments)},g=[];q&&(g[q.length]=q);g[S]=d;e.$overloads=g;e.$defaultOverload=q||d;k&&(e.$methodArgsIndex=S);e.name=c;a[c]=e}}else a[c]=d};a.createJavaArray=function(b,c){var d=null,k=null;if("string"===typeof b)if("boolean"===b)k=!1;else{var q;q="string"!==typeof b?!1:-1!=="byte int char color float long double".split(" ").indexOf(b);q&&(k=0)}if("number"===typeof c[0])if(q=0|c[0],1>=c.length){d=[];d.length=q;for(var S=0;S<q;++S)d[S]=k}else for(d=[],k=c.slice(1),S=0;S<q;++S)d.push(a.createJavaArray(b,
k));return d};a.defineProperty(a,"screenWidth",{get:function(){return window.innerWidth}});a.defineProperty(a,"screenHeight",{get:function(){return window.innerHeight}});return a}},{}],7:[function(B,z,U){z.exports=function(h,g){var n=g.window,p=g.document,a=n.XMLHttpRequest,b=g.noop,c=g.isDOMPresent,d=g.version;h.version=d?d:"@DEV-VERSION@";h.lib={};h.registerLibrary=function(d,e){h.lib[d]=e;e.hasOwnProperty("init")&&e.init(defaultScope)};h.Sketch=function(d){this.attachFunction=d;this.options={pauseOnBlur:!1,
globalKeyEvents:!1};this.onExit=this.onFrameEnd=this.onFrameStart=this.onLoop=this.onPause=this.onSetup=this.onLoad=b;this.params={};this.imageCache={pending:0,images:{},operaCache:{},add:function(d,a){if(!this.images[d]&&(c||(this.images[d]=null),a||(a=new Image,a.onload=function(d){return function(){d.pending--}}(this),this.pending++,a.src=d),this.images[d]=a,n.opera)){var b=p.createElement("div");b.appendChild(a);b.style.position="absolute";b.style.opacity=0;b.style.width="1px";b.style.height=
"1px";this.operaCache[d]||(p.body.appendChild(b),this.operaCache[d]=b)}}};this.sourceCode=void 0;this.attach=function(d){if("function"===typeof this.attachFunction)this.attachFunction(d);else if(this.sourceCode){var a=(new Function("return ("+this.sourceCode+");"))();a(d);this.attachFunction=a}else throw"Unable to attach sketch to the processing instance";};this.toString=function(){var d,a;a="((function(Sketch) {\n"+("var sketch = new Sketch(\n"+this.sourceCode+");\n");for(d in this.options)if(this.options.hasOwnProperty(d)){var c=
this.options[d];a+="sketch.options."+d+" = "+("string"===typeof c?'"'+c+'"':""+c)+";\n"}for(d in this.imageCache)this.options.hasOwnProperty(d)&&(a+='sketch.imageCache.add("'+d+'");\n');return a+"return sketch;\n})(Processing.Sketch))"}};var k=h.loadSketchFromSources=function(d,e,c){function b(d,e){var c=new a;c.onreadystatechange=function(){if(4===c.readyState){var d;200!==c.status&&0!==c.status?d="Invalid XHR status "+c.status:""===c.responseText&&(d="withCredentials"in new a&&!1===(new a).withCredentials&&
"file:"===n.location.protocol?"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.":"File is empty.");e(c.responseText,d)}};c.open("GET",d,!0);c.overrideMimeType&&c.overrideMimeType("application/json");c.setRequestHeader("If-Modified-Since","Fri, 01 Jan 1960 00:00:00 GMT");c.send(null)}
function k(e,a){function n(b,k){q[e]=b;++ka;k&&g.push(a+" ==> "+k);if(ka===u)if(0===g.length){var C=new h(d,q.join("\n"));c&&c(C)}else throw"Processing.js: Unable to load pjs sketch files: "+g.join("\n");}if("#"===a.charAt(0)){var C=p.getElementById(a.substring(1));C?n(C.text||C.textContent):n("","Unable to load pjs sketch: element with id '"+a.substring(1)+"' was not found")}else b(a,n)}for(var q=[],g=[],u=e.length,ka=0,w=0;w<u;++w)k(w,e[w])},q=function(){p.removeEventListener("DOMContentLoaded",
q,!1);for(var d;0<h.instances.length;)for(d=h.instances.length-1;0<=d;d--)h.instances[d]&&h.instances[d].exit();var e=p.getElementsByTagName("canvas"),a;d=0;for(l=e.length;d<l;d++){var c=e[d].getAttribute("data-processing-sources");null===c&&(c=e[d].getAttribute("data-src"),null===c&&(c=e[d].getAttribute("datasrc")));if(c){a=c.split(/\s+/g);for(c=0;c<a.length;)a[c]?c++:a.splice(c,1);k(e[d],a)}}var b,e=p.getElementsByTagName("script"),c=[];for(d=e.length-1;0<=d;d--)c.push(e[d]);d=0;for(b=c.length;d<
b;d++)if(a=c[d],a.getAttribute&&(e=a.getAttribute("type"))&&("text/processing"===e.toLowerCase()||"application/processing"===e.toLowerCase())){var g=a.getAttribute("data-processing-target"),e=void 0;if(g)e=p.getElementById(g);else{for(g=a.nextSibling;g&&1!==g.nodeType;)g=g.nextSibling;g&&"canvas"===g.nodeName.toLowerCase()&&(e=g)}e&&(a.getAttribute("src")?(a=a.getAttribute("src").split(/\s+/),k(e,a)):(a=a.textContent||a.text,new h(e,a)))}};p.addEventListener("DOMContentLoaded",q,!1);h.reload=q;h.disableInit=
function(){p.removeEventListener("DOMContentLoaded",q,!1)};return h}},{}],8:[function(B,z,U){z.exports=function(h,g){return null===h||null===g?null===h&&null===g:"string"===typeof h||"object"!==typeof h?h===g:h.equals instanceof Function?h.equals(g):h===g}},{}],9:[function(B,z,U){z.exports=function(h,g){if("string"===typeof h){for(var n=0,p=0;p<h.length;++p)n=31*n+h.charCodeAt(p)&4294967295;return n}if("object"!==typeof h)return h&4294967295;if(h.hashCode instanceof Function)return h.hashCode();h.$id===
g&&(h.$id=Math.floor(65536*Math.random())-32768<<16|Math.floor(65536*Math.random()));return h.$id}},{}],10:[function(B,z,U){z.exports=function(h){function g(a){var b=-1;this.hasNext=function(){return b+1<a.length};this.next=function(){return a[++b]};this.remove=function(){a.splice(b--,1)}}function n(a){var b=[];a&&a.toArray&&(b=a.toArray());this.get=function(a){return b[a]};this.contains=function(a){return-1<this.indexOf(a)};this.indexOf=function(a){for(var d=0,k=b.length;d<k;++d)if(p(a,b[d]))return d;
return-1};this.lastIndexOf=function(a){for(var d=b.length-1;0<=d;--d)if(p(a,b[d]))return d;return-1};this.add=function(){if(1===arguments.length)b.push(arguments[0]);else if(2===arguments.length){var a=arguments[0];if("number"===typeof a)if(0<=a&&a<=b.length)b.splice(a,0,arguments[1]);else throw a+" is not a valid index";else throw typeof a+" is not a number";}else throw"Please use the proper number of parameters.";};this.addAll=function(a,d){var k;if("number"===typeof a){if(0>a||a>b.length)throw"Index out of bounds for addAll: "+
a+" greater or equal than "+b.length;for(k=new ObjectIterator(d);k.hasNext();)b.splice(a++,0,k.next())}else for(k=new ObjectIterator(a);k.hasNext();)b.push(k.next())};this.set=function(){if(2===arguments.length){var a=arguments[0];if("number"===typeof a)if(0<=a&&a<b.length)b.splice(a,1,arguments[1]);else throw a+" is not a valid index.";else throw typeof a+" is not a number";}else throw"Please use the proper number of parameters.";};this.size=function(){return b.length};this.clear=function(){b.length=
0};this.remove=function(a){if("number"===typeof a)return b.splice(a,1)[0];a=this.indexOf(a);return-1<a?(b.splice(a,1),!0):!1};this.removeAll=function(a){var d,b,q,g=new n;g.addAll(this);this.clear();for(b=d=0;d<g.size();d++)q=g.get(d),a.contains(q)||this.add(b++,q);return this.size()<g.size()?!0:!1};this.isEmpty=function(){return!b.length};this.clone=function(){return new n(this)};this.toArray=function(){return b.slice(0)};this.iterator=function(){return new g(b)}}var p=h.virtEquals;return n}},{}],
11:[function(B,z,U){z.exports=function(h,g){var n=function(p){this.code="string"===typeof p&&1===p.length?p.charCodeAt(0):"number"===typeof p?p:p instanceof n?p:NaN;return h[this.code]===g?h[this.code]=this:h[this.code]};n.prototype.toString=function(){return String.fromCharCode(this.code)};n.prototype.valueOf=function(){return this.code};return n}({})},{}],12:[function(B,z,U){z.exports=function(h){function g(){function a(d){d=n(d)%e.length;return 0>d?e.length+d:d}function b(){if(!(h<=S*e.length)){for(var d=
[],c=0;c<e.length;++c)void 0!==e[c]&&(d=d.concat(e[c]));c=2*e.length;e=[];e.length=c;for(c=0;c<d.length;++c){var b=a(d[c].key),k=e[b];void 0===k&&(e[b]=k=[]);k.push(d[c])}}}function c(d,a){function c(){for(;!q;)if(++k,b>=e.length)q=!0;else if(void 0===e[b]||k>=e[b].length)k=-1,++b;else break}var b=0,k=-1,q=!1,g;this.hasNext=function(){return!q};this.next=function(){g=d(e[b][k]);c();return g};this.remove=function(){void 0!==g&&(a(g),--k,c())};c()}function d(d,a,e){this.clear=function(){fa.clear()};
this.contains=function(d){return a(d)};this.containsAll=function(d){for(d=d.iterator();d.hasNext();)if(!this.contains(d.next()))return!1;return!0};this.isEmpty=function(){return fa.isEmpty()};this.iterator=function(){return new c(d,e)};this.remove=function(d){return this.contains(d)?(e(d),!0):!1};this.removeAll=function(d){for(d=d.iterator();d.hasNext();){var a=d.next();this.contains(a)&&e(a)}return!0};this.retainAll=function(d){for(var a=this.iterator(),c=[];a.hasNext();){var b=a.next();d.contains(b)||
c.push(b)}for(d=0;d<c.length;++d)e(c[d]);return 0<c.length};this.size=function(){return fa.size()};this.toArray=function(){for(var d=[],a=this.iterator();a.hasNext();)d.push(a.next());return d}}function k(d){this._isIn=function(a){return a===fa&&void 0===d.removed};this.equals=function(a){return p(d.key,a.getKey())};this.getKey=function(){return d.key};this.getValue=function(){return d.value};this.hashCode=function(a){return n(d.key)};this.setValue=function(a){var e=d.value;d.value=a;return e}}if(1===
arguments.length&&arguments[0]instanceof g)return arguments[0].clone();var q=0<arguments.length?arguments[0]:16,S=1<arguments.length?arguments[1]:0.75,e=[];e.length=q;var h=0,fa=this;this.clear=function(){h=0;e=[];e.length=q};this.clone=function(){var d=new g;d.putAll(this);return d};this.containsKey=function(d){var c=a(d),c=e[c];if(void 0===c)return!1;for(var b=0;b<c.length;++b)if(p(c[b].key,d))return!0;return!1};this.containsValue=function(d){for(var a=0;a<e.length;++a){var c=e[a];if(void 0!==c)for(var b=
0;b<c.length;++b)if(p(c[b].value,d))return!0}return!1};this.entrySet=function(){return new d(function(d){return new k(d)},function(d){return d instanceof k&&d._isIn(fa)},function(d){return fa.remove(d.getKey())})};this.get=function(d){var c=a(d),c=e[c];if(void 0===c)return null;for(var b=0;b<c.length;++b)if(p(c[b].key,d))return c[b].value;return null};this.isEmpty=function(){return 0===h};this.keySet=function(){return new d(function(d){return d.key},function(d){return fa.containsKey(d)},function(d){return fa.remove(d)})};
this.values=function(){return new d(function(d){return d.value},function(d){return fa.containsValue(d)},function(d){return fa.removeByValue(d)})};this.put=function(d,c){var k=a(d),q=e[k];if(void 0===q)return++h,e[k]=[{key:d,value:c}],b(),null;for(k=0;k<q.length;++k)if(p(q[k].key,d)){var g=q[k].value;q[k].value=c;return g}++h;q.push({key:d,value:c});b();return null};this.putAll=function(d){for(d=d.entrySet().iterator();d.hasNext();){var a=d.next();this.put(a.getKey(),a.getValue())}};this.remove=function(d){var c=
a(d),b=e[c];if(void 0===b)return null;for(var k=0;k<b.length;++k)if(p(b[k].key,d))return--h,d=b[k].value,b[k].removed=!0,1<b.length?b.splice(k,1):e[c]=void 0,d;return null};this.removeByValue=function(d){var a,c,b,k;for(a in e)if(e.hasOwnProperty(a))for(c=0,b=e[a].length;c<b;c++)if(k=e[a][c],k.value===d)return e[a].splice(c,1),!0;return!1};this.size=function(){return h}}var n=h.virtHashCode,p=h.virtEquals;return g}},{}],13:[function(B,z,U){z.exports=function(h,g){function n(b,c){b===g&&(b="");this.name=
b;c===g&&(c=0);this.size=c;this.glyph=!1;this.descent=this.ascent=0;this.leading=1.2*c;var d=b.indexOf(" Italic Bold");-1!==d&&(b=b.substring(0,d));this.style="normal";d=b.indexOf(" Italic");-1!==d&&(b=b.substring(0,d),this.style="italic");this.weight="normal";d=b.indexOf(" Bold");-1!==d&&(b=b.substring(0,d),this.weight="bold");this.family="sans-serif";if(b!==g)switch(b){case "sans-serif":case "serif":case "monospace":case "fantasy":case "cursive":this.family=b;break;default:this.family='"'+b+'", sans-serif'}var d=
this.size/250,k=p.createElement("canvas");k.width=500;k.height=500;k.style.opacity=0;var q=this.getCSSDefinition("250px","normal"),S=k.getContext("2d");S.font=q;k.width=S.measureText("dbflkhyjqpg").width;S.font=q;q=p.createElement("div");q.style.position="absolute";q.style.opacity=0;q.style.fontFamily='"'+this.name+'"';q.style.fontSize="250px";q.innerHTML="dbflkhyjqpg<br/>dbflkhyjqpg";p.body.appendChild(q);var e=k.width,h=k.height,k=h/2;S.fillStyle="white";S.fillRect(0,0,e,h);S.fillStyle="black";
S.fillText("dbflkhyjqpg",0,k);for(var h=S.getImageData(0,0,e,h).data,n=0,C=4*e,F=h.length;++n<F&&255===h[n];)a();e=Math.round(n/C);for(n=F-1;0<--n&&255===h[n];)a();h=Math.round(n/C);this.ascent=d*(k-e);this.descent=d*(h-k);p.defaultView.getComputedStyle&&(k=p.defaultView.getComputedStyle(q,null).getPropertyValue("height"),k=d*k.replace("px",""),k>=2*this.size&&(this.leading=Math.round(k/2)));p.body.removeChild(q);d=this.caching?S:void 0;this.context2d=d;this.css=this.getCSSDefinition();this.context2d&&
(this.context2d.font=this.css)}var p=h.Browser.document,a=h.noop;n.prototype.caching=!0;n.prototype.getCSSDefinition=function(a,c){a===g&&(a=this.size+"px");c===g&&(c=this.leading+"px");return[this.style,"normal",this.weight,a+"/"+c,this.family].join(" ")};n.prototype.measureTextWidth=function(a){return this.context2d.measureText(a).width};n.prototype.measureTextWidthFallback=function(a){var c=p.createElement("canvas").getContext("2d");c.font=this.css;return c.measureText(a).width};n.PFontCache={length:0};
n.get=function(a,c){c=(10*c+0.5|0)/10;var d=n.PFontCache,k=a+"/"+c;if(!d[k]){d[k]=new n(a,c);d.length++;if(50===d.length){n.prototype.measureTextWidth=n.prototype.measureTextWidthFallback;n.prototype.caching=!1;for(var q in d)"length"!==q&&(d[q].context2d=null);return new n(a,c)}if(400===d.length)return n.PFontCache={},n.get=n.getFallback,new n(a,c)}return d[k]};n.getFallback=function(a,c){return new n(a,c)};n.list=function(){return["sans-serif","serif","monospace","fantasy","cursive"]};n.preloading=
{template:{},initialized:!1,initialize:function(){var a=p.createElement("style");a.setAttribute("type","text/css");a.innerHTML='@font-face {\n font-family: "PjsEmptyFont";\n src: url(\'data:application/x-font-ttf;base64,'+function(){return"#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#".replace(/[#237]/g,
function(a){return"AAAAAAAA".substr(~~a?7-a:6)})}()+"')\n format('truetype');\n}";p.head.appendChild(a);a=p.createElement("span");a.style.cssText='position: absolute; top: -1000; left: 0; opacity: 0; font-family: "PjsEmptyFont", fantasy;';a.innerHTML="AAAAAAAA";p.body.appendChild(a);this.template=a;this.initialized=!0},getElementWidth:function(a){return p.defaultView.getComputedStyle(a,"").getPropertyValue("width")},timeAttempted:0,pending:function(a){this.initialized||this.initialize();for(var c,
d,k=this.getElementWidth(this.template),q=0;q<this.fontList.length;q++){c=this.fontList[q];d=this.getElementWidth(c);if(4E3>this.timeAttempted&&d===k)return this.timeAttempted+=a,!0;p.body.removeChild(c);this.fontList.splice(q--,1);this.timeAttempted=0}return 0===this.fontList.length?!1:!0},fontList:[],addedList:{},add:function(a){this.initialized||this.initialize();var c="object"===typeof a?a.fontFace:a;a="object"===typeof a?a.url:a;if(!this.addedList[c]){var d=p.createElement("style");d.setAttribute("type",
"text/css");d.innerHTML="@font-face{\n font-family: '"+c+"';\n src: url('"+a+"');\n}\n";p.head.appendChild(d);this.addedList[c]=!0;a=p.createElement("span");a.style.cssText="position: absolute; top: 0; left: 0; opacity: 0;";a.style.fontFamily='"'+c+'", "PjsEmptyFont", fantasy';a.innerHTML="AAAAAAAA";p.body.appendChild(a);this.fontList.push(a)}}};return n}},{}],14:[function(B,z,U){z.exports=function(h,g){var n=h.p,p=function(){0===arguments.length?this.reset():1===arguments.length&&arguments[0]instanceof
p?this.set(arguments[0].array()):6===arguments.length&&this.set(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])};p.prototype={set:function(){if(6===arguments.length){var a=arguments;this.set([a[0],a[1],a[2],a[3],a[4],a[5]])}else 1===arguments.length&&arguments[0]instanceof p?this.elements=arguments[0].array():1===arguments.length&&arguments[0]instanceof Array&&(this.elements=arguments[0].slice())},get:function(){var a=new p;a.set(this.elements);return a},reset:function(){this.set([1,
0,0,0,1,0])},array:function(){return this.elements.slice()},translate:function(a,b){this.elements[2]=a*this.elements[0]+b*this.elements[1]+this.elements[2];this.elements[5]=a*this.elements[3]+b*this.elements[4]+this.elements[5]},invTranslate:function(a,b){this.translate(-a,-b)},transpose:function(){},mult:function(a,b){var c,d;a instanceof PVector?(c=a.x,d=a.y,b||(b=new PVector)):a instanceof Array&&(c=a[0],d=a[1],b||(b=[]));b instanceof Array?(b[0]=this.elements[0]*c+this.elements[1]*d+this.elements[2],
b[1]=this.elements[3]*c+this.elements[4]*d+this.elements[5]):b instanceof PVector&&(b.x=this.elements[0]*c+this.elements[1]*d+this.elements[2],b.y=this.elements[3]*c+this.elements[4]*d+this.elements[5],b.z=0);return b},multX:function(a,b){return a*this.elements[0]+b*this.elements[1]+this.elements[2]},multY:function(a,b){return a*this.elements[3]+b*this.elements[4]+this.elements[5]},skewX:function(a){this.apply(1,0,1,a,0,0)},skewY:function(a){this.apply(1,0,1,0,a,0)},shearX:function(a){this.apply(1,
0,1,Math.tan(a),0,0)},shearY:function(a){this.apply(1,0,1,0,Math.tan(a),0)},determinant:function(){return this.elements[0]*this.elements[4]-this.elements[1]*this.elements[3]},invert:function(){var a=this.determinant();if(Math.abs(a)>PConstants.MIN_INT){var b=this.elements[0],c=this.elements[1],d=this.elements[2],k=this.elements[3],q=this.elements[4],g=this.elements[5];this.elements[0]=q/a;this.elements[3]=-k/a;this.elements[1]=-c/a;this.elements[4]=b/a;this.elements[2]=(c*g-q*d)/a;this.elements[5]=
(k*d-b*g)/a;return!0}return!1},scale:function(a,b){a&&!b&&(b=a);a&&b&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[3]*=a,this.elements[4]*=b)},invScale:function(a,b){a&&!b&&(b=a);this.scale(1/a,1/b)},apply:function(){var a;1===arguments.length&&arguments[0]instanceof p?a=arguments[0].array():6===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,this.elements[2],0,0,this.elements[5]],c=0,d=0;2>d;d++)for(var k=
0;3>k;k++,c++)b[c]+=this.elements[3*d+0]*a[k+0]+this.elements[3*d+1]*a[k+3];this.elements=b.slice()},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof p?a=arguments[0].array():6===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);var b=[0,0,a[2],0,0,a[5]];b[2]=a[2]+this.elements[2]*a[0]+this.elements[5]*a[1];b[5]=a[5]+this.elements[2]*a[3]+this.elements[5]*a[4];b[0]=this.elements[0]*a[0]+this.elements[3]*
a[1];b[3]=this.elements[0]*a[3]+this.elements[3]*a[4];b[1]=this.elements[1]*a[0]+this.elements[4]*a[1];b[4]=this.elements[1]*a[3]+this.elements[4]*a[4];this.elements=b.slice()},rotate:function(a){var b=Math.cos(a);a=Math.sin(a);var c=this.elements[0],d=this.elements[1];this.elements[0]=b*c+a*d;this.elements[1]=-a*c+b*d;c=this.elements[3];d=this.elements[4];this.elements[3]=b*c+a*d;this.elements[4]=-a*c+b*d},rotateZ:function(a){this.rotate(a)},invRotateZ:function(a){this.rotateZ(a-Math.PI)},print:function(){var a=
printMatrixHelper(this.elements),a=""+n.nfs(this.elements[0],a,4)+" "+n.nfs(this.elements[1],a,4)+" "+n.nfs(this.elements[2],a,4)+"\n"+n.nfs(this.elements[3],a,4)+" "+n.nfs(this.elements[4],a,4)+" "+n.nfs(this.elements[5],a,4)+"\n\n";n.println(a)}};return p}},{}],15:[function(B,z,U){z.exports=function(h,g){var n=h.p,p=function(){this.reset()};p.prototype={set:function(){16===arguments.length?this.elements=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof p?this.elements=
arguments[0].array():1===arguments.length&&arguments[0]instanceof Array&&(this.elements=arguments[0].slice())},get:function(){var a=new p;a.set(this.elements);return a},reset:function(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},array:function(){return this.elements.slice()},translate:function(a,b,c){c===g&&(c=0);this.elements[3]+=a*this.elements[0]+b*this.elements[1]+c*this.elements[2];this.elements[7]+=a*this.elements[4]+b*this.elements[5]+c*this.elements[6];this.elements[11]+=a*this.elements[8]+
b*this.elements[9]+c*this.elements[10];this.elements[15]+=a*this.elements[12]+b*this.elements[13]+c*this.elements[14]},transpose:function(){var a=this.elements[4];this.elements[4]=this.elements[1];this.elements[1]=a;a=this.elements[8];this.elements[8]=this.elements[2];this.elements[2]=a;a=this.elements[6];this.elements[6]=this.elements[9];this.elements[9]=a;a=this.elements[3];this.elements[3]=this.elements[12];this.elements[12]=a;a=this.elements[7];this.elements[7]=this.elements[13];this.elements[13]=
a;a=this.elements[11];this.elements[11]=this.elements[14];this.elements[14]=a},mult:function(a,b){var c,d,k,q;a instanceof PVector?(c=a.x,d=a.y,k=a.z,q=1,b||(b=new PVector)):a instanceof Array&&(c=a[0],d=a[1],k=a[2],q=a[3]||1,!b||3!==b.length&&4!==b.length)&&(b=[0,0,0]);b instanceof Array&&(3===b.length?(b[0]=this.elements[0]*c+this.elements[1]*d+this.elements[2]*k+this.elements[3],b[1]=this.elements[4]*c+this.elements[5]*d+this.elements[6]*k+this.elements[7],b[2]=this.elements[8]*c+this.elements[9]*
d+this.elements[10]*k+this.elements[11]):4===b.length&&(b[0]=this.elements[0]*c+this.elements[1]*d+this.elements[2]*k+this.elements[3]*q,b[1]=this.elements[4]*c+this.elements[5]*d+this.elements[6]*k+this.elements[7]*q,b[2]=this.elements[8]*c+this.elements[9]*d+this.elements[10]*k+this.elements[11]*q,b[3]=this.elements[12]*c+this.elements[13]*d+this.elements[14]*k+this.elements[15]*q));b instanceof PVector&&(b.x=this.elements[0]*c+this.elements[1]*d+this.elements[2]*k+this.elements[3],b.y=this.elements[4]*
c+this.elements[5]*d+this.elements[6]*k+this.elements[7],b.z=this.elements[8]*c+this.elements[9]*d+this.elements[10]*k+this.elements[11]);return b},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof p?a=arguments[0].array():16===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],c=0,d=0;4>d;d++)for(var k=0;4>k;k++,c++)b[c]+=this.elements[k+0]*a[4*d+0]+this.elements[k+
4]*a[4*d+1]+this.elements[k+8]*a[4*d+2]+this.elements[k+12]*a[4*d+3];this.elements=b.slice()},apply:function(){var a;1===arguments.length&&arguments[0]instanceof p?a=arguments[0].array():16===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],c=0,d=0;4>d;d++)for(var k=0;4>k;k++,c++)b[c]+=this.elements[4*d+0]*a[k+0]+this.elements[4*d+1]*a[k+4]+this.elements[4*d+2]*a[k+8]+this.elements[4*
d+3]*a[k+12];this.elements=b.slice()},rotate:function(a,b,c,d){if(c){var k=Math.cos(a);a=Math.sin(a);var q=1-k;this.apply(q*b*b+k,q*b*c-a*d,q*b*d+a*c,0,q*b*c+a*d,q*c*c+k,q*c*d-a*b,0,q*b*d-a*c,q*c*d+a*b,q*d*d+k,0,0,0,0,1)}else this.rotateZ(a)},invApply:function(){inverseCopy===g&&(inverseCopy=new p);var a=arguments;inverseCopy.set(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]);if(!inverseCopy.invert())return!1;this.preApply(inverseCopy);return!0},rotateX:function(a){var b=
Math.cos(a);a=Math.sin(a);this.apply([1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1])},rotateY:function(a){var b=Math.cos(a);a=Math.sin(a);this.apply([b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1])},rotateZ:function(a){var b=Math.cos(a);a=Math.sin(a);this.apply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},scale:function(a,b,c){!a||b||c?a&&(b&&!c)&&(c=1):b=c=a;a&&(b&&c)&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[2]*=c,this.elements[4]*=a,this.elements[5]*=b,this.elements[6]*=c,this.elements[8]*=a,this.elements[9]*=b,
this.elements[10]*=c,this.elements[12]*=a,this.elements[13]*=b,this.elements[14]*=c)},skewX:function(a){a=Math.tan(a);this.apply(1,a,0,0,0,1,0,0,0,0,1,0,0,0,0,1)},skewY:function(a){a=Math.tan(a);this.apply(1,0,0,0,a,1,0,0,0,0,1,0,0,0,0,1)},shearX:function(a){a=Math.tan(a);this.apply(1,a,0,0,0,1,0,0,0,0,1,0,0,0,0,1)},shearY:function(a){a=Math.tan(a);this.apply(1,0,0,0,a,1,0,0,0,0,1,0,0,0,0,1)},multX:function(a,b,c,d){return c?d?this.elements[0]*a+this.elements[1]*b+this.elements[2]*c+this.elements[3]*
d:this.elements[0]*a+this.elements[1]*b+this.elements[2]*c+this.elements[3]:this.elements[0]*a+this.elements[1]*b+this.elements[3]},multY:function(a,b,c,d){return c?d?this.elements[4]*a+this.elements[5]*b+this.elements[6]*c+this.elements[7]*d:this.elements[4]*a+this.elements[5]*b+this.elements[6]*c+this.elements[7]:this.elements[4]*a+this.elements[5]*b+this.elements[7]},multZ:function(a,b,c,d){return d?this.elements[8]*a+this.elements[9]*b+this.elements[10]*c+this.elements[11]*d:this.elements[8]*
a+this.elements[9]*b+this.elements[10]*c+this.elements[11]},multW:function(a,b,c,d){return d?this.elements[12]*a+this.elements[13]*b+this.elements[14]*c+this.elements[15]*d:this.elements[12]*a+this.elements[13]*b+this.elements[14]*c+this.elements[15]},invert:function(){var a=this.elements[0]*this.elements[5]-this.elements[1]*this.elements[4],b=this.elements[0]*this.elements[6]-this.elements[2]*this.elements[4],c=this.elements[0]*this.elements[7]-this.elements[3]*this.elements[4],d=this.elements[1]*
this.elements[6]-this.elements[2]*this.elements[5],k=this.elements[1]*this.elements[7]-this.elements[3]*this.elements[5],q=this.elements[2]*this.elements[7]-this.elements[3]*this.elements[6],g=this.elements[8]*this.elements[13]-this.elements[9]*this.elements[12],e=this.elements[8]*this.elements[14]-this.elements[10]*this.elements[12],h=this.elements[8]*this.elements[15]-this.elements[11]*this.elements[12],n=this.elements[9]*this.elements[14]-this.elements[10]*this.elements[13],p=this.elements[9]*
this.elements[15]-this.elements[11]*this.elements[13],F=this.elements[10]*this.elements[15]-this.elements[11]*this.elements[14],N=a*F-b*p+c*n+d*h-k*e+q*g;if(1E-9>=Math.abs(N))return!1;var u=[];u[0]=+this.elements[5]*F-this.elements[6]*p+this.elements[7]*n;u[4]=-this.elements[4]*F+this.elements[6]*h-this.elements[7]*e;u[8]=+this.elements[4]*p-this.elements[5]*h+this.elements[7]*g;u[12]=-this.elements[4]*n+this.elements[5]*e-this.elements[6]*g;u[1]=-this.elements[1]*F+this.elements[2]*p-this.elements[3]*
n;u[5]=+this.elements[0]*F-this.elements[2]*h+this.elements[3]*e;u[9]=-this.elements[0]*p+this.elements[1]*h-this.elements[3]*g;u[13]=+this.elements[0]*n-this.elements[1]*e+this.elements[2]*g;u[2]=+this.elements[13]*q-this.elements[14]*k+this.elements[15]*d;u[6]=-this.elements[12]*q+this.elements[14]*c-this.elements[15]*b;u[10]=+this.elements[12]*k-this.elements[13]*c+this.elements[15]*a;u[14]=-this.elements[12]*d+this.elements[13]*b-this.elements[14]*a;u[3]=-this.elements[9]*q+this.elements[10]*
k-this.elements[11]*d;u[7]=+this.elements[8]*q-this.elements[10]*c+this.elements[11]*b;u[11]=-this.elements[8]*k+this.elements[9]*c-this.elements[11]*a;u[15]=+this.elements[8]*d-this.elements[9]*b+this.elements[10]*a;a=1/N;u[0]*=a;u[1]*=a;u[2]*=a;u[3]*=a;u[4]*=a;u[5]*=a;u[6]*=a;u[7]*=a;u[8]*=a;u[9]*=a;u[10]*=a;u[11]*=a;u[12]*=a;u[13]*=a;u[14]*=a;u[15]*=a;this.elements=u.slice();return!0},toString:function(){for(var a="",b=0;15>b;b++)a+=this.elements[b]+", ";return a+=this.elements[15]},print:function(){var a=
printMatrixHelper(this.elements),a=""+n.nfs(this.elements[0],a,4)+" "+n.nfs(this.elements[1],a,4)+" "+n.nfs(this.elements[2],a,4)+" "+n.nfs(this.elements[3],a,4)+"\n"+n.nfs(this.elements[4],a,4)+" "+n.nfs(this.elements[5],a,4)+" "+n.nfs(this.elements[6],a,4)+" "+n.nfs(this.elements[7],a,4)+"\n"+n.nfs(this.elements[8],a,4)+" "+n.nfs(this.elements[9],a,4)+" "+n.nfs(this.elements[10],a,4)+" "+n.nfs(this.elements[11],a,4)+"\n"+n.nfs(this.elements[12],a,4)+" "+n.nfs(this.elements[13],a,4)+" "+n.nfs(this.elements[14],
a,4)+" "+n.nfs(this.elements[15],a,4)+"\n\n";n.println(a)},invTranslate:function(a,b,c){this.preApply(1,0,0,-a,0,1,0,-b,0,0,1,-c,0,0,0,1)},invRotateX:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1])},invRotateY:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1])},invRotateZ:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},invScale:function(a,b,c){this.preApply([1/
a,0,0,0,0,1/b,0,0,0,0,1/c,0,0,0,0,1])}};return p}},{}],16:[function(B,z,U){z.exports=function(h){var g=h.PConstants,n=h.PMatrix2D,p=h.PMatrix3D;h=function(a){this.family=a||g.GROUP;this.style=this.visible=!0;this.children=[];this.nameTable=[];this.params=[];this.name="";this.parent=this.height=this.width=this.close=this.kind=this.matrix=this.image=null};h.prototype={isVisible:function(){return this.visible},setVisible:function(a){this.visible=a},disableStyle:function(){this.style=!1;for(var a=0,b=
this.children.length;a<b;a++)this.children[a].disableStyle()},enableStyle:function(){this.style=!0;for(var a=0,b=this.children.length;a<b;a++)this.children[a].enableStyle()},getFamily:function(){return this.family},getWidth:function(){return this.width},getHeight:function(){return this.height},setName:function(a){this.name=a},getName:function(){return this.name},draw:function(a){if(!a)throw"render context missing for draw() in PShape";this.visible&&(this.pre(a),this.drawImpl(a),this.post(a))},drawImpl:function(a){this.family===
g.GROUP?this.drawGroup(a):this.family===g.PRIMITIVE?this.drawPrimitive(a):this.family===g.GEOMETRY?this.drawGeometry(a):this.family===g.PATH&&this.drawPath(a)},drawPath:function(a){var b,c;if(0!==this.vertices.length){a.beginShape();if(0===this.vertexCodes.length)if(2===this.vertices[0].length)for(b=0,c=this.vertices.length;b<c;b++)a.vertex(this.vertices[b][0],this.vertices[b][1]);else for(b=0,c=this.vertices.length;b<c;b++)a.vertex(this.vertices[b][0],this.vertices[b][1],this.vertices[b][2]);else{var d=
0;if(2===this.vertices[0].length)for(b=0,c=this.vertexCodes.length;b<c;b++)this.vertexCodes[b]===g.VERTEX?(a.vertex(this.vertices[d][0],this.vertices[d][1],this.vertices[d].moveTo),a.breakShape=!1,d++):this.vertexCodes[b]===g.BEZIER_VERTEX?(a.bezierVertex(this.vertices[d+0][0],this.vertices[d+0][1],this.vertices[d+1][0],this.vertices[d+1][1],this.vertices[d+2][0],this.vertices[d+2][1]),d+=3):this.vertexCodes[b]===g.CURVE_VERTEX?(a.curveVertex(this.vertices[d][0],this.vertices[d][1]),d++):this.vertexCodes[b]===
g.BREAK&&(a.breakShape=!0);else for(b=0,c=this.vertexCodes.length;b<c;b++)this.vertexCodes[b]===g.VERTEX?(a.vertex(this.vertices[d][0],this.vertices[d][1],this.vertices[d][2]),!0===this.vertices[d].moveTo?vertArray[vertArray.length-1].moveTo=!0:!1===this.vertices[d].moveTo&&(vertArray[vertArray.length-1].moveTo=!1),a.breakShape=!1):this.vertexCodes[b]===g.BEZIER_VERTEX?(a.bezierVertex(this.vertices[d+0][0],this.vertices[d+0][1],this.vertices[d+0][2],this.vertices[d+1][0],this.vertices[d+1][1],this.vertices[d+
1][2],this.vertices[d+2][0],this.vertices[d+2][1],this.vertices[d+2][2]),d+=3):this.vertexCodes[b]===g.CURVE_VERTEX?(a.curveVertex(this.vertices[d][0],this.vertices[d][1],this.vertices[d][2]),d++):this.vertexCodes[b]===g.BREAK&&(a.breakShape=!0)}a.endShape(this.close?g.CLOSE:g.OPEN)}},drawGeometry:function(a){var b,c;a.beginShape(this.kind);if(this.style)for(b=0,c=this.vertices.length;b<c;b++)a.vertex(this.vertices[b]);else for(b=0,c=this.vertices.length;b<c;b++){var d=this.vertices[b];0===d[2]?a.vertex(d[0],
d[1]):a.vertex(d[0],d[1],d[2])}a.endShape()},drawGroup:function(a){for(var b=0,c=this.children.length;b<c;b++)this.children[b].draw(a)},drawPrimitive:function(a){if(this.kind===g.POINT)a.point(this.params[0],this.params[1]);else if(this.kind===g.LINE)4===this.params.length?a.line(this.params[0],this.params[1],this.params[2],this.params[3]):a.line(this.params[0],this.params[1],this.params[2],this.params[3],this.params[4],this.params[5]);else if(this.kind===g.TRIANGLE)a.triangle(this.params[0],this.params[1],
this.params[2],this.params[3],this.params[4],this.params[5]);else if(this.kind===g.QUAD)a.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===g.RECT)if(null!==this.image){var b=imageModeConvert;a.imageMode(g.CORNER);a.image(this.image,this.params[0],this.params[1],this.params[2],this.params[3]);imageModeConvert=b}else b=a.curRectMode,a.rectMode(g.CORNER),a.rect(this.params[0],this.params[1],this.params[2],
this.params[3]),a.curRectMode=b;else this.kind===g.ELLIPSE?(b=a.curEllipseMode,a.ellipseMode(g.CORNER),a.ellipse(this.params[0],this.params[1],this.params[2],this.params[3]),a.curEllipseMode=b):this.kind===g.ARC?(b=curEllipseMode,a.ellipseMode(g.CORNER),a.arc(this.params[0],this.params[1],this.params[2],this.params[3],this.params[4],this.params[5]),curEllipseMode=b):this.kind===g.BOX?1===this.params.length?a.box(this.params[0]):a.box(this.params[0],this.params[1],this.params[2]):this.kind===g.SPHERE&&
a.sphere(this.params[0])},pre:function(a){this.matrix&&(a.pushMatrix(),a.transform(this.matrix));this.style&&(a.pushStyle(),this.styles(a))},post:function(a){this.matrix&&a.popMatrix();this.style&&a.popStyle()},styles:function(a){this.stroke?(a.stroke(this.strokeColor),a.strokeWeight(this.strokeWeight),a.strokeCap(this.strokeCap),a.strokeJoin(this.strokeJoin)):a.noStroke();this.fill?a.fill(this.fillColor):a.noFill()},getChild:function(a){var b,c;if("number"===typeof a)return this.children[a];var d;
if(""===a||this.name===a)return this;if(0<this.nameTable.length){b=0;for(c=this.nameTable.length;b<c||d;b++)if(this.nameTable[b].getName===a){d=this.nameTable[b];break}if(d)return d}b=0;for(c=this.children.length;b<c;b++)if(d=this.children[b].getChild(a))return d;return null},getChildCount:function(){return this.children.length},addChild:function(a){this.children.push(a);a.parent=this;null!==a.getName()&&this.addName(a.getName(),a)},addName:function(a,b){null!==this.parent?this.parent.addName(a,b):
this.nameTable.push([a,b])},translate:function(){2===arguments.length?(this.checkMatrix(2),this.matrix.translate(arguments[0],arguments[1])):(this.checkMatrix(3),this.matrix.translate(arguments[0],arguments[1],0))},checkMatrix:function(a){null===this.matrix?this.matrix=2===a?new n:new p:3===a&&this.matrix instanceof n&&(this.matrix=new p)},rotateX:function(a){this.rotate(a,1,0,0)},rotateY:function(a){this.rotate(a,0,1,0)},rotateZ:function(a){this.rotate(a,0,0,1)},rotate:function(){1===arguments.length?
(this.checkMatrix(2),this.matrix.rotate(arguments[0])):(this.checkMatrix(3),this.matrix.rotate(arguments[0],arguments[1],arguments[2],arguments[3]))},scale:function(){2===arguments.length?(this.checkMatrix(2),this.matrix.scale(arguments[0],arguments[1])):3===arguments.length?(this.checkMatrix(2),this.matrix.scale(arguments[0],arguments[1],arguments[2])):(this.checkMatrix(2),this.matrix.scale(arguments[0]))},resetMatrix:function(){this.checkMatrix(2);this.matrix.reset()},applyMatrix:function(a){1===
arguments.length?this.applyMatrix(a.elements[0],a.elements[1],0,a.elements[2],a.elements[3],a.elements[4],0,a.elements[5],0,0,1,0,0,0,0,1):6===arguments.length?(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)):16===arguments.length&&(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]))}};return h}},{}],17:[function(B,z,U){z.exports=function(h){var g=h.CommonFunctions,n=h.PConstants,p=h.PShape,a=h.XMLElement,b=h.colors,c=function(){p.call(this);if(1===arguments.length){if(this.element=arguments[0],this.vertexCodes=[],this.vertices=[],this.opacity=1,this.stroke=!1,this.strokeColor=n.ALPHA_MASK,this.strokeWeight=1,this.strokeCap=n.SQUARE,this.strokeJoin=n.MITER,this.strokeName=this.strokeGradientPaint=this.strokeGradient=
null,this.strokeOpacity=1,this.fill=!0,this.fillColor=n.ALPHA_MASK,this.fillName=this.fillGradientPaint=this.fillGradient=null,this.fillOpacity=1,"svg"!==this.element.getName())throw"root is not <svg>, it's <"+this.element.getName()+">";}else 2===arguments.length&&("string"===typeof arguments[1]?-1<arguments[1].indexOf(".svg")&&(this.element=new a(!0,arguments[1]),this.vertexCodes=[],this.vertices=[],this.opacity=1,this.stroke=!1,this.strokeColor=n.ALPHA_MASK,this.strokeWeight=1,this.strokeCap=n.SQUARE,
this.strokeJoin=n.MITER,this.strokeName=this.strokeGradientPaint=this.strokeGradient="",this.strokeOpacity=1,this.fill=!0,this.fillColor=n.ALPHA_MASK,this.fillGradientPaint=this.fillGradient=null,this.fillOpacity=1):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");this.visible="none"!==this.element.getStringAttribute("display","inline");var d=this.element.getAttribute("transform");d&&(this.matrix=this.parseMatrix(d));d=this.element.getStringAttribute("viewBox");null!==d&&(d=d.split(" "),this.width=d[2],this.height=d[3]);var d=this.element.getStringAttribute("width"),c=this.element.getStringAttribute("height");if(null!==d)this.width=this.parseUnitSize(d),this.height=this.parseUnitSize(c);else if(0===this.width||
0===this.height)throw this.height=this.width=1,"The width and/or height is not readable in the <svg> tag of this file.";this.parseColors(this.element);this.parseChildren(this.element)};c.prototype=new p;c.prototype.parseMatrix=function(){function d(d){var a=[];d.replace(/\((.*?)\)/,function(){return function(d,e){a=e.replace(/,+/g," ").split(/\s+/)}}());return a}return function(a){this.checkMatrix(2);var c=[];a.replace(/\s*(\w+)\((.*?)\)/g,function(d){c.push(g.trim(d))});if(0===c.length)return null;
a=0;for(var b=c.length;a<b;a++){var e=d(c[a]);if(-1!==c[a].indexOf("matrix"))this.matrix.set(e[0],e[2],e[4],e[1],e[3],e[5]);else if(-1!==c[a].indexOf("translate"))this.matrix.translate(e[0],2===e.length?e[1]:0);else if(-1!==c[a].indexOf("scale"))this.matrix.scale(e[0],2===e.length?e[1]:e[0]);else if(-1!==c[a].indexOf("rotate")){var h=e[0];1===e.length?this.matrix.rotate(g.radians(h)):3===e.length&&(this.matrix.translate(e[1],e[2]),this.matrix.rotate(g.radians(e[0])),this.matrix.translate(-e[1],-e[2]))}else-1!==
c[a].indexOf("skewX")?this.matrix.skewX(parseFloat(e[0])):-1!==c[a].indexOf("skewY")?this.matrix.skewY(e[0]):-1!==c[a].indexOf("shearX")?this.matrix.shearX(e[0]):-1!==c[a].indexOf("shearY")&&this.matrix.shearY(e[0])}return this.matrix}}();c.prototype.parseChildren=function(d){d=d.getChildren();var a=new p,c,b;c=0;for(b=d.length;c<b;c++){var e=this.parseChild(d[c]);e&&a.addChild(e)}c=0;for(b=a.children.length;c<b;c++)this.children.push(a.children[c])};c.prototype.getName=function(){return this.name};
c.prototype.parseChild=function(d){var a=d.getName(),b;"g"===a?b=new c(this,d):"defs"===a?b=new c(this,d):"line"===a?(b=new c(this,d),b.parseLine()):"circle"===a?(b=new c(this,d),b.parseEllipse(!0)):"ellipse"===a?(b=new c(this,d),b.parseEllipse(!1)):"rect"===a?(b=new c(this,d),b.parseRect()):"polygon"===a?(b=new c(this,d),b.parsePoly(!0)):"polyline"===a?(b=new c(this,d),b.parsePoly(!1)):"path"===a?(b=new c(this,d),b.parsePath()):"radialGradient"===a?unimplemented("PShapeSVG.prototype.parseChild, name = radialGradient"):
"linearGradient"===a?unimplemented("PShapeSVG.prototype.parseChild, name = linearGradient"):"text"===a?unimplemented("PShapeSVG.prototype.parseChild, name = text"):"filter"===a?unimplemented("PShapeSVG.prototype.parseChild, name = filter"):"mask"===a&&unimplemented("PShapeSVG.prototype.parseChild, name = mask");return b};c.prototype.parsePath=function(){this.family=n.PATH;this.kind=0;var d=g.trim(this.element.getStringAttribute("d").replace(/[\s,]+/g," "));if(null!==d)for(var d=d.split(""),a=0,c=
0,b=0,e=0,h=e=b=0,p=0,C=0,F=0,N=F=e=C=b=0,u=0,ka="",w=[],z=!1,B,Q,v;N<d.length;)if(u=d[N].charCodeAt(0),65<=u&&90>=u||97<=u&&122>=u){v=N;N++;if(N<d.length)for(w=[],u=d[N].charCodeAt(0);!(65<=u&&90>=u||97<=u&&100>=u||102<=u&&122>=u)&&!1===z;)32===u?""!==ka&&(w.push(parseFloat(ka)),ka=""):45===u?101===d[N-1].charCodeAt(0)?ka+=d[N].toString():(""!==ka&&w.push(parseFloat(ka)),ka=d[N].toString()):ka+=d[N].toString(),N++,N===d.length?z=!0:u=d[N].charCodeAt(0);""!==ka&&(w.push(parseFloat(ka)),ka="");Q=d[v];
u=Q.charCodeAt(0);if(77===u){if(2<=w.length&&0===w.length%2&&(a=w[0],c=w[1],this.parsePathMoveto(a,c),2<w.length))for(v=2,u=w.length;v<u;v+=2)a=w[v],c=w[v+1],this.parsePathLineto(a,c)}else if(109===u){if(2<=w.length&&0===w.length%2&&(a+=w[0],c+=w[1],this.parsePathMoveto(a,c),2<w.length))for(v=2,u=w.length;v<u;v+=2)a+=w[v],c+=w[v+1],this.parsePathLineto(a,c)}else if(76===u){if(2<=w.length&&0===w.length%2)for(v=0,u=w.length;v<u;v+=2)a=w[v],c=w[v+1],this.parsePathLineto(a,c)}else if(108===u){if(2<=w.length&&
0===w.length%2)for(v=0,u=w.length;v<u;v+=2)a+=w[v],c+=w[v+1],this.parsePathLineto(a,c)}else if(72===u)for(v=0,u=w.length;v<u;v++)a=w[v],this.parsePathLineto(a,c);else if(104===u)for(v=0,u=w.length;v<u;v++)a+=w[v],this.parsePathLineto(a,c);else if(86===u)for(v=0,u=w.length;v<u;v++)c=w[v],this.parsePathLineto(a,c);else if(118===u)for(v=0,u=w.length;v<u;v++)c+=w[v],this.parsePathLineto(a,c);else if(67===u){if(6<=w.length&&0===w.length%6)for(v=0,u=w.length;v<u;v+=6)b=w[v],h=w[v+1],e=w[v+2],p=w[v+3],C=
w[v+4],F=w[v+5],this.parsePathCurveto(b,h,e,p,C,F),a=C,c=F}else if(99===u){if(6<=w.length&&0===w.length%6)for(v=0,u=w.length;v<u;v+=6)b=a+w[v],h=c+w[v+1],e=a+w[v+2],p=c+w[v+3],C=a+w[v+4],F=c+w[v+5],this.parsePathCurveto(b,h,e,p,C,F),a=C,c=F}else if(83===u){if(4<=w.length&&0===w.length%4)for(v=0,u=w.length;v<u;v+=4)"c"===B.toLowerCase()||"s"===B.toLowerCase()?(b=this.vertices[this.vertices.length-2][0],C=this.vertices[this.vertices.length-2][1],e=this.vertices[this.vertices.length-1][0],F=this.vertices[this.vertices.length-
1][1],b=e+(e-b),h=F+(F-C)):(b=this.vertices[this.vertices.length-1][0],h=this.vertices[this.vertices.length-1][1]),e=w[v],p=w[v+1],C=w[v+2],F=w[v+3],this.parsePathCurveto(b,h,e,p,C,F),a=C,c=F}else if(115===u){if(4<=w.length&&0===w.length%4)for(v=0,u=w.length;v<u;v+=4)"c"===B.toLowerCase()||"s"===B.toLowerCase()?(b=this.vertices[this.vertices.length-2][0],C=this.vertices[this.vertices.length-2][1],e=this.vertices[this.vertices.length-1][0],F=this.vertices[this.vertices.length-1][1],b=e+(e-b),h=F+(F-
C)):(b=this.vertices[this.vertices.length-1][0],h=this.vertices[this.vertices.length-1][1]),e=a+w[v],p=c+w[v+1],C=a+w[v+2],F=c+w[v+3],this.parsePathCurveto(b,h,e,p,C,F),a=C,c=F}else if(81===u){if(4<=w.length&&0===w.length%4)for(v=0,u=w.length;v<u;v+=4)b=w[v],e=w[v+1],C=w[v+2],F=w[v+3],this.parsePathQuadto(a,c,b,e,C,F),a=C,c=F}else if(113===u){if(4<=w.length&&0===w.length%4)for(v=0,u=w.length;v<u;v+=4)b=a+w[v],e=c+w[v+1],C=a+w[v+2],F=c+w[v+3],this.parsePathQuadto(a,c,b,e,C,F),a=C,c=F}else if(84===
u){if(2<=w.length&&0===w.length%2)for(v=0,u=w.length;v<u;v+=2)"q"===B.toLowerCase()||"t"===B.toLowerCase()?(b=this.vertices[this.vertices.length-2][0],C=this.vertices[this.vertices.length-2][1],e=this.vertices[this.vertices.length-1][0],F=this.vertices[this.vertices.length-1][1],b=e+(e-b),e=F+(F-C)):(b=a,e=c),C=w[v],F=w[v+1],this.parsePathQuadto(a,c,b,e,C,F),a=C,c=F}else if(116===u){if(2<=w.length&&0===w.length%2)for(v=0,u=w.length;v<u;v+=2)"q"===B.toLowerCase()||"t"===B.toLowerCase()?(b=this.vertices[this.vertices.length-
2][0],C=this.vertices[this.vertices.length-2][1],e=this.vertices[this.vertices.length-1][0],F=this.vertices[this.vertices.length-1][1],b=e+(e-b),e=F+(F-C)):(b=a,e=c),C=a+w[v],F=c+w[v+1],this.parsePathQuadto(a,c,b,e,C,F),a=C,c=F}else if(90===u||122===u)this.close=!0;B=Q.toString()}else N++};c.prototype.parsePathQuadto=function(a,c,b,g,e,h){if(0<this.vertices.length)this.parsePathCode(n.BEZIER_VERTEX),this.parsePathVertex(a+2*(b-a)/3,c+2*(g-c)/3),this.parsePathVertex(e+2*(b-e)/3,h+2*(g-h)/3),this.parsePathVertex(e,
h);else throw"Path must start with M/m";};c.prototype.parsePathCurveto=function(a,c,b,g,e,h){if(0<this.vertices.length)this.parsePathCode(n.BEZIER_VERTEX),this.parsePathVertex(a,c),this.parsePathVertex(b,g),this.parsePathVertex(e,h);else throw"Path must start with M/m";};c.prototype.parsePathLineto=function(a,c){if(0<this.vertices.length)this.parsePathCode(n.VERTEX),this.parsePathVertex(a,c),this.vertices[this.vertices.length-1].moveTo=!1;else throw"Path must start with M/m";};c.prototype.parsePathMoveto=
function(a,c){0<this.vertices.length&&this.parsePathCode(n.BREAK);this.parsePathCode(n.VERTEX);this.parsePathVertex(a,c);this.vertices[this.vertices.length-1].moveTo=!0};c.prototype.parsePathVertex=function(a,c){var b=[];b[0]=a;b[1]=c;this.vertices.push(b)};c.prototype.parsePathCode=function(a){this.vertexCodes.push(a)};c.prototype.parsePoly=function(a){this.family=n.PATH;this.close=a;a=g.trim(this.element.getStringAttribute("points").replace(/[,\s]+/g," "));if(null!==a)if(a=a.split(" "),0===a.length%
2)for(var c=0,b=a.length;c<b;c++){var h=[];h[0]=a[c];h[1]=a[++c];this.vertices.push(h)}else throw"Error parsing polygon points: odd number of coordinates provided";};c.prototype.parseRect=function(){this.kind=n.RECT;this.family=n.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(0>this.params[2]||0>this.params[3])throw"svg error: negative width or height found while parsing <rect>";
};c.prototype.parseEllipse=function(a){this.kind=n.ELLIPSE;this.family=n.PRIMITIVE;this.params=[];this.params[0]=this.element.getFloatAttribute("cx")|0;this.params[1]=this.element.getFloatAttribute("cy")|0;var c;if(a){if(a=c=this.element.getFloatAttribute("r"),0>a)throw"svg error: negative radius found while parsing <circle>";}else if(a=this.element.getFloatAttribute("rx"),c=this.element.getFloatAttribute("ry"),0>a||0>c)throw"svg error: negative x-axis radius or y-axis radius found while parsing <ellipse>";
this.params[0]-=a;this.params[1]-=c;this.params[2]=2*a;this.params[3]=2*c};c.prototype.parseLine=function(){this.kind=n.LINE;this.family=n.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")};c.prototype.parseColors=function(a){a.hasAttribute("opacity")&&this.setOpacity(a.getAttribute("opacity"));a.hasAttribute("stroke")&&
this.setStroke(a.getAttribute("stroke"));a.hasAttribute("stroke-width")&&this.setStrokeWeight(a.getAttribute("stroke-width"));a.hasAttribute("stroke-linejoin")&&this.setStrokeJoin(a.getAttribute("stroke-linejoin"));a.hasAttribute("stroke-linecap")&&this.setStrokeCap(a.getStringAttribute("stroke-linecap"));a.hasAttribute("fill")&&this.setFill(a.getStringAttribute("fill"));if(a.hasAttribute("style")){a=a.getStringAttribute("style").toString().split(";");for(var c=0,b=a.length;c<b;c++){var h=g.trim(a[c].split(":"));
"fill"===h[0]?this.setFill(h[1]):"fill-opacity"===h[0]?this.setFillOpacity(h[1]):"stroke"===h[0]?this.setStroke(h[1]):"stroke-width"===h[0]?this.setStrokeWeight(h[1]):"stroke-linecap"===h[0]?this.setStrokeCap(h[1]):"stroke-linejoin"===h[0]?this.setStrokeJoin(h[1]):"stroke-opacity"===h[0]?this.setStrokeOpacity(h[1]):"opacity"===h[0]&&this.setOpacity(h[1])}}};c.prototype.setFillOpacity=function(a){this.fillOpacity=parseFloat(a);this.fillColor=255*this.fillOpacity<<24|this.fillColor&16777215};c.prototype.setFill=
function(a){var c=this.fillColor&4278190080;"none"===a?this.fill=!1:0===a.indexOf("#")?(this.fill=!0,4===a.length&&(a=a.replace(/#(.)(.)(.)/,"#$1$1$2$2$3$3")),this.fillColor=c|parseInt(a.substring(1),16)&16777215):0===a.indexOf("rgb")?(this.fill=!0,this.fillColor=c|this.parseRGB(a)):0===a.indexOf("url(#")?this.fillName=a.substring(5,a.length-1):b[a]&&(this.fill=!0,this.fillColor=c|parseInt(b[a].substring(1),16)&16777215)};c.prototype.setOpacity=function(a){this.strokeColor=255*parseFloat(a)<<24|this.strokeColor&
16777215;this.fillColor=255*parseFloat(a)<<24|this.fillColor&16777215};c.prototype.setStroke=function(a){var c=this.strokeColor&4278190080;"none"===a?this.stroke=!1:"#"===a.charAt(0)?(this.stroke=!0,4===a.length&&(a=a.replace(/#(.)(.)(.)/,"#$1$1$2$2$3$3")),this.strokeColor=c|parseInt(a.substring(1),16)&16777215):0===a.indexOf("rgb")?(this.stroke=!0,this.strokeColor=c|this.parseRGB(a)):0===a.indexOf("url(#")?this.strokeName=a.substring(5,a.length-1):b[a]&&(this.stroke=!0,this.strokeColor=c|parseInt(b[a].substring(1),
16)&16777215)};c.prototype.setStrokeWeight=function(a){this.strokeWeight=this.parseUnitSize(a)};c.prototype.setStrokeJoin=function(a){"miter"===a?this.strokeJoin=n.MITER:"round"===a?this.strokeJoin=n.ROUND:"bevel"===a&&(this.strokeJoin=n.BEVEL)};c.prototype.setStrokeCap=function(a){"butt"===a?this.strokeCap=n.SQUARE:"round"===a?this.strokeCap=n.ROUND:"square"===a&&(this.strokeCap=n.PROJECT)};c.prototype.setStrokeOpacity=function(a){this.strokeOpacity=parseFloat(a);this.strokeColor=255*this.strokeOpacity<<
24|this.strokeColor&16777215};c.prototype.parseRGB=function(a){a=a.substring(a.indexOf("(")+1,a.indexOf(")")).split(", ");return a[0]<<16|a[1]<<8|a[2]};c.prototype.parseUnitSize=function(a){var c=a.length-2;return 0>c?a:a.indexOf("pt")===c?1.25*parseFloat(a.substring(0,c)):a.indexOf("pc")===c?15*parseFloat(a.substring(0,c)):a.indexOf("mm")===c?3.543307*parseFloat(a.substring(0,c)):a.indexOf("cm")===c?35.43307*parseFloat(a.substring(0,c)):a.indexOf("in")===c?90*parseFloat(a.substring(0,c)):a.indexOf("px")===
c?parseFloat(a.substring(0,c)):parseFloat(a)};return c}},{}],18:[function(B,z,U){z.exports=function(h,g){function n(a,d,b){this.x=a||0;this.y=d||0;this.z=b||0}function p(a){return function(d,b){var g=d.get();g[a](b);return g}}var a=h.PConstants;n.fromAngle=function(a,d){if(d===g||null===d)d=new n;d.x=Math.cos(a);d.y=Math.sin(a);return d};n.random2D=function(c){return n.fromAngle(Math.random()*a.TWO_PI,c)};n.random3D=function(c){var d=Math.random()*a.TWO_PI,b=2*Math.random()-1,q=Math.sqrt(1-b*b),h=
q*Math.cos(d),d=q*Math.sin(d);c===g||null===c?c=new n(h,d,b):c.set(h,d,b);return c};n.dist=function(a,d){return a.dist(d)};n.dot=function(a,d){return a.dot(d)};n.cross=function(a,d){return a.cross(d)};n.sub=function(a,d){return new n(a.x-d.x,a.y-d.y,a.z-d.z)};n.angleBetween=function(a,d){return Math.acos(a.dot(d)/Math.sqrt(a.magSq()*d.magSq()))};n.lerp=function(a,d,b){a=new n(a.x,a.y,a.z);a.lerp(d,b);return a};n.prototype={set:function(a,d,b){1===arguments.length?this.set(a.x||a[0]||0,a.y||a[1]||
0,a.z||a[2]||0):(this.x=a,this.y=d,this.z=b)},get:function(){return new n(this.x,this.y,this.z)},mag:function(){var a=this.x,d=this.y,b=this.z;return Math.sqrt(a*a+d*d+b*b)},magSq:function(){var a=this.x,d=this.y,b=this.z;return a*a+d*d+b*b},setMag:function(a,d){if(d===g)d=a,this.normalize(),this.mult(d);else return a.normalize(),a.mult(d),a},add:function(a,d,b){1===arguments.length?(this.x+=a.x,this.y+=a.y,this.z+=a.z):2===arguments.length?(this.x+=a,this.y+=d):(this.x+=a,this.y+=d,this.z+=b)},sub:function(a,
d,b){1===arguments.length?(this.x-=a.x,this.y-=a.y,this.z-=a.z):2===arguments.length?(this.x-=a,this.y-=d):(this.x-=a,this.y-=d,this.z-=b)},mult:function(a){"number"===typeof a?(this.x*=a,this.y*=a,this.z*=a):(this.x*=a.x,this.y*=a.y,this.z*=a.z)},div:function(a){"number"===typeof a?(this.x/=a,this.y/=a,this.z/=a):(this.x/=a.x,this.y/=a.y,this.z/=a.z)},rotate:function(a){var d=this.x,b=Math.cos(a);a=Math.sin(a);this.x=b*this.x-a*this.y;this.y=a*d+b*this.y},dist:function(a){var d=this.x-a.x,b=this.y-
a.y;a=this.z-a.z;return Math.sqrt(d*d+b*b+a*a)},dot:function(a,d,b){return 1===arguments.length?this.x*a.x+this.y*a.y+this.z*a.z:this.x*a+this.y*d+this.z*b},cross:function(a){var d=this.x,b=this.y,g=this.z;return new n(b*a.z-a.y*g,g*a.x-a.z*d,d*a.y-a.x*b)},lerp:function(a,d,b,g){var h,e;2===arguments.length?(g=d,h=a.x,e=a.y,b=a.z):(h=a,e=d);this.x+=(h-this.x)*g;this.y+=(e-this.y)*g;this.z+=(b-this.z)*g},normalize:function(){var a=this.mag();0<a&&this.div(a)},limit:function(a){this.mag()>a&&(this.normalize(),
this.mult(a))},heading:function(){return-Math.atan2(-this.y,this.x)},heading2D:function(){return this.heading()},toString:function(){return"["+this.x+", "+this.y+", "+this.z+"]"},array:function(){return[this.x,this.y,this.z]}};for(var b in n.prototype)n.prototype.hasOwnProperty(b)&&!n.hasOwnProperty(b)&&(n[b]=p(b));return n}},{}],19:[function(B,z,U){z.exports=function(){var h=function(g,h,p,a,b){this.fullName=g||"";this.name=h||"";this.namespace=p||"";this.value=a;this.type=b};h.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(g){this.value=g}};return h}},{}],20:[function(B,z,U){z.exports=function(h,g){var n=h.Browser,p=n.ajax,a=n.window.DOMParser,b=h.XMLAttribute,c=function(a,b,c,h){this.attributes=[];this.children=[];this.name=this.fullName=null;this.namespace="";this.parent=this.content=null;this.systemID=this.lineNr="";this.type="ELEMENT";
a&&("string"===typeof a?b===g&&-1<a.indexOf("<")?this.parse(a):(this.fullName=a,this.namespace=b,this.systemId=c,this.lineNr=h):this.parse(b,!0))};c.prototype={parse:function(d,b){var c;try{b&&(d=p(d));c=(new a).parseFromString(d,"text/xml");var g=c.documentElement;if(g)this.parseChildrenRecursive(null,g);else throw"Error loading document";return this}catch(e){throw e;}},parseChildrenRecursive:function(a,g){var h,n,e,p;a?(h=new c(g.nodeName),h.parent=a):(this.fullName=g.localName,this.name=g.nodeName,
h=this);if(3===g.nodeType&&""!==g.textContent)return this.createPCDataElement(g.textContent);if(4===g.nodeType)return this.createCDataElement(g.textContent);if(g.attributes)for(e=0,p=g.attributes.length;e<p;e++)n=g.attributes[e],n=new b(n.getname,n.nodeName,n.namespaceURI,n.nodeValue,n.nodeType),h.attributes.push(n);if(g.childNodes)for(e=0,p=g.childNodes.length;e<p;e++)n=h.parseChildrenRecursive(h,g.childNodes[e]),null!==n&&h.children.push(n);return h},createElement:function(a,b,h,n){return h===g?
new c(a,b):new c(a,b,h,n)},createPCDataElement:function(a,b){if(""===a.replace(/^\s+$/g,""))return null;var g=new c;g.type="TEXT";g.content=a;return g},createCDataElement:function(a){var b=this.createPCDataElement(a);if(null===b)return null;b.type="CDATA";var c={"<":"<",">":">","'":"'",'"':"""},g;for(g in c)Object.hasOwnProperty(c,g)||(a=a.replace(RegExp(g,"g"),c[g]));b.cdata=a;return b},hasAttribute:function(){if(1===arguments.length)return null!==this.getAttribute(arguments[0]);
if(2===arguments.length)return null!==this.getAttribute(arguments[0],arguments[1])},equals:function(a){if(!(a instanceof c))return!1;var b,g;if(this.fullName!==a.fullName||this.attributes.length!==a.getAttributeCount()||this.attributes.length!==a.attributes.length)return!1;var h,e;b=0;for(g=this.attributes.length;b<g;b++)if(h=this.attributes[b].getName(),e=this.attributes[b].getNamespace(),h=a.findAttribute(h,e),null===h||this.attributes[b].getValue()!==h.getValue()||this.attributes[b].getType()!==
h.getType())return!1;if(this.children.length!==a.getChildCount())return!1;if(0<this.children.length){b=0;for(g=this.children.length;b<g;b++)if(h=this.getChild(b),e=a.getChild(b),!h.equals(e))return!1;return!0}return this.content===a.content},getContent:function(){if("TEXT"===this.type||"CDATA"===this.type)return this.content;var a=this.children;return 1!==a.length||"TEXT"!==a[0].type&&"CDATA"!==a[0].type?null:a[0].content},getAttribute:function(){var a;if(2===arguments.length)return(a=this.findAttribute(arguments[0]))?
a.getValue():arguments[1];if(1===arguments.length)return(a=this.findAttribute(arguments[0]))?a.getValue():null;if(3===arguments.length)return(a=this.findAttribute(arguments[0],arguments[1]))?a.getValue():arguments[2]},getStringAttribute:function(){return 1===arguments.length?this.getAttribute(arguments[0]):2===arguments.length?this.getAttribute(arguments[0],arguments[1]):this.getAttribute(arguments[0],arguments[1],arguments[2])},getString:function(a){return this.getStringAttribute(a)},getFloatAttribute:function(){return 1===
arguments.length?parseFloat(this.getAttribute(arguments[0],0)):2===arguments.length?this.getAttribute(arguments[0],arguments[1]):this.getAttribute(arguments[0],arguments[1],arguments[2])},getFloat:function(a){return this.getFloatAttribute(a)},getIntAttribute:function(){return 1===arguments.length?this.getAttribute(arguments[0],0):2===arguments.length?this.getAttribute(arguments[0],arguments[1]):this.getAttribute(arguments[0],arguments[1],arguments[2])},getInt:function(a){return this.getIntAttribute(a)},
hasChildren:function(){return 0<this.children.length},addChild:function(a){null!==a&&(a.parent=this,this.children.push(a))},insertChild:function(a,b){if(a){if(null===a.getLocalName()&&!this.hasChildren()){var c=this.children[this.children.length-1];if(null===c.getLocalName()){c.setContent(c.getContent()+a.getContent());return}}a.parent=this;this.children.splice(b,0,a)}},getChild:function(a){if("number"===typeof a)return this.children[a];if(-1!==a.indexOf("/"))return this.getChildRecursive(a.split("/"),
0);for(var b,c,g=0,e=this.getChildCount();g<e;g++)if(b=this.getChild(g),c=b.getName(),null!==c&&c===a)return b;return null},getChildren:function(){if(1===arguments.length){if("number"===typeof arguments[0])return this.getChild(arguments[0]);if(-1!==arguments[0].indexOf("/"))return this.getChildrenRecursive(arguments[0].split("/"),0);for(var a=[],b,c,g=0,e=this.getChildCount();g<e;g++)b=this.getChild(g),c=b.getName(),null!==c&&c===arguments[0]&&a.push(b);return a}return this.children},getChildCount:function(){return this.children.length},
getChildRecursive:function(a,b){if(b===a.length)return this;for(var c,g,e=a[b],h=0,n=this.getChildCount();h<n;h++)if(c=this.getChild(h),g=c.getName(),null!==g&&g===e)return c.getChildRecursive(a,b+1);return null},getChildrenRecursive:function(a,b){if(b===a.length-1)return this.getChildren(a[b]);for(var c=this.getChildren(a[b]),g=[],e=0;e<c.length;e++)g=g.concat(c[e].getChildrenRecursive(a,b+1));return g},isLeaf:function(){return!this.hasChildren()},listChildren:function(){for(var a=[],b=0,c=this.children.length;b<
c;b++)a.push(this.getChild(b).getName());return a},removeAttribute:function(a,b){this.namespace=b||"";for(var c=0,g=this.attributes.length;c<g;c++)if(this.attributes[c].getName()===a&&this.attributes[c].getNamespace()===this.namespace){this.attributes.splice(c,1);break}},removeChild:function(a){if(a)for(var b=0,c=this.children.length;b<c;b++)if(this.children[b].equals(a)){this.children.splice(b,1);break}},removeChildAtIndex:function(a){this.children.length>a&&this.children.splice(a,1)},findAttribute:function(a,
b){this.namespace=b||"";for(var c=0,g=this.attributes.length;c<g;c++)if(this.attributes[c].getName()===a&&this.attributes[c].getNamespace()===this.namespace)return this.attributes[c];return null},setAttribute:function(){var a;if(3===arguments.length){a=arguments[0].indexOf(":");var c=arguments[0].substring(a+1);(a=this.findAttribute(c,arguments[1]))?a.setValue(arguments[2]):(a=new b(arguments[0],c,arguments[1],arguments[2],"CDATA"),this.attributes.push(a))}else(a=this.findAttribute(arguments[0]))?
a.setValue(arguments[1]):(a=new b(arguments[0],arguments[0],null,arguments[1],"CDATA"),this.attributes.push(a))},setString:function(a,b){this.setAttribute(a,b)},setInt:function(a,b){this.setAttribute(a,b)},setFloat:function(a,b){this.setAttribute(a,b)},setContent:function(a){0<this.children.length&&Processing.debug("Tried to set content for XMLElement with children");this.content=a},setName:function(){if(1===arguments.length)this.name=arguments[0],this.fullName=arguments[0],this.namespace=null;else{var a=
arguments[0].indexOf(":");this.name=null===arguments[1]||0>a?arguments[0]:arguments[0].substring(a+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("TEXT"===this.type)return this.content||"";if("CDATA"===this.type)return this.cdata||"";var a=this.fullName,b="<"+a,c;for(c=0;c<this.attributes.length;c++)var g=this.attributes[c],
b=b+(" "+g.getName()+'="'+g.getValue()+'"');if(0===this.children.length)b=""===this.content||null===this.content||void 0===this.content?b+"/>":b+(">"+this.content+"</"+a+">");else{b+=">";for(c=0;c<this.children.length;c++)b+=this.children[c].toString();b+="</"+a+">"}return b}};c.parse=function(a){var b=new c;b.parse(a);return b};return c}},{}],21:[function(B,z,U){z.exports={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"}},{}],22:[function(B,z,U){z.exports=function(h,g,n){return function(p,a){p.__contains=function(b,c){return"string"!==typeof b?b.contains.apply(b,a(arguments)):null!==b&&null!==c&&"string"===typeof c&&-1<b.indexOf(c)};p.__replaceAll=function(b,c,d){return"string"!==typeof b?b.replaceAll.apply(b,a(arguments)):b.replace(RegExp(c,"g"),d)};p.__replaceFirst=function(b,c,d){return"string"!==typeof b?b.replaceFirst.apply(b,
a(arguments)):b.replace(RegExp(c,""),d)};p.__replace=function(b,c,d){if("string"!==typeof b)return b.replace.apply(b,a(arguments));if(c instanceof RegExp)return b.replace(c,d);"string"!==typeof c&&(c=c.toString());if(""===c)return b;var g=b.indexOf(c);if(0>g)return b;var h=0,n="";do n+=b.substring(h,g)+d,h=g+c.length;while(0<=(g=b.indexOf(c,h)));return n+b.substring(h)};p.__equals=function(b,c){return b.equals instanceof Function?b.equals.apply(b,a(arguments)):g(b,c)};p.__equalsIgnoreCase=function(b,
c){return"string"!==typeof b?b.equalsIgnoreCase.apply(b,a(arguments)):b.toLowerCase()===c.toLowerCase()};p.__toCharArray=function(b){if("string"!==typeof b)return b.toCharArray.apply(b,a(arguments));for(var c=[],d=0,g=b.length;d<g;++d)c[d]=new Char(b.charAt(d));return c};p.__split=function(b,c,d){if("string"!==typeof b)return b.split.apply(b,a(arguments));var g=RegExp(c);if(d===n||1>d)return b.split(g);for(var h=[],p=b,e;-1!==(e=p.search(g))&&h.length<d-1;){var qd=g.exec(p).toString();h.push(p.substring(0,
e));p=p.substring(e+qd.length)}-1===e&&""===p||h.push(p);return h};p.__codePointAt=function(a,c){var d=a.charCodeAt(c),g;return 55296<=d&&56319>=d?(g=a.charCodeAt(c+1),1024*(d-55296)+(g-56320)+65536):d};p.__matches=function(a,c){return RegExp(c).test(a)};p.__startsWith=function(b,c,d){if("string"!==typeof b)return b.startsWith.apply(b,a(arguments));d=d||0;return 0>d||d>b.length?!1:""===c||c===b?!0:b.indexOf(c)===d};p.__endsWith=function(b,c){if("string"!==typeof b)return b.endsWith.apply(b,a(arguments));
var d=c?c.length:0;return""===c||c===b?!0:b.indexOf(c)===b.length-d};p.__hashCode=function(b){return b.hashCode instanceof Function?b.hashCode.apply(b,a(arguments)):h(b)};p.__printStackTrace=function(a){p.println("Exception: "+a.toString())}}}},{}],23:[function(B,z,U){z.exports=function(h,g){function n(a,b){var e=a||362436069,c=b||521288629,d=function(){e=36969*(e&65535)+(e>>>16)&4294967295;c=18E3*(c&65535)+(c>>>16)&4294967295;return((e&65535)<<16|c&65535)&4294967295};this.doubleGenerator=function(){var a=
d()/4294967296;return 0>a?1+a:a};this.intGenerator=d}function p(a){function b(a,e,c,d){a&=15;var g=8>a?e:c;e=4>a?c:12===a||14===a?e:d;return(0===(a&1)?g:-g)+(0===(a&2)?e:-e)}function e(a,b,e){b=0===(a&1)?b:e;return 0===(a&2)?-b:b}function c(a,b,e){return b+a*(e-b)}a=a!==g?new n(a,(a<<16)+(a>>16)):n.createRandomized();var d,h,k=new Uint8Array(512);for(d=0;256>d;++d)k[d]=d;for(d=0;256>d;++d){var p=k[h=a.intGenerator()&255];k[h]=k[d];k[d]=p}for(d=0;256>d;++d)k[d+256]=k[d];this.noise3d=function(a,e,d){var g=
Math.floor(a)&255,h=Math.floor(e)&255,n=Math.floor(d)&255;a-=Math.floor(a);e-=Math.floor(e);d-=Math.floor(d);var q=(3-2*a)*a*a,p=(3-2*e)*e*e,C=k[g]+h,fa=k[C]+n,C=k[C+1]+n,h=k[g+1]+h,g=k[h]+n,n=k[h+1]+n;return c((3-2*d)*d*d,c(p,c(q,b(k[fa],a,e,d),b(k[g],a-1,e,d)),c(q,b(k[C],a,e-1,d),b(k[n],a-1,e-1,d))),c(p,c(q,b(k[fa+1],a,e,d-1),b(k[g+1],a-1,e,d-1)),c(q,b(k[C+1],a,e-1,d-1),b(k[n+1],a-1,e-1,d-1))))};this.noise2d=function(a,b){var d=Math.floor(a)&255,g=Math.floor(b)&255;a-=Math.floor(a);b-=Math.floor(b);
var h=(3-2*a)*a*a,n=k[d]+g,d=k[d+1]+g;return c((3-2*b)*b*b,c(h,e(k[n],a,b),e(k[d],a-1,b)),c(h,e(k[n+1],a,b-1),e(k[d+1],a-1,b-1)))};this.noise1d=function(a){var b=Math.floor(a)&255;a-=Math.floor(a);return c((3-2*a)*a*a,0===(k[b]&1)?-a:a,0===(k[b+1]&1)?-(a-1):a-1)}}var a=function(){return Math.random()};h.abs=Math.abs;h.ceil=Math.ceil;h.exp=Math.exp;h.floor=Math.floor;h.log=Math.log;h.pow=Math.pow;h.round=Math.round;h.sqrt=Math.sqrt;h.acos=Math.acos;h.asin=Math.asin;h.atan=Math.atan;h.atan2=Math.atan2;
h.cos=Math.cos;h.sin=Math.sin;h.tan=Math.tan;h.constrain=function(a,b,e){return a>e?e:a<b?b:a};h.dist=function(){var a,b,e;if(4===arguments.length)return a=arguments[0]-arguments[2],b=arguments[1]-arguments[3],Math.sqrt(a*a+b*b);if(6===arguments.length)return a=arguments[0]-arguments[3],b=arguments[1]-arguments[4],e=arguments[2]-arguments[5],Math.sqrt(a*a+b*b+e*e)};h.lerp=function(a,b,e){return(b-a)*e+a};h.mag=function(a,b,e){return e?Math.sqrt(a*a+b*b+e*e):Math.sqrt(a*a+b*b)};h.map=function(a,b,
e,c,d){return c+(d-c)*((a-b)/(e-b))};h.max=function(){if(2===arguments.length)return arguments[0]<arguments[1]?arguments[1]:arguments[0];var a=1===arguments.length?arguments[0]:arguments;if(!("length"in a&&0<a.length))throw"Non-empty array is expected";for(var b=a[0],e=a.length,c=1;c<e;++c)b<a[c]&&(b=a[c]);return b};h.min=function(){if(2===arguments.length)return arguments[0]<arguments[1]?arguments[0]:arguments[1];var a=1===arguments.length?arguments[0]:arguments;if(!("length"in a&&0<a.length))throw"Non-empty array is expected";
for(var b=a[0],e=a.length,c=1;c<e;++c)b>a[c]&&(b=a[c]);return b};h.norm=function(a,b,e){return(a-b)/(e-b)};h.sq=function(a){return a*a};h.degrees=function(a){return 180*a/Math.PI};h.random=function(){if(0===arguments.length)return a();if(1===arguments.length)return a()*arguments[0];var b=arguments[0],c=arguments[1];return a()*(c-b)+b};n.createRandomized=function(){var a=new Date;return new n(a/6E4&4294967295,a&4294967295)};h.randomSeed=function(b){a=(new n(b,(b<<16)+(b>>16))).doubleGenerator;this.haveNextNextGaussian=
!1};h.randomGaussian=function(){if(this.haveNextNextGaussian)return this.haveNextNextGaussian=!1,this.nextNextGaussian;var b,c,e;do b=2*a()-1,c=2*a()-1,e=b*b+c*c;while(1<=e||0===e);e=Math.sqrt(-2*Math.log(e)/e);this.nextNextGaussian=c*e;this.haveNextNextGaussian=!0;return b*e};var b=g,c=4,d=0.5,k=g;h.noise=function(a,h,e){b===g&&(b=new p(k));for(var n=b,fa=1,C=1,F=0,N=0;N<c;++N){fa*=d;switch(arguments.length){case 1:F+=fa*(1+n.noise1d(C*a))/2;break;case 2:F+=fa*(1+n.noise2d(C*a,C*h))/2;break;case 3:F+=
fa*(1+n.noise3d(C*a,C*h,C*e))/2}C*=2}return F};h.noiseDetail=function(a,b){c=a;b!==g&&(d=b)};h.noiseSeed=function(a){k=a;b=g}}},{}],24:[function(B,z,U){z.exports=function(h){var g={trim:function(g){if(g instanceof Array){for(var h=[],a=0;a<g.length;a++)h.push(g[a].replace(/^\s*/,"").replace(/\s*$/,"").replace(/\r*$/,""));return h}return g.replace(/^\s*/,"").replace(/\s*$/,"").replace(/\r*$/,"")},radians:function(g){return g/180*Math.PI},nfCoreScalar:function(g,p,a,b,c,d){p=0>g?a:p;a=0===c;c=c===h||
0>c?0:c;g=Math.abs(g);if(a)for(c=1,g*=10;1E-6<Math.abs(Math.round(g)-g)&&7>c;)++c,g*=10;else 0!==c&&(g*=Math.pow(10,c));a=2*g;Math.floor(g)===g?a=g:Math.floor(a)===a?(g=Math.floor(g),a=g+g%2):a=Math.round(g);g="";for(b+=c;0<b||0<a;)b--,g=""+a%10+g,a=Math.floor(a/10);if(d!==h)for(b=g.length-3-c;0<b;)g=g.substring(0,b)+d+g.substring(b),b-=3;return 0<c?p+g.substring(0,g.length-c)+"."+g.substring(g.length-c,g.length):p+g},nfCore:function(h,p,a,b,c,d){if(h instanceof Array){for(var k=[],q=0,S=h.length;q<
S;q++)k.push(g.nfCoreScalar(h[q],p,a,b,c,d));return k}return g.nfCoreScalar(h,p,a,b,c,d)},nf:function(h,p,a){return g.nfCore(h,"","-",p,a)},nfs:function(h,p,a){return g.nfCore(h," ","-",p,a)},nfp:function(h,p,a){return g.nfCore(h,"+","-",p,a)},nfc:function(h,p){return g.nfCore(h,"","-",0,p,",")},withCommonFunctions:function(h){"trim radians nf nfs nfp nfc".split(" ").forEach(function(p){h[p]=g[p]})}};return g}()},{}],25:[function(B,z,U){z.exports=function(h,g,n,p,a,b){function c(a,b){var c=a,d=0,
g=0;h.pmouseX=h.mouseX;h.pmouseY=h.mouseY;if(c.offsetParent){do d+=c.offsetLeft,g+=c.offsetTop;while(c=c.offsetParent)}c=a;do d-=c.scrollLeft||0,g-=c.scrollTop||0;while(c=c.parentNode);var n,k,q,z;p.defaultView&&p.defaultView.getComputedStyle&&(n=parseInt(p.defaultView.getComputedStyle(a,null).paddingLeft,10)||0,k=parseInt(p.defaultView.getComputedStyle(a,null).paddingTop,10)||0,q=parseInt(p.defaultView.getComputedStyle(a,null).borderLeftWidth,10)||0,z=parseInt(p.defaultView.getComputedStyle(a,null).borderTopWidth,
10)||0);d=d+n+q;g=g+k+z;d+=window.pageXOffset;g+=window.pageYOffset;return{X:d,Y:g}}function d(a,b){var d=c(a,b);h.mouseX=b.pageX-d.X;h.mouseY=b.pageY-d.Y}function k(a){var b=c(a.changedTouches[0].target,a.changedTouches[0]),d;for(d=0;d<a.touches.length;d++){var g=a.touches[d];g.offsetX=g.pageX-b.X;g.offsetY=g.pageY-b.Y}for(d=0;d<a.targetTouches.length;d++)g=a.targetTouches[d],g.offsetX=g.pageX-b.X,g.offsetY=g.pageY-b.Y;for(d=0;d<a.changedTouches.length;d++)g=a.changedTouches[d],g.offsetX=g.pageX-
b.X,g.offsetY=g.pageY-b.Y;return a}n(g,"touchstart",function(c){g.setAttribute("style","-webkit-user-select: none");g.setAttribute("onclick","void(0)");g.setAttribute("style","-webkit-tap-highlight-color:rgba(0,0,0,0)");for(var e=0,p=eventHandlers.length;e<p;e++){var q=eventHandlers[e].type;"mouseout"!==q&&"mousemove"!==q&&"mousedown"!==q&&"mouseup"!==q&&"DOMMouseScroll"!==q&&"mousewheel"!==q&&"touchstart"!==q||detachEventHandler(eventHandlers[e])}h.touchStart!==b||h.touchMove!==b||h.touchEnd!==b||
h.touchCancel!==b?(n(g,"touchstart",function(a){h.touchStart!==b&&(a=k(a),h.touchStart(a))}),n(g,"touchmove",function(a){h.touchMove!==b&&(a.preventDefault(),a=k(a),h.touchMove(a))}),n(g,"touchend",function(a){h.touchEnd!==b&&(a=k(a),h.touchEnd(a))}),n(g,"touchcancel",function(a){h.touchCancel!==b&&(a=k(a),h.touchCancel(a))})):(n(g,"touchstart",function(b){d(g,b.touches[0]);h.__mousePressed=!0;h.mouseDragging=!1;h.mouseButton=a.LEFT;"function"===typeof h.mousePressed&&h.mousePressed()}),n(g,"touchmove",
function(a){a.preventDefault();d(g,a.touches[0]);"function"!==typeof h.mouseMoved||h.__mousePressed||h.mouseMoved();"function"===typeof h.mouseDragged&&h.__mousePressed&&(h.mouseDragged(),h.mouseDragging=!0)}),n(g,"touchend",function(a){h.__mousePressed=!1;"function"!==typeof h.mouseClicked||h.mouseDragging||h.mouseClicked();"function"===typeof h.mouseReleased&&h.mouseReleased()}));g.dispatchEvent(c)});(function(){var a=!0,b=function(a){a.preventDefault();a.stopPropagation()};h.disableContextMenu=
function(){a&&(n(g,"contextmenu",b),a=!1)};h.enableContextMenu=function(){a||(detachEventHandler({elem:g,type:"contextmenu",fn:b}),a=!0)}})();n(g,"mousemove",function(a){d(g,a);"function"!==typeof h.mouseMoved||h.__mousePressed||h.mouseMoved();"function"===typeof h.mouseDragged&&h.__mousePressed&&(h.mouseDragged(),h.mouseDragging=!0)});n(g,"mouseout",function(a){"function"===typeof h.mouseOut&&h.mouseOut()});n(g,"mouseover",function(a){d(g,a);"function"===typeof h.mouseOver&&h.mouseOver()});g.onmousedown=
function(){g.focus();return!1};n(g,"mousedown",function(b){h.__mousePressed=!0;h.mouseDragging=!1;switch(b.which){case 1:h.mouseButton=a.LEFT;break;case 2:h.mouseButton=a.CENTER;break;case 3:h.mouseButton=a.RIGHT}"function"===typeof h.mousePressed&&h.mousePressed()});n(g,"mouseup",function(a){h.__mousePressed=!1;"function"!==typeof h.mouseClicked||h.mouseDragging||h.mouseClicked();"function"===typeof h.mouseReleased&&h.mouseReleased()});var q=function(a){var b=0;a.wheelDelta?(b=a.wheelDelta/120,window.opera&&
(b=-b)):a.detail&&(b=-a.detail/3);(h.mouseScroll=b)&&"function"===typeof h.mouseScrolled&&h.mouseScrolled()};n(p,"DOMMouseScroll",q);n(p,"mousewheel",q)}},{}],26:[function(B,z,U){z.exports=function(h,g){function n(){var a="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 intersect join key keyCode keyPressed keyReleased keyTyped lerp lerpColor lightFalloff lights lightSpecular line link loadBytes loadFont loadGlyphs loadImage loadPixels loadShape loadXML 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 parseXML 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 randomGaussian 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 shearX shearY 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 toImageData touchCancel touchEnd touchMove touchStart translate transform triangle trim unbinary unhex updatePixels use3DContext vertex width XMLElement XML year __contains __equals __equalsIgnoreCase __frameRate __hashCode __int_cast __instanceof __keyPressed __mousePressed __printStackTrace __replace __replaceAll __replaceFirst __toCharArray __split __codePointAt __startsWith __endsWith __matches".split(" ");
d&&Object.keys(d).forEach(function(b){a.push(b)});var b={},c,g;c=0;for(g=a.length;c<g;++c)b[a[c]]=null;for(var n in h.lib)if(h.lib.hasOwnProperty(n)&&h.lib[n].exports){var k=h.lib[n].exports;c=0;for(g=k.length;c<g;++c)b[k[c]]=null}return b}function p(a){function d(a){var b=/^\s*/.exec(a);if(b[0].length===a.length)a={left:b[0],middle:"",right:""};else{var c=/\s*$/.exec(a);a={left:b[0],middle:a.substring(b[0].length,c.index),right:c[0]}}a.untrim=function(a){return this.left+a+this.right};return a}function g(a){return a.replace(/^\s+/,
"").replace(/\s+$/,"")}function h(a,b){for(var c=0,d=b.length;c<d;++c)a[b[c]]=null;return a}function k(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function p(a){return a.substring(2,a.length-1)}function u(a,b){var c=P.length;P.push(a);return'"'+b+c+'"'}function z(a){a=a.replace(ua,function(a){return u(a,"E")});a=a.replace(pa,function(a){return u(a,"D")});return a=a.replace(lb,function(a){return u(a,"H")})}function w(a,b){return a.replace(Gb,function(a,c,d,f,e,g){return d!==b?a:u(a,
"G")})}function B(a){this.name=a}function S(a,b){this.params=a;this.methodArgsParam=b}function Q(a){var b=g(a.substring(1,a.length-1));a=[];var c=null;if(""!==b)for(var b=b.split(","),d=0;d<b.length;++d){var f=/\b([A-Za-z_$][\w$]*\b)(\s*"[ABC][\d]*")*\s*$/.exec(b[d]);if(d===b.length-1&&0<=b[d].indexOf("...")){c=new B(f[1]);break}a.push(new B(f[1]))}return new S(a,c)}function v(a){function b(a,c,e,g){a=P[g];f=!0;a=d(a.substring(1,a.length-1));return"__"+e+(""===a.middle?u("("+c.replace(/\.\s*$/,"")+
")","B"):u("("+c.replace(/\.\s*$/,"")+","+a.middle+")","B"))}function c(a,b,d){f=!0;return"__instanceof"+u("("+b+", "+d+")","B")}a=a.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\s*"C\d+")+\s*("A\d+")/g,function(a,b,c){return c});a=a.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)(?:\s*"B\d+")\s*("A\d+")/g,function(a,b,c){return u(a,"F")});a=a.replace(lb,function(a){return u(a,"H")});a=a.replace(/\bnew\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)\s*("C\d+"(?:\s*"C\d+")*)/g,
function(a,b,c){a=c.replace(/"C(\d+)"/g,function(a,b){return P[b]}).replace(/\[\s*\]/g,"[null]").replace(/\s*\]\s*\[\s*/g,", ");a="{"+a.substring(1,a.length-1)+"}";b="('"+b+"', "+u(a,"A")+")";return"$p.createJavaArray"+u(b,"B")});a=a.replace(/(\.\s*length)\s*"B\d+"/g,"$1");a=a.replace(/#([0-9A-Fa-f]{6})\b/g,function(a,b){return"0xFF"+b});a=a.replace(/"B(\d+)"(\s*(?:[\w$']|"B))/g,function(a,b,c){b=P[b];if(!/^\(\s*[A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*\s*(?:"C\d+"\s*)*\)$/.test(b))return a;
if(/^\(\s*int\s*\)$/.test(b))return"(int)"+c;b=b.split(/"C(\d+)"/g);return 1<b.length&&!/^\[\s*\]$/.test(P[b[1]])?a:""+c});a=a.replace(/\(int\)([^,\]\)\}\?\:\*\+\-\/\^\|\%\&\~<\>\=]+)/g,function(a,b){var c=d(b);return c.untrim("__int_cast("+c.middle+")")});a=a.replace(/\bsuper(\s*"B\d+")/g,"$$superCstr$1").replace(/\bsuper(\s*\.)/g,"$$super$1");a=a.replace(/\b0+((\d*)(?:\.[\d*])?(?:[eE][\-\+]?\d+)?[fF]?)\b/,function(a,b,c){return b===c?a:""===c?"0"+b:b});a=a.replace(/\b(\.?\d+\.?)[fF]\b/g,"$1");a=
a.replace(/([^\s])%([^=\s])/g,"$1 % $2");a=a.replace(/\b(frameRate|keyPressed|mousePressed)\b(?!\s*"B)/g,"__$1");a=a.replace(/\b(boolean|byte|char|float|int)\s*"B/g,function(a,b){return"parse"+b.substring(0,1).toUpperCase()+b.substring(1)+'"B'});a=a.replace(/\bpixels\b\s*(("C(\d+)")|\.length)?(\s*=(?!=)([^,\]\)\}]+))?/g,function(a,b,c,d,f,e){return c?(a=P[d],f?"pixels.setPixel"+u("("+a.substring(1,a.length-1)+","+e+")","B"):"pixels.getPixel"+u("("+a.substring(1,a.length-1)+")","B")):b?"pixels.getLength"+
u("()","B"):f?"pixels.set"+u("("+e+")","B"):"pixels.toArray"+u("()","B")});var f;do f=!1,a=a.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|matches)\s*"B(\d+)"/g,b);while(f);do f=!1,a=a.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,
c);while(f);return a=a.replace(/\bthis(\s*"B\d+")/g,"$$constr$1")}function U(a,b){this.baseInterfaceName=a;this.body=b;b.owner=this}function rd(a){var b=RegExp(/\bnew\s*([A-Za-z_$][\w$]*\s*(?:\.\s*[A-Za-z_$][\w$]*)*)\s*"B\d+"\s*"A(\d+)"/).exec(a);a=ma;var c="class"+ ++cb;ma=c;var d=b[1]+"$"+c,b=new U(d,ha(P[b[2]],d,"","implements "+b[1]));b.classId=c;b.scopeId=a;aa[c]=b;ma=a;return b}function oc(a,b,c){this.name=a;this.params=b;this.body=c}function X(a){a=RegExp(/\b([A-Za-z_$][\w$]*)\s*"B(\d+)"\s*"A(\d+)"/).exec(a);
return new oc("function"!==a[1]?a[1]:null,Q(P[a[2]]),na(P[a[3]]))}function ba(a){this.members=a}function Y(a){a=a.split(",");for(var b=0;b<a.length;++b){var c=a[b].indexOf(":");a[b]=0>c?{value:qa(a[b])}:{label:g(a[b].substring(0,c)),value:qa(g(a[b].substring(c+1)))}}return new ba(a)}function ca(a){if("("===a.charAt(0)||"["===a.charAt(0))return a.charAt(0)+ca(a.substring(1,a.length-1))+a.charAt(a.length-1);if("{"===a.charAt(0))return/^\{\s*(?:[A-Za-z_$][\w$]*|'\d+')\s*:/.test(a)?"{"+u(a.substring(1,
a.length-1),"I")+"}":"["+ca(a.substring(1,a.length-1))+"]";a=d(a);var b=v(a.middle),b=b.replace(/"[ABC](\d+)"/g,function(a,b){return ca(P[b])});return a.untrim(b)}function va(a){return a.replace(/(\.\s*)?((?:\b[A-Za-z_]|\$)[\w$]*)(\s*\.\s*([A-Za-z_$][\w$]*)(\s*\()?)?/g,function(a,b,c,d,f,e){return b?a:E({name:c,member:f,callSign:!!e})+(d===q?"":d)})}function wa(a,b){this.expr=a;this.transforms=b}function $b(a,b,c){this.name=a;this.value=b;this.isDefault=c}function db(a,b){var c=a.indexOf("="),d,f;
0>c?(d=a,c=b,f=!0):(d=a.substring(0,c),c=qa(a.substring(c+1)),f=!1);return new $b(g(d.replace(/(\s*"C\d+")+/g,"")),c,f)}function Ua(a){return"int"===a||"float"===a?"0":"boolean"===a?"false":"color"===a?"0x00000000":"null"}function eb(a,b){this.definitions=a;this.varType=b}function Hb(a){this.expression=a}function fb(a){if(Ib.test(a)){var b=wb.exec(a);a=a.substring(b[0].length).split(",");for(var c=Ua(b[2]),d=0;d<a.length;++d)a[d]=db(a[d],c);return new eb(a,b[2])}return new Hb(qa(a))}function Jb(a,
b,c){this.initStatement=a;this.condition=b;this.step=c}function Kb(a,b){this.initStatement=a;this.container=b}function za(a,b){this.initStatement=a;this.container=b}function Ca(a){if(/\bin\b/.test(a))return a=a.substring(1,a.length-1).split(/\bin\b/g),new Kb(fb(g(a[0])),qa(a[1]));if(0<=a.indexOf(":")&&0>a.indexOf(";"))return a=a.substring(1,a.length-1).split(":"),new za(fb(g(a[0])),qa(a[1]));a=a.substring(1,a.length-1).split(";");return new Jb(fb(g(a[0])),qa(a[1]),qa(a[2]))}function Va(a){a.sort(function(a,
b){return b.weight-a.weight})}function La(a,b,c){this.name=a;this.body=b;this.isStatic=c;b.owner=this}function Lb(a,b,c){this.name=a;this.body=b;this.isStatic=c;b.owner=this}function Mb(a){var b=ua.exec(a);ua.lastIndex=0;var c=0<=b[1].indexOf("static"),d=P[p(b[6])];a=ma;var f="class"+ ++cb;ma=f;b="interface"===b[2]?new La(b[3],gb(d,b[3],b[4]),c):new Lb(b[3],ha(d,b[3],b[4],b[5]),c);b.classId=f;b.scopeId=a;aa[f]=b;ma=a;return b}function Nb(a,b,c,d){this.name=a;this.params=b;this.body=c;this.isStatic=
d}function hb(a){a=pa.exec(a);pa.lastIndex=0;var b=0<=a[1].indexOf("static"),c=";"!==a[6]?P[p(a[6])]:"{}";return new Nb(a[3],Q(P[p(a[4])]),na(c),b)}function Ob(a,b,c){this.definitions=a;this.fieldType=b;this.isStatic=c}function Wa(a){var b=wb.exec(a),c=0<=b[1].indexOf("static");a=a.substring(b[0].length).split(/,\s*/g);for(var d=Ua(b[2]),f=0;f<a.length;++f)a[f]=db(a[f],d);return new Ob(a,b[2],c)}function Pb(a,b){this.params=a;this.body=b}function ac(a){a=RegExp(/"B(\d+)"\s*"A(\d+)"/).exec(a);var b=
Q(P[a[1]]);return new Pb(b,na(P[a[2]]))}function Ma(a,b,c,d,f,e){this.name=a;this.interfacesNames=b;this.methodsNames=c;this.fields=d;this.innerClasses=f;this.misc=e;a=0;for(b=d.length;a<b;++a)d[a].owner=this}function D(a,b,c,d,f,e,g,h,m){this.name=a;this.baseClassName=b;this.interfacesNames=c;this.functions=d;this.methods=f;this.fields=e;this.cstrs=g;this.innerClasses=h;this.misc=m;a=0;for(b=e.length;a<b;++a)e[a].owner=this}function nb(a,b){this.name=a;this.body=b;b.owner=this}function ob(a,b){this.name=
a;this.body=b;b.owner=this}function Qb(a){var b=ua.exec(a);ua.lastIndex=0;var c=P[p(b[6])];a=ma;var d="class"+ ++cb;ma=d;b="interface"===b[2]?new nb(b[3],gb(c,b[3],b[4])):new ob(b[3],ha(c,b[3],b[4],b[5]));b.classId=d;b.scopeId=a;aa[d]=b;ma=a;return b}function xb(a,b,c){this.name=a;this.params=b;this.body=c}function tc(a){a=pa.exec(a);pa.lastIndex=0;return new xb(a[3],Q(P[p(a[4])]),na(P[p(a[6])]))}function Rb(a,b){this.argument=a;this.misc=b}function bc(a,b){this.argument=a;this.misc=b}function W(a,
b,c){this.name=a;this.argument=b;this.misc=c}function Sb(a){this.expr=a}function yb(a){this.label=a}function f(a){for(var b=[],c=0,d=a.length;c<d;++c){var f=a[c];f instanceof eb?b=b.concat(f.getNames()):f instanceof Rb&&f.argument.initStatement instanceof eb?b=b.concat(f.argument.initStatement.getNames()):(f instanceof La||f instanceof Lb||f instanceof nb||f instanceof ob||f instanceof xb||f instanceof oc)&&b.push(f.name)}return h({},b)}function m(a){this.statements=a}function ga(a){this.statements=
a}var ja=n(),V=[];a=a.replace(/\r\n?|\n\r/g,"\n").replace(/("(?:[^"\\\n]|\\.)*")|('(?:[^'\\\n]|\\.)*')|(([\[\(=|&!\^:?]\s*)(\/(?![*\/])(?:[^\/\\\n]|\\.)*\/[gim]*)\b)|(\/\/[^\n]*\n)|(\/\*(?:(?!\*\/)(?:.|\n))*\*\/)/g,function(a,b,c,d,f,e,g,h){return b||c?(b=V.length,V.push(a),"'"+b+"'"):d?(b=V.length,V.push(e),f+"'"+b+"'"):""!==h?" ":"\n"});a=a.replace(/__x([0-9A-F]{4})/g,function(a,b){return"__x005F_x"+b});a=a.replace(/\$/g,"__x0024");a=a.replace(/return\s*[\n\r]+/g,"return ");var oa,Na=function(a,
b,c,d){if(b||d)return a;oa=!0;return""};do oa=!1,a=a.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,Na);while(oa);var P=function(a){var b=[];a=a.split(/([\{\[\(\)\]\}])/);for(var c=a[0],d=[],f=1;f<a.length;f+=2){var e=
a[f];if("["===e||"{"===e||"("===e)d.push(c),c=e;else if("]"===e||"}"===e||")"===e){var g="}"===e?"A":")"===e?"B":"C",h=b.length;b.push(c+e);c=d.pop()+'"'+g+(h+1)+'"'}c+=a[f+1]}b.unshift(c);return b}(a),E,aa={},ma,cb=0,ha,gb,na,Ga,qa,ua=/\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,
pa=/\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,Ib=/^((?:(?: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*)*([=,]|$)/,
Gb=/\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,wb=/^((?:(?: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*/,lb=/\bfunction(?:\s+([A-Za-z_$][\w$]*))?\s*("B\d+")\s*("A\d+")/g;B.prototype.toString=function(){return this.name};
S.prototype.getNames=function(){for(var a=[],b=0,c=this.params.length;b<c;++b)a.push(this.params[b].name);return a};S.prototype.prependMethodArgs=function(a){return this.methodArgsParam?"{\nvar "+this.methodArgsParam.name+" = Array.prototype.slice.call(arguments, "+this.params.length+");\n"+a.substring(1):a};S.prototype.toString=function(){if(0===this.params.length)return"()";for(var a="(",b=0,c=this.params.length;b<c;++b)a+=this.params[b]+", ";return a.substring(0,a.length-2)+")"};U.prototype.toString=
function(){return"new ("+this.body+")"};oc.prototype.toString=function(){var a=E,b=h({"this":null},this.params.getNames());E=function(c){return b.hasOwnProperty(c.name)?c.name:a(c)};var c="function";this.name&&(c+=" "+this.name);var d=this.params.prependMethodArgs(this.body.toString()),c=c+(this.params+" "+d);E=a;return c};ba.prototype.toString=function(){var a=E;E=function(b){return"this"===b.name?"this":a(b)};for(var b="",c=0,d=this.members.length;c<d;++c)this.members[c].label&&(b+=this.members[c].label+
": "),b+=this.members[c].value.toString()+", ";E=a;return b.substring(0,b.length-2)};wa.prototype.toString=function(){var a=this.transforms;return va(this.expr).replace(/"!(\d+)"/g,function(b,c){return a[c].toString()})};qa=function(a){var b=[];a=ca(a);a=a.replace(/"H(\d+)"/g,function(a,c){b.push(X(P[c]));return'"!'+(b.length-1)+'"'});a=a.replace(/"F(\d+)"/g,function(a,c){b.push(rd(P[c]));return'"!'+(b.length-1)+'"'});a=a.replace(/"I(\d+)"/g,function(a,c){b.push(Y(P[c]));return'"!'+(b.length-1)+'"'});
return new wa(a,b)};$b.prototype.toString=function(){return this.name+" = "+this.value};eb.prototype.getNames=function(){for(var a=[],b=0,c=this.definitions.length;b<c;++b)a.push(this.definitions[b].name);return a};eb.prototype.toString=function(){return"var "+this.definitions.join(",")};Hb.prototype.toString=function(){return this.expression.toString()};Jb.prototype.toString=function(){return"("+this.initStatement+"; "+this.condition+"; "+this.step+")"};Kb.prototype.toString=function(){var a=this.initStatement.toString();
0<=a.indexOf("=")&&(a=a.substring(0,a.indexOf("=")));return"("+a+" in "+this.container+")"};za.iteratorId=0;za.prototype.toString=function(){var a=this.initStatement.toString(),b="$it"+za.iteratorId++,a=a.replace(/^\s*var\s*/,"").split("=")[0];return"("+("var "+b+" = new $p.ObjectIterator("+this.container+"), "+a+" = void(0)")+"; "+(b+".hasNext() && (("+a+" = "+b+".next()) || true)")+";)"};La.prototype.toString=function(){return""+this.body};Lb.prototype.toString=function(){return""+this.body};Nb.prototype.toString=
function(){var a=h({},this.params.getNames()),b=E;E=function(c){return a.hasOwnProperty(c.name)?c.name:b(c)};var c=this.params.prependMethodArgs(this.body.toString()),c="function "+this.methodId+this.params+" "+c+"\n";E=b;return c};Ob.prototype.getNames=function(){for(var a=[],b=0,c=this.definitions.length;b<c;++b)a.push(this.definitions[b].name);return a};Ob.prototype.toString=function(){var a=E({name:"[this]"});if(this.isStatic){for(var b=this.owner.name,c=[],d=0,f=this.definitions.length;d<f;++d){var e=
this.definitions[d],g=e.name,h=b+"."+g;c.push("if("+h+" === void(0)) {\n "+h+" = "+e.value+"; }\n$p.defineProperty("+a+", '"+g+"', { get: function(){return "+h+";}, set: function(val){"+h+" = val;} });\n")}return c.join("")}return a+"."+this.definitions.join("; "+a+".")};Pb.prototype.toString=function(){var a=h({},this.params.getNames()),b=E;E=function(c){return a.hasOwnProperty(c.name)?c.name:b(c)};var c="function $constr_"+this.params.params.length+this.params.toString(),d=this.params.prependMethodArgs(this.body.toString());
/\$(superCstr|constr)\b/.test(d)||(d="{\n$superCstr();\n"+d.substring(1));E=b;return c+d+"\n"};Ma.prototype.getMembers=function(a,b,c){this.owner.base&&this.owner.base.body.getMembers(a,b,c);var d,f,e,g;d=0;for(e=this.fields.length;d<e;++d){var h=this.fields[d].getNames();f=0;for(g=h.length;f<g;++f)a[h[f]]=this.fields[d]}d=0;for(e=this.methodsNames.length;d<e;++d)b[this.methodsNames[d]]=!0;d=0;for(e=this.innerClasses.length;d<e;++d)a=this.innerClasses[d],c[a.name]=a};Ma.prototype.toString=function(){for(var a=
this.owner,b=0;a;)++b,a=a.scope;var a=this.name,c=b="";this.getMembers({},{},{});var d,f;if(this.owner.interfaces){var e=[],g;d=0;for(f=this.interfacesNames.length;d<f;++d)this.owner.interfaces[d]&&(g=E({name:this.interfacesNames[d]}),e.push(g),b+="$p.extendInterfaceMembers("+a+", "+g+");\n");c+=a+".$interfaces = ["+e.join(", ")+"];\n"}c=c+(a+".$isInterface = true;\n")+(a+".$methods = ['"+this.methodsNames.join("', '")+"'];\n");Va(this.innerClasses);d=0;for(f=this.innerClasses.length;d<f;++d)e=this.innerClasses[d],
e.isStatic&&(b+=a+"."+e.name+" = "+e+";\n");d=0;for(f=this.fields.length;d<f;++d)e=this.fields[d],e.isStatic&&(b+=a+"."+e.definitions.join(";\n"+a+".")+";\n");return"(function() {\nfunction "+a+"() { throw 'Unable to create the interface'; }\n"+b+c+"return "+a+";\n})()"};gb=function(a,b,c){a=a.substring(1,a.length-1);a=z(a);a=w(a,b);var f=[],e=[];a=a.replace(/"([DE])(\d+)"/g,function(a,b,c){"D"===b?f.push(c):"E"===b&&e.push(c);return""});a=a.split(/;(?:\s*;)*/g);var g,h;c!==q&&(g=c.replace(/^\s*extends\s+(.+?)\s*$/g,
"$1").split(/\s*,\s*/g));c=0;for(h=f.length;c<h;++c){var m=hb(P[f[c]]);f[c]=m.name}c=0;for(h=a.length-1;c<h;++c)m=d(a[c]),a[c]=Wa(m.middle);m=a.pop();c=0;for(h=e.length;c<h;++c)e[c]=Mb(P[e[c]]);return new Ma(b,g,f,a,e,{tail:m})};D.prototype.getMembers=function(a,b,c){this.owner.base&&this.owner.base.body.getMembers(a,b,c);var d,f,e,g;d=0;for(e=this.fields.length;d<e;++d){var h=this.fields[d].getNames();f=0;for(g=h.length;f<g;++f)a[h[f]]=this.fields[d]}d=0;for(e=this.methods.length;d<e;++d)a=this.methods[d],
b[a.name]=a;d=0;for(e=this.innerClasses.length;d<e;++d)b=this.innerClasses[d],c[b.name]=b};D.prototype.toString=function(){var a="$this_"+function(a){for(var b=0;a;)++b,a=a.scope;return b}(this.owner),b=this.name,c="var "+a+" = this;\n",d="",f="",e={},h={},m={};this.getMembers(e,h,m);var n=E;E=function(c){var d=c.name;return"this"===d?c.callSign||!c.member?a+".$self":a:e.hasOwnProperty(d)?e[d].isStatic?b+"."+d:a+"."+d:m.hasOwnProperty(d)?a+"."+d:h.hasOwnProperty(d)?h[d].isStatic?b+"."+d:a+".$self."+
d:n(c)};var k;this.baseClassName?(k=n({name:this.baseClassName}),c=c+("var $super = { $upcast: "+a+" };\n")+("function $superCstr(){"+k+".apply($super,arguments);if(!('$self' in $super)) $p.extendClassChain($super)}\n"),f+=b+".$base = "+k+";\n"):c+="function $superCstr(){$p.extendClassChain("+a+")}\n";this.owner.base&&(d+="$p.extendStaticMembers("+b+", "+k+");\n");var p,q,u;if(this.owner.interfaces){q=[];k=0;for(p=this.interfacesNames.length;k<p;++k)this.owner.interfaces[k]&&(u=n({name:this.interfacesNames[k]}),
q.push(u),d+="$p.extendInterfaceMembers("+b+", "+u+");\n");f+=b+".$interfaces = ["+q.join(", ")+"];\n"}0<this.functions.length&&(c+=this.functions.join("\n")+"\n");Va(this.innerClasses);k=0;for(p=this.innerClasses.length;k<p;++k)q=this.innerClasses[k],q.isStatic?(d+=b+"."+q.name+" = "+q+";\n",c+=a+"."+q.name+" = "+b+"."+q.name+";\n"):c+=a+"."+q.name+" = "+q+";\n";k=0;for(p=this.fields.length;k<p;++k){var v=this.fields[k];if(v.isStatic)for(d+=b+"."+v.definitions.join(";\n"+b+".")+";\n",q=0,u=v.definitions.length;q<
u;++q)var w=v.definitions[q].name,z=b+"."+w,c=c+("$p.defineProperty("+a+", '"+w+"', {get: function(){return "+z+"}, set: function(val){"+z+" = val}});\n");else c+=a+"."+v.definitions.join(";\n"+a+".")+";\n"}q={};k=0;for(p=this.methods.length;k<p;++k)u=this.methods[k],v=q[u.name],w=u.name+"$"+u.params.params.length,z=!!u.params.methodArgsParam,v?(++v,w+="_"+v):v=1,u.methodId=w,q[u.name]=v,u.isStatic?(d+=u,d+="$p.addMethod("+b+", '"+u.name+"', "+w+", "+z+");\n"):c+=u,c+="$p.addMethod("+a+", '"+u.name+
"', "+w+", "+z+");\n";c+=g(this.misc.tail);0<this.cstrs.length&&(c+=this.cstrs.join("\n")+"\n");c+="function $constr() {\n";q=[];k=0;for(p=this.cstrs.length;k<p;++k)u=this.cstrs[k].params.params.length,q.push("if(arguments.length "+(this.cstrs[k].params.methodArgsParam?">=":"===")+" "+u+") { $constr_"+u+".apply("+a+", arguments); }");0<q.length&&(c+=q.join(" else ")+" else ");c+="$superCstr();\n}\n";c+="$constr.apply(null, arguments);\n";E=n;return"(function() {\nfunction "+b+"() {\n"+c+"}\n"+d+f+
"return "+b+";\n})()"};ha=function(a,b,c,f){a=a.substring(1,a.length-1);a=z(a);a=w(a,b);var e=[],g=[],h=[],m=[];a=a.replace(/"([DEGH])(\d+)"/g,function(a,b,c){"D"===b?e.push(c):"E"===b?g.push(c):"H"===b?m.push(c):h.push(c);return""});a=a.replace(/^(?:\s*;)+/,"").split(/;(?:\s*;)*/g);var k,n;c!==q&&(k=c.replace(/^\s*extends\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)\s*$/g,"$1"));f!==q&&(n=f.replace(/^\s*implements\s+(.+?)\s*$/g,"$1").split(/\s*,\s*/g));for(c=0;c<m.length;++c)m[c]=X(P[m[c]]);
for(c=0;c<e.length;++c)e[c]=hb(P[e[c]]);for(c=0;c<a.length-1;++c)f=d(a[c]),a[c]=Wa(f.middle);f=a.pop();for(c=0;c<h.length;++c)h[c]=ac(P[h[c]]);for(c=0;c<g.length;++c)g[c]=Mb(P[g[c]]);return new D(b,k,n,m,e,a,h,g,{tail:f})};nb.prototype.toString=function(){return"var "+this.name+" = "+this.body+";\n$p."+this.name+" = "+this.name+";\n"};ob.prototype.toString=function(){return"var "+this.name+" = "+this.body+";\n$p."+this.name+" = "+this.name+";\n"};xb.prototype.toString=function(){var a=h({},this.params.getNames()),
b=E;E=function(c){return a.hasOwnProperty(c.name)?c.name:b(c)};var c=this.params.prependMethodArgs(this.body.toString()),c="function "+this.name+this.params+" "+c+"\n$p."+this.name+" = "+this.name+";\n"+this.name+" = "+this.name+".bind($p);";E=b;return c};Rb.prototype.toString=function(){return this.misc.prefix+this.argument.toString()};bc.prototype.toString=function(){return this.misc.prefix+this.argument.toString()};W.prototype.toString=function(){var a=this.misc.prefix;this.argument!==q&&(a+=this.argument.toString());
return a};Sb.prototype.toString=function(){return"case "+this.expr+":"};yb.prototype.toString=function(){return this.label};Ga=function(a,b,c){var f=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),e=[];a=a.replace(/\b(catch\s*"B\d+"\s*"A\d+")(\s*catch\s*"B\d+"\s*"A\d+")+/g,"$1");for(var h=0,m,k;null!==(m=f.exec(a));){if(m[1]!==q)k=a.lastIndexOf('"B',f.lastIndex),h=a.substring(h,
k),"for"===m[1]?e.push(new Rb(Ca(P[m[2]]),{prefix:h})):"catch"===m[1]?e.push(new bc(Q(P[m[2]]),{prefix:h})):e.push(new W(m[1],qa(P[m[2]]),{prefix:h}));else if(m[3]!==q)e.push(new W(m[3],q,{prefix:a.substring(h,f.lastIndex)}));else if(m[4]!==q){k=a.substring(h,f.lastIndex-m[4].length);if(0!==g(k).length)continue;e.push(k);h=m[4].charAt(1);m=m[5];"D"===h?e.push(b(P[m])):"E"===h?e.push(c(P[m])):"H"===h?e.push(X(P[m])):e.push(na(P[m]))}else if(m[6]!==q)e.push(new Sb(qa(g(m[7]))));else if(m[8]!==q){k=
a.substring(h,f.lastIndex-m[8].length);if(0!==g(k).length)continue;e.push(new yb(a.substring(h,f.lastIndex)))}else m=d(a.substring(h,f.lastIndex-1)),e.push(m.left),e.push(fb(m.middle)),e.push(m.right+";");h=f.lastIndex}b=d(a.substring(h));e.push(b.left);""!==b.middle&&(e.push(fb(b.middle)),e.push(";"+b.right));return e};m.prototype.toString=function(){var a=f(this.statements),b=E;k(a)||(E=function(c){return a.hasOwnProperty(c.name)?c.name:b(c)});var c="{\n"+this.statements.join("")+"\n}";E=b;return c};
na=function(a){a=d(a.substring(1,a.length-1));return new m(Ga(a.middle))};ga.prototype.toString=function(){for(var a=[],d=[],e,g=0,h=this.statements.length;g<h;++g)e=this.statements[g],e instanceof ob||e instanceof nb?a.push(e):d.push(e);Va(a);var m=f(this.statements);E=function(a){a=a.name;return m.hasOwnProperty(a)?a:ja.hasOwnProperty(a)||c.hasOwnProperty(a)||b.hasOwnProperty(a)?"$p."+a:a};a="// this code was autogenerated from PJS\n(function($p) {\n"+a.join("")+"\n"+d.join("")+"\n})";E=null;return a};
a=function(){var a=z(P[0]),a=a.replace(/\bimport\s+[^;]+;/g,"");return new ga(Ga(a,tc,Qb))}();(function(a){function b(a,d){for(var f=d.split("."),e=a.scope,g;e;){if(e.hasOwnProperty(f[0])){g=e[f[0]];break}e=e.scope}g===q&&(g=c[f[0]]);for(var e=1,h=f.length;e<h&&g;++e)g=g.inScope[f[e]];return g}var c={},d;for(d in aa)if(aa.hasOwnProperty(d)){a=aa[d];var f=a.scopeId,e=a.name;f?(f=aa[f],a.scope=f,f.inScope===q&&(f.inScope={}),f.inScope[e]=a):c[e]=a}for(d in aa)if(aa.hasOwnProperty(d)){a=aa[d];if(e=a.body.baseClassName)if(e=
b(a,e))a.base=e,e.derived||(e.derived=[]),e.derived.push(a);var e=a.body.interfacesNames,f=[],g,h;if(e&&0<e.length){g=0;for(h=e.length;g<h;++g){var m=b(a,e[g]);f.push(m);m&&(m.derived||(m.derived=[]),m.derived.push(a))}0<f.length&&(a.interfaces=f)}}})(a);(function(a){function b(a,d){var e=c[a];if(!e)return!1;var f=e.indexOf(d);if(0>f)return!1;e.splice(f,1);if(0<e.length)return!1;delete c[a];return!0}a=[];var c={},d,f,e;for(d in aa)if(aa.hasOwnProperty(d))if(e=aa[d],e.inScope||e.derived){var g=[];
if(e.inScope)for(f in e.inScope)e.inScope.hasOwnProperty(f)&&g.push(e.inScope[f]);e.derived&&(g=g.concat(e.derived));c[d]=g}else a.push(d),e.weight=0;for(;0<a.length;)if(d=a.shift(),e=aa[d],e.scopeId&&b(e.scopeId,e)&&(a.push(e.scopeId),aa[e.scopeId].weight=e.weight+1),e.base&&b(e.base.classId,e)&&(a.push(e.base.classId),e.base.weight=e.weight+1),e.interfaces)for(d=0,f=e.interfaces.length;d<f;++d)e.interfaces[d]&&b(e.interfaces[d].classId,e)&&(a.push(e.interfaces[d].classId),e.interfaces[d].weight=
e.weight+1)})(a);a=a.toString();a=a.replace(/\s*\n(?:[\t ]*\n)+/g,"\n\n");a=a.replace(/__x([0-9A-F]{4})/g,function(a,b){return String.fromCharCode(parseInt(b,16))});return function(a,b){return a.replace(/'(\d+)'/g,function(a,c){var d=b[c];return"/"===d.charAt(0)?d:/^'((?:[^'\\\n])|(?:\\.[0-9A-Fa-f]*))'$/.test(d)?"(new $p.Character("+d+"))":d})}(a,V)}function a(a,b){var c=RegExp(/\/\*\s*@pjs\s+((?:[^\*]|\*+[^\*\/])*)\*\//g).exec(a);if(c&&2===c.length)for(var d=[],c=c.splice(1,2)[0].replace(/\{([\s\S]*?)\}/g,
function(){return function(a,b){d.push(b);return"{"+(d.length-1)+"}"}}()).replace("\n","").replace("\r","").split(";"),g=function(a){return a.replace(/^\s*["']?/,"").replace(/["']?\s*$/,"")},h=0,k=c.length;h<k;h++){var n=c[h].split("=");if(n&&2===n.length){var p=g(n[0]),q=g(n[1]),n=[];if("preload"===p)for(n=q.split(","),p=0,q=n.length;p<q;p++){var z=g(n[p]);b.imageCache.add(z)}else if("font"===p)for(n=q.split(","),p=0,q=n.length;p<q;p++){var z=g(n[p]),B=/^\{(\d*?)\}$/.exec(z);PFont.preloading.add(B?
JSON.parse("{"+d[B[1]]+"}"):z)}else"pauseOnBlur"===p?b.options.pauseOnBlur="true"===q:"globalKeyEvents"===p?b.options.globalKeyEvents="true"===q:"param-"===p.substring(0,6)?b.params[p.substring(6)]=q:b.options[p]=q}}return a}var b=g.defaultScope,c=b.PConstants,d=g.aFunctions,k=g.Browser.document,q;h.compile=function(b){var c=new h.Sketch;b=a(b,c);b=p(b);c.sourceCode=b;return c};var z=B("../Helpers/PjsConsole");h.logger=new z(k);return h}},{"../Helpers/PjsConsole":5}],27:[function(B,z,U){z.exports=
function(h,g){function n(a,b){return a in k?k[a]:"function"===typeof k[b]?k[b]:function(a){if(a instanceof Array)return a;if("number"===typeof a){var b=[];b.length=a;return b}}}var p=h.defaultScope,a=h.extend,b=h.Browser,c=b.ajax,d=b.navigator,k=b.window,q=b.document,z=h.noop,e=p.PConstants;PFont=p.PFont;PShapeSVG=p.PShapeSVG;PVector=p.PVector;Char=Character=p.Char;ObjectIterator=p.ObjectIterator;XMLElement=p.XMLElement;XML=p.XML;var B=k.HTMLCanvasElement,U=k.HTMLImageElement,C;try{C=k.localStorage}catch(F){C=
{}}q.head||(q.head=q.getElementsByTagName("head")[0]);var N=n("Float32Array","WebGLFloatArray"),u=n("Int32Array","WebGLIntArray"),ka=n("Uint16Array","WebGLUnsignedShortArray"),w=n("Uint8Array","WebGLUnsignedByteArray");if(9<=q.documentMode&&!q.doctype)throw"The doctype directive is missing. The recommended doctype in Internet Explorer is the HTML5 doctype: <!DOCTYPE html>";var vb=[],Zb={},Q=this.Processing=function(b,h,n){function F(a,M,b){a.addEventListener?a.addEventListener(M,b,!1):a.attachEvent("on"+
M,b);yb.push({elem:a,type:M,fn:b})}function X(a,M,b,c){var d=Ia.locations[a];d===g&&(d=m.getUniformLocation(M,b),Ia.locations[a]=d);null!==d&&(4===c.length?m.uniform4fv(d,c):3===c.length?m.uniform3fv(d,c):2===c.length?m.uniform2fv(d,c):m.uniform1f(d,c))}function ba(a,M,b,c){var d=Ia.locations[a];d===g&&(d=m.getUniformLocation(M,b),Ia.locations[a]=d);null!==d&&(4===c.length?m.uniform4iv(d,c):3===c.length?m.uniform3iv(d,c):2===c.length?m.uniform2iv(d,c):m.uniform1i(d,c))}function Y(a,M,b,c,d){var e=
Ia.locations[a];e===g&&(e=m.getUniformLocation(M,b),Ia.locations[a]=e);-1!==e&&(16===d.length?m.uniformMatrix4fv(e,c,d):9===d.length?m.uniformMatrix3fv(e,c,d):m.uniformMatrix2fv(e,c,d))}function ca(a,M,b,c,d){var e=Ia.attributes[a];e===g&&(e=m.getAttribLocation(M,b),Ia.attributes[a]=e);-1!==e&&(m.bindBuffer(m.ARRAY_BUFFER,d),m.vertexAttribPointer(e,c,m.FLOAT,!1,0,0),m.enableVertexAttribArray(e))}function va(a,M,b){var c=Ia.attributes[a];c===g&&(c=m.getAttribLocation(M,b),Ia.attributes[a]=c);-1!==
c&&m.disableVertexAttribArray(c)}function wa(a,M,b,c){Xa===e.HSB?(b=f.color.toRGB(a,M,b),a=b[0],M=b[1],b=b[2]):(a=Math.round(255*(a/Aa)),M=Math.round(255*(M/Ha)),b=Math.round(255*(b/Ba)));c=Math.round(255*(c/la));a=0>a?0:a;M=0>M?0:M;b=0>b?0:b;c=0>c?0:c;return(255<c?255:c)<<24&e.ALPHA_MASK|(255<a?255:a)<<16&e.RED_MASK|(255<M?255:M)<<8&e.GREEN_MASK|(255<b?255:b)&e.BLUE_MASK}function $b(a){if(a<=Aa&&0<=a){if(Xa===e.RGB)return wa(a,a,a,la);if(Xa===e.HSB)return wa(0,0,a/Aa*Ba,la)}if(a)return 2147483647<
a&&(a-=4294967296),a}function db(a){var M,b,c;M=((a&e.RED_MASK)>>>16)/255;b=((a&e.GREEN_MASK)>>>8)/255;c=(a&e.BLUE_MASK)/255;a=f.max(f.max(M,b),c);var d=f.min(f.min(M,b),c);if(d===a)return[0,0,a*Ba];M=(M===a?(b-c)/(a-d):b===a?2+(c-M)/(a-d):4+(M-b)/(a-d))/6;0>M?M+=1:1<M&&(M-=1);return[M*Aa,(a-d)/a*Ha,a*Ba]}function Ua(){m.restore();P=cb=!0}function eb(){var a=(Date.now()-vc)/1E3;fc++;var M=fc/a;0.5<a&&(vc=Date.now(),fc=0,f.__frameRate=M);f.frameCount++}function Hb(a){a=parseInt("0x"+a,16);2147483647<
a&&(a-=4294967296);return a}function fb(a){if("number"===typeof a)return 0!==a;if("boolean"===typeof a)return a;if("string"===typeof a)return"true"===a.toLowerCase();if(a instanceof Char)return 49===a.code||84===a.code||116===a.code}function Jb(a){if("number"===typeof a)return a;if("boolean"===typeof a)return a?1:0;if("string"===typeof a)return parseFloat(a);if(a instanceof Char)return a.code}function Kb(a,M){if("number"===typeof a)return a&4294967295;if("boolean"===typeof a)return a?1:0;if("string"===
typeof a)return parseInt(a,M||10)&4294967295;if(a instanceof Char)return a.code}function za(){V&&(P&&(m.fillStyle=f.color.toString(Na),P=!1),m.fill())}function Ca(){E&&(cb&&(m.strokeStyle=f.color.toString(ma),cb=!1),m.stroke())}function Va(){za();Ca();m.closePath()}function La(a,M,b){var c=Qc.shift();c===g&&(c={},c.canvas=q.createElement("canvas"),c.context=c.canvas.getContext("2d"));Qc.push(c);var d=c.canvas,e=c.context;M=M||a.width;b=b||a.height;d.width=M;d.height=b;a?"data"in a?e.putImageData(a,
0,0):(e.clearRect(0,0,M,b),e.drawImage(a,0,0,M,b)):e.clearRect(0,0,M,b);return c}function Lb(a){return{getLength:function(a){return function(){if(a.isRemote)throw"Image is loaded remotely. Cannot get length.";return a.imageData.data.length?a.imageData.data.length/4:0}}(a),getPixel:function(a){return function(L){L*=4;var b=a.imageData.data;if(a.isRemote)throw"Image is loaded remotely. Cannot get pixels.";return b[L+3]<<24&e.ALPHA_MASK|b[L]<<16&e.RED_MASK|b[L+1]<<8&e.GREEN_MASK|b[L+2]&e.BLUE_MASK}}(a),
setPixel:function(a){return function(L,b){var c=4*L,d=a.imageData.data;if(a.isRemote)throw"Image is loaded remotely. Cannot set pixel.";d[c+0]=(b&e.RED_MASK)>>>16;d[c+1]=(b&e.GREEN_MASK)>>>8;d[c+2]=b&e.BLUE_MASK;d[c+3]=(b&e.ALPHA_MASK)>>>24;a.__isDirty=!0}}(a),toArray:function(a){return function(){var L=[],b=a.imageData.data,c=a.width*a.height;if(a.isRemote)throw"Image is loaded remotely. Cannot get pixels.";for(var d=0,f=0;d<c;d++,f+=4)L.push(b[f+3]<<24&e.ALPHA_MASK|b[f]<<16&e.RED_MASK|b[f+1]<<8&
e.GREEN_MASK|b[f+2]&e.BLUE_MASK);return L}}(a),set:function(a){return function(L){var b,c,d;if(this.isRemote)throw"Image is loaded remotely. Cannot set pixels.";c=a.imageData.data;for(var f=0,g=L.length;f<g;f++)d=L[f],b=4*f,c[b+0]=(d&e.RED_MASK)>>>16,c[b+1]=(d&e.GREEN_MASK)>>>8,c[b+2]=d&e.BLUE_MASK,c[b+3]=(d&e.ALPHA_MASK)>>>24;a.__isDirty=!0}}(a)}}function Mb(a,b,c,d){var ec=new Ja(c,d,e.ARGB);ec.fromImageData(f.toImageData(a,b,c,d));return ec}function Nb(a,b,c,d,f){if(f.isRemote)throw"Image is loaded remotely. Cannot get x,y,w,h.";
var g=new Ja(c,d,e.ARGB),h=g.imageData.data,m=f.width,r=f.height;f=f.imageData.data;var k=Math.max(0,-b),n=Math.max(0,-a);d=Math.min(d,r-b);for(r=Math.min(c,m-a);k<d;++k)for(var p=4*((b+k)*m+(a+n)),q=4*(k*c+n),x=n;x<r;++x)h[q++]=f[p++],h[q++]=f[p++],h[q++]=f[p++],h[q++]=f[p++];g.__isDirty=!0;return g}function hb(){Tb&&(m=Rc,Tb=!1,f.updatePixels())}function Ob(){function a(L,b){L[b]=function(){hb();m[b].apply(m,arguments)}}function b(a,L){f.defineProperty(a,L,{get:function(){hb();return m[L]},set:function(a){hb();
m[L]=a}})}for(var c in m)"function"===typeof m[c]?a(this,c):b(this,c)}function Wa(a){return a instanceof String?a:"number"===typeof a?a===(0|a)?a.toString():f.nf(a,0,3):null===a||a===g?"":a.toString()}function Pb(a,b,c,d){var f;0>a.indexOf("\n")?(a=[a],f=1):(a=a.split(/\r?\n/g),f=a.length);var g=0;Ya===e.TOP?g=Za+Oa:Ya===e.CENTER?g=Za/2-(f-1)*Da/2:Ya===e.BOTTOM&&(g=-(Oa+(f-1)*Da));for(var h=0;h<f;++h)ja.text$line(a[h],b,c+g,d,pb),g+=Da}function ac(a,b,c,d,f,g){if(0!==a.length&&(0!==d&&0!==f)&&!(Pa>
f)){for(var h=-1,m=0,r=0,k=[],n=0,p=a.length;n<p;n++){var q=a[n],x=" "===q,s=ea.measureTextWidth(q);if("\n"!==q&&r+s<=d)x&&(h=n),r+=s;else{if(h+1===m)if(0<n)h=n;else return;"\n"===q?(k.push({text:a.substring(m,n),width:r}),m=n+1):(k.push({text:a.substring(m,h+1),width:r}),m=h+1);r=0;n=m-1}}m<p&&k.push({text:a.substring(m),width:r});a=1;h=Za;pb===e.CENTER?a=d/2:pb===e.RIGHT&&(a=d);d=k.length;m=Math.min(d,Math.floor(f/Da));Ya===e.TOP?h=Za+Oa:Ya===e.CENTER?h=f/2-Da*(m/2-1):Ya===e.BOTTOM&&(h=Oa+Da);for(m=
0;m<d;m++){n=m*Da;if(h+n>f-Oa)break;r=k[m];ja.text$line(r.text,b+a,c+h+n,g,pb)}}}function Ma(a){ja="3D"===a?new G:"2D"===a?new H:new I;for(var b in I.prototype)I.prototype.hasOwnProperty(b)&&0>b.indexOf("$")&&(f[b]=ja[b]);ja.$init()}function D(a){return function(){Ma("2D");return ja[a].apply(this,arguments)}}function nb(a){a=a.which||a.keyCode;switch(a){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 a}function ob(a){"function"===
typeof a.preventDefault?a.preventDefault():"function"===typeof a.stopPropagation&&a.stopPropagation();return!1}function Qb(){for(var a in jb)if(jb.hasOwnProperty(a)){f.__keyPressed=!0;return}f.__keyPressed=!1}function xb(a,b){jb[a]=b;qb=null;f.key=b;f.keyCode=a;f.keyPressed();f.keyCode=0;f.keyTyped();Qb()}function tc(a){var b=nb(a);if(b===e.DELETE)xb(b,new Char(127));else if(0>ud.indexOf(b))qb=b;else{var c=new Char(e.CODED);f.key=c;f.keyCode=b;jb[b]=c;f.keyPressed();qb=null;Qb();return ob(a)}}function Rb(a){if(null!==
qb){var b=qb,c;c=a.which||a.keyCode;var d=a.shiftKey||a.ctrlKey||a.altKey||a.metaKey;switch(c){case 13:c=d?13:10;break;case 8:c=d?127:8}c=new Char(c);xb(b,c);return ob(a)}}function bc(a){a=nb(a);var b=jb[a];b!==g&&(f.key=b,f.keyCode=a,f.keyReleased(),delete jb[a],Qb())}if(!(this instanceof Q))throw"called Processing constructor as if it were a function: missing 'new'.";var W={},Sb=b===g&&h===g,W=Sb?q.createElement("canvas"):"string"===typeof b?q.getElementById(b):b;if(!("getContext"in W))throw"called Processing constructor without passing canvas element reference or id.";
var yb=[],f=this;f.Char=f.Character=Char;a.withCommonFunctions(f);a.withMath(f);a.withProxyFunctions(f,function(a){return Array.prototype.slice.call(a,1)});a.withTouch(f,W,F,q,e);n&&Object.keys(n).forEach(function(a){f[a]=n[a]});f.externals={canvas:W,context:g,sketch:g,window:k};f.name="Processing.js Instance";f.use3DContext=!1;f.focused=!1;f.breakShape=!1;f.glyphTable={};f.pmouseX=0;f.pmouseY=0;f.mouseX=0;f.mouseY=0;f.mouseButton=0;f.mouseScroll=0;f.mouseClicked=g;f.mouseDragged=g;f.mouseMoved=g;
f.mousePressed=g;f.mouseReleased=g;f.mouseScrolled=g;f.mouseOver=g;f.mouseOut=g;f.touchStart=g;f.touchEnd=g;f.touchMove=g;f.touchCancel=g;f.key=g;f.keyCode=g;f.keyPressed=z;f.keyReleased=z;f.keyTyped=z;f.draw=g;f.setup=g;f.__mousePressed=!1;f.__keyPressed=!1;f.__frameRate=60;f.frameCount=0;f.width=100;f.height=100;var m,ga,ja,V=!0,oa=[1,1,1,1],Na=4294967295,P=!0,E=!0,aa=[0,0,0,1],ma=4278190080,cb=!0,ha=1,gb=!1,na=!1,Ga=!0,qa=0,ua=e.CORNER,pa=e.CENTER,Ib=0,Gb=0,wb=0,lb=e.NORMAL_MODE_AUTO,pc=60,Oc=
1E3/pc,sd=W.style.cursor,da=e.POLYGON,qc=0,rc=20,Pc=!1,mb=-3355444,sc=20,la=255,Aa=255,Ha=255,Ba=255,cc=0,dc=0,Xa=e.RGB,ib=null,uc=null,Sc=Date.now(),vc=Sc,fc=0,Ea,Ub,gc,zb,Ab,wc,xc,Ia={attributes:{},locations:{}},A,J,ra,yc,zc,Ac,hc,Bc,Vb,Cc,Tc,Dc,Uc,ic,Vc,Wc,Xc,Yc=0,Zc=0,$c=e.IMAGE,xa=!1,Ec,Fc,Gc,pb=e.LEFT,Ya=e.BASELINE,jc=e.MODEL,Bb="Arial",Pa=12,Za=9,Oa=2,Da=14,ea=PFont.get(Bb,Pa),Rc,Hc=null,Tb=!1,ad,bd=1E3,jb=[],qb=null,ud=[e.SHIFT,e.CONTROL,e.ALT,e.CAPSLK,e.PGUP,e.PGDN,e.END,e.HOME,e.LEFT,e.UP,
e.RIGHT,e.DOWN,e.NUMLK,e.INSERT,e.F1,e.F2,e.F3,e.F4,e.F5,e.F6,e.F7,e.F8,e.F9,e.F10,e.F11,e.F12,e.META],R=0,kc=0,rb=0,Qa=[],Ra=[],Sa=[],Ic=new N(e.SINCOS_LENGTH),Jc=new N(e.SINCOS_LENGTH),T,sb,Ta,O,ia,Cb,Db,Wb,Ka,lc=!1,mc=60*(Math.PI/180),Kc=f.width/2,tb=f.height/2,ub=tb/Math.tan(mc/2),cd=ub/10,dd=10*ub,ed=f.width/f.height,s=[],ya=[],sa=0,Eb=!1,Fb=!1,kb=!0,Xb=e.CORNER,fd=[],gd=new N([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]),hd=new N([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]),vd=new N([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]),Lc=new N([0,0,0,0,1,0,1,1,0,1,0,0]),wd=new N([0,0,1,0,
0,1,0,0,1,0,0,1]),xd="varying vec4 vFrontColor;attribute vec3 aVertex;attribute vec3 aNormal;attribute vec4 aColor;attribute vec2 aTexture;varying vec2 vTexture;uniform vec4 uColor;uniform bool uUsingMat;uniform vec3 uSpecular;uniform vec3 uMaterialEmissive;uniform vec3 uMaterialAmbient;uniform vec3 uMaterialSpecular;uniform float uShininess;uniform mat4 uModel;uniform mat4 uView;uniform mat4 uProjection;uniform mat4 uNormalTransform;uniform int uLightCount;uniform vec3 uFalloff;struct Light { int type; vec3 color; vec3 position; vec3 direction; float angle; vec3 halfVector; float concentration;};uniform Light uLights0;uniform Light uLights1;uniform Light uLights2;uniform Light uLights3;uniform Light uLights4;uniform Light uLights5;uniform Light uLights6;uniform Light uLights7;Light getLight(int index){ if(index == 0) return uLights0; if(index == 1) return uLights1; if(index == 2) return uLights2; if(index == 3) return uLights3; if(index == 4) return uLights4; if(index == 5) return uLights5; if(index == 6) return uLights6; return uLights7;}void AmbientLight( inout vec3 totalAmbient, in vec3 ecPos, in Light light ) { float d = length( light.position - ecPos ); float attenuation = 1.0 / ( uFalloff[0] + ( uFalloff[1] * d ) + ( uFalloff[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, uShininess ); } col += light.color * nDotVP; spec += uSpecular * 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 / ( uFalloff[0] + ( uFalloff[1] * d ) + ( uFalloff[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, uShininess ); } spec += uSpecular * 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 = 0.0; vec3 VP = light.position - ecPos; vec3 ldir = normalize( -light.direction ); float d = length( VP ); VP = normalize( VP ); float attenuation = 1.0 / ( uFalloff[0] + ( uFalloff[1] * d ) + ( uFalloff[2] * d * d ) ); float spotDot = dot( VP, ldir );"+
(/Windows/.test(d.userAgent)?" 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 = pow( nDotHV, uShininess ); } spec += uSpecular * powerFactor * attenuation; col += light.color * nDotVP * attenuation;}void main(void) { vec3 finalAmbient = vec3( 0.0 ); vec3 finalDiffuse = vec3( 0.0 ); vec3 finalSpecular = vec3( 0.0 ); vec4 col = uColor; if ( uColor[0] == -1.0 ){ col = aColor; } vec3 norm = normalize(vec3( uNormalTransform * vec4( aNormal, 0.0 ) )); vec4 ecPos4 = uView * uModel * vec4(aVertex, 1.0); vec3 ecPos = (vec3(ecPos4))/ecPos4.w; if( uLightCount == 0 ) { vFrontColor = col + vec4(uMaterialSpecular, 1.0); } else { for( int i = 0; i < 8; i++ ) { Light l = getLight(i); if( i >= uLightCount ){ 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( uUsingMat == false ) { vFrontColor = vec4( vec3( col ) * finalAmbient + vec3( col ) * finalDiffuse + vec3( col ) * finalSpecular, col[3] ); } else{ vFrontColor = vec4( uMaterialEmissive + (vec3(col) * uMaterialAmbient * finalAmbient ) + (vec3(col) * finalDiffuse) + (uMaterialSpecular * finalSpecular), col[3] ); } } vTexture.xy = aTexture.xy; gl_Position = uProjection * uView * uModel * vec4( aVertex, 1.0 );}",
Mc=function(a,b,c){var d=a.createShader(a.VERTEX_SHADER);a.shaderSource(d,b);a.compileShader(d);if(!a.getShaderParameter(d,a.COMPILE_STATUS))throw a.getShaderInfoLog(d);b=a.createShader(a.FRAGMENT_SHADER);a.shaderSource(b,c);a.compileShader(b);if(!a.getShaderParameter(b,a.COMPILE_STATUS))throw a.getShaderInfoLog(b);c=a.createProgram();a.attachShader(c,d);a.attachShader(c,b);a.linkProgram(c);if(!a.getProgramParameter(c,a.LINK_STATUS))throw"Error linking shaders.";return c},id=function(a,b,c,d,e){return{x:a,
y:b,w:c,h:d}},nc=id,yd=function(a,b,c,d,e){return{x:a,y:b,w:e?c:c-a,h:e?d:d-b}},zd=function(a,b,c,d,e){return{x:a-c/2,y:b-d/2,w:c,h:d}},$=function(){},H=function(){},G=function(){},I=function(){};H.prototype=new $;H.prototype.constructor=H;G.prototype=new $;G.prototype.constructor=G;I.prototype=new $;I.prototype.constructor=I;$.prototype.a3DOnlyFunction=z;f.shape=function(a,b,c,d,g){1<=arguments.length&&null!==arguments[0]&&a.isVisible()&&(f.pushMatrix(),Xb===e.CENTER?5===arguments.length?(f.translate(b-
d/2,c-g/2),f.scale(d/a.getWidth(),g/a.getHeight())):3===arguments.length?f.translate(b-a.getWidth()/2,-a.getHeight()/2):f.translate(-a.getWidth()/2,-a.getHeight()/2):Xb===e.CORNER?5===arguments.length?(f.translate(b,c),f.scale(d/a.getWidth(),g/a.getHeight())):3===arguments.length&&f.translate(b,c):Xb===e.CORNERS&&(5===arguments.length?(d-=b,g-=c,f.translate(b,c),f.scale(d/a.getWidth(),g/a.getHeight())):3===arguments.length&&f.translate(b,c)),a.draw(f),(1===arguments.length&&Xb===e.CENTER||1<arguments.length)&&
f.popMatrix())};f.shapeMode=function(a){Xb=a};f.loadShape=function(a){return 1===arguments.length&&-1<a.indexOf(".svg")?new PShapeSVG(null,a):null};f.loadXML=function(a){return new XML(f,a)};f.parseXML=function(a){var b=new XML;b.parse(a);return b};var jd=function(a){for(var b=0,c=0;c<a.length;c++)b=0!==c?Math.max(b,Math.abs(a[c])):Math.abs(a[c]);a=(b+"").indexOf(".");0===a?a=1:-1===a&&(a=(b+"").length);return a},$a=f.PMatrix2D=function(){0===arguments.length?this.reset():1===arguments.length&&arguments[0]instanceof
$a?this.set(arguments[0].array()):6===arguments.length&&this.set(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])};$a.prototype={set:function(){if(6===arguments.length){var a=arguments;this.set([a[0],a[1],a[2],a[3],a[4],a[5]])}else 1===arguments.length&&arguments[0]instanceof $a?this.elements=arguments[0].array():1===arguments.length&&arguments[0]instanceof Array&&(this.elements=arguments[0].slice())},get:function(){var a=new $a;a.set(this.elements);return a},reset:function(){this.set([1,
0,0,0,1,0])},array:function(){return this.elements.slice()},translate:function(a,b){this.elements[2]=a*this.elements[0]+b*this.elements[1]+this.elements[2];this.elements[5]=a*this.elements[3]+b*this.elements[4]+this.elements[5]},invTranslate:function(a,b){this.translate(-a,-b)},transpose:function(){},mult:function(a,b){var c,d;a instanceof PVector?(c=a.x,d=a.y,b||(b=new PVector)):a instanceof Array&&(c=a[0],d=a[1],b||(b=[]));b instanceof Array?(b[0]=this.elements[0]*c+this.elements[1]*d+this.elements[2],
b[1]=this.elements[3]*c+this.elements[4]*d+this.elements[5]):b instanceof PVector&&(b.x=this.elements[0]*c+this.elements[1]*d+this.elements[2],b.y=this.elements[3]*c+this.elements[4]*d+this.elements[5],b.z=0);return b},multX:function(a,b){return a*this.elements[0]+b*this.elements[1]+this.elements[2]},multY:function(a,b){return a*this.elements[3]+b*this.elements[4]+this.elements[5]},skewX:function(a){this.apply(1,0,1,a,0,0)},skewY:function(a){this.apply(1,0,1,0,a,0)},shearX:function(a){this.apply(1,
0,1,Math.tan(a),0,0)},shearY:function(a){this.apply(1,0,1,0,Math.tan(a),0)},determinant:function(){return this.elements[0]*this.elements[4]-this.elements[1]*this.elements[3]},invert:function(){var a=this.determinant();if(Math.abs(a)>e.MIN_INT){var b=this.elements[0],c=this.elements[1],d=this.elements[2],f=this.elements[3],g=this.elements[4],h=this.elements[5];this.elements[0]=g/a;this.elements[3]=-f/a;this.elements[1]=-c/a;this.elements[4]=b/a;this.elements[2]=(c*h-g*d)/a;this.elements[5]=(f*d-b*
h)/a;return!0}return!1},scale:function(a,b){a&&!b&&(b=a);a&&b&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[3]*=a,this.elements[4]*=b)},invScale:function(a,b){a&&!b&&(b=a);this.scale(1/a,1/b)},apply:function(){var a;1===arguments.length&&arguments[0]instanceof $a?a=arguments[0].array():6===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,this.elements[2],0,0,this.elements[5]],c=0,d=0;2>d;d++)for(var e=
0;3>e;e++,c++)b[c]+=this.elements[3*d+0]*a[e+0]+this.elements[3*d+1]*a[e+3];this.elements=b.slice()},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof $a?a=arguments[0].array():6===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);var b=[0,0,a[2],0,0,a[5]];b[2]=a[2]+this.elements[2]*a[0]+this.elements[5]*a[1];b[5]=a[5]+this.elements[2]*a[3]+this.elements[5]*a[4];b[0]=this.elements[0]*a[0]+this.elements[3]*
a[1];b[3]=this.elements[0]*a[3]+this.elements[3]*a[4];b[1]=this.elements[1]*a[0]+this.elements[4]*a[1];b[4]=this.elements[1]*a[3]+this.elements[4]*a[4];this.elements=b.slice()},rotate:function(a){var b=Math.cos(a);a=Math.sin(a);var c=this.elements[0],d=this.elements[1];this.elements[0]=b*c+a*d;this.elements[1]=-a*c+b*d;c=this.elements[3];d=this.elements[4];this.elements[3]=b*c+a*d;this.elements[4]=-a*c+b*d},rotateZ:function(a){this.rotate(a)},invRotateZ:function(a){this.rotateZ(a-Math.PI)},print:function(){var a=
jd(this.elements),a=""+f.nfs(this.elements[0],a,4)+" "+f.nfs(this.elements[1],a,4)+" "+f.nfs(this.elements[2],a,4)+"\n"+f.nfs(this.elements[3],a,4)+" "+f.nfs(this.elements[4],a,4)+" "+f.nfs(this.elements[5],a,4)+"\n\n";f.println(a)}};var K=f.PMatrix3D=function(){this.reset()};K.prototype={set:function(){16===arguments.length?this.elements=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof K?this.elements=arguments[0].array():1===arguments.length&&arguments[0]instanceof
Array&&(this.elements=arguments[0].slice())},get:function(){var a=new K;a.set(this.elements);return a},reset:function(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},array:function(){return this.elements.slice()},translate:function(a,b,c){c===g&&(c=0);this.elements[3]+=a*this.elements[0]+b*this.elements[1]+c*this.elements[2];this.elements[7]+=a*this.elements[4]+b*this.elements[5]+c*this.elements[6];this.elements[11]+=a*this.elements[8]+b*this.elements[9]+c*this.elements[10];this.elements[15]+=
a*this.elements[12]+b*this.elements[13]+c*this.elements[14]},transpose:function(){var a=this.elements[4];this.elements[4]=this.elements[1];this.elements[1]=a;a=this.elements[8];this.elements[8]=this.elements[2];this.elements[2]=a;a=this.elements[6];this.elements[6]=this.elements[9];this.elements[9]=a;a=this.elements[3];this.elements[3]=this.elements[12];this.elements[12]=a;a=this.elements[7];this.elements[7]=this.elements[13];this.elements[13]=a;a=this.elements[11];this.elements[11]=this.elements[14];
this.elements[14]=a},mult:function(a,b){var c,d,e,f;a instanceof PVector?(c=a.x,d=a.y,e=a.z,f=1,b||(b=new PVector)):a instanceof Array&&(c=a[0],d=a[1],e=a[2],f=a[3]||1,!b||3!==b.length&&4!==b.length)&&(b=[0,0,0]);b instanceof Array&&(3===b.length?(b[0]=this.elements[0]*c+this.elements[1]*d+this.elements[2]*e+this.elements[3],b[1]=this.elements[4]*c+this.elements[5]*d+this.elements[6]*e+this.elements[7],b[2]=this.elements[8]*c+this.elements[9]*d+this.elements[10]*e+this.elements[11]):4===b.length&&
(b[0]=this.elements[0]*c+this.elements[1]*d+this.elements[2]*e+this.elements[3]*f,b[1]=this.elements[4]*c+this.elements[5]*d+this.elements[6]*e+this.elements[7]*f,b[2]=this.elements[8]*c+this.elements[9]*d+this.elements[10]*e+this.elements[11]*f,b[3]=this.elements[12]*c+this.elements[13]*d+this.elements[14]*e+this.elements[15]*f));b instanceof PVector&&(b.x=this.elements[0]*c+this.elements[1]*d+this.elements[2]*e+this.elements[3],b.y=this.elements[4]*c+this.elements[5]*d+this.elements[6]*e+this.elements[7],
b.z=this.elements[8]*c+this.elements[9]*d+this.elements[10]*e+this.elements[11]);return b},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof K?a=arguments[0].array():16===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],c=0,d=0;4>d;d++)for(var e=0;4>e;e++,c++)b[c]+=this.elements[e+0]*a[4*d+0]+this.elements[e+4]*a[4*d+1]+this.elements[e+8]*a[4*d+2]+this.elements[e+
12]*a[4*d+3];this.elements=b.slice()},apply:function(){var a;1===arguments.length&&arguments[0]instanceof K?a=arguments[0].array():16===arguments.length?a=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof Array&&(a=arguments[0]);for(var b=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],c=0,d=0;4>d;d++)for(var e=0;4>e;e++,c++)b[c]+=this.elements[4*d+0]*a[e+0]+this.elements[4*d+1]*a[e+4]+this.elements[4*d+2]*a[e+8]+this.elements[4*d+3]*a[e+12];this.elements=b.slice()},rotate:function(a,
b,c,d){if(4>arguments.length)this.rotateZ(a);else{var e=new PVector(b,c,d),g=e.mag();if(0!==g){1!=g&&(e.normalize(),b=e.x,c=e.y,d=e.z);var e=f.cos(a),g=f.sin(a),h=1-e;this.apply(h*b*b+e,h*b*c-g*d,h*b*d+g*c,0,h*b*c+g*d,h*c*c+e,h*c*d-g*b,0,h*b*d-g*c,h*c*d+g*b,h*d*d+e,0,0,0,0,1)}}},invApply:function(){Wb===g&&(Wb=new K);var a=arguments;Wb.set(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]);if(!Wb.invert())return!1;this.preApply(Wb);return!0},rotateX:function(a){var b=
f.cos(a);a=f.sin(a);this.apply([1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1])},rotateY:function(a){var b=f.cos(a);a=f.sin(a);this.apply([b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1])},rotateZ:function(a){var b=Math.cos(a);a=Math.sin(a);this.apply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},scale:function(a,b,c){!a||b||c?a&&(b&&!c)&&(c=1):b=c=a;a&&(b&&c)&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[2]*=c,this.elements[4]*=a,this.elements[5]*=b,this.elements[6]*=c,this.elements[8]*=a,this.elements[9]*=b,this.elements[10]*=
c,this.elements[12]*=a,this.elements[13]*=b,this.elements[14]*=c)},skewX:function(a){a=Math.tan(a);this.apply(1,a,0,0,0,1,0,0,0,0,1,0,0,0,0,1)},skewY:function(a){a=Math.tan(a);this.apply(1,0,0,0,a,1,0,0,0,0,1,0,0,0,0,1)},shearX:function(a){a=Math.tan(a);this.apply(1,a,0,0,0,1,0,0,0,0,1,0,0,0,0,1)},shearY:function(a){a=Math.tan(a);this.apply(1,0,0,0,a,1,0,0,0,0,1,0,0,0,0,1)},multX:function(a,b,c,d){return c?d?this.elements[0]*a+this.elements[1]*b+this.elements[2]*c+this.elements[3]*d:this.elements[0]*
a+this.elements[1]*b+this.elements[2]*c+this.elements[3]:this.elements[0]*a+this.elements[1]*b+this.elements[3]},multY:function(a,b,c,d){return c?d?this.elements[4]*a+this.elements[5]*b+this.elements[6]*c+this.elements[7]*d:this.elements[4]*a+this.elements[5]*b+this.elements[6]*c+this.elements[7]:this.elements[4]*a+this.elements[5]*b+this.elements[7]},multZ:function(a,b,c,d){return d?this.elements[8]*a+this.elements[9]*b+this.elements[10]*c+this.elements[11]*d:this.elements[8]*a+this.elements[9]*
b+this.elements[10]*c+this.elements[11]},multW:function(a,b,c,d){return d?this.elements[12]*a+this.elements[13]*b+this.elements[14]*c+this.elements[15]*d:this.elements[12]*a+this.elements[13]*b+this.elements[14]*c+this.elements[15]},invert:function(){var a=this.elements[0]*this.elements[5]-this.elements[1]*this.elements[4],b=this.elements[0]*this.elements[6]-this.elements[2]*this.elements[4],c=this.elements[0]*this.elements[7]-this.elements[3]*this.elements[4],d=this.elements[1]*this.elements[6]-
this.elements[2]*this.elements[5],e=this.elements[1]*this.elements[7]-this.elements[3]*this.elements[5],f=this.elements[2]*this.elements[7]-this.elements[3]*this.elements[6],g=this.elements[8]*this.elements[13]-this.elements[9]*this.elements[12],h=this.elements[8]*this.elements[14]-this.elements[10]*this.elements[12],m=this.elements[8]*this.elements[15]-this.elements[11]*this.elements[12],n=this.elements[9]*this.elements[14]-this.elements[10]*this.elements[13],k=this.elements[9]*this.elements[15]-
this.elements[11]*this.elements[13],p=this.elements[10]*this.elements[15]-this.elements[11]*this.elements[14],q=a*p-b*k+c*n+d*m-e*h+f*g;if(1E-9>=Math.abs(q))return!1;var x=[];x[0]=+this.elements[5]*p-this.elements[6]*k+this.elements[7]*n;x[4]=-this.elements[4]*p+this.elements[6]*m-this.elements[7]*h;x[8]=+this.elements[4]*k-this.elements[5]*m+this.elements[7]*g;x[12]=-this.elements[4]*n+this.elements[5]*h-this.elements[6]*g;x[1]=-this.elements[1]*p+this.elements[2]*k-this.elements[3]*n;x[5]=+this.elements[0]*
p-this.elements[2]*m+this.elements[3]*h;x[9]=-this.elements[0]*k+this.elements[1]*m-this.elements[3]*g;x[13]=+this.elements[0]*n-this.elements[1]*h+this.elements[2]*g;x[2]=+this.elements[13]*f-this.elements[14]*e+this.elements[15]*d;x[6]=-this.elements[12]*f+this.elements[14]*c-this.elements[15]*b;x[10]=+this.elements[12]*e-this.elements[13]*c+this.elements[15]*a;x[14]=-this.elements[12]*d+this.elements[13]*b-this.elements[14]*a;x[3]=-this.elements[9]*f+this.elements[10]*e-this.elements[11]*d;x[7]=
+this.elements[8]*f-this.elements[10]*c+this.elements[11]*b;x[11]=-this.elements[8]*e+this.elements[9]*c-this.elements[11]*a;x[15]=+this.elements[8]*d-this.elements[9]*b+this.elements[10]*a;a=1/q;x[0]*=a;x[1]*=a;x[2]*=a;x[3]*=a;x[4]*=a;x[5]*=a;x[6]*=a;x[7]*=a;x[8]*=a;x[9]*=a;x[10]*=a;x[11]*=a;x[12]*=a;x[13]*=a;x[14]*=a;x[15]*=a;this.elements=x.slice();return!0},toString:function(){for(var a="",b=0;15>b;b++)a+=this.elements[b]+", ";return a+=this.elements[15]},print:function(){var a=jd(this.elements),
a=""+f.nfs(this.elements[0],a,4)+" "+f.nfs(this.elements[1],a,4)+" "+f.nfs(this.elements[2],a,4)+" "+f.nfs(this.elements[3],a,4)+"\n"+f.nfs(this.elements[4],a,4)+" "+f.nfs(this.elements[5],a,4)+" "+f.nfs(this.elements[6],a,4)+" "+f.nfs(this.elements[7],a,4)+"\n"+f.nfs(this.elements[8],a,4)+" "+f.nfs(this.elements[9],a,4)+" "+f.nfs(this.elements[10],a,4)+" "+f.nfs(this.elements[11],a,4)+"\n"+f.nfs(this.elements[12],a,4)+" "+f.nfs(this.elements[13],a,4)+" "+f.nfs(this.elements[14],a,4)+" "+f.nfs(this.elements[15],
a,4)+"\n\n";f.println(a)},invTranslate:function(a,b,c){this.preApply(1,0,0,-a,0,1,0,-b,0,0,1,-c,0,0,0,1)},invRotateX:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([1,0,0,0,0,b,-a,0,0,a,b,0,0,0,0,1])},invRotateY:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([b,0,a,0,0,1,0,0,-a,0,b,0,0,0,0,1])},invRotateZ:function(a){var b=Math.cos(-a);a=Math.sin(-a);this.preApply([b,-a,0,0,a,b,0,0,0,0,1,0,0,0,0,1])},invScale:function(a,b,c){this.preApply([1/a,0,0,0,0,1/b,0,0,0,0,1/c,0,0,
0,0,1])}};var ab=f.PMatrixStack=function(){this.matrixStack=[]};ab.prototype.load=function(){var a=ja.$newPMatrix();1===arguments.length?a.set(arguments[0]):a.set(arguments);this.matrixStack.push(a)};H.prototype.$newPMatrix=function(){return new $a};G.prototype.$newPMatrix=function(){return new K};ab.prototype.push=function(){this.matrixStack.push(this.peek())};ab.prototype.pop=function(){return this.matrixStack.pop()};ab.prototype.peek=function(){var a=ja.$newPMatrix();a.set(this.matrixStack[this.matrixStack.length-
1]);return a};ab.prototype.mult=function(a){this.matrixStack[this.matrixStack.length-1].apply(a)};f.split=function(a,b){return a.split(b)};f.splitTokens=function(a,b){if(b===g)return a.split(/\s+/g);var c=b.split(/()/g),d="",e=a.length,f,h,m=[];for(f=0;f<e;f++)h=a[f],-1<c.indexOf(h)?(""!==d&&m.push(d),d=""):d+=h;""!==d&&m.push(d);return m};f.append=function(a,b){a[a.length]=b;return a};f.concat=function(a,b){return a.concat(b)};f.sort=function(a,b){var c=[];if(0<a.length){for(var d=0<b?b:a.length,
e=0;e<d;e++)c.push(a[e]);"string"===typeof a[0]?c.sort():c.sort(function(a,b){return a-b});if(0<b)for(d=c.length;d<a.length;d++)c.push(a[d])}return c};f.splice=function(a,b,c){if(0===b.length)return a;if(b instanceof Array)for(var d=0;d<b.length;c++,d++)a.splice(c,0,b[d]);else a.splice(c,0,b);return a};f.subset=function(a,b,c){return a.slice(b,c!==g?b+c:a.length)};f.join=function(a,b){return a.join(b)};f.shorten=function(a){for(var b=[],c=a.length,d=0;d<c;d++)b[d]=a[d];b.pop();return b};f.expand=
function(a,b){var c=a.slice(0);c.length=b||2*a.length;return c};f.arrayCopy=function(){var a,b=0,c,d=0,e;2===arguments.length?(a=arguments[0],c=arguments[1],e=a.length):3===arguments.length?(a=arguments[0],c=arguments[1],e=arguments[2]):5===arguments.length&&(a=arguments[0],b=arguments[1],c=arguments[2],d=arguments[3],e=arguments[4]);for(var f=b;f<e+b;f++,d++)if(c[d]!==g)c[d]=a[f];else throw"array index out of bounds exception";};f.reverse=function(a){return a.reverse()};f.mix=function(a,b,c){return a+
((b-a)*c>>8)};f.peg=function(a){return 0>a?0:255<a?255:a};f.modes=function(){function a(b,c,L,d,M,e,f,Cd,td,h,ec){b=g(((b&4278190080)>>>24)+c,255)<<24;L+=(td-L)*c>>8;d+=(h-d)*c>>8;c=M+((ec-M)*c>>8);return b|(0>L?0:255<L?255:L)<<16|(0>d?0:255<d?255:d)<<8|(0>c?0:255<c?255:c)}var b=e.ALPHA_MASK,c=e.RED_MASK,d=e.GREEN_MASK,f=e.BLUE_MASK,g=Math.min,h=Math.max;return{replace:function(a,b){return b},blend:function(a,L){var e=(L&b)>>>24,h=a&c,m=a&d,y=a&f,n=L&c,k=L&d,p=L&f;return g(((a&b)>>>24)+e,255)<<24|
h+((n-h)*e>>8)&c|m+((k-m)*e>>8)&d|y+((p-y)*e>>8)&f},add:function(a,L){var e=(L&b)>>>24;return g(((a&b)>>>24)+e,255)<<24|g((a&c)+((L&c)>>8)*e,c)&c|g((a&d)+((L&d)>>8)*e,d)&d|g((a&f)+((L&f)*e>>8),f)},subtract:function(a,L){var e=(L&b)>>>24;return g(((a&b)>>>24)+e,255)<<24|h((a&c)-((L&c)>>8)*e,d)&c|h((a&d)-((L&d)>>8)*e,f)&d|h((a&f)-((L&f)*e>>8),0)},lightest:function(a,L){var e=(L&b)>>>24;return g(((a&b)>>>24)+e,255)<<24|h(a&c,((L&c)>>8)*e)&c|h(a&d,((L&d)>>8)*e)&d|h(a&f,(L&f)*e>>8)},darkest:function(a,
L){var e=(L&b)>>>24,h=a&c,m=a&d,y=a&f,n=g(a&c,((L&c)>>8)*e),k=g(a&d,((L&d)>>8)*e),p=g(a&f,(L&f)*e>>8);return g(((a&b)>>>24)+e,255)<<24|h+((n-h)*e>>8)&c|m+((k-m)*e>>8)&d|y+((p-y)*e>>8)&f},difference:function(e,g){var h=(e&c)>>16,m=(e&d)>>8,y=e&f,Z=(g&c)>>16,n=(g&d)>>8,k=g&f;return a(e,(g&b)>>>24,h,m,y,Z,n,k,h>Z?h-Z:Z-h,m>n?m-n:n-m,y>k?y-k:k-y)},exclusion:function(e,g){var h=(e&c)>>16,m=(e&d)>>8,y=e&f,Z=(g&c)>>16,n=(g&d)>>8,k=g&f;return a(e,(g&b)>>>24,h,m,y,Z,n,k,h+Z-(h*Z>>7),m+n-(m*n>>7),y+k-(y*k>>
7))},multiply:function(e,g){var h=(e&c)>>16,m=(e&d)>>8,y=e&f,Z=(g&c)>>16,n=(g&d)>>8,k=g&f;return a(e,(g&b)>>>24,h,m,y,Z,n,k,h*Z>>8,m*n>>8,y*k>>8)},screen:function(e,g){var h=(e&c)>>16,m=(e&d)>>8,y=e&f,Z=(g&c)>>16,n=(g&d)>>8,k=g&f;return a(e,(g&b)>>>24,h,m,y,Z,n,k,255-((255-h)*(255-Z)>>8),255-((255-m)*(255-n)>>8),255-((255-y)*(255-k)>>8))},hard_light:function(e,g){var h=(e&c)>>16,m=(e&d)>>8,y=e&f,Z=(g&c)>>16,n=(g&d)>>8,k=g&f;return a(e,(g&b)>>>24,h,m,y,Z,n,k,128>Z?h*Z>>7:255-((255-h)*(255-Z)>>7),128>
n?m*n>>7:255-((255-m)*(255-n)>>7),128>k?y*k>>7:255-((255-y)*(255-k)>>7))},soft_light:function(e,g){var h=(e&c)>>16,m=(e&d)>>8,y=e&f,Z=(g&c)>>16,n=(g&d)>>8,k=g&f;return a(e,(g&b)>>>24,h,m,y,Z,n,k,(h*Z>>7)+(h*h>>8)-(h*h*Z>>15),(m*n>>7)+(m*m>>8)-(m*m*n>>15),(y*k>>7)+(y*y>>8)-(y*y*k>>15))},overlay:function(e,g){var h=(e&c)>>16,m=(e&d)>>8,y=e&f,Z=(g&c)>>16,n=(g&d)>>8,k=g&f;return a(e,(g&b)>>>24,h,m,y,Z,n,k,128>h?h*Z>>7:255-((255-h)*(255-Z)>>7),128>m?m*n>>7:255-((255-m)*(255-n)>>7),128>y?y*k>>7:255-((255-
y)*(255-k)>>7))},dodge:function(e,g){var h=(g&b)>>>24,m=(e&c)>>16,y=(e&d)>>8,Z=e&f,n=(g&c)>>16,k=(g&d)>>8,p=g&f,q=255;255!==n&&(q=(m<<8)/(255-n),q=0>q?0:255<q?255:q);var s=255;255!==k&&(s=(y<<8)/(255-k),s=0>s?0:255<s?255:s);var u=255;255!==p&&(u=(Z<<8)/(255-p),u=0>u?0:255<u?255:u);return a(e,h,m,y,Z,n,k,p,q,s,u)},burn:function(e,g){var h=(g&b)>>>24,m=(e&c)>>16,y=(e&d)>>8,Z=e&f,n=(g&c)>>16,k=(g&d)>>8,p=g&f,q=0;0!==n&&(q=(255-m<<8)/n,q=255-(0>q?0:255<q?255:q));var s=0;0!==k&&(s=(255-y<<8)/k,s=255-(0>
s?0:255<s?255:s));var u=0;0!==p&&(u=(255-Z<<8)/p,u=255-(0>u?0:255<u?255:u));return a(e,h,m,y,Z,n,k,p,q,s,u)}}}();f.color=function(a,b,c,d){return a!==g&&b!==g&&c!==g&&d!==g?wa(a,b,c,d):a!==g&&b!==g&&c!==g?wa(a,b,c,la):a!==g&&b!==g?(a&e.ALPHA_MASK?(b=Math.round(255*(b/la)),b=255<b?255:b,a=a-(a&e.ALPHA_MASK)+((0>b?0:b)<<24&e.ALPHA_MASK)):a=Xa===e.RGB?wa(a,a,a,b):Xa===e.HSB?wa(0,0,a/Aa*Ba,b):void 0,a):"number"===typeof a?$b(a):wa(Aa,Ha,Ba,la)};f.color.toString=function(a){return"rgba("+((a&e.RED_MASK)>>>
16)+","+((a&e.GREEN_MASK)>>>8)+","+(a&e.BLUE_MASK)+","+((a&e.ALPHA_MASK)>>>24)/255+")"};f.color.toInt=function(a,b,c,d){return d<<24&e.ALPHA_MASK|a<<16&e.RED_MASK|b<<8&e.GREEN_MASK|c&e.BLUE_MASK};f.color.toArray=function(a){return[(a&e.RED_MASK)>>>16,(a&e.GREEN_MASK)>>>8,a&e.BLUE_MASK,(a&e.ALPHA_MASK)>>>24]};f.color.toGLArray=function(a){return[((a&e.RED_MASK)>>>16)/255,((a&e.GREEN_MASK)>>>8)/255,(a&e.BLUE_MASK)/255,((a&e.ALPHA_MASK)>>>24)/255]};f.color.toRGB=function(a,b,c){a=a>Aa?Aa:a;b=b>Ha?Ha:
b;c=c>Ba?Ba:c;a=360*(a/Aa);b=100*(b/Ha);c=100*(c/Ba);var d=Math.round(255*(c/100));if(0===b)return[d,d,d];a%=360;var e=a%60,f=Math.round(255*(c*(100-b)/1E4)),g=Math.round(255*(c*(6E3-b*e)/6E5));b=Math.round(255*(c*(6E3-b*(60-e))/6E5));switch(Math.floor(a/60)){case 0:return[d,b,f];case 1:return[g,d,f];case 2:return[f,d,b];case 3:return[f,g,d];case 4:return[b,f,d];case 5:return[d,f,g]}};f.brightness=function(a){return db(a)[2]};f.saturation=function(a){return db(a)[1]};f.hue=function(a){return db(a)[0]};
f.red=function(a){return((a&e.RED_MASK)>>>16)/255*Aa};f.green=function(a){return((a&e.GREEN_MASK)>>>8)/255*Ha};f.blue=function(a){return(a&e.BLUE_MASK)/255*Ba};f.alpha=function(a){return((a&e.ALPHA_MASK)>>>24)/255*la};f.lerpColor=function(a,b,c){var d,g,h,m,n,r;a=f.color(a);b=f.color(b);if(Xa===e.HSB)return h=db(a),a=((a&e.ALPHA_MASK)>>>24)/la,g=db(b),b=((b&e.ALPHA_MASK)>>>24)/la,r=f.lerp(h[0],g[0],c),d=f.lerp(h[1],g[1],c),h=f.lerp(h[2],g[2],c),h=f.color.toRGB(r,d,h),c=f.lerp(a,b,c)*la+0.5|0,c<<24&
e.ALPHA_MASK|h[0]<<16&e.RED_MASK|h[1]<<8&e.GREEN_MASK|h[2]&e.BLUE_MASK;d=(a&e.RED_MASK)>>>16;g=(a&e.GREEN_MASK)>>>8;h=a&e.BLUE_MASK;a=((a&e.ALPHA_MASK)>>>24)/la;m=(b&e.RED_MASK)>>>16;n=(b&e.GREEN_MASK)>>>8;r=b&e.BLUE_MASK;b=((b&e.ALPHA_MASK)>>>24)/la;d=f.lerp(d,m,c)+0.5|0;g=f.lerp(g,n,c)+0.5|0;h=f.lerp(h,r,c)+0.5|0;c=f.lerp(a,b,c)*la+0.5|0;return c<<24&e.ALPHA_MASK|d<<16&e.RED_MASK|g<<8&e.GREEN_MASK|h&e.BLUE_MASK};f.colorMode=function(){Xa=arguments[0];1<arguments.length&&(Aa=arguments[1],Ha=arguments[2]||
arguments[1],Ba=arguments[3]||arguments[1],la=arguments[4]||arguments[1])};f.blendColor=function(a,b,c){if(c===e.REPLACE)return f.modes.replace(a,b);if(c===e.BLEND)return f.modes.blend(a,b);if(c===e.ADD)return f.modes.add(a,b);if(c===e.SUBTRACT)return f.modes.subtract(a,b);if(c===e.LIGHTEST)return f.modes.lightest(a,b);if(c===e.DARKEST)return f.modes.darkest(a,b);if(c===e.DIFFERENCE)return f.modes.difference(a,b);if(c===e.EXCLUSION)return f.modes.exclusion(a,b);if(c===e.MULTIPLY)return f.modes.multiply(a,
b);if(c===e.SCREEN)return f.modes.screen(a,b);if(c===e.HARD_LIGHT)return f.modes.hard_light(a,b);if(c===e.SOFT_LIGHT)return f.modes.soft_light(a,b);if(c===e.OVERLAY)return f.modes.overlay(a,b);if(c===e.DODGE)return f.modes.dodge(a,b);if(c===e.BURN)return f.modes.burn(a,b)};f.printMatrix=function(){O.print()};H.prototype.translate=function(a,b){O.translate(a,b);ia.invTranslate(a,b);m.translate(a,b)};G.prototype.translate=function(a,b,c){O.translate(a,b,c);ia.invTranslate(a,b,c)};H.prototype.scale=
function(a,b){O.scale(a,b);ia.invScale(a,b);m.scale(a,b||a)};G.prototype.scale=function(a,b,c){O.scale(a,b,c);ia.invScale(a,b,c)};H.prototype.transform=function(a){a=a.array();m.transform(a[0],a[3],a[1],a[4],a[2],a[5])};G.prototype.transformm=function(a){throw"p.transform is currently not supported in 3D mode";};H.prototype.pushMatrix=function(){Cb.load(O);Db.load(ia);m.save()};G.prototype.pushMatrix=function(){Cb.load(O);Db.load(ia)};H.prototype.popMatrix=function(){O.set(Cb.pop());ia.set(Db.pop());
Ua()};G.prototype.popMatrix=function(){O.set(Cb.pop());ia.set(Db.pop())};H.prototype.resetMatrix=function(){O.reset();ia.reset();m.setTransform(1,0,0,1,0,0)};G.prototype.resetMatrix=function(){O.reset();ia.reset()};$.prototype.applyMatrix=function(){var a=arguments;O.apply(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]);ia.invApply(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15])};H.prototype.applyMatrix=function(){for(var a=
arguments,b=a.length;16>b;b++)a[b]=0;a[10]=a[15]=1;$.prototype.applyMatrix.apply(this,a)};f.rotateX=function(a){O.rotateX(a);ia.invRotateX(a)};H.prototype.rotateZ=function(){throw"rotateZ() is not supported in 2D mode. Use rotate(float) instead.";};G.prototype.rotateZ=function(a){O.rotateZ(a);ia.invRotateZ(a)};f.rotateY=function(a){O.rotateY(a);ia.invRotateY(a)};H.prototype.rotate=function(a){O.rotateZ(a);ia.invRotateZ(a);m.rotate(a)};G.prototype.rotate=function(a){4>arguments.length?f.rotateZ(a):
(O.rotate(a,arguments[1],arguments[2],arguments[3]),ia.rotate(-a,arguments[1],arguments[2],arguments[3]))};H.prototype.shearX=function(a){O.shearX(a);m.transform(1,0,a,1,0,0)};G.prototype.shearX=function(a){O.shearX(a)};H.prototype.shearY=function(a){O.shearY(a);m.transform(1,a,0,1,0,0)};G.prototype.shearY=function(a){O.shearY(a)};f.pushStyle=function(){m.save();f.pushMatrix();fd.push({doFill:V,currentFillColor:Na,doStroke:E,currentStrokeColor:ma,curTint:ib,curRectMode:ua,curColorMode:Xa,colorModeX:Aa,
colorModeZ:Ba,colorModeY:Ha,colorModeA:la,curTextFont:ea,horizontalTextAlignment:pb,verticalTextAlignment:Ya,textMode:jc,curFontName:Bb,curTextSize:Pa,curTextAscent:Za,curTextDescent:Oa,curTextLeading:Da})};f.popStyle=function(){var a=fd.pop();if(a)Ua(),f.popMatrix(),V=a.doFill,Na=a.currentFillColor,E=a.doStroke,ma=a.currentStrokeColor,ib=a.curTint,ua=a.curRectMode,Xa=a.curColorMode,Aa=a.colorModeX,Ba=a.colorModeZ,Ha=a.colorModeY,la=a.colorModeA,ea=a.curTextFont,Bb=a.curFontName,Pa=a.curTextSize,
pb=a.horizontalTextAlignment,Ya=a.verticalTextAlignment,jc=a.textMode,Za=a.curTextAscent,Oa=a.curTextDescent,Da=a.curTextLeading;else throw"Too many popStyle() without enough pushStyle()";};f.year=function(){return(new Date).getFullYear()};f.month=function(){return(new Date).getMonth()+1};f.day=function(){return(new Date).getDate()};f.hour=function(){return(new Date).getHours()};f.minute=function(){return(new Date).getMinutes()};f.second=function(){return(new Date).getSeconds()};f.millis=function(){return Date.now()-
Sc};H.prototype.redraw=function(){eb();m.lineWidth=ha;var a=f.pmouseX,b=f.pmouseY;f.pmouseX=cc;f.pmouseY=dc;m.save();f.draw();Ua();cc=f.mouseX;dc=f.mouseY;f.pmouseX=a;f.pmouseY=b};G.prototype.redraw=function(){eb();var a=f.pmouseX,b=f.pmouseY;f.pmouseX=cc;f.pmouseY=dc;m.clear(m.DEPTH_BUFFER_BIT);Ia={attributes:{},locations:{}};f.noLights();f.lightFalloff(1,0,0);f.shininess(1);f.ambient(255,255,255);f.specular(0,0,0);f.emissive(0,0,0);f.camera();f.draw();cc=f.mouseX;dc=f.mouseY;f.pmouseX=a;f.pmouseY=
b};f.noLoop=function(){gb=Ga=!1;clearInterval(qa);ga.onPause()};f.loop=function(){gb||(vc=Date.now(),fc=0,qa=k.setInterval(function(){try{ga.onFrameStart(),f.redraw(),ga.onFrameEnd()}catch(a){throw k.clearInterval(qa),a;}},Oc),gb=Ga=!0,ga.onLoop())};f.frameRate=function(a){pc=a;Oc=1E3/pc;Ga&&(f.noLoop(),f.loop())};f.exit=function(){k.clearInterval(qa);var a=f.externals.canvas.id;vb.splice(Zb[a],1);delete Zb[a];delete W.onmousedown;for(var b in Q.lib)Q.lib.hasOwnProperty(b)&&Q.lib[b].hasOwnProperty("detach")&&
Q.lib[b].detach(f);for(a=yb.length;a--;){var c=yb[a];b=c.elem;var d=c.type,c=c.fn;b.removeEventListener?b.removeEventListener(d,c,!1):b.detachEvent&&b.detachEvent("on"+d,c)}ga.onExit()};f.cursor=function(){if(1<arguments.length||1===arguments.length&&arguments[0]instanceof f.PImage){var a=arguments[0],b,c;if(3<=arguments.length){if(b=arguments[1],c=arguments[2],0>b||0>c||c>=a.height||b>=a.width)throw"x and y must be non-negative and less than the dimensions of the image";}else b=a.width>>>1,c=a.height>>>
1;a='url("'+a.toDataURL()+'") '+b+" "+c+", default";W.style.cursor=a}else W.style.cursor=1===arguments.length?arguments[0]:sd};f.noCursor=function(){W.style.cursor=e.NOCURSOR};f.link=function(a,b){b!==g?k.open(a,b):k.location=a};f.beginDraw=z;f.endDraw=z;H.prototype.toImageData=function(a,b,c,d){a=a!==g?a:0;b=b!==g?b:0;c=c!==g?c:f.width;d=d!==g?d:f.height;return m.getImageData(a,b,c,d)};G.prototype.toImageData=function(a,b,c,d){a=a!==g?a:0;b=b!==g?b:0;c=c!==g?c:f.width;d=d!==g?d:f.height;var e=q.createElement("canvas").getContext("2d").createImageData(c,
d),h=new w(4*c*d);m.readPixels(a,b,c,d,m.RGBA,m.UNSIGNED_BYTE,h);a=0;b=h.length;for(var y=e.data;a<b;a++)y[a]=h[4*(d-1-Math.floor(a/4/c))*c+a%(4*c)];return e};f.status=function(a){k.status=a};f.binary=function(a,b){var c;if(0<b)c=b;else if(a instanceof Char)c=16,a|=0;else for(c=32;1<c&&!(a>>>c-1&1);)c--;for(var d="";0<c;)d+=a>>>--c&1?"1":"0";return d};f.unbinary=function(a){for(var b=a.length-1,c=1,d=0;0<=b;){var e=a[b--];if("0"!==e&&"1"!==e)throw"the value passed into unbinary was not an 8 bit binary number";
"1"===e&&(d+=c);c<<=1}return d};f.hex=function(a,b){1===arguments.length&&(b=a instanceof Char?4:8);var c=a,d=b,d=d===g||null===d?d=8:d;0>c&&(c=4294967295+c+1);for(c=Number(c).toString(16).toUpperCase();c.length<d;)c="0"+c;c.length>=d&&(c=c.substring(c.length-d,c.length));return c};f.unhex=function(a){if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(Hb(a[c]));return b}return Hb(a)};f.loadStrings=function(a){if(C[a])return C[a].split("\n");a=c(a);if("string"!==typeof a||""===a)return[];
a=a.replace(/(\r\n?)/g,"\n").replace(/\n$/,"");return a.split("\n")};f.saveStrings=function(a,b){C[a]=b.join("\n")};f.loadBytes=function(a){a=c(a);for(var b=[],d=0;d<a.length;d++)b.push(a.charCodeAt(d));return b};f.matchAll=function(a,b){for(var c=[],d,e=RegExp(b,"g");null!==(d=e.exec(a));)c.push(d),0===d[0].length&&++e.lastIndex;return 0<c.length?c:null};f.match=function(a,b){return a.match(b)};f.println=function(){Q.logger.println.apply(Q.logger,arguments)};f.print=function(){Q.logger.print.apply(Q.logger,
arguments)};f.str=function(a){if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(a[c].toString()+"");return b}return a.toString()+""};f.parseBoolean=function(a){if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(fb(a[c]));return b}return fb(a)};f.parseByte=function(a){if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(0-(a[c]&128)|a[c]&127);return b}return 0-(a&128)|a&127};f.parseChar=function(a){if("number"===typeof a)return new Char(String.fromCharCode(a&65535));
if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(new Char(String.fromCharCode(a[c]&65535)));return b}throw"char() may receive only one argument of type int, byte, int[], or byte[].";};f.parseFloat=function(a){if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(Jb(a[c]));return b}return Jb(a)};f.parseInt=function(a,b){if(a instanceof Array){for(var c=[],d=0;d<a.length;d++)"string"!==typeof a[d]||/^\s*[+\-]?\d+\s*$/.test(a[d])?c.push(Kb(a[d],b)):c.push(0);return c}return Kb(a,
b)};f.__int_cast=function(a){return 0|a};f.__instanceof=function(a,b){if("function"!==typeof b)throw"Function is expected as type argument for instanceof operator";if("string"===typeof a)return b===Object||b===String;if(a instanceof b)return!0;if("object"!==typeof a||null===a)return!1;var c=a.constructor;if(b.$isInterface){for(var d=[];c;)c.$interfaces&&(d=d.concat(c.$interfaces)),c=c.$base;for(;0<d.length;){c=d.shift();if(c===b)return!0;c.$interfaces&&(d=d.concat(c.$interfaces))}return!1}for(;c.hasOwnProperty("$base");)if(c=
c.$base,c===b)return!0;return!1};$.prototype.size=function(a,b,c){E&&f.stroke(0);V&&f.fill(255);c={fillStyle:m.fillStyle,strokeStyle:m.strokeStyle,lineCap:m.lineCap,lineJoin:m.lineJoin};0<W.style.length&&(W.style.removeProperty("width"),W.style.removeProperty("height"));W.width=f.width=a||100;W.height=f.height=b||100;for(var d in c)c.hasOwnProperty(d)&&(m[d]=c[d]);f.textFont(ea);f.background();bd=Math.max(1E3,0.05*a*b);f.externals.context=m;for(a=0;a<e.SINCOS_LENGTH;a++)Ic[a]=f.sin(0.5*a*(e.PI/180)),
Jc[a]=f.cos(0.5*a*(e.PI/180))};H.prototype.size=function(a,b,c){m===g&&(m=W.getContext("2d"),Cb=new ab,Db=new ab,O=new $a,ia=new $a);$.prototype.size.apply(this,arguments)};G.prototype.size=function(){var a=!1;return function(b,c,d){if(a)throw"Multiple calls to size() for 3D renders are not allowed.";a=!0;try{W.width=f.width=b||100;W.height=f.height=c||100;for(var e=W,g=["experimental-webgl","webgl","webkit-3d"],h,n=0,r=g.length;n<r&&!(h=e.getContext(g[n],{antialias:!1,preserveDrawingBuffer:!0}));n++);
m=h;Wc=m.createTexture();Xc=m.createTexture()}catch(k){Q.debug(k)}if(!m)throw"WebGL context is not supported on this browser.";m.viewport(0,0,W.width,W.height);m.enable(m.DEPTH_TEST);m.enable(m.BLEND);m.blendFunc(m.SRC_ALPHA,m.ONE_MINUS_SRC_ALPHA);J=Mc(m,"varying vec4 vFrontColor;attribute vec3 aVertex;attribute vec2 aTextureCoord;uniform vec4 uColor;uniform mat4 uModel;uniform mat4 uView;uniform mat4 uProjection;uniform float uPointSize;varying vec2 vTextureCoord;void main(void) { gl_PointSize = uPointSize; vFrontColor = uColor; gl_Position = uProjection * uView * uModel * vec4(aVertex, 1.0); vTextureCoord = aTextureCoord;}",
"#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 vFrontColor;varying vec2 vTextureCoord;uniform sampler2D uSampler;uniform int uIsDrawingText;uniform bool uSmooth;void main(void){ if(uSmooth == true){ float dist = distance(gl_PointCoord, vec2(0.5)); if(dist > 0.5){ discard; } } if(uIsDrawingText == 1){ float alpha = texture2D(uSampler, vTextureCoord).a; gl_FragColor = vec4(vFrontColor.rgb * alpha, alpha); } else{ gl_FragColor = vFrontColor; }}");ra=Mc(m,"varying vec4 vFrontColor;attribute vec3 aVertex;attribute vec4 aColor;uniform mat4 uView;uniform mat4 uProjection;uniform float uPointSize;void main(void) { vFrontColor = aColor; gl_PointSize = uPointSize; gl_Position = uProjection * uView * vec4(aVertex, 1.0);}",
"#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 vFrontColor;uniform bool uSmooth;void main(void){ if(uSmooth == true){ float dist = distance(gl_PointCoord, vec2(0.5)); if(dist > 0.5){ discard; } } gl_FragColor = vFrontColor;}");f.strokeWeight(1);A=Mc(m,xd,"#ifdef GL_ES\nprecision highp float;\n#endif\nvarying vec4 vFrontColor;uniform sampler2D uSampler;uniform bool uUsingTexture;varying vec2 vTexture;void main(void){ if( uUsingTexture ){ gl_FragColor = vec4(texture2D(uSampler, vTexture.xy)) * vFrontColor; } else{ gl_FragColor = vFrontColor; }}");
m.useProgram(A);ba("usingTexture3d",A,"usingTexture",xa);f.lightFalloff(1,0,0);f.shininess(1);f.ambient(255,255,255);f.specular(0,0,0);f.emissive(0,0,0);yc=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,yc);m.bufferData(m.ARRAY_BUFFER,gd,m.STATIC_DRAW);zc=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,zc);m.bufferData(m.ARRAY_BUFFER,vd,m.STATIC_DRAW);Ac=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,Ac);m.bufferData(m.ARRAY_BUFFER,hd,m.STATIC_DRAW);hc=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,hc);m.bufferData(m.ARRAY_BUFFER,
Lc,m.STATIC_DRAW);Bc=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,Bc);m.bufferData(m.ARRAY_BUFFER,wd,m.STATIC_DRAW);Vb=m.createBuffer();Cc=m.createBuffer();Tc=m.createBuffer();Dc=m.createBuffer();Uc=m.createBuffer();Vc=m.createBuffer();ic=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,ic);m.bufferData(m.ARRAY_BUFFER,new N([0,0,0]),m.STATIC_DRAW);Ec=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,Ec);m.bufferData(m.ARRAY_BUFFER,new N([1,1,0,-1,1,0,-1,-1,0,1,-1,0]),m.STATIC_DRAW);Fc=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,
Fc);m.bufferData(m.ARRAY_BUFFER,new N([0,0,1,0,1,1,0,1]),m.STATIC_DRAW);Gc=m.createBuffer();m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,Gc);m.bufferData(m.ELEMENT_ARRAY_BUFFER,new ka([0,1,2,2,3,0]),m.STATIC_DRAW);sb=new K;Ta=new K;O=new K;ia=new K;Ka=new K;f.camera();f.perspective();Cb=new ab;Db=new ab;Ub=new K;gc=new K;zb=new K;Ab=new K;wc=new K;xc=new K;xc.set(-1,3,-3,1,3,-6,3,0,-3,3,0,0,1,0,0,0);$.prototype.size.apply(this,arguments)}}();H.prototype.ambientLight=$.prototype.a3DOnlyFunction;G.prototype.ambientLight=
function(a,b,c,d,f,g){if(R===e.MAX_LIGHTS)throw"can only create "+e.MAX_LIGHTS+" lights";d=new PVector(d,f,g);f=new K;f.scale(1,-1,1);f.apply(O.array());f.mult(d,d);a=wa(a,b,c,0);a=[((a&e.RED_MASK)>>>16)/255,((a&e.GREEN_MASK)>>>8)/255,(a&e.BLUE_MASK)/255];m.useProgram(A);X("uLights.color.3d."+R,A,"uLights"+R+".color",a);X("uLights.position.3d."+R,A,"uLights"+R+".position",d.array());ba("uLights.type.3d."+R,A,"uLights"+R+".type",0);ba("uLightCount3d",A,"uLightCount",++R)};H.prototype.directionalLight=
$.prototype.a3DOnlyFunction;G.prototype.directionalLight=function(a,b,c,d,f,g){if(R===e.MAX_LIGHTS)throw"can only create "+e.MAX_LIGHTS+" lights";m.useProgram(A);var h=new K;h.scale(1,-1,1);h.apply(O.array());h=h.array();d=[h[0]*d+h[4]*f+h[8]*g,h[1]*d+h[5]*f+h[9]*g,h[2]*d+h[6]*f+h[10]*g];a=wa(a,b,c,0);X("uLights.color.3d."+R,A,"uLights"+R+".color",[((a&e.RED_MASK)>>>16)/255,((a&e.GREEN_MASK)>>>8)/255,(a&e.BLUE_MASK)/255]);X("uLights.position.3d."+R,A,"uLights"+R+".position",d);ba("uLights.type.3d."+
R,A,"uLights"+R+".type",1);ba("uLightCount3d",A,"uLightCount",++R)};H.prototype.lightFalloff=$.prototype.a3DOnlyFunction;G.prototype.lightFalloff=function(a,b,c){m.useProgram(A);X("uFalloff3d",A,"uFalloff",[a,b,c])};H.prototype.lightSpecular=$.prototype.a3DOnlyFunction;G.prototype.lightSpecular=function(a,b,c){a=wa(a,b,c,0);a=[((a&e.RED_MASK)>>>16)/255,((a&e.GREEN_MASK)>>>8)/255,(a&e.BLUE_MASK)/255];m.useProgram(A);X("uSpecular3d",A,"uSpecular",a)};f.lights=function(){f.ambientLight(128,128,128);
f.directionalLight(128,128,128,0,0,-1);f.lightFalloff(1,0,0);f.lightSpecular(0,0,0)};H.prototype.pointLight=$.prototype.a3DOnlyFunction;G.prototype.pointLight=function(a,b,c,d,f,g){if(R===e.MAX_LIGHTS)throw"can only create "+e.MAX_LIGHTS+" lights";d=new PVector(d,f,g);f=new K;f.scale(1,-1,1);f.apply(O.array());f.mult(d,d);a=wa(a,b,c,0);a=[((a&e.RED_MASK)>>>16)/255,((a&e.GREEN_MASK)>>>8)/255,(a&e.BLUE_MASK)/255];m.useProgram(A);X("uLights.color.3d."+R,A,"uLights"+R+".color",a);X("uLights.position.3d."+
R,A,"uLights"+R+".position",d.array());ba("uLights.type.3d."+R,A,"uLights"+R+".type",2);ba("uLightCount3d",A,"uLightCount",++R)};H.prototype.noLights=$.prototype.a3DOnlyFunction;G.prototype.noLights=function(){R=0;m.useProgram(A);ba("uLightCount3d",A,"uLightCount",R)};H.prototype.spotLight=$.prototype.a3DOnlyFunction;G.prototype.spotLight=function(a,b,c,d,f,g,h,n,r,k,p){if(R===e.MAX_LIGHTS)throw"can only create "+e.MAX_LIGHTS+" lights";m.useProgram(A);d=new PVector(d,f,g);f=new K;f.scale(1,-1,1);
f.apply(O.array());f.mult(d,d);f=f.array();h=[f[0]*h+f[4]*n+f[8]*r,f[1]*h+f[5]*n+f[9]*r,f[2]*h+f[6]*n+f[10]*r];a=wa(a,b,c,0);X("uLights.color.3d."+R,A,"uLights"+R+".color",[((a&e.RED_MASK)>>>16)/255,((a&e.GREEN_MASK)>>>8)/255,(a&e.BLUE_MASK)/255]);X("uLights.position.3d."+R,A,"uLights"+R+".position",d.array());X("uLights.direction.3d."+R,A,"uLights"+R+".direction",h);X("uLights.concentration.3d."+R,A,"uLights"+R+".concentration",p);X("uLights.angle.3d."+R,A,"uLights"+R+".angle",k);ba("uLights.type.3d."+
R,A,"uLights"+R+".type",3);ba("uLightCount3d",A,"uLightCount",++R)};H.prototype.beginCamera=function(){throw"beginCamera() is not available in 2D mode";};G.prototype.beginCamera=function(){if(lc)throw"You cannot call beginCamera() again before calling endCamera()";lc=!0;O=Ta;ia=sb};H.prototype.endCamera=function(){throw"endCamera() is not available in 2D mode";};G.prototype.endCamera=function(){if(!lc)throw"You cannot call endCamera() before calling beginCamera()";O.set(sb);ia.set(Ta);lc=!1};f.camera=
function(a,b,c,d,e,h,m,n,r){a===g&&(Kc=f.width/2,tb=f.height/2,ub=tb/Math.tan(mc/2),a=Kc,b=tb,c=ub,d=Kc,e=tb,m=h=0,n=1,r=0);d=new PVector(a-d,b-e,c-h);var k=new PVector(m,n,r);d.normalize();r=PVector.cross(k,d);k=PVector.cross(d,r);r.normalize();k.normalize();m=r.x;n=r.y;r=r.z;e=k.x;h=k.y;var k=k.z,p=d.x,q=d.y;d=d.z;sb.set(m,n,r,0,e,h,k,0,p,q,d,0,0,0,0,1);sb.translate(-a,-b,-c);Ta.reset();Ta.invApply(m,n,r,0,e,h,k,0,p,q,d,0,0,0,0,1);Ta.translate(a,b,c);O.set(sb);ia.set(Ta)};f.perspective=function(a,
b,c,d){0===arguments.length&&(tb=W.height/2,ub=tb/Math.tan(mc/2),cd=ub/10,dd=10*ub,ed=f.width/f.height,a=mc,b=ed,c=cd,d=dd);var e,g;e=c*Math.tan(a/2);g=-e;f.frustum(g*b,e*b,g,e,c,d)};H.prototype.frustum=function(){throw"Processing.js: frustum() is not supported in 2D mode";};G.prototype.frustum=function(a,b,c,d,e,f){Ka=new K;Ka.set(2*e/(b-a),0,(b+a)/(b-a),0,0,2*e/(d-c),(d+c)/(d-c),0,0,0,-(f+e)/(f-e),-(2*f*e)/(f-e),0,0,-1,0);a=new K;a.set(Ka);a.transpose();m.useProgram(J);Y("projection2d",J,"uProjection",
!1,a.array());m.useProgram(A);Y("projection3d",A,"uProjection",!1,a.array());m.useProgram(ra);Y("uProjectionUS",ra,"uProjection",!1,a.array())};f.ortho=function(a,b,c,d,e,g){0===arguments.length&&(a=0,b=f.width,c=0,d=f.height,e=-10,g=10);var h=2/(b-a),n=2/(d-c),r=-2/(g-e),k=-(b+a)/(b-a),p=-(d+c)/(d-c),q=-(g+e)/(g-e);Ka=new K;Ka.set(h,0,0,k,0,n,0,p,0,0,r,q,0,0,0,1);h=new K;h.set(Ka);h.transpose();m.useProgram(J);Y("projection2d",J,"uProjection",!1,h.array());m.useProgram(A);Y("projection3d",A,"uProjection",
!1,h.array());m.useProgram(ra);Y("uProjectionUS",ra,"uProjection",!1,h.array())};f.printProjection=function(){Ka.print()};f.printCamera=function(){sb.print()};H.prototype.box=$.prototype.a3DOnlyFunction;G.prototype.box=function(a,b,c){b&&c||(b=c=a);var d=new K;d.scale(a,b,c);a=new K;a.scale(1,-1,1);a.apply(O.array());a.transpose();V&&(m.useProgram(A),Y("model3d",A,"uModel",!1,d.array()),Y("view3d",A,"uView",!1,a.array()),m.enable(m.POLYGON_OFFSET_FILL),m.polygonOffset(1,1),X("color3d",A,"uColor",
oa),0<R?(b=new K,b.set(a),c=new K,c.set(d),b.mult(c),c=new K,c.set(b),c.invert(),c.transpose(),Y("uNormalTransform3d",A,"uNormalTransform",!1,c.array()),ca("aNormal3d",A,"aNormal",3,zc)):va("aNormal3d",A,"aNormal"),ca("aVertex3d",A,"aVertex",3,yc),va("aColor3d",A,"aColor"),va("aTexture3d",A,"aTexture"),m.drawArrays(m.TRIANGLES,0,gd.length/3),m.disable(m.POLYGON_OFFSET_FILL));0<ha&&E&&(m.useProgram(J),Y("uModel2d",J,"uModel",!1,d.array()),Y("uView2d",J,"uView",!1,a.array()),X("uColor2d",J,"uColor",
aa),ba("uIsDrawingText2d",J,"uIsDrawingText",!1),ca("vertex2d",J,"aVertex",3,Ac),va("aTextureCoord2d",J,"aTextureCoord"),m.drawArrays(m.LINES,0,hd.length/3))};f.sphereDetail=function(a,b){var c;1===arguments.length&&(a=b=arguments[0]);3>a&&(a=3);2>b&&(b=2);if(a!==rb||b!==kc){var d=e.SINCOS_LENGTH/a,f=new N(a),g=new N(a);for(c=0;c<a;c++)f[c]=Jc[c*d%e.SINCOS_LENGTH|0],g[c]=Ic[c*d%e.SINCOS_LENGTH|0];c=a*(b-1)+2;d=0;Qa=new N(c);Ra=new N(c);Sa=new N(c);var h=0.5*e.SINCOS_LENGTH/b,n=h;for(c=1;c<b;c++){for(var r=
Ic[n%e.SINCOS_LENGTH|0],k=-Jc[n%e.SINCOS_LENGTH|0],p=0;p<a;p++)Qa[d]=f[p]*r,Ra[d]=k,Sa[d++]=g[p]*r;n+=h}rb=a;kc=b;T=[];for(f=0;f<rb;f++)T.push(0),T.push(-1),T.push(0),T.push(Qa[f]),T.push(Ra[f]),T.push(Sa[f]);T.push(0);T.push(-1);T.push(0);T.push(Qa[0]);T.push(Ra[0]);T.push(Sa[0]);h=0;for(f=2;f<kc;f++){g=c=h;d=h+=rb;for(n=0;n<rb;n++)T.push(Qa[g]),T.push(Ra[g]),T.push(Sa[g++]),T.push(Qa[d]),T.push(Ra[d]),T.push(Sa[d++]);g=c;d=h;T.push(Qa[g]);T.push(Ra[g]);T.push(Sa[g]);T.push(Qa[d]);T.push(Ra[d]);
T.push(Sa[d])}for(f=0;f<rb;f++)d=h+f,T.push(Qa[d]),T.push(Ra[d]),T.push(Sa[d]),T.push(0),T.push(1),T.push(0);T.push(Qa[h]);T.push(Ra[h]);T.push(Sa[h]);T.push(0);T.push(1);T.push(0);m.bindBuffer(m.ARRAY_BUFFER,Vb);m.bufferData(m.ARRAY_BUFFER,new N(T),m.STATIC_DRAW)}};H.prototype.sphere=$.prototype.a3DOnlyFunction;G.prototype.sphere=function(a){(3>rb||2>kc)&&f.sphereDetail(30);var b=new K;b.scale(a,a,a);a=new K;a.scale(1,-1,1);a.apply(O.array());a.transpose();if(V){if(0<R){var c=new K;c.set(a);var d=
new K;d.set(b);c.mult(d);d=new K;d.set(c);d.invert();d.transpose();Y("uNormalTransform3d",A,"uNormalTransform",!1,d.array());ca("aNormal3d",A,"aNormal",3,Vb)}else va("aNormal3d",A,"aNormal");m.useProgram(A);va("aTexture3d",A,"aTexture");Y("uModel3d",A,"uModel",!1,b.array());Y("uView3d",A,"uView",!1,a.array());ca("aVertex3d",A,"aVertex",3,Vb);va("aColor3d",A,"aColor");m.enable(m.POLYGON_OFFSET_FILL);m.polygonOffset(1,1);X("uColor3d",A,"uColor",oa);m.drawArrays(m.TRIANGLE_STRIP,0,T.length/3);m.disable(m.POLYGON_OFFSET_FILL)}0<
ha&&E&&(m.useProgram(J),Y("uModel2d",J,"uModel",!1,b.array()),Y("uView2d",J,"uView",!1,a.array()),ca("aVertex2d",J,"aVertex",3,Vb),va("aTextureCoord2d",J,"aTextureCoord"),X("uColor2d",J,"uColor",aa),ba("uIsDrawingText",J,"uIsDrawingText",!1),m.drawArrays(m.LINE_STRIP,0,T.length/3))};f.modelX=function(a,b,c){var d=O.array(),e=Ta.array(),f=d[0]*a+d[1]*b+d[2]*c+d[3],g=d[4]*a+d[5]*b+d[6]*c+d[7],h=d[8]*a+d[9]*b+d[10]*c+d[11];b=d[12]*a+d[13]*b+d[14]*c+d[15];a=e[0]*f+e[1]*g+e[2]*h+e[3]*b;e=e[12]*f+e[13]*
g+e[14]*h+e[15]*b;return 0!==e?a/e:a};f.modelY=function(a,b,c){var d=O.array(),e=Ta.array(),f=d[0]*a+d[1]*b+d[2]*c+d[3],g=d[4]*a+d[5]*b+d[6]*c+d[7],h=d[8]*a+d[9]*b+d[10]*c+d[11];b=d[12]*a+d[13]*b+d[14]*c+d[15];a=e[4]*f+e[5]*g+e[6]*h+e[7]*b;e=e[12]*f+e[13]*g+e[14]*h+e[15]*b;return 0!==e?a/e:a};f.modelZ=function(a,b,c){var d=O.array(),e=Ta.array(),f=d[0]*a+d[1]*b+d[2]*c+d[3],g=d[4]*a+d[5]*b+d[6]*c+d[7],h=d[8]*a+d[9]*b+d[10]*c+d[11];b=d[12]*a+d[13]*b+d[14]*c+d[15];a=e[8]*f+e[9]*g+e[10]*h+e[11]*b;e=e[12]*
f+e[13]*g+e[14]*h+e[15]*b;return 0!==e?a/e:a};H.prototype.ambient=$.prototype.a3DOnlyFunction;G.prototype.ambient=function(a,b,c){m.useProgram(A);ba("uUsingMat3d",A,"uUsingMat",!0);a=f.color(a,b,c);X("uMaterialAmbient3d",A,"uMaterialAmbient",f.color.toGLArray(a).slice(0,3))};H.prototype.emissive=$.prototype.a3DOnlyFunction;G.prototype.emissive=function(a,b,c){m.useProgram(A);ba("uUsingMat3d",A,"uUsingMat",!0);a=f.color(a,b,c);X("uMaterialEmissive3d",A,"uMaterialEmissive",f.color.toGLArray(a).slice(0,
3))};H.prototype.shininess=$.prototype.a3DOnlyFunction;G.prototype.shininess=function(a){m.useProgram(A);ba("uUsingMat3d",A,"uUsingMat",!0);X("uShininess3d",A,"uShininess",a)};H.prototype.specular=$.prototype.a3DOnlyFunction;G.prototype.specular=function(a,b,c){m.useProgram(A);ba("uUsingMat3d",A,"uUsingMat",!0);a=f.color(a,b,c);X("uMaterialSpecular3d",A,"uMaterialSpecular",f.color.toGLArray(a).slice(0,3))};f.screenX=function(a,b,c){var d=O.array();if(16===d.length){var e=d[0]*a+d[1]*b+d[2]*c+d[3],
g=d[4]*a+d[5]*b+d[6]*c+d[7],h=d[8]*a+d[9]*b+d[10]*c+d[11];b=d[12]*a+d[13]*b+d[14]*c+d[15];c=Ka.array();a=c[0]*e+c[1]*g+c[2]*h+c[3]*b;e=c[12]*e+c[13]*g+c[14]*h+c[15]*b;0!==e&&(a/=e);return f.width*(1+a)/2}return O.multX(a,b)};f.screenY=function(a,b,c){var d=O.array();if(16===d.length){var e=d[0]*a+d[1]*b+d[2]*c+d[3],g=d[4]*a+d[5]*b+d[6]*c+d[7],h=d[8]*a+d[9]*b+d[10]*c+d[11];b=d[12]*a+d[13]*b+d[14]*c+d[15];c=Ka.array();a=c[4]*e+c[5]*g+c[6]*h+c[7]*b;e=c[12]*e+c[13]*g+c[14]*h+c[15]*b;0!==e&&(a/=e);return f.height*
(1+a)/2}return O.multY(a,b)};f.screenZ=function(a,b,c){var d=O.array();if(16!==d.length)return 0;var e=Ka.array(),f=d[0]*a+d[1]*b+d[2]*c+d[3],g=d[4]*a+d[5]*b+d[6]*c+d[7],h=d[8]*a+d[9]*b+d[10]*c+d[11];b=d[12]*a+d[13]*b+d[14]*c+d[15];a=e[8]*f+e[9]*g+e[10]*h+e[11]*b;e=e[12]*f+e[13]*g+e[14]*h+e[15]*b;0!==e&&(a/=e);return(a+1)/2};$.prototype.fill=function(){var a=f.color.apply(this,arguments);a===Na&&V||(V=!0,Na=a)};H.prototype.fill=function(){$.prototype.fill.apply(this,arguments);P=!0};G.prototype.fill=
function(){$.prototype.fill.apply(this,arguments);oa=f.color.toGLArray(Na)};f.noFill=function(){V=!1};$.prototype.stroke=function(){var a=f.color.apply(this,arguments);a===ma&&E||(E=!0,ma=a)};H.prototype.stroke=function(){$.prototype.stroke.apply(this,arguments);cb=!0};G.prototype.stroke=function(){$.prototype.stroke.apply(this,arguments);aa=f.color.toGLArray(ma)};f.noStroke=function(){E=!1};$.prototype.strokeWeight=function(a){ha=a};H.prototype.strokeWeight=function(a){$.prototype.strokeWeight.apply(this,
arguments);m.lineWidth=a};G.prototype.strokeWeight=function(a){$.prototype.strokeWeight.apply(this,arguments);m.useProgram(J);X("pointSize2d",J,"uPointSize",a);m.useProgram(ra);X("pointSizeUnlitShape",ra,"uPointSize",a);m.lineWidth(a)};f.strokeCap=function(a){ja.$ensureContext().lineCap=a};f.strokeJoin=function(a){ja.$ensureContext().lineJoin=a};H.prototype.smooth=function(){na=!0;var a=W.style;a.setProperty("image-rendering","optimizeQuality","important");a.setProperty("-ms-interpolation-mode","bicubic",
"important");m.hasOwnProperty("mozImageSmoothingEnabled")&&(m.mozImageSmoothingEnabled=!0)};G.prototype.smooth=function(){na=!0};H.prototype.noSmooth=function(){na=!1;var a=W.style;a.setProperty("image-rendering","optimizeSpeed","important");a.setProperty("image-rendering","-moz-crisp-edges","important");a.setProperty("image-rendering","-webkit-optimize-contrast","important");a.setProperty("image-rendering","optimize-contrast","important");a.setProperty("-ms-interpolation-mode","nearest-neighbor",
"important");m.hasOwnProperty("mozImageSmoothingEnabled")&&(m.mozImageSmoothingEnabled=!1)};G.prototype.noSmooth=function(){na=!1};H.prototype.point=function(a,b){E&&(na||(a=Math.round(a),b=Math.round(b)),m.fillStyle=f.color.toString(ma),P=!0,1<ha?(m.beginPath(),m.arc(a,b,ha/2,0,e.TWO_PI,!1),m.fill()):m.fillRect(a,b,1,1))};G.prototype.point=function(a,b,c){var d=new K;d.translate(a,b,c||0);d.transpose();a=new K;a.scale(1,-1,1);a.apply(O.array());a.transpose();m.useProgram(J);Y("uModel2d",J,"uModel",
!1,d.array());Y("uView2d",J,"uView",!1,a.array());0<ha&&E&&(X("uColor2d",J,"uColor",aa),ba("uIsDrawingText2d",J,"uIsDrawingText",!1),ba("uSmooth2d",J,"uSmooth",na),ca("aVertex2d",J,"aVertex",3,ic),va("aTextureCoord2d",J,"aTextureCoord"),m.drawArrays(m.POINTS,0,1))};f.beginShape=function(a){da=a;s=[]};H.prototype.vertex=function(a,b,c){var d=[];kb&&(kb=!1);d.isVert=!0;d[0]=a;d[1]=b;d[2]=0;d[3]=0;d[4]=0;d[5]=Na;d[6]=ma;s.push(d);c&&(s[s.length-1].moveTo=c)};G.prototype.vertex=function(a,b,c,d,f){var h=
[];kb&&(kb=!1);h.isVert=!0;f===g&&xa&&(f=d,d=c,c=0);d!==g&&f!==g&&($c===e.IMAGE&&(d/=Yc,f/=Zc),d=1<d?1:d,d=0>d?0:d,f=1<f?1:f,f=0>f?0:f);h[0]=a;h[1]=b;h[2]=c||0;h[3]=d||0;h[4]=f||0;h[5]=oa[0];h[6]=oa[1];h[7]=oa[2];h[8]=oa[3];h[9]=aa[0];h[10]=aa[1];h[11]=aa[2];h[12]=aa[3];h[13]=Ib;h[14]=Gb;h[15]=wb;s.push(h)};var kd=function(a,b){var c=new K;c.scale(1,-1,1);c.apply(O.array());c.transpose();m.useProgram(ra);Y("uViewUS",ra,"uView",!1,c.array());ba("uSmoothUS",ra,"uSmooth",na);ca("aVertexUS",ra,"aVertex",
3,ic);m.bufferData(m.ARRAY_BUFFER,new N(a),m.STREAM_DRAW);ca("aColorUS",ra,"aColor",4,Dc);m.bufferData(m.ARRAY_BUFFER,new N(b),m.STREAM_DRAW);m.drawArrays(m.POINTS,0,a.length/3)},Fa=function(a,b,c){b="LINES"===b?m.LINES:"LINE_LOOP"===b?m.LINE_LOOP:m.LINE_STRIP;var d=new K;d.scale(1,-1,1);d.apply(O.array());d.transpose();m.useProgram(ra);Y("uViewUS",ra,"uView",!1,d.array());ca("aVertexUS",ra,"aVertex",3,Cc);m.bufferData(m.ARRAY_BUFFER,new N(a),m.STREAM_DRAW);ca("aColorUS",ra,"aColor",4,Uc);m.bufferData(m.ARRAY_BUFFER,
new N(c),m.STREAM_DRAW);m.drawArrays(b,0,a.length/3)},bb=function(a,b,c,d){b="TRIANGLES"===b?m.TRIANGLES:"TRIANGLE_FAN"===b?m.TRIANGLE_FAN:m.TRIANGLE_STRIP;var e=new K;e.scale(1,-1,1);e.apply(O.array());e.transpose();m.useProgram(A);Y("model3d",A,"uModel",!1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);Y("view3d",A,"uView",!1,e.array());m.enable(m.POLYGON_OFFSET_FILL);m.polygonOffset(1,1);X("color3d",A,"uColor",[-1,0,0,0]);ca("vertex3d",A,"aVertex",3,Tc);m.bufferData(m.ARRAY_BUFFER,new N(a),m.STREAM_DRAW);
xa&&null!==ib&&uc(c);ca("aColor3d",A,"aColor",4,Dc);m.bufferData(m.ARRAY_BUFFER,new N(c),m.STREAM_DRAW);va("aNormal3d",A,"aNormal");xa&&(ba("uUsingTexture3d",A,"uUsingTexture",xa),ca("aTexture3d",A,"aTexture",2,Vc),m.bufferData(m.ARRAY_BUFFER,new N(d),m.STREAM_DRAW));m.drawArrays(b,0,a.length/3);m.disable(m.POLYGON_OFFSET_FILL)};H.prototype.endShape=function(a){if(0!==s.length){(a=a===e.CLOSE)&&s.push(s[0]);var b=[],c=[],d=[],h=[],n;kb=!0;var y,k,r=s.length;for(y=0;y<r;y++)for(n=s[y],k=0;3>k;k++)b.push(n[k]);
for(y=0;y<r;y++)for(n=s[y],k=5;9>k;k++)c.push(n[k]);for(y=0;y<r;y++)for(n=s[y],k=9;13>k;k++)d.push(n[k]);for(y=0;y<r;y++)n=s[y],h.push(n[3]),h.push(n[4]);if(!Eb||da!==e.POLYGON&&da!==g)if(!Fb||da!==e.POLYGON&&da!==g)if(da===e.POINTS)for(y=0;y<r;y++)n=s[y],E&&f.stroke(n[6]),f.point(n[0],n[1]);else if(da===e.LINES)for(y=0;y+1<r;y+=2)n=s[y],E&&f.stroke(s[y+1][6]),f.line(n[0],n[1],s[y+1][0],s[y+1][1]);else if(da===e.TRIANGLES)for(y=0;y+2<r;y+=3)n=s[y],m.beginPath(),m.moveTo(n[0],n[1]),m.lineTo(s[y+1][0],
s[y+1][1]),m.lineTo(s[y+2][0],s[y+2][1]),m.lineTo(n[0],n[1]),V&&(f.fill(s[y+2][5]),za()),E&&(f.stroke(s[y+2][6]),Ca()),m.closePath();else if(da===e.TRIANGLE_STRIP)for(y=0;y+1<r;y++)n=s[y],m.beginPath(),m.moveTo(s[y+1][0],s[y+1][1]),m.lineTo(n[0],n[1]),E&&f.stroke(s[y+1][6]),V&&f.fill(s[y+1][5]),y+2<r&&(m.lineTo(s[y+2][0],s[y+2][1]),E&&f.stroke(s[y+2][6]),V&&f.fill(s[y+2][5])),Va();else if(da===e.TRIANGLE_FAN){if(2<r)for(m.beginPath(),m.moveTo(s[0][0],s[0][1]),m.lineTo(s[1][0],s[1][1]),m.lineTo(s[2][0],
s[2][1]),V&&(f.fill(s[2][5]),za()),E&&(f.stroke(s[2][6]),Ca()),m.closePath(),y=3;y<r;y++)n=s[y],m.beginPath(),m.moveTo(s[0][0],s[0][1]),m.lineTo(s[y-1][0],s[y-1][1]),m.lineTo(n[0],n[1]),V&&(f.fill(n[5]),za()),E&&(f.stroke(n[6]),Ca()),m.closePath()}else if(da===e.QUADS)for(y=0;y+3<r;y+=4){n=s[y];m.beginPath();m.moveTo(n[0],n[1]);for(k=1;4>k;k++)m.lineTo(s[y+k][0],s[y+k][1]);m.lineTo(n[0],n[1]);V&&(f.fill(s[y+3][5]),za());E&&(f.stroke(s[y+3][6]),Ca());m.closePath()}else if(da===e.QUAD_STRIP){if(3<r)for(y=
0;y+1<r;y+=2)n=s[y],m.beginPath(),y+3<r?(m.moveTo(s[y+2][0],s[y+2][1]),m.lineTo(n[0],n[1]),m.lineTo(s[y+1][0],s[y+1][1]),m.lineTo(s[y+3][0],s[y+3][1]),V&&f.fill(s[y+3][5]),E&&f.stroke(s[y+3][6])):(m.moveTo(n[0],n[1]),m.lineTo(s[y+1][0],s[y+1][1])),Va()}else{m.beginPath();m.moveTo(s[0][0],s[0][1]);for(y=1;y<r;y++)n=s[y],n.isVert&&(n.moveTo?m.moveTo(n[0],n[1]):m.lineTo(n[0],n[1]));Va()}else{m.beginPath();for(y=0;y<r;y++)n=s[y],s[y].isVert?s[y].moveTo?m.moveTo(n[0],n[1]):m.lineTo(n[0],n[1]):m.bezierCurveTo(s[y][0],
s[y][1],s[y][2],s[y][3],s[y][4],s[y][5]);Va()}else if(3<r){b=[];c=1-qc;m.beginPath();m.moveTo(s[1][0],s[1][1]);for(y=1;y+2<r;y++)n=s[y],b[0]=[n[0],n[1]],b[1]=[n[0]+(c*s[y+1][0]-c*s[y-1][0])/6,n[1]+(c*s[y+1][1]-c*s[y-1][1])/6],b[2]=[s[y+1][0]+(c*s[y][0]-c*s[y+2][0])/6,s[y+1][1]+(c*s[y][1]-c*s[y+2][1])/6],b[3]=[s[y+1][0],s[y+1][1]],m.bezierCurveTo(b[1][0],b[1][1],b[2][0],b[2][1],b[3][0],b[3][1]);Va()}Fb=Eb=!1;ya=[];sa=0;a&&s.pop()}};G.prototype.endShape=function(a){if(0!==s.length){var b=a===e.CLOSE;
a=[];var c=[],d=[],f=[],h=[],n;kb=!0;var k,r,p=s.length;for(k=0;k<p;k++)for(n=s[k],r=0;3>r;r++)c.push(n[r]);for(k=0;k<p;k++)for(n=s[k],r=5;9>r;r++)d.push(n[r]);for(k=0;k<p;k++)for(n=s[k],r=9;13>r;r++)f.push(n[r]);for(k=0;k<p;k++)n=s[k],h.push(n[3]),h.push(n[4]);if(b){c.push(s[0][0]);c.push(s[0][1]);c.push(s[0][2]);for(k=5;9>k;k++)d.push(s[0][k]);for(k=9;13>k;k++)f.push(s[0][k]);h.push(s[0][3]);h.push(s[0][4])}if(!Eb||da!==e.POLYGON&&da!==g)if(!Fb||da!==e.POLYGON&&da!==g){if(da===e.POINTS){for(k=0;k<
p;k++)for(n=s[k],r=0;3>r;r++)a.push(n[r]);kd(a,f)}else if(da===e.LINES){for(k=0;k<p;k++)for(n=s[k],r=0;3>r;r++)a.push(n[r]);for(k=0;k<p;k++)for(n=s[k],r=5;9>r;r++)d.push(n[r]);Fa(a,"LINES",f)}else if(da===e.TRIANGLES){if(2<p)for(k=0;k+2<p;k+=3){c=[];h=[];a=[];d=[];f=[];for(r=0;3>r;r++)for(b=0;3>b;b++)a.push(s[k+r][b]),c.push(s[k+r][b]);for(r=0;3>r;r++)for(b=3;5>b;b++)h.push(s[k+r][b]);for(r=0;3>r;r++)for(b=5;9>b;b++)d.push(s[k+r][b]),f.push(s[k+r][b+4]);E&&Fa(a,"LINE_LOOP",f);(V||xa)&&bb(c,"TRIANGLES",
d,h)}}else if(da===e.TRIANGLE_STRIP){if(2<p)for(k=0;k+2<p;k++){a=[];c=[];f=[];d=[];h=[];for(r=0;3>r;r++)for(b=0;3>b;b++)a.push(s[k+r][b]),c.push(s[k+r][b]);for(r=0;3>r;r++)for(b=3;5>b;b++)h.push(s[k+r][b]);for(r=0;3>r;r++)for(b=5;9>b;b++)f.push(s[k+r][b+4]),d.push(s[k+r][b]);(V||xa)&&bb(c,"TRIANGLE_STRIP",d,h);E&&Fa(a,"LINE_LOOP",f)}}else if(da===e.TRIANGLE_FAN){if(2<p){for(k=0;3>k;k++)for(n=s[k],r=0;3>r;r++)a.push(n[r]);for(k=0;3>k;k++)for(n=s[k],r=9;13>r;r++)f.push(n[r]);E&&Fa(a,"LINE_LOOP",f);
for(k=2;k+1<p;k++){a=[];f=[];a.push(s[0][0]);a.push(s[0][1]);a.push(s[0][2]);f.push(s[0][9]);f.push(s[0][10]);f.push(s[0][11]);f.push(s[0][12]);for(r=0;2>r;r++)for(b=0;3>b;b++)a.push(s[k+r][b]);for(r=0;2>r;r++)for(b=9;13>b;b++)f.push(s[k+r][b]);E&&Fa(a,"LINE_STRIP",f)}(V||xa)&&bb(c,"TRIANGLE_FAN",d,h)}}else if(da===e.QUADS)for(k=0;k+3<p;k+=4){a=[];for(r=0;4>r;r++)for(n=s[k+r],b=0;3>b;b++)a.push(n[b]);E&&Fa(a,"LINE_LOOP",f);if(V){c=[];d=[];h=[];for(r=0;3>r;r++)c.push(s[k][r]);for(r=5;9>r;r++)d.push(s[k][r]);
for(r=0;3>r;r++)c.push(s[k+1][r]);for(r=5;9>r;r++)d.push(s[k+1][r]);for(r=0;3>r;r++)c.push(s[k+3][r]);for(r=5;9>r;r++)d.push(s[k+3][r]);for(r=0;3>r;r++)c.push(s[k+2][r]);for(r=5;9>r;r++)d.push(s[k+2][r]);xa&&(h.push(s[k+0][3]),h.push(s[k+0][4]),h.push(s[k+1][3]),h.push(s[k+1][4]),h.push(s[k+3][3]),h.push(s[k+3][4]),h.push(s[k+2][3]),h.push(s[k+2][4]));bb(c,"TRIANGLE_STRIP",d,h)}}else if(da===e.QUAD_STRIP){if(3<p){for(k=0;2>k;k++)for(n=s[k],r=0;3>r;r++)a.push(n[r]);for(k=0;2>k;k++)for(n=s[k],r=9;13>
r;r++)f.push(n[r]);Fa(a,"LINE_STRIP",f);4<p&&0<p%2&&(c.splice(c.length-3),s.pop());for(k=0;k+3<p;k+=2){a=[];f=[];for(r=0;3>r;r++)a.push(s[k+1][r]);for(r=0;3>r;r++)a.push(s[k+3][r]);for(r=0;3>r;r++)a.push(s[k+2][r]);for(r=0;3>r;r++)a.push(s[k+0][r]);for(r=9;13>r;r++)f.push(s[k+1][r]);for(r=9;13>r;r++)f.push(s[k+3][r]);for(r=9;13>r;r++)f.push(s[k+2][r]);for(r=9;13>r;r++)f.push(s[k+0][r]);E&&Fa(a,"LINE_STRIP",f)}(V||xa)&&bb(c,"TRIANGLE_LIST",d,h)}}else if(1===p){for(r=0;3>r;r++)a.push(s[0][r]);for(r=
9;13>r;r++)f.push(s[0][r]);kd(a,f)}else{for(k=0;k<p;k++){n=s[k];for(r=0;3>r;r++)a.push(n[r]);for(r=5;9>r;r++)f.push(n[r])}E&&b?Fa(a,"LINE_LOOP",f):E&&!b&&Fa(a,"LINE_STRIP",f);(V||xa)&&bb(c,"TRIANGLE_FAN",d,h)}xa=!1;m.useProgram(A);ba("usingTexture3d",A,"uUsingTexture",xa)}else a=c,a.splice(a.length-3),f.splice(f.length-4),E&&Fa(a,null,f),V&&bb(c,"TRIANGLES",d);else E&&Fa(c,null,f),V&&bb(c,null,d);Fb=Eb=!1;ya=[];sa=0}};var ld=function(a,b){var c=1/a,d=c*c,e=d*c;b.set(0,0,0,1,e,d,c,0,6*e,2*d,0,0,6*
e,0,0,0)},md=function(){zb||(Ub=new K,zb=new K,Pc=!0);var a=qc;Ub.set((a-1)/2,(a+3)/2,(-3-a)/2,(1-a)/2,1-a,(-5-a)/2,a+2,(a-1)/2,(a-1)/2,0,(1-a)/2,0,0,1,0,0);ld(rc,zb);wc||(gc=new K);gc.set(Ub);gc.preApply(wc);zb.apply(Ub)};H.prototype.bezierVertex=function(){Fb=!0;var a=[];if(kb)throw"vertex() must be used at least once before calling bezierVertex()";for(var b=0;b<arguments.length;b++)a[b]=arguments[b];s.push(a);s[s.length-1].isVert=!1};G.prototype.bezierVertex=function(){Fb=!0;if(kb)throw"vertex() must be used at least once before calling bezierVertex()";
if(9===arguments.length){Ab===g&&(Ab=new K);var a=s.length-1;ld(sc,Ab);Ab.apply(xc);for(var b=Ab.array(),c=s[a][0],d=s[a][1],a=s[a][2],e=b[4]*c+b[5]*arguments[0]+b[6]*arguments[3]+b[7]*arguments[6],h=b[8]*c+b[9]*arguments[0]+b[10]*arguments[3]+b[11]*arguments[6],m=b[12]*c+b[13]*arguments[0]+b[14]*arguments[3]+b[15]*arguments[6],k=b[4]*d+b[5]*arguments[1]+b[6]*arguments[4]+b[7]*arguments[7],n=b[8]*d+b[9]*arguments[1]+b[10]*arguments[4]+b[11]*arguments[7],p=b[12]*d+b[13]*arguments[1]+b[14]*arguments[4]+
b[15]*arguments[7],q=b[4]*a+b[5]*arguments[2]+b[6]*arguments[5]+b[7]*arguments[8],u=b[8]*a+b[9]*arguments[2]+b[10]*arguments[5]+b[11]*arguments[8],b=b[12]*a+b[13]*arguments[2]+b[14]*arguments[5]+b[15]*arguments[8],v=0;v<sc;v++)c+=e,e+=h,h+=m,d+=k,k+=n,n+=p,a+=q,q+=u,u+=b,f.vertex(c,d,a);f.vertex(arguments[6],arguments[7],arguments[8])}};f.texture=function(a){var b=ja.$ensureContext();if(a.__texture)b.bindTexture(b.TEXTURE_2D,a.__texture);else{if("canvas"===a.localName)b.bindTexture(b.TEXTURE_2D,Wc),
b.texImage2D(b.TEXTURE_2D,0,b.RGBA,b.RGBA,b.UNSIGNED_BYTE,a),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.LINEAR),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.LINEAR),b.generateMipmap(b.TEXTURE_2D);else{var c=b.createTexture(),d=q.createElement("canvas"),e=d.getContext("2d"),f;if(a.width&0===a.width-1)d.width=a.width;else{for(f=1;f<a.width;)f*=2;d.width=f}if(a.height&0===a.height-1)d.height=a.height;else{for(f=1;f<a.height;)f*=2;d.height=f}e.drawImage(a.sourceImg,0,0,a.width,a.height,
0,0,d.width,d.height);b.bindTexture(b.TEXTURE_2D,c);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.LINEAR_MIPMAP_LINEAR);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.LINEAR);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE);b.texImage2D(b.TEXTURE_2D,0,b.RGBA,b.RGBA,b.UNSIGNED_BYTE,d);b.generateMipmap(b.TEXTURE_2D);a.__texture=c}Yc=a.width;Zc=a.height}xa=!0;b.useProgram(A);ba("usingTexture3d",A,"uUsingTexture",
xa)};f.textureMode=function(a){$c=a};H.prototype.curveVertex=function(a,b){Eb=!0;f.vertex(a,b)};G.prototype.curveVertex=function(a,b,c){Eb=!0;Pc||md();var d=[];d[0]=a;d[1]=b;d[2]=c;ya.push(d);sa++;if(3<sa){var e=ya[sa-4][0],g=ya[sa-4][1],h=ya[sa-4][2],m=ya[sa-3][0],k=ya[sa-3][1],n=ya[sa-3][2],p=ya[sa-2][0],q=ya[sa-2][1],s=ya[sa-2][2],x=ya[sa-1][0],u=ya[sa-1][1],v=ya[sa-1][2];a=m;b=k;c=n;var w=zb.array(),d=w[4]*e+w[5]*m+w[6]*p+w[7]*x,z=w[8]*e+w[9]*m+w[10]*p+w[11]*x,e=w[12]*e+w[13]*m+w[14]*p+w[15]*
x,m=w[4]*g+w[5]*k+w[6]*q+w[7]*u,p=w[8]*g+w[9]*k+w[10]*q+w[11]*u,g=w[12]*g+w[13]*k+w[14]*q+w[15]*u,k=w[4]*h+w[5]*n+w[6]*s+w[7]*v,q=w[8]*h+w[9]*n+w[10]*s+w[11]*v,h=w[12]*h+w[13]*n+w[14]*s+w[15]*v;f.vertex(a,b,c);for(n=0;n<rc;n++)a+=d,d+=z,z+=e,b+=m,m+=p,p+=g,c+=k,k+=q,q+=h,f.vertex(a,b,c)}};H.prototype.curve=function(a,b,c,d,e,g,h,m){f.beginShape();f.curveVertex(a,b);f.curveVertex(c,d);f.curveVertex(e,g);f.curveVertex(h,m);f.endShape()};G.prototype.curve=function(a,b,c,d,e,h,m,k,n,p,q,s){s!==g?(f.beginShape(),
f.curveVertex(a,b,c),f.curveVertex(d,e,h),f.curveVertex(m,k,n),f.curveVertex(p,q,s)):(f.beginShape(),f.curveVertex(a,b),f.curveVertex(c,d),f.curveVertex(e,h),f.curveVertex(m,k));f.endShape()};f.curveTightness=function(a){qc=a};f.curveDetail=function(a){rc=a;md()};f.rectMode=function(a){ua=a};f.imageMode=function(a){switch(a){case e.CORNER:nc=id;break;case e.CORNERS:nc=yd;break;case e.CENTER:nc=zd;break;default:throw"Invalid imageMode";}};f.ellipseMode=function(a){pa=a};f.arc=function(a,b,c,d,g,h){if(!(0>=
c||h<g)){pa===e.CORNERS?(c-=a,d-=b):pa===e.RADIUS?(a-=c,b-=d,c*=2,d*=2):pa===e.CENTER&&(a-=c/2,b-=d/2);for(;0>g;)g+=e.TWO_PI,h+=e.TWO_PI;h-g>e.TWO_PI&&(g=0,h=e.TWO_PI);var m=c/2,k=d/2;a=function(a,b,c,d,f){return function(g,h,L,n,M){L=0;n=c;M=f+d;g.beginShape();for(h&&g.vertex(a-0.5,b-0.5);n<M;L++,n=L*d+c)g.vertex(a+Math.cos(n)*m|0,b+Math.sin(n)*k|0);g.endShape(h?e.CLOSE:void 0)}}(a+m+0.5,b+k+0.5,g,1/(m+k),h);V&&(b=E,E=!1,a(f,!0),E=b);E&&(b=V,V=!1,a(f),V=b)}};H.prototype.line=function(a,b,c,d){if(E)if(na||
(a=Math.round(a),c=Math.round(c),b=Math.round(b),d=Math.round(d)),a===c&&b===d)f.point(a,b);else{for(var e=g,h=g,k=!0,e=O.array(),n=[1,0,0,0,1,0],r=0;6>r&&k;r++)k=e[r]===n[r];k&&(a===c?(b>d&&(e=b,b=d,d=e),d++,1===ha%2&&m.translate(0.5,0)):b===d&&(a>c&&(e=a,a=c,c=e),c++,1===ha%2&&m.translate(0,0.5)),1===ha&&(h=m.lineCap,m.lineCap="butt"));m.beginPath();m.moveTo(a||0,b||0);m.lineTo(c||0,d||0);Ca();k&&(a===c&&1===ha%2?m.translate(-0.5,0):b===d&&1===ha%2&&m.translate(0,-0.5),1===ha&&(m.lineCap=h))}};
G.prototype.line=function(a,b,c,d,e,h){if(e===g||h===g)h=0,e=d,d=c,c=0;a===d&&b===e&&c===h?f.point(a,b,c):(a=[a,b,c,d,e,h],b=new K,b.scale(1,-1,1),b.apply(O.array()),b.transpose(),0<ha&&E&&(m.useProgram(J),Y("uModel2d",J,"uModel",!1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),Y("uView2d",J,"uView",!1,b.array()),X("uColor2d",J,"uColor",aa),ba("uIsDrawingText",J,"uIsDrawingText",!1),ca("aVertex2d",J,"aVertex",3,Cc),va("aTextureCoord2d",J,"aTextureCoord"),m.bufferData(m.ARRAY_BUFFER,new N(a),m.STREAM_DRAW),m.drawArrays(m.LINES,
0,2)))};H.prototype.bezier=function(){if(8!==arguments.length)throw"You must use 8 parameters for bezier() in 2D mode";f.beginShape();f.vertex(arguments[0],arguments[1]);f.bezierVertex(arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7]);f.endShape()};G.prototype.bezier=function(){if(12!==arguments.length)throw"You must use 12 parameters for bezier() in 3D mode";f.beginShape();f.vertex(arguments[0],arguments[1],arguments[2]);f.bezierVertex(arguments[3],arguments[4],arguments[5],
arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11]);f.endShape()};f.bezierDetail=function(a){sc=a};f.bezierPoint=function(a,b,c,d,e){return(1-e)*(1-e)*(1-e)*a+3*(1-e)*(1-e)*e*b+3*(1-e)*e*e*c+e*e*e*d};f.bezierTangent=function(a,b,c,d,e){return 3*e*e*(-a+3*b-3*c+d)+6*e*(a-2*b+c)+3*(-a+b)};f.curvePoint=function(a,b,c,d,e){return 0.5*(2*b+(-a+c)*e+(2*a-5*b+4*c-d)*e*e+(-a+3*b-3*c+d)*e*e*e)};f.curveTangent=function(a,b,c,d,e){return 0.5*(-a+c+2*(2*a-5*b+4*c-d)*e+3*(-a+3*b-3*
c+d)*e*e)};f.triangle=function(a,b,c,d,g,h){f.beginShape(e.TRIANGLES);f.vertex(a,b,0);f.vertex(c,d,0);f.vertex(g,h,0);f.endShape()};f.quad=function(a,b,c,d,g,h,m,k){f.beginShape(e.QUADS);f.vertex(a,b,0);f.vertex(c,d,0);f.vertex(g,h,0);f.vertex(m,k,0);f.endShape()};H.prototype.rect=function(a,b,c,d,f,h,k,n){if(c||d)if(ua===e.CORNERS?(c-=a,d-=b):ua===e.RADIUS?(c*=2,d*=2,a-=c/2,b-=d/2):ua===e.CENTER&&(a-=c/2,b-=d/2),na||(a=Math.round(a),b=Math.round(b),c=Math.round(c),d=Math.round(d)),f!==g){n===g&&
(n=k=h=f);var r=c/2,p=d/2;if(f>r||f>p)f=Math.min(r,p);if(h>r||h>p)h=Math.min(r,p);if(k>r||k>p)k=Math.min(r,p);if(n>r||n>p)n=Math.min(r,p);V&&!E||m.translate(0.5,0.5);m.beginPath();m.moveTo(a+f,b);m.lineTo(a+c-h,b);m.quadraticCurveTo(a+c,b,a+c,b+h);m.lineTo(a+c,b+d-k);m.quadraticCurveTo(a+c,b+d,a+c-k,b+d);m.lineTo(a+n,b+d);m.quadraticCurveTo(a,b+d,a,b+d-n);m.lineTo(a,b+f);m.quadraticCurveTo(a,b,a+f,b);V&&!E||m.translate(-0.5,-0.5);za();Ca()}else E&&1===ha%2&&m.translate(0.5,0.5),m.beginPath(),m.rect(a,
b,c,d),za(),Ca(),E&&1===ha%2&&m.translate(-0.5,-0.5)};G.prototype.rect=function(a,b,c,d,f,h,k,n){if(f!==g)throw"rect() with rounded corners is not supported in 3D mode";ua===e.CORNERS?(c-=a,d-=b):ua===e.RADIUS?(c*=2,d*=2,a-=c/2,b-=d/2):ua===e.CENTER&&(a-=c/2,b-=d/2);f=new K;f.translate(a,b,0);f.scale(c,d,1);f.transpose();b=new K;b.scale(1,-1,1);b.apply(O.array());b.transpose();0<ha&&E&&(m.useProgram(J),Y("uModel2d",J,"uModel",!1,f.array()),Y("uView2d",J,"uView",!1,b.array()),X("uColor2d",J,"uColor",
aa),ba("uIsDrawingText2d",J,"uIsDrawingText",!1),ca("aVertex2d",J,"aVertex",3,hc),va("aTextureCoord2d",J,"aTextureCoord"),m.drawArrays(m.LINE_LOOP,0,Lc.length/3));V&&(m.useProgram(A),Y("uModel3d",A,"uModel",!1,f.array()),Y("uView3d",A,"uView",!1,b.array()),m.enable(m.POLYGON_OFFSET_FILL),m.polygonOffset(1,1),X("color3d",A,"uColor",oa),0<R?(a=new K,a.set(b),b=new K,b.set(f),a.mult(b),b=new K,b.set(a),b.invert(),b.transpose(),Y("uNormalTransform3d",A,"uNormalTransform",!1,b.array()),ca("aNormal3d",
A,"aNormal",3,Bc)):va("normal3d",A,"aNormal"),ca("vertex3d",A,"aVertex",3,hc),m.drawArrays(m.TRIANGLE_FAN,0,Lc.length/3),m.disable(m.POLYGON_OFFSET_FILL))};H.prototype.ellipse=function(a,b,c,d){a=a||0;b=b||0;if(!(0>=c&&0>=d))if(pa===e.RADIUS?(c*=2,d*=2):pa===e.CORNERS?(c-=a,d-=b,a+=c/2,b+=d/2):pa===e.CORNER&&(a+=c/2,b+=d/2),c===d)m.beginPath(),m.arc(a,b,c/2,0,e.TWO_PI,!1),za(),Ca();else{c/=2;d/=2;var g=0.5522847498307933*c,h=0.5522847498307933*d;f.beginShape();f.vertex(a+c,b);f.bezierVertex(a+c,b-
h,a+g,b-d,a,b-d);f.bezierVertex(a-g,b-d,a-c,b-h,a-c,b);f.bezierVertex(a-c,b+h,a-g,b+d,a,b+d);f.bezierVertex(a+g,b+d,a+c,b+h,a+c,b);f.endShape()}};G.prototype.ellipse=function(a,b,c,d){a=a||0;b=b||0;if(!(0>=c&&0>=d)){pa===e.RADIUS?(c*=2,d*=2):pa===e.CORNERS?(c-=a,d-=b,a+=c/2,b+=d/2):pa===e.CORNER&&(a+=c/2,b+=d/2);c/=2;d/=2;var g=0.5522847498307933*c,h=0.5522847498307933*d;f.beginShape();f.vertex(a+c,b);f.bezierVertex(a+c,b-h,0,a+g,b-d,0,a,b-d,0);f.bezierVertex(a-g,b-d,0,a-c,b-h,0,a-c,b,0);f.bezierVertex(a-
c,b+h,0,a-g,b+d,0,a,b+d,0);f.bezierVertex(a+g,b+d,0,a+c,b+h,0,a+c,b,0);f.endShape();if(V){for(g=d=c=0;g<s.length;g++)c+=s[g][0],d+=s[g][1];c/=s.length;d/=s.length;g=[];a=[];b=[];g[0]=c;g[1]=d;g[2]=0;g[3]=0;g[4]=0;g[5]=oa[0];g[6]=oa[1];g[7]=oa[2];g[8]=oa[3];g[9]=aa[0];g[10]=aa[1];g[11]=aa[2];g[12]=aa[3];g[13]=Ib;g[14]=Gb;g[15]=wb;s.unshift(g);for(g=0;g<s.length;g++){for(c=0;3>c;c++)a.push(s[g][c]);for(c=5;9>c;c++)b.push(s[g][c])}bb(a,"TRIANGLE_FAN",b)}}};f.normal=function(a,b,c){if(3!==arguments.length||
"number"!==typeof a||"number"!==typeof b||"number"!==typeof c)throw"normal() requires three numeric arguments.";Ib=a;Gb=b;wb=c;0!==da&&(lb===e.NORMAL_MODE_AUTO?lb=e.NORMAL_MODE_SHAPE:lb===e.NORMAL_MODE_SHAPE&&(lb=e.NORMAL_MODE_VERTEX))};f.save=function(a,b){return b!==g?k.open(b.toDataURL(),"_blank"):k.open(f.externals.canvas.toDataURL(),"_blank")};var Ad=0;f.saveFrame=function(a){a===g&&(a="screen-####.png");a=a.replace(/#+/,function(a){for(var b=""+Ad++;b.length<a.length;)b="0"+b;return b});f.save(a)};
var Bd=q.createElement("canvas").getContext("2d"),Qc=[g,g,g],Ja=function(a,b,c){this.__isDirty=!1;if(a instanceof U)this.fromHTMLImageData(a);else if(b||c){this.width=a||1;this.height=b||1;a=this.sourceImg=q.createElement("canvas");a.width=this.width;a.height=this.height;this.imageData=a.getContext("2d").createImageData(this.width,this.height);this.format=c===e.ARGB||c===e.ALPHA?c:e.RGB;if(this.format===e.RGB)for(c=3,a=this.imageData.data,b=a.length;c<b;c+=4)a[c]=255;this.__isDirty=!0;this.updatePixels()}else this.height=
this.width=0,this.imageData=Bd.createImageData(1,1),this.format=e.ARGB;this.pixels=Lb(this)};Ja.prototype={__isPImage:!0,updatePixels:function(){var a=this.sourceImg;a&&(a instanceof B&&this.__isDirty)&&a.getContext("2d").putImageData(this.imageData,0,0);this.__isDirty=!1},fromHTMLImageData:function(a){var b=La(a);try{var c=b.context.getImageData(0,0,a.width,a.height);this.fromImageData(c)}catch(d){a.width&&a.height&&(this.isRemote=!0,this.width=a.width,this.height=a.height)}this.sourceImg=a},get:function(a,
b,c,d){if(!arguments.length)return f.get(this);if(2===arguments.length)return f.get(a,b,this);if(4===arguments.length)return f.get(a,b,c,d,this)},set:function(a,b,c){f.set(a,b,c,this);this.__isDirty=!0},blend:function(a,b,c,d,e,g,h,m,k,n){9===arguments.length?f.blend(this,a,b,c,d,e,g,h,m,k,this):10===arguments.length&&f.blend(a,b,c,d,e,g,h,m,k,n,this);delete this.sourceImg},copy:function(a,b,c,d,g,h,m,k,n){8===arguments.length?f.blend(this,a,b,c,d,g,h,m,k,e.REPLACE,this):9===arguments.length&&f.blend(a,
b,c,d,g,h,m,k,n,e.REPLACE,this);delete this.sourceImg},filter:function(a,b){2===arguments.length?f.filter(a,b,this):1===arguments.length&&f.filter(a,null,this);delete this.sourceImg},save:function(a){f.save(a,this)},resize:function(a,b){if(this.isRemote)throw"Image is loaded remotely. Cannot resize.";if(0!==this.width||0!==this.height){0===a&&0!==b?a=Math.floor(this.width/this.height*b):0===b&&0!==a&&(b=Math.floor(this.height/this.width*a));var c=La(this.imageData).canvas,c=La(c,a,b).context.getImageData(0,
0,a,b);this.fromImageData(c)}},mask:function(a){var b=this.toImageData(),c,d;if(a instanceof Ja||a.__isPImage)if(a.width===this.width&&a.height===this.height)for(a=a.toImageData(),c=2,d=4*this.width*this.height;c<d;c+=4)b.data[c+1]=a.data[c];else throw"mask must have the same dimensions as PImage.";else if(a instanceof Array)if(this.width*this.height===a.length)for(c=0,d=a.length;c<d;++c)b.data[4*c+3]=a[c];else throw"mask array must be the same length as PImage pixels array.";this.fromImageData(b)},
loadPixels:z,toImageData:function(){return this.isRemote?this.sourceImg:this.__isDirty?La(this.sourceImg).context.getImageData(0,0,this.width,this.height):this.imageData},toDataURL:function(){if(this.isRemote)throw"Image is loaded remotely. Cannot create dataURI.";return La(this.imageData).canvas.toDataURL()},fromImageData:function(a){var b=a.width,c=a.height,d=q.createElement("canvas"),f=d.getContext("2d");this.width=d.width=b;this.height=d.height=c;f.putImageData(a,0,0);this.format=e.ARGB;this.imageData=
a;this.sourceImg=d}};f.PImage=Ja;f.createImage=function(a,b,c){return new Ja(a,b,c)};f.loadImage=function(a,b,c){if(ga.imageCache.images[a])return b=new Ja(ga.imageCache.images[a]),b.loaded=!0,b;b=new Ja;var d=q.createElement("img");b.sourceImg=d;d.onload=function(a,b,c){return function(){b.fromHTMLImageData(a);b.loaded=!0;c&&c()}}(d,b,c);d.src=a;return b};f.requestImage=f.loadImage;f.get=function(a,b,c,d,g){if(void 0!==g)return Nb(a,b,c,d,g);if(void 0!==d)return Mb(a,b,c,d);if(void 0!==c){if(c.isRemote)throw"Image is loaded remotely. Cannot get x,y.";
a=4*b*c.width+4*a;c=c.imageData.data;return c[a+3]<<24&e.ALPHA_MASK|c[a]<<16&e.RED_MASK|c[a+1]<<8&e.GREEN_MASK|c[a+2]&e.BLUE_MASK}return void 0!==b?(a>=f.width||0>a||0>b||b>=f.height?c=0:Tb?(a=4*((0|a)+f.width*(0|b)),c=f.imageData.data,c=c[a+3]<<24&e.ALPHA_MASK|c[a]<<16&e.RED_MASK|c[a+1]<<8&e.GREEN_MASK|c[a+2]&e.BLUE_MASK):(c=f.toImageData(0|a,0|b,1,1).data,c=c[3]<<24&e.ALPHA_MASK|c[0]<<16&e.RED_MASK|c[1]<<8&e.GREEN_MASK|c[2]&e.BLUE_MASK),c):void 0!==a?Nb(0,0,a.width,a.height,a):Mb(0,0,f.width,f.height)};
f.createGraphics=function(a,b,c){var d=new Q;d.size(a,b,c);d.background(0,0);return d};f.set=function(a,b,c,d){if(3===arguments.length)"number"===typeof c?a<f.width&&(0<=a&&0<=b&&b<f.height)&&(Tb||(f.loadPixels(),null===Hc&&(Rc=m,Hc=new Ob),Tb=!0,m=Hc,ad=0),f.pixels.setPixel((0|a)+f.width*(0|b),c),++ad>bd&&hb()):(c instanceof Ja||c.__isPImage)&&f.image(c,a,b);else if(4===arguments.length){if(d.isRemote)throw"Image is loaded remotely. Cannot set x,y.";var e=f.color.toArray(c),g=4*b*d.width+4*a,h=d.imageData.data;
h[g]=e[0];h[g+1]=e[1];h[g+2]=e[2];h[g+3]=e[3]}};f.imageData={};f.pixels={getLength:function(){return f.imageData.data.length?f.imageData.data.length/4:0},getPixel:function(a){a*=4;var b=f.imageData.data;return b[a+3]<<24&4278190080|b[a+0]<<16&16711680|b[a+1]<<8&65280|b[a+2]&255},setPixel:function(a,b){var c=4*a,d=f.imageData.data;d[c+0]=(b&16711680)>>>16;d[c+1]=(b&65280)>>>8;d[c+2]=b&255;d[c+3]=(b&4278190080)>>>24},toArray:function(){for(var a=[],b=f.imageData.width*f.imageData.height,c=f.imageData.data,
d=0,e=0;d<b;d++,e+=4)a.push(c[e+3]<<24&4278190080|c[e+0]<<16&16711680|c[e+1]<<8&65280|c[e+2]&255);return a},set:function(a){for(var b=0,c=a.length;b<c;b++)this.setPixel(b,a[b])}};f.loadPixels=function(){f.imageData=ja.$ensureContext().getImageData(0,0,f.width,f.height)};f.updatePixels=function(){f.imageData&&ja.$ensureContext().putImageData(f.imageData,0,0)};f.hint=function(a){var b=ja.$ensureContext();a===e.DISABLE_DEPTH_TEST?(b.disable(b.DEPTH_TEST),b.depthMask(!1),b.clear(b.DEPTH_BUFFER_BIT)):
a===e.ENABLE_DEPTH_TEST?(b.enable(b.DEPTH_TEST),b.depthMask(!0)):a===e.ENABLE_OPENGL_2X_SMOOTH||a===e.ENABLE_OPENGL_4X_SMOOTH?na=!0:a===e.DISABLE_OPENGL_2X_SMOOTH&&(na=!1)};var nd=function(a,b,c,d){if(a instanceof Ja||a.__isPImage){if(!a.loaded)throw"Error using image in background(): PImage not loaded.";if(a.width!==f.width||a.height!==f.height)throw"Background image must be the same dimensions as the canvas.";}else a=f.color(a,b,c,d);mb=a};H.prototype.background=function(a,b,c,d){a!==g&&nd(a,b,
c,d);mb instanceof Ja||mb.__isPImage?(m.save(),m.setTransform(1,0,0,1,0,0),f.image(mb,0,0)):(m.save(),m.setTransform(1,0,0,1,0,0),f.alpha(mb)!==la&&m.clearRect(0,0,f.width,f.height),m.fillStyle=f.color.toString(mb),m.fillRect(0,0,f.width,f.height),P=!0);Ua()};G.prototype.background=function(a,b,c,d){0<arguments.length&&nd(a,b,c,d);var e=f.color.toGLArray(mb);m.clearColor(e[0],e[1],e[2],e[3]);m.clear(m.COLOR_BUFFER_BIT|m.DEPTH_BUFFER_BIT)};H.prototype.image=function(a,b,c,d,e){b=Math.round(b);c=Math.round(c);
if(0<a.width){var f=nc(b||0,c||0,d||a.width,e||a.height,4>arguments.length);if(a.sourceImg&&null===ib){var g=a.sourceImg;a.__isDirty&&a.updatePixels();m.drawImage(g,0,0,g.width,g.height,f.x,f.y,f.w,f.h)}else g=a.toImageData(),null!==ib&&(ib(g),a.__isDirty=!0),m.drawImage(La(g).canvas,0,0,a.width,a.height,f.x,f.y,f.w,f.h)}};G.prototype.image=function(a,b,c,d,e){0<a.width&&(b=Math.round(b),c=Math.round(c),d=d||a.width,e=e||a.height,f.beginShape(f.QUADS),f.texture(a),f.vertex(b,c,0,0,0),f.vertex(b,c+
e,0,0,e),f.vertex(b+d,c+e,0,d,e),f.vertex(b+d,c,0,d,0),f.endShape())};f.tint=function(a,b,c,d){a=f.color(a,b,c,d);var e=f.red(a)/Aa,g=f.green(a)/Ha,h=f.blue(a)/Ba,m=f.alpha(a)/la;ib=function(a){var b=a.data;a=4*a.width*a.height;for(var c=0;c<a;)b[c++]*=e,b[c++]*=g,b[c++]*=h,b[c++]*=m};uc=function(a){for(var b=0;b<a.length;)a[b++]=e,a[b++]=g,a[b++]=h,a[b++]=m}};f.noTint=function(){uc=ib=null};f.copy=function(a,b,c,d,h,m,k,n,r){r===g&&(r=n,n=k,k=m,m=h,h=d,d=c,c=b,b=a,a=f);f.blend(a,b,c,d,h,m,k,n,r,
e.REPLACE)};f.blend=function(a,b,c,d,e,h,m,k,n,p,q){if(a.isRemote)throw"Image is loaded remotely. Cannot blend image.";p===g&&(p=n,n=k,k=m,m=h,h=e,e=d,d=c,c=b,b=a,a=f);d=b+d;e=c+e;k=h+k;n=m+n;var s=q||f;q!==g&&p!==g||f.loadPixels();a.loadPixels();a===f&&f.intersect(b,c,d,e,h,m,k,n)?f.blit_resize(f.get(b,c,d-b,e-c),0,0,d-b-1,e-c-1,s.imageData.data,s.width,s.height,h,m,k,n,p):f.blit_resize(a,b,c,d,e,s.imageData.data,s.width,s.height,h,m,k,n,p);q===g&&f.updatePixels()};var od=function(a,b){var c=0,d=
b.pixels.getLength(),e=new u(d),f,g,h,m,k,n,p,q,s,w,v,z;if(a)for(;c<d;)for(f=c,g=c+b.width;c<g;)h=m=b.pixels.getPixel(c),n=c-1,k=c+1,p=c-b.width,q=c+b.width,n<f&&(n=c),k>=g&&(k=c),0>p&&(p=0),q>=d&&(q=c),p=b.pixels.getPixel(p),n=b.pixels.getPixel(n),q=b.pixels.getPixel(q),k=b.pixels.getPixel(k),h=77*(h>>16&255)+151*(h>>8&255)+28*(h&255),w=77*(n>>16&255)+151*(n>>8&255)+28*(n&255),s=77*(k>>16&255)+151*(k>>8&255)+28*(k&255),v=77*(p>>16&255)+151*(p>>8&255)+28*(p&255),z=77*(q>>16&255)+151*(q>>8&255)+28*
(q&255),w<h&&(m=n,h=w),s<h&&(m=k,h=s),v<h&&(m=p,h=v),z<h&&(m=q),e[c++]=m;else for(;c<d;)for(f=c,g=c+b.width;c<g;)h=m=b.pixels.getPixel(c),n=c-1,k=c+1,p=c-b.width,q=c+b.width,n<f&&(n=c),k>=g&&(k=c),0>p&&(p=0),q>=d&&(q=c),p=b.pixels.getPixel(p),n=b.pixels.getPixel(n),q=b.pixels.getPixel(q),k=b.pixels.getPixel(k),h=77*(h>>16&255)+151*(h>>8&255)+28*(h&255),w=77*(n>>16&255)+151*(n>>8&255)+28*(n&255),s=77*(k>>16&255)+151*(k>>8&255)+28*(k&255),v=77*(p>>16&255)+151*(p>>8&255)+28*(p&255),z=77*(q>>16&255)+
151*(q>>8&255)+28*(q&255),w>h&&(m=n,h=w),s>h&&(m=k,h=s),v>h&&(m=p,h=v),z>h&&(m=q),e[c++]=m;b.pixels.set(e)};f.filter=function(a,b,c){var d,h,m,k;3===arguments.length?(c.loadPixels(),d=c):(f.loadPixels(),d=f);b===g&&(b=null);if(d.isRemote)throw"Image is loaded remotely. Cannot filter image.";var n=d.pixels.getLength();switch(a){case e.BLUR:var p=b||1,q=d,s,u,w,x,v,z,A,B,E;m=q.pixels.getLength();k=new N(m);n=new N(m);h=new N(m);m=new N(m);var C=0,F,I,H,p=f.floor(3.5*p),D,p=1>p?1:248>p?p:248;if(f.shared.blurRadius!==
p){f.shared.blurRadius=p;f.shared.blurKernelSize=1+(f.shared.blurRadius<<1);f.shared.blurKernel=new N(f.shared.blurKernelSize);var G=f.shared.blurKernel,K=f.shared.blurKernelSize;for(D=0;D<K;D++)G[D]=0;K=(p-1)*(p-1);for(D=1;D<p;D++)G[p+D]=G[p-D]=K;G[p]=p*p}p=q.height;D=q.width;G=f.shared.blurKernelSize;B=f.shared.blurRadius;var K=f.shared.blurKernel,J=q.imageData.data;for(I=0;I<p;I++){for(F=0;F<D;F++){w=u=s=x=q=0;z=F-B;if(0>z)v=-z,z=0;else{if(z>=D)break;v=0}for(H=v;H<G&&!(z>=D);H++)A=4*(z+C),v=K[H],
x+=v*J[A+3],s+=v*J[A],u+=v*J[A+1],w+=v*J[A+2],q+=v,z++;A=C+F;m[A]=x/q;k[A]=s/q;n[A]=u/q;h[A]=w/q}C+=D}C=0;B=-B;E=B*D;for(I=0;I<p;I++){for(F=0;F<D;F++){w=u=s=x=q=0;if(0>B)v=A=-B,z=F;else{if(B>=p)break;v=0;A=B;z=F+E}for(H=v;H<G&&!(A>=p);H++)v=K[H],x+=v*m[z],s+=v*k[z],u+=v*n[z],w+=v*h[z],q+=v,A++,z+=D;A=4*(F+C);J[A]=s/q;J[A+1]=u/q;J[A+2]=w/q;J[A+3]=x/q}C+=D;E+=D;B++}break;case e.GRAY:if(d.format===e.ALPHA){for(k=0;k<n;k++)h=255-d.pixels.getPixel(k),d.pixels.setPixel(k,4278190080|h<<16|h<<8|h);d.format=
e.RGB}else for(k=0;k<n;k++)h=d.pixels.getPixel(k),m=77*(h>>16&255)+151*(h>>8&255)+28*(h&255)>>8,d.pixels.setPixel(k,h&e.ALPHA_MASK|m<<16|m<<8|m);break;case e.INVERT:for(k=0;k<n;k++)d.pixels.setPixel(k,d.pixels.getPixel(k)^16777215);break;case e.POSTERIZE:if(null===b)throw"Use filter(POSTERIZE, int levels) instead of filter(POSTERIZE)";h=f.floor(b);if(2>h||255<h)throw"Levels must be between 2 and 255 for filter(POSTERIZE, levels)";m=h-1;for(k=0;k<n;k++)C=d.pixels.getPixel(k)>>16&255,p=d.pixels.getPixel(k)>>
8&255,D=d.pixels.getPixel(k)&255,C=255*(C*h>>8)/m,p=255*(p*h>>8)/m,D=255*(D*h>>8)/m,d.pixels.setPixel(k,4278190080&d.pixels.getPixel(k)|C<<16|p<<8|D);break;case e.OPAQUE:for(k=0;k<n;k++)d.pixels.setPixel(k,d.pixels.getPixel(k)|4278190080);d.format=e.RGB;break;case e.THRESHOLD:null===b&&(b=0.5);if(0>b||1<b)throw"Level must be between 0 and 1 for filter(THRESHOLD, level)";h=f.floor(255*b);for(k=0;k<n;k++)m=f.max((d.pixels.getPixel(k)&e.RED_MASK)>>16,f.max((d.pixels.getPixel(k)&e.GREEN_MASK)>>8,d.pixels.getPixel(k)&
e.BLUE_MASK)),d.pixels.setPixel(k,d.pixels.getPixel(k)&e.ALPHA_MASK|(m<h?0:16777215));break;case e.ERODE:od(!0,d);break;case e.DILATE:od(!1,d)}d.updatePixels()};f.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};f.intersect=function(a,b,c,d,e,f,g,h){c=c-a+1;d=d-b+1;g=g-e+1;h=h-f+1;e<a?(g+=e-a,g>c&&(g=c)):(a=c+a-e,g>a&&
(g=a));f<b?(h+=f-b,h>d&&(h=d)):(b=d+b-f,h>b&&(h=b));return!(0>=g||0>=h)};var ta={};ta[e.BLEND]=f.modes.blend;ta[e.ADD]=f.modes.add;ta[e.SUBTRACT]=f.modes.subtract;ta[e.LIGHTEST]=f.modes.lightest;ta[e.DARKEST]=f.modes.darkest;ta[e.REPLACE]=f.modes.replace;ta[e.DIFFERENCE]=f.modes.difference;ta[e.EXCLUSION]=f.modes.exclusion;ta[e.MULTIPLY]=f.modes.multiply;ta[e.SCREEN]=f.modes.screen;ta[e.OVERLAY]=f.modes.overlay;ta[e.HARD_LIGHT]=f.modes.hard_light;ta[e.SOFT_LIGHT]=f.modes.soft_light;ta[e.DODGE]=f.modes.dodge;
ta[e.BURN]=f.modes.burn;f.blit_resize=function(a,b,c,d,g,h,m,k,n,p,q,s,u){0>b&&(b=0);0>c&&(c=0);d>=a.width&&(d=a.width-1);g>=a.height&&(g=a.height-1);d-=b;g-=c;q-=n;s-=p;if(!(0>=q||0>=s||0>=d||0>=g||n>=m||p>=k||b>=a.width||c>=a.height)){d=Math.floor(d/q*e.PRECISIONF);g=Math.floor(g/s*e.PRECISIONF);var x=f.shared;x.srcXOffset=Math.floor(0>n?-n*d:b*e.PRECISIONF);x.srcYOffset=Math.floor(0>p?-p*g:c*e.PRECISIONF);0>n&&(q+=n,n=0);0>p&&(s+=p,p=0);q=Math.min(q,m-n);s=Math.min(s,k-p);b=p*m+n;var w;x.srcBuffer=
a.imageData.data;x.iw=a.width;x.iw1=a.width-1;x.ih1=a.height-1;c=ta[u];var v,z,A,B;n=e.ALPHA_MASK;p=e.RED_MASK;var C=e.GREEN_MASK,D=e.BLUE_MASK,F=e.PREC_MAXVAL,E=e.PRECISIONB,H=e.PREC_RED_SHIFT,I=e.PREC_ALPHA_SHIFT,G=x.srcBuffer,J=Math.min;for(u=0;u<s;u++){x.sX=x.srcXOffset;x.fracV=x.srcYOffset&F;x.ifV=F-x.fracV;x.v1=(x.srcYOffset>>E)*x.iw;x.v2=J((x.srcYOffset>>E)+1,x.ih1)*x.iw;for(a=0;a<q;a++)k=4*(b+a),w=h[k+3]<<24&n|h[k]<<16&p|h[k+1]<<8&C|h[k+2]&D,x.fracU=x.sX&F,x.ifU=F-x.fracU,x.ul=x.ifU*x.ifV>>
E,x.ll=x.ifU*x.fracV>>E,x.ur=x.fracU*x.ifV>>E,x.lr=x.fracU*x.fracV>>E,x.u1=x.sX>>E,x.u2=J(x.u1+1,x.iw1),v=4*(x.v1+x.u1),z=4*(x.v1+x.u2),A=4*(x.v2+x.u1),B=4*(x.v2+x.u2),x.cUL=G[v+3]<<24&n|G[v]<<16&p|G[v+1]<<8&C|G[v+2]&D,x.cUR=G[z+3]<<24&n|G[z]<<16&p|G[z+1]<<8&C|G[z+2]&D,x.cLL=G[A+3]<<24&n|G[A]<<16&p|G[A+1]<<8&C|G[A+2]&D,x.cLR=G[B+3]<<24&n|G[B]<<16&p|G[B+1]<<8&C|G[B+2]&D,x.r=x.ul*((x.cUL&p)>>16)+x.ll*((x.cLL&p)>>16)+x.ur*((x.cUR&p)>>16)+x.lr*((x.cLR&p)>>16)<<H&p,x.g=x.ul*(x.cUL&C)+x.ll*(x.cLL&C)+x.ur*
(x.cUR&C)+x.lr*(x.cLR&C)>>>E&C,x.b=x.ul*(x.cUL&D)+x.ll*(x.cLL&D)+x.ur*(x.cUR&D)+x.lr*(x.cLR&D)>>>E,x.a=x.ul*((x.cUL&n)>>>24)+x.ll*((x.cLL&n)>>>24)+x.ur*((x.cUR&n)>>>24)+x.lr*((x.cLR&n)>>>24)<<I&n,w=c(w,x.a|x.r|x.g|x.b),h[k]=(w&p)>>>16,h[k+1]=(w&C)>>>8,h[k+2]=w&D,h[k+3]=(w&n)>>>24,x.sX+=d;b+=m;x.srcYOffset+=g}}};f.loadFont=function(a,b){if(a===g)throw"font name required in loadFont.";if(-1===a.indexOf(".svg"))return b===g&&(b=ea.size),PFont.get(a,b);var c=f.loadGlyphs(a);return{name:a,css:"12px sans-serif",
glyph:!0,units_per_em:c.units_per_em,horiz_adv_x:1/c.units_per_em*c.horiz_adv_x,ascent:c.ascent,descent:c.descent,width:function(b){for(var c=0,d=b.length,e=0;e<d;e++)try{c+=parseFloat(f.glyphLook(f.glyphTable[a],b[e]).horiz_adv_x)}catch(g){Q.debug(g)}return c/f.glyphTable[a].units_per_em}}};f.createFont=function(a,b){return f.loadFont(a,b)};f.textFont=function(a,b){b!==g&&(a.glyph||(a=PFont.get(a.name,b)),Pa=b);ea=a;Bb=ea.name;Za=ea.ascent;Oa=ea.descent;Da=ea.leading;ja.$ensureContext().font=ea.css};
f.textSize=function(a){ea=PFont.get(Bb,a);Pa=a;Za=ea.ascent;Oa=ea.descent;Da=ea.leading;ja.$ensureContext().font=ea.css};f.textAscent=function(){return Za};f.textDescent=function(){return Oa};f.textLeading=function(a){Da=a};f.textAlign=function(a,b){pb=a;Ya=b||e.BASELINE};H.prototype.textWidth=function(a){a=Wa(a).split(/\r?\n/g);var b=0,c,d=a.length;m.font=ea.css;for(c=0;c<d;++c)b=Math.max(b,ea.measureTextWidth(a[c]));return b|0};G.prototype.textWidth=function(a){a=Wa(a).split(/\r?\n/g);var b=0,c,
d=a.length;Ea===g&&(Ea=q.createElement("canvas"));var e=Ea.getContext("2d");e.font=ea.css;for(c=0;c<d;++c)b=Math.max(b,e.measureText(a[c]).width);return b|0};f.glyphLook=function(a,b){try{switch(b){case "1":return a.one;case "2":return a.two;case "3":return a.three;case "4":return a.four;case "5":return a.five;case "6":return a.six;case "7":return a.seven;case "8":return a.eight;case "9":return a.nine;case "0":return a.zero;case " ":return a.space;case "$":return a.dollar;case "!":return a.exclam;
case '"':return a.quotedbl;case "#":return a.numbersign;case "%":return a.percent;case "&":return a.ampersand;case "'":return a.quotesingle;case "(":return a.parenleft;case ")":return a.parenright;case "*":return a.asterisk;case "+":return a.plus;case ",":return a.comma;case "-":return a.hyphen;case ".":return a.period;case "/":return a.slash;case "_":return a.underscore;case ":":return a.colon;case ";":return a.semicolon;case "<":return a.less;case "=":return a.equal;case ">":return a.greater;case "?":return a.question;
case "@":return a.at;case "[":return a.bracketleft;case "\\":return a.backslash;case "]":return a.bracketright;case "^":return a.asciicircum;case "`":return a.grave;case "{":return a.braceleft;case "|":return a.bar;case "}":return a.braceright;case "~":return a.asciitilde;default:return a[b]}}catch(c){Q.debug(c)}};H.prototype.text$line=function(a,b,c,d,g){d=d=0;if(ea.glyph){d=f.glyphTable[Bb];m.save();m.translate(b,c+Pa);g!==e.RIGHT&&g!==e.CENTER||d.width(a);b=1/d.units_per_em*Pa;m.scale(b,b);b=0;
for(c=a.length;b<c;b++)try{f.glyphLook(d,a[b]).draw()}catch(h){Q.debug(h)}Ua()}else if(a&&"fillText"in m){P&&(m.fillStyle=f.color.toString(Na),P=!1);if(g===e.RIGHT||g===e.CENTER)d=ea.measureTextWidth(a),d=g===e.RIGHT?-d:-d/2;m.fillText(a,b+d,c)}};G.prototype.text$line=function(a,b,c,d,f){Ea===g&&(Ea=q.createElement("canvas"));var h=m;m=Ea.getContext("2d");m.font=ea.css;var k=ea.measureTextWidth(a);Ea.width=k;Ea.height=Pa;m=Ea.getContext("2d");m.font=ea.css;m.textBaseline="top";H.prototype.text$line(a,
0,0,0,e.LEFT);a=Ea.width/Ea.height;m=h;m.bindTexture(m.TEXTURE_2D,Xc);m.texImage2D(m.TEXTURE_2D,0,m.RGBA,m.RGBA,m.UNSIGNED_BYTE,Ea);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.LINEAR);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.LINEAR);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE);m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE);h=0;f===e.RIGHT?h=-k:f===e.CENTER&&(h=-k/2);f=new K;k=0.5*Pa;f.translate(b+h-k/2,c-k,d);f.scale(-a*k,-k,k);f.translate(-1,-1,
-1);f.transpose();b=new K;b.scale(1,-1,1);b.apply(O.array());b.transpose();m.useProgram(J);ca("aVertex2d",J,"aVertex",3,Ec);ca("aTextureCoord2d",J,"aTextureCoord",2,Fc);ba("uSampler2d",J,"uSampler",[0]);ba("uIsDrawingText2d",J,"uIsDrawingText",!0);Y("uModel2d",J,"uModel",!1,f.array());Y("uView2d",J,"uView",!1,b.array());X("uColor2d",J,"uColor",oa);m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,Gc);m.drawElements(m.TRIANGLES,6,m.UNSIGNED_SHORT,0)};f.text=function(){jc!==e.SHAPE&&(3===arguments.length?Pb(Wa(arguments[0]),
arguments[1],arguments[2],0):4===arguments.length?Pb(Wa(arguments[0]),arguments[1],arguments[2],arguments[3]):5===arguments.length?ac(Wa(arguments[0]),arguments[1],arguments[2],arguments[3],arguments[4],0):6===arguments.length&&ac(Wa(arguments[0]),arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]))};f.textMode=function(a){jc=a};f.loadGlyphs=function(a){var b,c,d,e,h,n,p,r,s,u,w,v,x=function(a,b){var c=0,d=[],e,f=RegExp(a,"g");for(e=d[c]=f.exec(b);e;)c++,e=d[c]=f.exec(b);return d},z=
function(a){var f=x("[A-Za-z][0-9\\- ]+|Z",a);v="return {draw:function(){var curContext=beforePathDraw();curContext.beginPath();";r=a=n=h=e=d=c=b=0;s="";u=f.length-1;for(var g=0;g<u;g++){var k=f[g][0];a=x("[0-9\\-]+",k);switch(k[0]){case "M":b=parseFloat(a[0][0]);c=parseFloat(a[1][0]);v+="curContext.moveTo("+b+","+-c+");";break;case "L":b=parseFloat(a[0][0]);c=parseFloat(a[1][0]);v+="curContext.lineTo("+b+","+-c+");";break;case "H":b=parseFloat(a[0][0]);v+="curContext.lineTo("+b+","+-c+");";break;
case "V":c=parseFloat(a[0][0]);v+="curContext.lineTo("+b+","+-c+");";break;case "T":h=parseFloat(a[0][0]);n=parseFloat(a[1][0]);"Q"===s||"T"===s?(a=Math.sqrt(Math.pow(b-d,2)+Math.pow(e-c,2)),r=Math.PI+Math.atan2(d-b,e-c),d=b+Math.sin(r)*a,e=c+Math.cos(r)*a):(d=b,e=c);v+="curContext.quadraticCurveTo("+d+","+-e+","+h+","+-n+");";b=h;c=n;break;case "Q":d=parseFloat(a[0][0]);e=parseFloat(a[1][0]);h=parseFloat(a[2][0]);n=parseFloat(a[3][0]);v+="curContext.quadraticCurveTo("+d+","+-e+","+h+","+-n+");";
b=h;c=n;break;case "Z":v+="curContext.closePath();"}s=k[0]}v+="afterPathDraw();";v+="curContext.translate("+w+",0);";v+="}}";return(new Function("beforePathDraw","afterPathDraw",v))(function(){m.save();return ja.$ensureContext()},function(){za();Ca();Ua()})},A=function(b){var c=b.getElementsByTagName("font");f.glyphTable[a].horiz_adv_x=c[0].getAttribute("horiz-adv-x");c=b.getElementsByTagName("font-face")[0];f.glyphTable[a].units_per_em=parseFloat(c.getAttribute("units-per-em"));f.glyphTable[a].ascent=
parseFloat(c.getAttribute("ascent"));f.glyphTable[a].descent=parseFloat(c.getAttribute("descent"));b=b.getElementsByTagName("glyph");for(var c=b.length,d=0;d<c;d++){var e=b[d].getAttribute("unicode"),h=b[d].getAttribute("glyph-name");w=b[d].getAttribute("horiz-adv-x");null===w&&(w=f.glyphTable[a].horiz_adv_x);p=b[d].getAttribute("d");p!==g&&(v=z(p),f.glyphTable[a][h]={name:h,unicode:e,horiz_adv_x:w,draw:v.draw})}};f.glyphTable[a]={};(function(){var b;try{b=q.implementation.createDocument("","",null)}catch(c){Q.debug(c.message);
return}try{b.async=!1,b.load(a),A(b.getElementsByTagName("svg")[0])}catch(d){Q.debug(d);try{var e=new k.XMLHttpRequest;e.open("GET",a,!1);e.send(null);A(e.responseXML.documentElement)}catch(f){Q.debug(d)}}})(a);return f.glyphTable[a]};f.param=function(a){var b="data-processing-"+a;if(W.hasAttribute(b))return W.getAttribute(b);for(var b=0,c=W.childNodes.length;b<c;++b){var d=W.childNodes.item(b);if(1===d.nodeType&&"param"===d.tagName.toLowerCase()&&d.getAttribute("name")===a)return d.getAttribute("value")}return ga.params.hasOwnProperty(a)?
ga.params[a]:null};I.prototype.translate=D("translate");I.prototype.transform=D("transform");I.prototype.scale=D("scale");I.prototype.pushMatrix=D("pushMatrix");I.prototype.popMatrix=D("popMatrix");I.prototype.resetMatrix=D("resetMatrix");I.prototype.applyMatrix=D("applyMatrix");I.prototype.rotate=D("rotate");I.prototype.rotateZ=D("rotateZ");I.prototype.shearX=D("shearX");I.prototype.shearY=D("shearY");I.prototype.redraw=D("redraw");I.prototype.toImageData=D("toImageData");I.prototype.ambientLight=
D("ambientLight");I.prototype.directionalLight=D("directionalLight");I.prototype.lightFalloff=D("lightFalloff");I.prototype.lightSpecular=D("lightSpecular");I.prototype.pointLight=D("pointLight");I.prototype.noLights=D("noLights");I.prototype.spotLight=D("spotLight");I.prototype.beginCamera=D("beginCamera");I.prototype.endCamera=D("endCamera");I.prototype.frustum=D("frustum");I.prototype.box=D("box");I.prototype.sphere=D("sphere");I.prototype.ambient=D("ambient");I.prototype.emissive=D("emissive");
I.prototype.shininess=D("shininess");I.prototype.specular=D("specular");I.prototype.fill=D("fill");I.prototype.stroke=D("stroke");I.prototype.strokeWeight=D("strokeWeight");I.prototype.smooth=D("smooth");I.prototype.noSmooth=D("noSmooth");I.prototype.point=D("point");I.prototype.vertex=D("vertex");I.prototype.endShape=D("endShape");I.prototype.bezierVertex=D("bezierVertex");I.prototype.curveVertex=D("curveVertex");I.prototype.curve=D("curve");I.prototype.line=D("line");I.prototype.bezier=D("bezier");
I.prototype.rect=D("rect");I.prototype.ellipse=D("ellipse");I.prototype.background=D("background");I.prototype.image=D("image");I.prototype.textWidth=D("textWidth");I.prototype.text$line=D("text$line");I.prototype.$ensureContext=D("$ensureContext");I.prototype.$newPMatrix=D("$newPMatrix");I.prototype.size=function(a,b,c){Ma(c===e.WEBGL?"3D":"2D");f.size(a,b,c)};I.prototype.$init=z;H.prototype.$init=function(){f.size(f.width,f.height);m.lineCap="round";f.noSmooth();f.disableContextMenu()};G.prototype.$init=
function(){f.use3DContext=!0;f.disableContextMenu()};$.prototype.$ensureContext=function(){return m};W.getAttribute("tabindex")||W.setAttribute("tabindex",0);if(Sb)ga=new Q.Sketch,Ma(),f.size=function(a,b,c){c&&c===e.WEBGL?Ma("3D"):Ma("2D");f.size(a,b,c)};else{ga=h instanceof Q.Sketch?h:"function"===typeof h?new Q.Sketch(h):h?Q.compile(h):new Q.Sketch(function(){});f.externals.sketch=ga;Ma();W.onfocus=function(){f.focused=!0};W.onblur=function(){f.focused=!1;ga.options.globalKeyEvents||(f.__keyPressed=
!1,jb=[],qb=null)};ga.options.pauseOnBlur&&(F(k,"focus",function(){Ga&&f.loop()}),F(k,"blur",function(){Ga&&gb&&(f.noLoop(),Ga=!0);f.__keyPressed=!1;jb=[];qb=null}));var Nc=ga.options.globalKeyEvents?k:W;F(Nc,"keydown",tc);F(Nc,"keypress",Rb);F(Nc,"keyup",bc);for(var Yb in Q.lib)Q.lib.hasOwnProperty(Yb)&&(Q.lib[Yb].hasOwnProperty("attach")?Q.lib[Yb].attach(f):Q.lib[Yb]instanceof Function&&Q.lib[Yb].call(this));var pd=function(a){if(ga.imageCache.pending||PFont.preloading.pending(100))k.setTimeout(function(){pd(a)},
100);else{if(k.opera){var b,c,d=ga.imageCache.operaCache;for(b in d)d.hasOwnProperty(b)&&(c=d[b],null!==c&&q.body.removeChild(c),delete d[b])}ga.attach(a,p);ga.onLoad(a);a.setup&&(a.setup(),a.resetMatrix(),ga.onSetup());hb();a.draw&&(Ga?a.loop():a.redraw())}};this.externals.canvas.id!==g&&this.externals.canvas.id.length||(this.externals.canvas.id="__processing"+vb.length);Zb[this.externals.canvas.id]=vb.length;vb.push(this);pd(f)}};Q.debug=function(){return"console"in k?function(a){k.console.log("Processing.js: "+
a)}:z}();Q.prototype=p;Q.instances=vb;Q.getInstanceById=function(a){return vb[Zb[a]]};(function(a){function b(a){return function(){throw"Processing.js does not support "+a+".";}}for(var c="open() createOutput() createInput() BufferedReader selectFolder() dataPath() createWriter() selectOutput() beginRecord() saveStream() endRecord() selectInput() saveBytes() createReader() beginRaw() endRaw() PrintWriter delay()".split(" "),d=c.length,e,g;d--;)e=c[d],g=e.replace("()",""),a[g]=b(e)})(p);return Q}},
{}],28:[function(B,z,U){var h={virtEquals:B("./Helpers/virtEquals"),virtHashCode:B("./Helpers/virtHashCode"),ObjectIterator:B("./Helpers/ObjectIterator"),PConstants:B("./Helpers/PConstants"),ArrayList:B("./Objects/ArrayList"),HashMap:B("./Objects/HashMap"),PVector:B("./Objects/PVector"),PFont:B("./Objects/PFont"),Char:B("./Objects/Char"),XMLAttribute:B("./Objects/XMLAttribute"),XMLElement:B("./Objects/XMLElement"),PMatrix2D:B("./Objects/PMatrix2D"),PMatrix3D:B("./Objects/PMatrix3D"),PShape:B("./Objects/PShape"),
colors:B("./Objects/webcolors"),PShapeSVG:B("./Objects/PShapeSVG"),CommonFunctions:B("./P5Functions/commonFunctions"),defaultScope:B("./Helpers/defaultScope"),Processing:B("./Processing"),setupParser:B("./Parser/Parser"),finalize:B("./Helpers/finalizeProcessing")};h.extend={withMath:B("./P5Functions/Math.js"),withProxyFunctions:B("./P5Functions/JavaProxyFunctions")(h.virtHashCode,h.virtEquals),withTouch:B("./P5Functions/touchmouse"),withCommonFunctions:h.CommonFunctions.withCommonFunctions};z.exports=
function(g,n){var p=function(){},a=h.virtEquals,b=h.virtHashCode,c=h.PConstants,d=h.CommonFunctions,k=h.ObjectIterator,q=h.Char,z=h.XMLAttribute(),e=h.ArrayList({virtHashCode:b,virtEquals:a}),a=h.HashMap({virtHashCode:b,virtEquals:a}),b=h.PVector({PConstants:c}),U=h.PFont({Browser:g,noop:p}),z=h.XMLElement({Browser:g,XMLAttribute:z}),fa=h.PMatrix2D({p:d}),C=h.PMatrix3D({p:d}),fa=h.PShape({PConstants:c,PMatrix2D:fa,PMatrix3D:C}),d=h.PShapeSVG({CommonFunctions:d,PConstants:c,PShape:fa,XMLElement:z,
colors:h.colors}),c=h.defaultScope({ArrayList:e,HashMap:a,PVector:b,PFont:U,PShapeSVG:d,ObjectIterator:k,PConstants:c,Char:q,XMLElement:z,XML:z}),k=h.Processing({defaultScope:c,Browser:g,extend:h.extend,noop:p}),k=h.setupParser(k,{Browser:g,aFunctions:n,defaultScope:c});return k=h.finalize(k,{version:B("../package.json").version,isDomPresent:g.isDomPresent,window:g.window,document:g.document,noop:p})}},{"../package.json":2,"./Helpers/ObjectIterator":3,"./Helpers/PConstants":4,"./Helpers/defaultScope":6,
"./Helpers/finalizeProcessing":7,"./Helpers/virtEquals":8,"./Helpers/virtHashCode":9,"./Objects/ArrayList":10,"./Objects/Char":11,"./Objects/HashMap":12,"./Objects/PFont":13,"./Objects/PMatrix2D":14,"./Objects/PMatrix3D":15,"./Objects/PShape":16,"./Objects/PShapeSVG":17,"./Objects/PVector":18,"./Objects/XMLAttribute":19,"./Objects/XMLElement":20,"./Objects/webcolors":21,"./P5Functions/JavaProxyFunctions":22,"./P5Functions/Math.js":23,"./P5Functions/commonFunctions":24,"./P5Functions/touchmouse":25,
"./Parser/Parser":26,"./Processing":27}]},{},[1]);