forked from processing-js/processing-js
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprocessing.min.js
More file actions
executable file
·425 lines (425 loc) · 219 KB
/
processing.min.js
File metadata and controls
executable file
·425 lines (425 loc) · 219 KB
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
(function(A,x,Q){function g(m,a){if(!x[m]){if(!A[m]){var b="function"==typeof require&&require;if(!a&&b)return b(m,!0);if(k)return k(m,!0);throw Error("Cannot find module '"+m+"'");}b=x[m]={exports:{}};A[m][0].call(b.exports,function(a){var c=A[m][1][a];return g(c?c:a)},b,b.exports)}return x[m].exports}for(var k="function"==typeof require&&require,m=0;m<Q.length;m++)g(Q[m]);return g})({1:[function(A,x,Q){x={isDomPresent:!0,navigator:navigator,window:window,document:document,ajax:function(g){var k=
new XMLHttpRequest;k.open("GET",g,!1);k.overrideMimeType&&k.overrideMimeType("text/plain");k.setRequestHeader("If-Modified-Since","Fri, 01 Jan 1960 00:00:00 GMT");k.send(null);if(200!==k.status&&0!==k.status)throw"XMLHttpRequest failed, status code "+k.status;return k.responseText}};window.Processing=A("./src/")(x)},{"./src/":2}],2:[function(A,x,Q){var g={virtEquals:A("./Helpers/virtEquals"),virtHashCode:A("./Helpers/virtHashCode"),ObjectIterator:A("./Helpers/ObjectIterator"),PConstants:A("./Helpers/PConstants"),
ArrayList:A("./Objects/ArrayList"),HashMap:A("./Objects/HashMap"),PVector:A("./Objects/PVector"),PFont:A("./Objects/PFont"),Char:A("./Objects/Char"),XMLAttribute:A("./Objects/XMLAttribute"),XMLElement:A("./Objects/XMLElement"),PMatrix2D:A("./Objects/PMatrix2D"),PMatrix3D:A("./Objects/PMatrix3D"),PShape:A("./Objects/PShape"),colors:A("./Objects/webcolors"),PShapeSVG:A("./Objects/PShapeSVG"),CommonFunctions:A("./P5Functions/commonFunctions"),defaultScope:A("./Helpers/defaultScope"),Processing:A("./Processing"),
setupParser:A("./Parser/Parser"),finalize:A("./Helpers/finalizeProcessing")};g.extend={withMath:A("./P5Functions/Math.js"),withProxyFunctions:A("./P5Functions/JavaProxyFunctions")(g.virtHashCode,g.virtEquals),withTouch:A("./P5Functions/touchmouse"),withCommonFunctions:g.CommonFunctions.withCommonFunctions};x.exports=function(k,m){var n=function(){},a=g.virtEquals,b=g.virtHashCode,d=g.PConstants,c=g.CommonFunctions,l=g.ObjectIterator,t=g.Char,s=g.XMLAttribute(),e=g.ArrayList({virtHashCode:b,virtEquals:a}),
a=g.HashMap({virtHashCode:b,virtEquals:a}),b=g.PVector({PConstants:d}),rd=g.PFont({Browser:k,noop:n}),s=g.XMLElement({Browser:k,XMLAttribute:s}),$=g.PMatrix2D({p:c}),B=g.PMatrix3D({p:c}),$=g.PShape({PConstants:d,PMatrix2D:$,PMatrix3D:B}),c=g.PShapeSVG({CommonFunctions:c,PConstants:d,PShape:$,XMLElement:s,colors:g.colors}),d=g.defaultScope({ArrayList:e,HashMap:a,PVector:b,PFont:rd,PShapeSVG:c,ObjectIterator:l,PConstants:d,Char:t,XMLElement:s,XML:s}),l=g.Processing({defaultScope:d,Browser:k,extend:g.extend,
noop:n}),l=g.setupParser(l,{aFunctions:m,defaultScope:d});return l=g.finalize(l,{isDomPresent:k.isDomPresent,window:k.window,document:k.document,noop:n})}},{"./P5Functions/Math.js":3,"./Helpers/virtEquals":4,"./Helpers/virtHashCode":5,"./Objects/ArrayList":6,"./Objects/HashMap":7,"./Helpers/PConstants":8,"./Objects/PFont":9,"./Objects/Char":10,"./Objects/PVector":11,"./Objects/XMLElement":12,"./Objects/XMLAttribute":13,"./Objects/PMatrix2D":14,"./Objects/PMatrix3D":15,"./Objects/PShape":16,"./P5Functions/commonFunctions":17,
"./Objects/webcolors":18,"./Objects/PShapeSVG":19,"./Helpers/defaultScope":20,"./Processing":21,"./Parser/Parser":22,"./Helpers/finalizeProcessing":23,"./P5Functions/JavaProxyFunctions":24,"./P5Functions/touchmouse":25,"./Helpers/ObjectIterator":26}],3:[function(A,x,Q){x.exports=function(g,k){function m(c,a){var e=c||362436069,b=a||521288629,d=function(){e=36969*(e&65535)+(e>>>16)&4294967295;b=18E3*(b&65535)+(b>>>16)&4294967295;return((e&65535)<<16|b&65535)&4294967295};this.nextDouble=function(){var c=
d()/4294967296;return 0>c?1+c:c};this.nextInt=d}function n(c){function a(c,e,b,d){c&=15;var l=8>c?e:b;e=4>c?b:12===c||14===c?e:d;return(0===(c&1)?l:-l)+(0===(c&2)?e:-e)}function e(c,e,a){e=0===(c&1)?e:a;return 0===(c&2)?-e:e}function b(c,e,a){return e+c*(a-e)}c=c!==k?new m(c):m.createRandomized();var d,l,g=new Uint8Array(512);for(d=0;256>d;++d)g[d]=d;for(d=0;256>d;++d){var n=g[l=c.nextInt()&255];g[l]=g[d];g[d]=n}for(d=0;256>d;++d)g[d+256]=g[d];this.noise3d=function(c,e,d){var l=Math.floor(c)&255,
t=Math.floor(e)&255,k=Math.floor(d)&255;c-=Math.floor(c);e-=Math.floor(e);d-=Math.floor(d);var m=(3-2*c)*c*c,B=(3-2*e)*e*e,n=g[l]+t,$=g[n]+k,n=g[n+1]+k,t=g[l+1]+t,l=g[t]+k,k=g[t+1]+k;return b((3-2*d)*d*d,b(B,b(m,a(g[$],c,e,d),a(g[l],c-1,e,d)),b(m,a(g[n],c,e-1,d),a(g[k],c-1,e-1,d))),b(B,b(m,a(g[$+1],c,e,d-1),a(g[l+1],c-1,e,d-1)),b(m,a(g[n+1],c,e-1,d-1),a(g[k+1],c-1,e-1,d-1))))};this.noise2d=function(c,a){var d=Math.floor(c)&255,l=Math.floor(a)&255;c-=Math.floor(c);a-=Math.floor(a);var t=(3-2*c)*c*
c,s=g[d]+l,d=g[d+1]+l;return b((3-2*a)*a*a,b(t,e(g[s],c,a),e(g[d],c-1,a)),b(t,e(g[s+1],c,a-1),e(g[d+1],c-1,a-1)))};this.noise1d=function(c){var e=Math.floor(c)&255;c-=Math.floor(c);return b((3-2*c)*c*c,0===(g[e]&1)?-c:c,0===(g[e+1]&1)?-(c-1):c-1)}}var a=Math.random;g.abs=Math.abs;g.ceil=Math.ceil;g.exp=Math.exp;g.floor=Math.floor;g.log=Math.log;g.pow=Math.pow;g.round=Math.round;g.sqrt=Math.sqrt;g.acos=Math.acos;g.asin=Math.asin;g.atan=Math.atan;g.atan2=Math.atan2;g.cos=Math.cos;g.sin=Math.sin;g.tan=
Math.tan;g.constrain=function(c,a,e){return c>e?e:c<a?a:c};g.dist=function(){var c,a,e;if(4===arguments.length)return c=arguments[0]-arguments[2],a=arguments[1]-arguments[3],Math.sqrt(c*c+a*a);if(6===arguments.length)return c=arguments[0]-arguments[3],a=arguments[1]-arguments[4],e=arguments[2]-arguments[5],Math.sqrt(c*c+a*a+e*e)};g.lerp=function(c,a,e){return(a-c)*e+c};g.mag=function(c,a,e){return e?Math.sqrt(c*c+a*a+e*e):Math.sqrt(c*c+a*a)};g.map=function(c,a,e,d,b){return d+(b-d)*((c-a)/(e-a))};
g.max=function(){if(2===arguments.length)return arguments[0]<arguments[1]?arguments[1]:arguments[0];var c=1===arguments.length?arguments[0]:arguments;if(!("length"in c&&0<c.length))throw"Non-empty array is expected";for(var a=c[0],e=c.length,d=1;d<e;++d)a<c[d]&&(a=c[d]);return a};g.min=function(){if(2===arguments.length)return arguments[0]<arguments[1]?arguments[0]:arguments[1];var c=1===arguments.length?arguments[0]:arguments;if(!("length"in c&&0<c.length))throw"Non-empty array is expected";for(var a=
c[0],e=c.length,d=1;d<e;++d)a>c[d]&&(a=c[d]);return a};g.norm=function(c,a,e){return(c-a)/(e-a)};g.sq=function(c){return c*c};g.degrees=function(c){return 180*c/Math.PI};g.random=function(){if(0===arguments.length)return a();if(1===arguments.length)return a()*arguments[0];var c=arguments[0],d=arguments[1];return a()*(d-c)+c};m.createRandomized=function(){var c=new Date;return new m(c/6E4&4294967295,c&4294967295)};g.randomSeed=function(c){a=(new m(c)).nextDouble};g.Random=function(c){var a=!1,e,d;
this.nextGaussian=function(){if(a)return a=!1,e;var c,b,l;do c=2*d()-1,b=2*d()-1,l=c*c+b*b;while(1<=l||0===l);l=Math.sqrt(-2*Math.log(l)/l);e=b*l;a=!0;return c*l};d=c===k?Math.random:(new m(c)).nextDouble};var b=k,d=4,c=0.5,l=k;g.noise=function(a,s,e){b===k&&(b=new n(l));for(var g=b,m=1,B=1,y=0,Oc=0;Oc<d;++Oc){m*=c;switch(arguments.length){case 1:y+=m*(1+g.noise1d(B*a))/2;break;case 2:y+=m*(1+g.noise2d(B*a,B*s))/2;break;case 3:y+=m*(1+g.noise3d(B*a,B*s,B*e))/2}B*=2}return y};g.noiseDetail=function(a,
b){d=a;b!==k&&(c=b)};g.noiseSeed=function(c){l=c;b=k}}},{}],5:[function(A,x,Q){x.exports=function(g,k){if("string"===typeof g){for(var m=0,n=0;n<g.length;++n)m=31*m+g.charCodeAt(n)&4294967295;return m}if("object"!==typeof g)return g&4294967295;if(g.hashCode instanceof Function)return g.hashCode();g.$id===k&&(g.$id=Math.floor(65536*Math.random())-32768<<16|Math.floor(65536*Math.random()));return g.$id}},{}],6:[function(A,x,Q){x.exports=function(g){function k(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 m(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 c=0,l=b.length;c<l;++c)if(n(a,b[c]))return c;return-1};this.lastIndexOf=function(a){for(var c=b.length-1;0<=c;--c)if(n(a,b[c]))return c;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,c){var l;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(l=new ObjectIterator(c);l.hasNext();)b.splice(a++,0,l.next())}else for(l=new ObjectIterator(a);l.hasNext();)b.push(l.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 c,b,t,
s=new m;s.addAll(this);this.clear();for(b=c=0;c<s.size();c++)t=s.get(c),a.contains(t)||this.add(b++,t);return this.size()<s.size()?!0:!1};this.isEmpty=function(){return!b.length};this.clone=function(){return new m(this)};this.toArray=function(){return b.slice(0)};this.iterator=function(){return new k(b)}}var n=g.virtEquals;return m}},{}],4:[function(A,x,Q){x.exports=function(g,k){return null===g||null===k?null===g&&null===k:"string"===typeof g||"object"!==typeof g?g===k:g.equals instanceof Function?
g.equals(k):g===k}},{}],7:[function(A,x,Q){x.exports=function(g){function k(){function a(c){c=m(c)%e.length;return 0>c?e.length+c:c}function b(){if(!(g<=s*e.length)){for(var c=[],b=0;b<e.length;++b)void 0!==e[b]&&(c=c.concat(e[b]));b=2*e.length;e=[];e.length=b;for(b=0;b<c.length;++b){var d=a(c[b].key),l=e[d];void 0===l&&(e[d]=l=[]);l.push(c[b])}}}function d(c,a){function b(){for(;!t;)if(++l,d>=e.length)t=!0;else if(void 0===e[d]||l>=e[d].length)l=-1,++d;else break}var d=0,l=-1,t=!1,s;this.hasNext=
function(){return!t};this.next=function(){s=c(e[d][l]);b();return s};this.remove=function(){void 0!==s&&(a(s),--l,b())};b()}function c(c,e,a){this.clear=function(){$.clear()};this.contains=function(c){return e(c)};this.containsAll=function(c){for(c=c.iterator();c.hasNext();)if(!this.contains(c.next()))return!1;return!0};this.isEmpty=function(){return $.isEmpty()};this.iterator=function(){return new d(c,a)};this.remove=function(c){return this.contains(c)?(a(c),!0):!1};this.removeAll=function(c){for(c=
c.iterator();c.hasNext();){var e=c.next();this.contains(e)&&a(e)}return!0};this.retainAll=function(c){for(var e=this.iterator(),b=[];e.hasNext();){var d=e.next();c.contains(d)||b.push(d)}for(c=0;c<b.length;++c)a(b[c]);return 0<b.length};this.size=function(){return $.size()};this.toArray=function(){for(var c=[],e=this.iterator();e.hasNext();)c.push(e.next());return c}}function l(c){this._isIn=function(e){return e===$&&void 0===c.removed};this.equals=function(e){return n(c.key,e.getKey())};this.getKey=
function(){return c.key};this.getValue=function(){return c.value};this.hashCode=function(e){return m(c.key)};this.setValue=function(e){var a=c.value;c.value=e;return a}}if(1===arguments.length&&arguments[0]instanceof k)return arguments[0].clone();var t=0<arguments.length?arguments[0]:16,s=1<arguments.length?arguments[1]:0.75,e=[];e.length=t;var g=0,$=this;this.clear=function(){g=0;e=[];e.length=t};this.clone=function(){var c=new k;c.putAll(this);return c};this.containsKey=function(c){var b=a(c),b=
e[b];if(void 0===b)return!1;for(var d=0;d<b.length;++d)if(n(b[d].key,c))return!0;return!1};this.containsValue=function(c){for(var a=0;a<e.length;++a){var b=e[a];if(void 0!==b)for(var d=0;d<b.length;++d)if(n(b[d].value,c))return!0}return!1};this.entrySet=function(){return new c(function(c){return new l(c)},function(c){return c instanceof l&&c._isIn($)},function(c){return $.remove(c.getKey())})};this.get=function(c){var b=a(c),b=e[b];if(void 0===b)return null;for(var d=0;d<b.length;++d)if(n(b[d].key,
c))return b[d].value;return null};this.isEmpty=function(){return 0===g};this.keySet=function(){return new c(function(c){return c.key},function(c){return $.containsKey(c)},function(c){return $.remove(c)})};this.values=function(){return new c(function(c){return c.value},function(c){return $.containsValue(c)},function(c){return $.removeByValue(c)})};this.put=function(c,d){var l=a(c),t=e[l];if(void 0===t)return++g,e[l]=[{key:c,value:d}],b(),null;for(l=0;l<t.length;++l)if(n(t[l].key,c)){var s=t[l].value;
t[l].value=d;return s}++g;t.push({key:c,value:d});b();return null};this.putAll=function(c){for(c=c.entrySet().iterator();c.hasNext();){var e=c.next();this.put(e.getKey(),e.getValue())}};this.remove=function(c){var b=a(c),d=e[b];if(void 0===d)return null;for(var l=0;l<d.length;++l)if(n(d[l].key,c))return--g,c=d[l].value,d[l].removed=!0,1<d.length?d.splice(l,1):e[b]=void 0,c;return null};this.removeByValue=function(c){var a,b,d,l;for(a in e)if(e.hasOwnProperty(a))for(b=0,d=e[a].length;b<d;b++)if(l=
e[a][b],l.value===c)return e[a].splice(b,1),!0;return!1};this.size=function(){return g}}var m=g.virtHashCode,n=g.virtEquals;return k}},{}],8:[function(A,x,Q){x.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,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}},{}],9:[function(A,x,Q){x.exports=function(g,k){function m(b,d){b===k&&(b="");this.name=b;d===k&&(d=0);this.size=d;this.glyph=!1;this.descent=this.ascent=0;this.leading=1.2*d;var c=b.indexOf(" Italic Bold");-1!==c&&(b=b.substring(0,c));this.style="normal";c=b.indexOf(" Italic");-1!==c&&(b=b.substring(0,c),this.style="italic");
this.weight="normal";c=b.indexOf(" Bold");-1!==c&&(b=b.substring(0,c),this.weight="bold");this.family="sans-serif";if(b!==k)switch(b){case "sans-serif":case "serif":case "monospace":case "fantasy":case "cursive":this.family=b;break;default:this.family='"'+b+'", sans-serif'}var c=this.size/250,l=n.createElement("canvas");l.width=500;l.height=500;l.style.opacity=0;var t=this.getCSSDefinition("250px","normal"),s=l.getContext("2d");s.font=t;l.width=s.measureText("dbflkhyjqpg").width;s.font=t;t=n.createElement("div");
t.style.position="absolute";t.style.opacity=0;t.style.fontFamily='"'+this.name+'"';t.style.fontSize="250px";t.innerHTML="dbflkhyjqpg<br/>dbflkhyjqpg";n.body.appendChild(t);var e=l.width,g=l.height,l=g/2;s.fillStyle="white";s.fillRect(0,0,e,g);s.fillStyle="black";s.fillText("dbflkhyjqpg",0,l);for(var g=s.getImageData(0,0,e,g).data,m=0,B=4*e,y=g.length;++m<y&&255===g[m];)a();e=Math.round(m/B);for(m=y-1;0<--m&&255===g[m];)a();g=Math.round(m/B);this.ascent=c*(l-e);this.descent=c*(g-l);n.defaultView.getComputedStyle&&
(l=n.defaultView.getComputedStyle(t,null).getPropertyValue("height"),l=c*l.replace("px",""),l>=2*this.size&&(this.leading=Math.round(l/2)));n.body.removeChild(t);c=this.caching?s:void 0;this.context2d=c;this.css=this.getCSSDefinition();this.context2d&&(this.context2d.font=this.css)}var n=g.Browser.document,a=g.noop;m.prototype.caching=!0;m.prototype.getCSSDefinition=function(a,d){a===k&&(a=this.size+"px");d===k&&(d=this.leading+"px");return[this.style,"normal",this.weight,a+"/"+d,this.family].join(" ")};
m.prototype.measureTextWidth=function(a){return this.context2d.measureText(a).width};m.prototype.measureTextWidthFallback=function(a){var d=n.createElement("canvas").getContext("2d");d.font=this.css;return d.measureText(a).width};m.PFontCache={length:0};m.get=function(a,d){d=(10*d+0.5|0)/10;var c=m.PFontCache,l=a+"/"+d;if(!c[l]){c[l]=new m(a,d);c.length++;if(50===c.length){m.prototype.measureTextWidth=m.prototype.measureTextWidthFallback;m.prototype.caching=!1;for(var t in c)"length"!==t&&(c[t].context2d=
null);return new m(a,d)}if(400===c.length)return m.PFontCache={},m.get=m.getFallback,new m(a,d)}return c[l]};m.getFallback=function(a,d){return new m(a,d)};m.list=function(){return["sans-serif","serif","monospace","fantasy","cursive"]};m.preloading={template:{},initialized:!1,initialize:function(){var a=n.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}";n.head.appendChild(a);a=n.createElement("span");a.style.cssText='position: absolute; top: 0; left: 0; opacity: 0; font-family: "PjsEmptyFont", fantasy;';a.innerHTML="AAAAAAAA";n.body.appendChild(a);this.template=a;this.initialized=!0},getElementWidth:function(a){return n.defaultView.getComputedStyle(a,"").getPropertyValue("width")},timeAttempted:0,pending:function(a){this.initialized||this.initialize();for(var d,
c,l=this.getElementWidth(this.template),t=0;t<this.fontList.length;t++){d=this.fontList[t];c=this.getElementWidth(d);if(4E3>this.timeAttempted&&c===l)return this.timeAttempted+=a,!0;n.body.removeChild(d);this.fontList.splice(t--,1);this.timeAttempted=0}return 0===this.fontList.length?!1:!0},fontList:[],addedList:{},add:function(a){this.initialized||this.initialize();var d="object"===typeof a?a.fontFace:a;a="object"===typeof a?a.url:a;if(!this.addedList[d]){var c=n.createElement("style");c.setAttribute("type",
"text/css");c.innerHTML="@font-face{\n font-family: '"+d+"';\n src: url('"+a+"');\n}\n";n.head.appendChild(c);this.addedList[d]=!0;a=n.createElement("span");a.style.cssText="position: absolute; top: 0; left: 0; opacity: 0;";a.style.fontFamily='"'+d+'", "PjsEmptyFont", fantasy';a.innerHTML="AAAAAAAA";n.body.appendChild(a);this.fontList.push(a)}}};return m}},{}],10:[function(A,x,Q){x.exports=function(g,k){var m=function(n){this.code="string"===typeof n&&1===n.length?n.charCodeAt(0):"number"===typeof n?
n:n instanceof m?n:NaN;return g[this.code]===k?g[this.code]=this:g[this.code]};m.prototype.toString=function(){return String.fromCharCode(this.code)};m.prototype.valueOf=function(){return this.code};return m}({})},{}],11:[function(A,x,Q){x.exports=function(g,k){function m(a,c,b){this.x=a||0;this.y=c||0;this.z=b||0}function n(a){return function(c,b){var t=c.get();t[a](b);return t}}var a=g.PConstants;m.fromAngle=function(a,c){if(c===k||null===c)c=new m;c.x=Math.cos(a);c.y=Math.sin(a);return c};m.random2D=
function(d){return m.fromAngle(Math.random()*a.TWO_PI,d)};m.random3D=function(d){var c=Math.random()*a.TWO_PI,b=2*Math.random()-1,t=Math.sqrt(1-b*b),s=t*Math.cos(c),c=t*Math.sin(c);d===k||null===d?d=new m(s,c,b):d.set(s,c,b);return d};m.dist=function(a,c){return a.dist(c)};m.dot=function(a,c){return a.dot(c)};m.cross=function(a,c){return a.cross(c)};m.sub=function(a,c){return new m(a.x-c.x,a.y-c.y,a.z-c.z)};m.angleBetween=function(a,c){return Math.acos(a.dot(c)/(a.mag()*c.mag()))};m.lerp=function(a,
c,b){a=new m(a.x,a.y,a.z);a.lerp(c,b);return a};m.prototype={set:function(a,c,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=c,this.z=b)},get:function(){return new m(this.x,this.y,this.z)},mag:function(){var a=this.x,c=this.y,b=this.z;return Math.sqrt(a*a+c*c+b*b)},magSq:function(){var a=this.x,c=this.y,b=this.z;return a*a+c*c+b*b},setMag:function(a,c){if(c===k)c=a,this.normalize(),this.mult(c);else return a.normalize(),a.mult(c),a},add:function(a,c,b){1===
arguments.length?(this.x+=a.x,this.y+=a.y,this.z+=a.z):(this.x+=a,this.y+=c,this.z+=b)},sub:function(a,c,b){1===arguments.length?(this.x-=a.x,this.y-=a.y,this.z-=a.z):(this.x-=a,this.y-=c,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 c=this.x,b=Math.cos(a);a=Math.sin(a);this.x=b*this.x-a*this.y;this.y=
a*c+b*this.y},dist:function(a){var c=this.x-a.x,b=this.y-a.y;a=this.z-a.z;return Math.sqrt(c*c+b*b+a*a)},dot:function(a,c,b){return 1===arguments.length?this.x*a.x+this.y*a.y+this.z*a.z:this.x*a+this.y*c+this.z*b},cross:function(a){var c=this.x,b=this.y,t=this.z;return new m(b*a.z-a.y*t,t*a.x-a.z*c,c*a.y-a.x*b)},lerp:function(a,c,b,t){var s,e;2===arguments.length?(t=c,s=a.x,e=a.y,b=a.z):(s=a,e=c);this.x+=(s-this.x)*t;this.y+=(e-this.y)*t;this.z+=(b-this.z)*t},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 m.prototype)m.prototype.hasOwnProperty(b)&&!m.hasOwnProperty(b)&&(m[b]=n(b));return m}},{}],12:[function(A,x,Q){x.exports=function(g,k){var m=g.Browser,n=m.ajax,a=m.window.DOMParser,b=g.XMLAttribute,
d=function(c,a,b,d){this.attributes=[];this.children=[];this.name=this.fullName=null;this.namespace="";this.parent=this.content=null;this.systemID=this.lineNr="";this.type="ELEMENT";c&&("string"===typeof c?a===k&&-1<c.indexOf("<")?this.parse(c):(this.fullName=c,this.namespace=a,this.systemId=b,this.lineNr=d):this.parse(a))};d.prototype={parse:function(c){var b;try{var d=c.substring(c.length-4);if(".xml"===d||".svg"===d)c=n(c);b=(new a).parseFromString(c,"text/xml");var s=b.documentElement;if(s)this.parseChildrenRecursive(null,
s);else throw"Error loading document";return this}catch(e){throw e;}},parseChildrenRecursive:function(c,a){var t,s,e,g;c?(t=new d(a.nodeName),t.parent=c):(this.fullName=a.localName,this.name=a.nodeName,t=this);if(3===a.nodeType&&""!==a.textContent)return this.createPCDataElement(a.textContent);if(4===a.nodeType)return this.createCDataElement(a.textContent);if(a.attributes)for(e=0,g=a.attributes.length;e<g;e++)s=a.attributes[e],s=new b(s.getname,s.nodeName,s.namespaceURI,s.nodeValue,s.nodeType),t.attributes.push(s);
if(a.childNodes)for(e=0,g=a.childNodes.length;e<g;e++)s=t.parseChildrenRecursive(t,a.childNodes[e]),null!==s&&t.children.push(s);return t},createElement:function(c,a,b,s){return b===k?new d(c,a):new d(c,a,b,s)},createPCDataElement:function(c,a){if(""===c.replace(/^\s+$/g,""))return null;var b=new d;b.type="TEXT";b.content=c;return b},createCDataElement:function(c){var a=this.createPCDataElement(c);if(null===a)return null;a.type="CDATA";var b={"<":"<",">":">","'":"'",'"':"""},d;for(d in b)Object.hasOwnProperty(b,
d)||(c=c.replace(RegExp(d,"g"),b[d]));a.cdata=c;return a},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(c){if(!(c instanceof d))return!1;var a,b;if(this.fullName!==c.fullName||this.attributes.length!==c.getAttributeCount()||this.attributes.length!==c.attributes.length)return!1;var s,e;a=0;for(b=this.attributes.length;a<b;a++)if(s=this.attributes[a].getName(),
e=this.attributes[a].getNamespace(),s=c.findAttribute(s,e),null===s||this.attributes[a].getValue()!==s.getValue()||this.attributes[a].getType()!==s.getType())return!1;if(this.children.length!==c.getChildCount())return!1;if(0<this.children.length){a=0;for(b=this.children.length;a<b;a++)if(s=this.getChild(a),e=c.getChild(a),!s.equals(e))return!1;return!0}return this.content===c.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 d=this.children[this.children.length-1];if(null===d.getLocalName()){d.setContent(d.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,d,s=0,e=this.getChildCount();s<e;s++)if(b=this.getChild(s),d=b.getName(),null!==d&&d===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,d,s=0,e=this.getChildCount();s<e;s++)b=this.getChild(s),d=b.getName(),null!==d&&d===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 d,s,e=a[b],g=0,m=this.getChildCount();g<m;g++)if(d=this.getChild(g),s=d.getName(),null!==s&&s===e)return d.getChildRecursive(a,b+1);return null},getChildrenRecursive:function(a,b){if(b===a.length-1)return this.getChildren(a[b]);
for(var d=this.getChildren(a[b]),s=[],e=0;e<d.length;e++)s=s.concat(d[e].getChildrenRecursive(a,b+1));return s},isLeaf:function(){return!this.hasChildren()},listChildren:function(){for(var a=[],b=0,d=this.children.length;b<d;b++)a.push(this.getChild(b).getName());return a},removeAttribute:function(a,b){this.namespace=b||"";for(var d=0,s=this.attributes.length;d<s;d++)if(this.attributes[d].getName()===a&&this.attributes[d].getNamespace()===this.namespace){this.attributes.splice(d,1);break}},removeChild:function(a){if(a)for(var b=
0,d=this.children.length;b<d;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 d=0,s=this.attributes.length;d<s;d++)if(this.attributes[d].getName()===a&&this.attributes[d].getNamespace()===this.namespace)return this.attributes[d];return null},setAttribute:function(){var a;if(3===arguments.length){a=arguments[0].indexOf(":");var d=arguments[0].substring(a+
1);(a=this.findAttribute(d,arguments[1]))?a.setValue(arguments[2]):(a=new b(arguments[0],d,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,d;for(d=0;d<this.attributes.length;d++)var s=this.attributes[d],b=b+(" "+s.getName()+'="'+s.getValue()+'"');if(0===this.children.length)b=""===this.content?b+"/>":b+(">"+this.content+"</"+a+">");else{b+=">";for(d=0;d<this.children.length;d++)b+=this.children[d].toString();b+="</"+a+">"}return b}};d.parse=function(a){var b=new d;b.parse(a);return b};return d}},{}],13:[function(A,x,Q){x.exports=function(){var g=function(g,m,n,a,b){this.fullName=
g||"";this.name=m||"";this.namespace=n||"";this.value=a;this.type=b};g.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 g}},{}],14:[function(A,x,Q){x.exports=function(g,k){var m=g.p,n=function(){0===arguments.length?this.reset():1===arguments.length&&arguments[0]instanceof n?this.set(arguments[0].array()):
6===arguments.length&&this.set(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])};n.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 n?this.elements=arguments[0].array():1===arguments.length&&arguments[0]instanceof Array&&(this.elements=arguments[0].slice())},get:function(){var a=new n;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 d,c;a instanceof PVector?(d=a.x,c=a.y,b||(b=new PVector)):a instanceof Array&&(d=a[0],c=a[1],b||(b=[]));b instanceof Array?(b[0]=this.elements[0]*d+this.elements[1]*c+this.elements[2],b[1]=this.elements[3]*d+this.elements[4]*c+this.elements[5]):
b instanceof PVector&&(b.x=this.elements[0]*d+this.elements[1]*c+this.elements[2],b.y=this.elements[3]*d+this.elements[4]*c+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],d=this.elements[1],c=this.elements[2],l=this.elements[3],t=this.elements[4],g=this.elements[5];this.elements[0]=t/a;this.elements[3]=-l/a;this.elements[1]=-d/a;this.elements[4]=b/a;this.elements[2]=(d*g-t*c)/a;this.elements[5]=(l*c-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 n?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]],d=0,c=0;2>c;c++)for(var l=0;3>l;l++,d++)b[d]+=this.elements[3*c+0]*a[l+0]+
this.elements[3*c+1]*a[l+3];this.elements=b.slice()},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof n?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 d=this.elements[0],c=this.elements[1];this.elements[0]=b*d+a*c;this.elements[1]=-a*d+b*c;d=this.elements[3];c=this.elements[4];this.elements[3]=b*d+a*c;this.elements[4]=-a*d+b*c},rotateZ:function(a){this.rotate(a)},invRotateZ:function(a){this.rotateZ(a-Math.PI)},print:function(){var a=printMatrixHelper(this.elements),
a=""+m.nfs(this.elements[0],a,4)+" "+m.nfs(this.elements[1],a,4)+" "+m.nfs(this.elements[2],a,4)+"\n"+m.nfs(this.elements[3],a,4)+" "+m.nfs(this.elements[4],a,4)+" "+m.nfs(this.elements[5],a,4)+"\n\n";m.println(a)}};return n}},{}],15:[function(A,x,Q){x.exports=function(g,k){var m=g.p,n=function(){this.reset()};n.prototype={set:function(){16===arguments.length?this.elements=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof n?this.elements=arguments[0].array():1===arguments.length&&
arguments[0]instanceof Array&&(this.elements=arguments[0].slice())},get:function(){var a=new n;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,d){d===k&&(d=0);this.elements[3]+=a*this.elements[0]+b*this.elements[1]+d*this.elements[2];this.elements[7]+=a*this.elements[4]+b*this.elements[5]+d*this.elements[6];this.elements[11]+=a*this.elements[8]+b*this.elements[9]+d*this.elements[10];
this.elements[15]+=a*this.elements[12]+b*this.elements[13]+d*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 d,c,l,t;a instanceof PVector?(d=a.x,c=a.y,l=a.z,t=1,b||(b=new PVector)):a instanceof Array&&(d=a[0],c=a[1],l=a[2],t=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]*d+this.elements[1]*c+this.elements[2]*l+this.elements[3],b[1]=this.elements[4]*d+this.elements[5]*c+this.elements[6]*l+this.elements[7],b[2]=this.elements[8]*d+this.elements[9]*c+this.elements[10]*l+this.elements[11]):
4===b.length&&(b[0]=this.elements[0]*d+this.elements[1]*c+this.elements[2]*l+this.elements[3]*t,b[1]=this.elements[4]*d+this.elements[5]*c+this.elements[6]*l+this.elements[7]*t,b[2]=this.elements[8]*d+this.elements[9]*c+this.elements[10]*l+this.elements[11]*t,b[3]=this.elements[12]*d+this.elements[13]*c+this.elements[14]*l+this.elements[15]*t));b instanceof PVector&&(b.x=this.elements[0]*d+this.elements[1]*c+this.elements[2]*l+this.elements[3],b.y=this.elements[4]*d+this.elements[5]*c+this.elements[6]*
l+this.elements[7],b.z=this.elements[8]*d+this.elements[9]*c+this.elements[10]*l+this.elements[11]);return b},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof n?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],d=0,c=0;4>c;c++)for(var l=0;4>l;l++,d++)b[d]+=this.elements[l+0]*a[4*c+0]+this.elements[l+4]*a[4*c+1]+this.elements[l+8]*
a[4*c+2]+this.elements[l+12]*a[4*c+3];this.elements=b.slice()},apply:function(){var a;1===arguments.length&&arguments[0]instanceof n?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],d=0,c=0;4>c;c++)for(var l=0;4>l;l++,d++)b[d]+=this.elements[4*c+0]*a[l+0]+this.elements[4*c+1]*a[l+4]+this.elements[4*c+2]*a[l+8]+this.elements[4*c+3]*a[l+12];this.elements=
b.slice()},rotate:function(a,b,d,c){if(d){var l=Math.cos(a);a=Math.sin(a);var t=1-l;this.apply(t*b*b+l,t*b*d-a*c,t*b*c+a*d,0,t*b*d+a*c,t*d*d+l,t*d*c-a*b,0,t*b*c-a*d,t*d*c+a*b,t*c*c+l,0,0,0,0,1)}else this.rotateZ(a)},invApply:function(){inverseCopy===k&&(inverseCopy=new n);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,d){!a||b||d?a&&(b&&!d)&&(d=1):b=d=a;a&&(b&&d)&&(this.elements[0]*=a,this.elements[1]*=b,this.elements[2]*=d,this.elements[4]*=a,this.elements[5]*=b,this.elements[6]*=d,this.elements[8]*=a,this.elements[9]*=b,this.elements[10]*=
d,this.elements[12]*=a,this.elements[13]*=b,this.elements[14]*=d)},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,d,c){return d?c?this.elements[0]*a+this.elements[1]*b+this.elements[2]*d+this.elements[3]*c:this.elements[0]*
a+this.elements[1]*b+this.elements[2]*d+this.elements[3]:this.elements[0]*a+this.elements[1]*b+this.elements[3]},multY:function(a,b,d,c){return d?c?this.elements[4]*a+this.elements[5]*b+this.elements[6]*d+this.elements[7]*c:this.elements[4]*a+this.elements[5]*b+this.elements[6]*d+this.elements[7]:this.elements[4]*a+this.elements[5]*b+this.elements[7]},multZ:function(a,b,d,c){return c?this.elements[8]*a+this.elements[9]*b+this.elements[10]*d+this.elements[11]*c:this.elements[8]*a+this.elements[9]*
b+this.elements[10]*d+this.elements[11]},multW:function(a,b,d,c){return c?this.elements[12]*a+this.elements[13]*b+this.elements[14]*d+this.elements[15]*c:this.elements[12]*a+this.elements[13]*b+this.elements[14]*d+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],d=this.elements[0]*this.elements[7]-this.elements[3]*this.elements[4],c=this.elements[1]*this.elements[6]-
this.elements[2]*this.elements[5],l=this.elements[1]*this.elements[7]-this.elements[3]*this.elements[5],t=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],m=this.elements[8]*this.elements[15]-this.elements[11]*this.elements[12],k=this.elements[9]*this.elements[14]-this.elements[10]*this.elements[13],n=this.elements[9]*this.elements[15]-
this.elements[11]*this.elements[13],y=this.elements[10]*this.elements[15]-this.elements[11]*this.elements[14],x=a*y-b*n+d*k+c*m-l*e+t*g;if(1E-9>=Math.abs(x))return!1;var u=[];u[0]=+this.elements[5]*y-this.elements[6]*n+this.elements[7]*k;u[4]=-this.elements[4]*y+this.elements[6]*m-this.elements[7]*e;u[8]=+this.elements[4]*n-this.elements[5]*m+this.elements[7]*g;u[12]=-this.elements[4]*k+this.elements[5]*e-this.elements[6]*g;u[1]=-this.elements[1]*y+this.elements[2]*n-this.elements[3]*k;u[5]=+this.elements[0]*
y-this.elements[2]*m+this.elements[3]*e;u[9]=-this.elements[0]*n+this.elements[1]*m-this.elements[3]*g;u[13]=+this.elements[0]*k-this.elements[1]*e+this.elements[2]*g;u[2]=+this.elements[13]*t-this.elements[14]*l+this.elements[15]*c;u[6]=-this.elements[12]*t+this.elements[14]*d-this.elements[15]*b;u[10]=+this.elements[12]*l-this.elements[13]*d+this.elements[15]*a;u[14]=-this.elements[12]*c+this.elements[13]*b-this.elements[14]*a;u[3]=-this.elements[9]*t+this.elements[10]*l-this.elements[11]*c;u[7]=
+this.elements[8]*t-this.elements[10]*d+this.elements[11]*b;u[11]=-this.elements[8]*l+this.elements[9]*d-this.elements[11]*a;u[15]=+this.elements[8]*c-this.elements[9]*b+this.elements[10]*a;a=1/x;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=""+m.nfs(this.elements[0],a,4)+" "+m.nfs(this.elements[1],a,4)+" "+m.nfs(this.elements[2],a,4)+" "+m.nfs(this.elements[3],a,4)+"\n"+m.nfs(this.elements[4],a,4)+" "+m.nfs(this.elements[5],a,4)+" "+m.nfs(this.elements[6],a,4)+" "+m.nfs(this.elements[7],a,4)+"\n"+m.nfs(this.elements[8],a,4)+" "+m.nfs(this.elements[9],a,4)+" "+m.nfs(this.elements[10],a,4)+" "+m.nfs(this.elements[11],a,4)+"\n"+m.nfs(this.elements[12],a,4)+" "+m.nfs(this.elements[13],a,4)+" "+m.nfs(this.elements[14],a,4)+" "+m.nfs(this.elements[15],
a,4)+"\n\n";m.println(a)},invTranslate:function(a,b,d){this.preApply(1,0,0,-a,0,1,0,-b,0,0,1,-d,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,d){this.preApply([1/a,0,0,0,0,1/b,0,0,0,0,1/d,0,0,
0,0,1])}};return n}},{}],16:[function(A,x,Q){x.exports=function(g){var k=g.PConstants,m=g.PMatrix2D,n=g.PMatrix3D;g=function(a){this.family=a||k.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};g.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===k.GROUP?this.drawGroup(a):this.family===
k.PRIMITIVE?this.drawPrimitive(a):this.family===k.GEOMETRY?this.drawGeometry(a):this.family===k.PATH&&this.drawPath(a)},drawPath:function(a){var b,d;if(0!==this.vertices.length){a.beginShape();if(0===this.vertexCodes.length)if(2===this.vertices[0].length)for(b=0,d=this.vertices.length;b<d;b++)a.vertex(this.vertices[b][0],this.vertices[b][1]);else for(b=0,d=this.vertices.length;b<d;b++)a.vertex(this.vertices[b][0],this.vertices[b][1],this.vertices[b][2]);else{var c=0;if(2===this.vertices[0].length)for(b=
0,d=this.vertexCodes.length;b<d;b++)this.vertexCodes[b]===k.VERTEX?(a.vertex(this.vertices[c][0],this.vertices[c][1],this.vertices[c].moveTo),a.breakShape=!1,c++):this.vertexCodes[b]===k.BEZIER_VERTEX?(a.bezierVertex(this.vertices[c+0][0],this.vertices[c+0][1],this.vertices[c+1][0],this.vertices[c+1][1],this.vertices[c+2][0],this.vertices[c+2][1]),c+=3):this.vertexCodes[b]===k.CURVE_VERTEX?(a.curveVertex(this.vertices[c][0],this.vertices[c][1]),c++):this.vertexCodes[b]===k.BREAK&&(a.breakShape=!0);
else for(b=0,d=this.vertexCodes.length;b<d;b++)this.vertexCodes[b]===k.VERTEX?(a.vertex(this.vertices[c][0],this.vertices[c][1],this.vertices[c][2]),!0===this.vertices[c].moveTo?vertArray[vertArray.length-1].moveTo=!0:!1===this.vertices[c].moveTo&&(vertArray[vertArray.length-1].moveTo=!1),a.breakShape=!1):this.vertexCodes[b]===k.BEZIER_VERTEX?(a.bezierVertex(this.vertices[c+0][0],this.vertices[c+0][1],this.vertices[c+0][2],this.vertices[c+1][0],this.vertices[c+1][1],this.vertices[c+1][2],this.vertices[c+
2][0],this.vertices[c+2][1],this.vertices[c+2][2]),c+=3):this.vertexCodes[b]===k.CURVE_VERTEX?(a.curveVertex(this.vertices[c][0],this.vertices[c][1],this.vertices[c][2]),c++):this.vertexCodes[b]===k.BREAK&&(a.breakShape=!0)}a.endShape(this.close?k.CLOSE:k.OPEN)}},drawGeometry:function(a){var b,d;a.beginShape(this.kind);if(this.style)for(b=0,d=this.vertices.length;b<d;b++)a.vertex(this.vertices[b]);else for(b=0,d=this.vertices.length;b<d;b++){var c=this.vertices[b];0===c[2]?a.vertex(c[0],c[1]):a.vertex(c[0],
c[1],c[2])}a.endShape()},drawGroup:function(a){for(var b=0,d=this.children.length;b<d;b++)this.children[b].draw(a)},drawPrimitive:function(a){if(this.kind===k.POINT)a.point(this.params[0],this.params[1]);else if(this.kind===k.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===k.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===k.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===k.RECT)if(null!==this.image){var b=imageModeConvert;a.imageMode(k.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(k.CORNER),a.rect(this.params[0],this.params[1],this.params[2],this.params[3]),
a.curRectMode=b;else this.kind===k.ELLIPSE?(b=a.curEllipseMode,a.ellipseMode(k.CORNER),a.ellipse(this.params[0],this.params[1],this.params[2],this.params[3]),a.curEllipseMode=b):this.kind===k.ARC?(b=curEllipseMode,a.ellipseMode(k.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===k.BOX?1===this.params.length?a.box(this.params[0]):a.box(this.params[0],this.params[1],this.params[2]):this.kind===k.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,d;if("number"===typeof a)return this.children[a];var c;if(""===a||this.name===a)return this;
if(0<this.nameTable.length){b=0;for(d=this.nameTable.length;b<d||c;b++)if(this.nameTable[b].getName===a){c=this.nameTable[b];break}if(c)return c}b=0;for(d=this.children.length;b<d;b++)if(c=this.children[b].getChild(a))return c;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 m:new n:3===a&&this.matrix instanceof m&&(this.matrix=new n)},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 g}},{}],17:[function(A,x,Q){x.exports=function(g){var k={trim:function(g){if(g instanceof Array){for(var k=[],a=0;a<g.length;a++)k.push(g[a].replace(/^\s*/,"").replace(/\s*$/,"").replace(/\r*$/,""));return k}return g.replace(/^\s*/,"").replace(/\s*$/,"").replace(/\r*$/,"")},radians:function(g){return g/180*Math.PI},nfCoreScalar:function(k,n,a,b,d,c){n=0>k?a:n;a=0===d;d=d===g||0>d?0:d;k=Math.abs(k);if(a)for(d=1,k*=10;1E-6<Math.abs(Math.round(k)-k)&&7>d;)++d,k*=10;else 0!==d&&(k*=Math.pow(10,
d));a=2*k;Math.floor(k)===k?a=k:Math.floor(a)===a?(k=Math.floor(k),a=k+k%2):a=Math.round(k);k="";for(b+=d;0<b||0<a;)b--,k=""+a%10+k,a=Math.floor(a/10);if(c!==g)for(b=k.length-3-d;0<b;)k=k.substring(0,b)+c+k.substring(b),b-=3;return 0<d?n+k.substring(0,k.length-d)+"."+k.substring(k.length-d,k.length):n+k},nfCore:function(g,n,a,b,d,c){if(g instanceof Array){for(var l=[],t=0,s=g.length;t<s;t++)l.push(k.nfCoreScalar(g[t],n,a,b,d,c));return l}return k.nfCoreScalar(g,n,a,b,d,c)},nf:function(g,n,a){return k.nfCore(g,
"","-",n,a)},nfs:function(g,n,a){return k.nfCore(g," ","-",n,a)},nfp:function(g,n,a){return k.nfCore(g,"+","-",n,a)},nfc:function(g,n){return k.nfCore(g,"","-",0,n,",")},withCommonFunctions:function(g){"trim radians nf nfs nfp nfc".split(" ").forEach(function(n){g[n]=k[n]})}};return k}()},{}],18:[function(A,x,Q){x.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"}},{}],19:[function(A,x,Q){x.exports=function(g){var k=g.CommonFunctions,m=g.PConstants,n=g.PShape,a=g.XMLElement,b=g.colors,d=function(){n.call(this);if(1===arguments.length){if(this.element=arguments[0],this.vertexCodes=[],this.vertices=[],this.opacity=1,this.stroke=!1,this.strokeColor=m.ALPHA_MASK,this.strokeWeight=1,this.strokeCap=m.SQUARE,this.strokeJoin=m.MITER,this.strokeName=this.strokeGradientPaint=this.strokeGradient=null,this.strokeOpacity=
1,this.fill=!0,this.fillColor=m.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=m.ALPHA_MASK,this.strokeWeight=1,this.strokeCap=m.SQUARE,this.strokeJoin=m.MITER,
this.strokeName=this.strokeGradientPaint=this.strokeGradient="",this.strokeOpacity=1,this.fill=!0,this.fillColor=m.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 c=this.element.getAttribute("transform");c&&(this.matrix=this.parseMatrix(c));c=this.element.getStringAttribute("viewBox");null!==c&&(c=c.split(" "),this.width=c[2],this.height=c[3]);var c=this.element.getStringAttribute("width"),b=this.element.getStringAttribute("height");if(null!==c)this.width=this.parseUnitSize(c),this.height=this.parseUnitSize(b);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)};d.prototype=new n;d.prototype.parseMatrix=function(){function a(c){var b=[];c.replace(/\((.*?)\)/,function(){return function(a,c){b=c.replace(/,+/g," ").split(/\s+/)}}());return b}return function(b){this.checkMatrix(2);var d=[];b.replace(/\s*(\w+)\((.*?)\)/g,function(a){d.push(k.trim(a))});if(0===d.length)return null;b=0;for(var g=d.length;b<g;b++){var e=a(d[b]);
if(-1!==d[b].indexOf("matrix"))this.matrix.set(e[0],e[2],e[4],e[1],e[3],e[5]);else if(-1!==d[b].indexOf("translate"))this.matrix.translate(e[0],2===e.length?e[1]:0);else if(-1!==d[b].indexOf("scale"))this.matrix.scale(e[0],2===e.length?e[1]:e[0]);else if(-1!==d[b].indexOf("rotate")){var m=e[0];1===e.length?this.matrix.rotate(k.radians(m)):3===e.length&&(this.matrix.translate(e[1],e[2]),this.matrix.rotate(k.radians(e[0])),this.matrix.translate(-e[1],-e[2]))}else-1!==d[b].indexOf("skewX")?this.matrix.skewX(parseFloat(e[0])):
-1!==d[b].indexOf("skewY")?this.matrix.skewY(e[0]):-1!==d[b].indexOf("shearX")?this.matrix.shearX(e[0]):-1!==d[b].indexOf("shearY")&&this.matrix.shearY(e[0])}return this.matrix}}();d.prototype.parseChildren=function(a){a=a.getChildren();var b=new n,d,g;d=0;for(g=a.length;d<g;d++){var e=this.parseChild(a[d]);e&&b.addChild(e)}d=0;for(g=b.children.length;d<g;d++)this.children.push(b.children[d])};d.prototype.getName=function(){return this.name};d.prototype.parseChild=function(a){var b=a.getName(),g;
"g"===b?g=new d(this,a):"defs"===b?g=new d(this,a):"line"===b?(g=new d(this,a),g.parseLine()):"circle"===b?(g=new d(this,a),g.parseEllipse(!0)):"ellipse"===b?(g=new d(this,a),g.parseEllipse(!1)):"rect"===b?(g=new d(this,a),g.parseRect()):"polygon"===b?(g=new d(this,a),g.parsePoly(!0)):"polyline"===b?(g=new d(this,a),g.parsePoly(!1)):"path"===b?(g=new d(this,a),g.parsePath()):"radialGradient"===b?unimplemented("PShapeSVG.prototype.parseChild, name = radialGradient"):"linearGradient"===b?unimplemented("PShapeSVG.prototype.parseChild, name = linearGradient"):
"text"===b?unimplemented("PShapeSVG.prototype.parseChild, name = text"):"filter"===b?unimplemented("PShapeSVG.prototype.parseChild, name = filter"):"mask"===b&&unimplemented("PShapeSVG.prototype.parseChild, name = mask");return g};d.prototype.parsePath=function(){this.family=m.PATH;this.kind=0;var a=k.trim(this.element.getStringAttribute("d").replace(/[\s,]+/g," "));if(null!==a)for(var a=a.split(""),b=0,d=0,g=0,e=0,n=e=g=0,$=0,B=0,y=0,x=y=e=B=g=0,u=0,A="",v=[],Q=!1,N,tb,q;x<a.length;)if(u=a[x].charCodeAt(0),
65<=u&&90>=u||97<=u&&122>=u){q=x;x++;if(x<a.length)for(v=[],u=a[x].charCodeAt(0);!(65<=u&&90>=u||97<=u&&100>=u||102<=u&&122>=u)&&!1===Q;)32===u?""!==A&&(v.push(parseFloat(A)),A=""):45===u?101===a[x-1].charCodeAt(0)?A+=a[x].toString():(""!==A&&v.push(parseFloat(A)),A=a[x].toString()):A+=a[x].toString(),x++,x===a.length?Q=!0:u=a[x].charCodeAt(0);""!==A&&(v.push(parseFloat(A)),A="");tb=a[q];u=tb.charCodeAt(0);if(77===u){if(2<=v.length&&0===v.length%2&&(b=v[0],d=v[1],this.parsePathMoveto(b,d),2<v.length))for(q=
2,u=v.length;q<u;q+=2)b=v[q],d=v[q+1],this.parsePathLineto(b,d)}else if(109===u){if(2<=v.length&&0===v.length%2&&(b+=v[0],d+=v[1],this.parsePathMoveto(b,d),2<v.length))for(q=2,u=v.length;q<u;q+=2)b+=v[q],d+=v[q+1],this.parsePathLineto(b,d)}else if(76===u){if(2<=v.length&&0===v.length%2)for(q=0,u=v.length;q<u;q+=2)b=v[q],d=v[q+1],this.parsePathLineto(b,d)}else if(108===u){if(2<=v.length&&0===v.length%2)for(q=0,u=v.length;q<u;q+=2)b+=v[q],d+=v[q+1],this.parsePathLineto(b,d)}else if(72===u)for(q=0,u=
v.length;q<u;q++)b=v[q],this.parsePathLineto(b,d);else if(104===u)for(q=0,u=v.length;q<u;q++)b+=v[q],this.parsePathLineto(b,d);else if(86===u)for(q=0,u=v.length;q<u;q++)d=v[q],this.parsePathLineto(b,d);else if(118===u)for(q=0,u=v.length;q<u;q++)d+=v[q],this.parsePathLineto(b,d);else if(67===u){if(6<=v.length&&0===v.length%6)for(q=0,u=v.length;q<u;q+=6)g=v[q],n=v[q+1],e=v[q+2],$=v[q+3],B=v[q+4],y=v[q+5],this.parsePathCurveto(g,n,e,$,B,y),b=B,d=y}else if(99===u){if(6<=v.length&&0===v.length%6)for(q=
0,u=v.length;q<u;q+=6)g=b+v[q],n=d+v[q+1],e=b+v[q+2],$=d+v[q+3],B=b+v[q+4],y=d+v[q+5],this.parsePathCurveto(g,n,e,$,B,y),b=B,d=y}else if(83===u){if(4<=v.length&&0===v.length%4)for(q=0,u=v.length;q<u;q+=4)"c"===N.toLowerCase()||"s"===N.toLowerCase()?(g=this.vertices[this.vertices.length-2][0],B=this.vertices[this.vertices.length-2][1],e=this.vertices[this.vertices.length-1][0],y=this.vertices[this.vertices.length-1][1],g=e+(e-g),n=y+(y-B)):(g=this.vertices[this.vertices.length-1][0],n=this.vertices[this.vertices.length-
1][1]),e=v[q],$=v[q+1],B=v[q+2],y=v[q+3],this.parsePathCurveto(g,n,e,$,B,y),b=B,d=y}else if(115===u){if(4<=v.length&&0===v.length%4)for(q=0,u=v.length;q<u;q+=4)"c"===N.toLowerCase()||"s"===N.toLowerCase()?(g=this.vertices[this.vertices.length-2][0],B=this.vertices[this.vertices.length-2][1],e=this.vertices[this.vertices.length-1][0],y=this.vertices[this.vertices.length-1][1],g=e+(e-g),n=y+(y-B)):(g=this.vertices[this.vertices.length-1][0],n=this.vertices[this.vertices.length-1][1]),e=b+v[q],$=d+v[q+
1],B=b+v[q+2],y=d+v[q+3],this.parsePathCurveto(g,n,e,$,B,y),b=B,d=y}else if(81===u){if(4<=v.length&&0===v.length%4)for(q=0,u=v.length;q<u;q+=4)g=v[q],e=v[q+1],B=v[q+2],y=v[q+3],this.parsePathQuadto(b,d,g,e,B,y),b=B,d=y}else if(113===u){if(4<=v.length&&0===v.length%4)for(q=0,u=v.length;q<u;q+=4)g=b+v[q],e=d+v[q+1],B=b+v[q+2],y=d+v[q+3],this.parsePathQuadto(b,d,g,e,B,y),b=B,d=y}else if(84===u){if(2<=v.length&&0===v.length%2)for(q=0,u=v.length;q<u;q+=2)"q"===N.toLowerCase()||"t"===N.toLowerCase()?(g=
this.vertices[this.vertices.length-2][0],B=this.vertices[this.vertices.length-2][1],e=this.vertices[this.vertices.length-1][0],y=this.vertices[this.vertices.length-1][1],g=e+(e-g),e=y+(y-B)):(g=b,e=d),B=v[q],y=v[q+1],this.parsePathQuadto(b,d,g,e,B,y),b=B,d=y}else if(116===u){if(2<=v.length&&0===v.length%2)for(q=0,u=v.length;q<u;q+=2)"q"===N.toLowerCase()||"t"===N.toLowerCase()?(g=this.vertices[this.vertices.length-2][0],B=this.vertices[this.vertices.length-2][1],e=this.vertices[this.vertices.length-
1][0],y=this.vertices[this.vertices.length-1][1],g=e+(e-g),e=y+(y-B)):(g=b,e=d),B=b+v[q],y=d+v[q+1],this.parsePathQuadto(b,d,g,e,B,y),b=B,d=y}else if(90===u||122===u)this.close=!0;N=tb.toString()}else x++};d.prototype.parsePathQuadto=function(a,b,d,g,e,k){if(0<this.vertices.length)this.parsePathCode(m.BEZIER_VERTEX),this.parsePathVertex(a+2*(d-a)/3,b+2*(g-b)/3),this.parsePathVertex(e+2*(d-e)/3,k+2*(g-k)/3),this.parsePathVertex(e,k);else throw"Path must start with M/m";};d.prototype.parsePathCurveto=
function(a,b,d,g,e,k){if(0<this.vertices.length)this.parsePathCode(m.BEZIER_VERTEX),this.parsePathVertex(a,b),this.parsePathVertex(d,g),this.parsePathVertex(e,k);else throw"Path must start with M/m";};d.prototype.parsePathLineto=function(a,b){if(0<this.vertices.length)this.parsePathCode(m.VERTEX),this.parsePathVertex(a,b),this.vertices[this.vertices.length-1].moveTo=!1;else throw"Path must start with M/m";};d.prototype.parsePathMoveto=function(a,b){0<this.vertices.length&&this.parsePathCode(m.BREAK);
this.parsePathCode(m.VERTEX);this.parsePathVertex(a,b);this.vertices[this.vertices.length-1].moveTo=!0};d.prototype.parsePathVertex=function(a,b){var d=[];d[0]=a;d[1]=b;this.vertices.push(d)};d.prototype.parsePathCode=function(a){this.vertexCodes.push(a)};d.prototype.parsePoly=function(a){this.family=m.PATH;this.close=a;a=k.trim(this.element.getStringAttribute("points").replace(/[,\s]+/g," "));if(null!==a)if(a=a.split(" "),0===a.length%2)for(var b=0,d=a.length;b<d;b++){var g=[];g[0]=a[b];g[1]=a[++b];
this.vertices.push(g)}else throw"Error parsing polygon points: odd number of coordinates provided";};d.prototype.parseRect=function(){this.kind=m.RECT;this.family=m.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>";
};d.prototype.parseEllipse=function(a){this.kind=m.ELLIPSE;this.family=m.PRIMITIVE;this.params=[];this.params[0]=this.element.getFloatAttribute("cx")|0;this.params[1]=this.element.getFloatAttribute("cy")|0;var b;if(a){if(a=b=this.element.getFloatAttribute("r"),0>a)throw"svg error: negative radius found while parsing <circle>";}else if(a=this.element.getFloatAttribute("rx"),b=this.element.getFloatAttribute("ry"),0>a||0>b)throw"svg error: negative x-axis radius or y-axis radius found while parsing <ellipse>";
this.params[0]-=a;this.params[1]-=b;this.params[2]=2*a;this.params[3]=2*b};d.prototype.parseLine=function(){this.kind=m.LINE;this.family=m.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")};d.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 b=0,d=a.length;b<d;b++){var g=k.trim(a[b].split(":"));
"fill"===g[0]?this.setFill(g[1]):"fill-opacity"===g[0]?this.setFillOpacity(g[1]):"stroke"===g[0]?this.setStroke(g[1]):"stroke-width"===g[0]?this.setStrokeWeight(g[1]):"stroke-linecap"===g[0]?this.setStrokeCap(g[1]):"stroke-linejoin"===g[0]?this.setStrokeJoin(g[1]):"stroke-opacity"===g[0]?this.setStrokeOpacity(g[1]):"opacity"===g[0]&&this.setOpacity(g[1])}}};d.prototype.setFillOpacity=function(a){this.fillOpacity=parseFloat(a);this.fillColor=255*this.fillOpacity<<24|this.fillColor&16777215};d.prototype.setFill=
function(a){var d=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=d|parseInt(a.substring(1),16)&16777215):0===a.indexOf("rgb")?(this.fill=!0,this.fillColor=d|this.parseRGB(a)):0===a.indexOf("url(#")?this.fillName=a.substring(5,a.length-1):b[a]&&(this.fill=!0,this.fillColor=d|parseInt(b[a].substring(1),16)&16777215)};d.prototype.setOpacity=function(a){this.strokeColor=255*parseFloat(a)<<24|this.strokeColor&
16777215;this.fillColor=255*parseFloat(a)<<24|this.fillColor&16777215};d.prototype.setStroke=function(a){var d=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=d|parseInt(a.substring(1),16)&16777215):0===a.indexOf("rgb")?(this.stroke=!0,this.strokeColor=d|this.parseRGB(a)):0===a.indexOf("url(#")?this.strokeName=a.substring(5,a.length-1):b[a]&&(this.stroke=!0,this.strokeColor=d|parseInt(b[a].substring(1),
16)&16777215)};d.prototype.setStrokeWeight=function(a){this.strokeWeight=this.parseUnitSize(a)};d.prototype.setStrokeJoin=function(a){"miter"===a?this.strokeJoin=m.MITER:"round"===a?this.strokeJoin=m.ROUND:"bevel"===a&&(this.strokeJoin=m.BEVEL)};d.prototype.setStrokeCap=function(a){"butt"===a?this.strokeCap=m.SQUARE:"round"===a?this.strokeCap=m.ROUND:"square"===a&&(this.strokeCap=m.PROJECT)};d.prototype.setStrokeOpacity=function(a){this.strokeOpacity=parseFloat(a);this.strokeColor=255*this.strokeOpacity<<
24|this.strokeColor&16777215};d.prototype.parseRGB=function(a){a=a.substring(a.indexOf("(")+1,a.indexOf(")")).split(", ");return a[0]<<16|a[1]<<8|a[2]};d.prototype.parseUnitSize=function(a){var b=a.length-2;return 0>b?a:a.indexOf("pt")===b?1.25*parseFloat(a.substring(0,b)):a.indexOf("pc")===b?15*parseFloat(a.substring(0,b)):a.indexOf("mm")===b?3.543307*parseFloat(a.substring(0,b)):a.indexOf("cm")===b?35.43307*parseFloat(a.substring(0,b)):a.indexOf("in")===b?90*parseFloat(a.substring(0,b)):a.indexOf("px")===
b?parseFloat(a.substring(0,b)):parseFloat(a)};return d}},{}],20:[function(A,x,Q){x.exports=function(g){function k(){}function m(a,d,c){if(a.hasOwnProperty(d)&&"function"===typeof a[d]){var g=a[d];if("$overloads"in g)g.$defaultOverload=c;else if("$overloads"in c||g.length!==c.length){var k;"$overloads"in c?(k=c.$overloads.slice(0),k[g.length]=g,g=c.$defaultOverload):(k=[],k[c.length]=c,k[g.length]=g);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=k;"$methodArgsIndex"in c&&(s.$methodArgsIndex=c.$methodArgsIndex);s.$defaultOverload=g;s.name=d;a[d]=s}}else a[d]=c}function n(b,d){function c(c){a.defineProperty(b,c,{get:function(){return d[c]},set:function(a){d[c]=a},enumerable:!0})}var g=[],k;for(k in d)"function"===typeof d[k]?m(b,k,d[k]):"$"===k.charAt(0)||k in b||g.push(k);for(;0<g.length;)c(g.shift());b.$super=d}k.prototype=g.PConstants;
var a=new k;Object.keys(g).forEach(function(b){a[b]=g[b]});a.defineProperty=function(a,d,c){"defineProperty"in Object?Object.defineProperty(a,d,c):(c.hasOwnProperty("get")&&a.__defineGetter__(d,c.get),c.hasOwnProperty("set")&&a.__defineSetter__(d,c.set))};a.extendClassChain=function(a){for(var d=[a],c=a.$upcast;c;c=c.$upcast)n(c,a),d.push(c),a=c;for(;0<d.length;)d.pop().$self=a};a.extendStaticMembers=function(a,d){n(a,d)};a.extendInterfaceMembers=function(a,d){n(a,d)};a.addMethod=function(a,d,c,g){var k=
a[d];if(k||g){var s=c.length;if("$overloads"in k)k.$overloads[s]=c;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)},m=[];k&&(m[k.length]=k);m[s]=c;e.$overloads=m;e.$defaultOverload=k||c;g&&(e.$methodArgsIndex=s);e.name=d;a[d]=e}}else a[d]=c};a.createJavaArray=function(b,d){var c=null,g=null;if("string"===typeof b)if("boolean"===b)g=!1;else{var k;
k="string"!==typeof b?!1:-1!=="byte int char color float long double".split(" ").indexOf(b);k&&(g=0)}if("number"===typeof d[0])if(k=0|d[0],1>=d.length){c=[];c.length=k;for(var s=0;s<k;++s)c[s]=g}else for(c=[],g=d.slice(1),s=0;s<k;++s)c.push(a.createJavaArray(b,g));return c};a.defineProperty(a,"screenWidth",{get:function(){return window.innerWidth}});a.defineProperty(a,"screenHeight",{get:function(){return window.innerHeight}});return a}},{}],23:[function(A,x,Q){(function(){x.exports=function(g,k){var m=
k.window,n=k.document,a=m.XMLHttpRequest,b=k.noop,d=k.isDOMPresent,c=k.version;g.version=c?c:"@DEV-VERSION@";g.lib={};g.registerLibrary=function(a,b){g.lib[a]=b;b.hasOwnProperty("init")&&b.init(defaultScope)};g.Sketch=function(a){this.attachFunction=a;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(a,b){if(!this.images[a]&&
(d||(this.images[a]=null),b||(b=new Image,b.onload=function(a){return function(){a.pending--}}(this),this.pending++,b.src=a),this.images[a]=b,m.opera)){var c=n.createElement("div");c.appendChild(b);c.style.position="absolute";c.style.opacity=0;c.style.width="1px";c.style.height="1px";this.operaCache[a]||(n.body.appendChild(c),this.operaCache[a]=c)}}};this.sourceCode=void 0;this.attach=function(a){if("function"===typeof this.attachFunction)this.attachFunction(a);else if(this.sourceCode){var b=(new Function("return ("+
this.sourceCode+");"))();b(a);this.attachFunction=b}else throw"Unable to attach sketch to the processing instance";};this.toString=function(){var a,b;b="((function(Sketch) {\n"+("var sketch = new Sketch(\n"+this.sourceCode+");\n");for(a in this.options)if(this.options.hasOwnProperty(a)){var c=this.options[a];b+="sketch.options."+a+" = "+("string"===typeof c?'"'+c+'"':""+c)+";\n"}for(a in this.imageCache)this.options.hasOwnProperty(a)&&(b+='sketch.imageCache.add("'+a+'");\n');return b+"return sketch;\n})(Processing.Sketch))"}};
var l=g.loadSketchFromSources=function(b,e){function c(b,e){var d=new a;d.onreadystatechange=function(){if(4===d.readyState){var b;200!==d.status&&0!==d.status?b="Invalid XHR status "+d.status:""===d.responseText&&(b="withCredentials"in new a&&!1===(new a).withCredentials&&"file:"===m.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(d.responseText,b)}};d.open("GET",b,!0);d.overrideMimeType&&d.overrideMimeType("application/json");d.setRequestHeader("If-Modified-Since","Fri, 01 Jan 1960 00:00:00 GMT");d.send(null)}function d(a,e){function m(c,d){k[a]=c;++u;d&&t.push(e+" ==> "+d);if(u===l)if(0===t.length)try{return new g(b,k.join("\n"))}catch(n){throw console.log("Processing.js: Unable to execute pjs sketch."),n;}else throw"Processing.js: Unable to load pjs sketch files: "+t.join("\n");}if("#"===e.charAt(0)){var x=
n.getElementById(e.substring(1));x?m(x.text||x.textContent):m("","Unable to load pjs sketch: element with id '"+e.substring(1)+"' was not found")}else c(e,m)}for(var k=[],t=[],l=e.length,u=0,x=0;x<l;++x)d(x,e[x])},t=function(){n.removeEventListener("DOMContentLoaded",t,!1);processingInstances=[];g.instances=processingInstances;for(var a=n.getElementsByTagName("canvas"),b,c=0,d=a.length;c<d;c++){var k=a[c].getAttribute("data-processing-sources");null===k&&(k=a[c].getAttribute("data-src"),null===k&&
(k=a[c].getAttribute("datasrc")));if(k){b=k.split(/\s+/g);for(k=0;k<b.length;)b[k]?k++:b.splice(k,1);l(a[c],b)}}a=n.getElementsByTagName("script");d=[];for(c=a.length-1;0<=c;c--)d.push(a[c]);c=0;for(k=d.length;c<k;c++)if(b=d[c],b.getAttribute&&(a=b.getAttribute("type"))&&("text/processing"===a.toLowerCase()||"application/processing"===a.toLowerCase())){var m=b.getAttribute("data-processing-target"),a=void 0;if(m)a=n.getElementById(m);else{for(m=b.nextSibling;m&&1!==m.nodeType;)m=m.nextSibling;m&&
"canvas"===m.nodeName.toLowerCase()&&(a=m)}a&&(b.getAttribute("src")?(b=b.getAttribute("src").split(/\s+/),l(a,b)):(b=b.textContent||b.text,new g(a,b)))}};n.addEventListener("DOMContentLoaded",t,!1);g.reload=function(){if(0<processingInstances.length)for(var a=processingInstances.length-1;0<=a;a--)processingInstances[a]&&processingInstances[a].exit();t()};g.disableInit=function(){n.removeEventListener("DOMContentLoaded",t,!1)};return g}})()},{}],22:[function(A,x,Q){(function(){x.exports=function(g,
k){function m(){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 peg perspective PImage pixels PMatrix2D PMatrix3D PMatrixStack pmouseX pmouseY point pointLight popMatrix popStyle pow print printCamera println printMatrix printProjection PShape PShapeSVG pushMatrix pushStyle quad radians random Random randomSeed rect rectMode red redraw requestImage resetMatrix reverse rotate rotateX rotateY rotateZ round saturation save saveFrame saveStrings scale screenX screenY screenZ second set setup shape shapeMode shared 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(" ");
c&&Object.keys(c).forEach(function(b){a.push(b)});var b={},e,d;e=0;for(d=a.length;e<d;++e)b[a[e]]=null;for(var k in g.lib)if(g.lib.hasOwnProperty(k)&&g.lib[k].exports){var m=g.lib[k].exports;e=0;for(d=m.length;e<d;++e)b[m[e]]=null}return b}function n(a){function c(a){var b=/^\s*/.exec(a);if(b[0].length===a.length)a={left:b[0],middle:"",right:""};else{var e=/\s*$/.exec(a);a={left:b[0],middle:a.substring(b[0].length,e.index),right:e[0]}}a.untrim=function(a){return this.left+a+this.right};return a}function e(a){return a.replace(/^\s+/,
"").replace(/\s+$/,"")}function g(a,b){for(var c=0,e=b.length;c<e;++c)a[b[c]]=null;return a}function k(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function n(a){return a.substring(2,a.length-1)}function y(a,b){var c=M.length;M.push(a);return'"'+b+c+'"'}function x(a){a=a.replace(Ka,function(a){return y(a,"E")});a=a.replace(oa,function(a){return y(a,"D")});return a=a.replace(ub,function(a){return y(a,"H")})}function u(a,b){return a.replace(Gb,function(a,c,e,f,d,Fb){return e!==b?a:y(a,
"G")})}function A(a){this.name=a}function v(a,b){this.params=a;this.methodArgsParam=b}function Q(a){var b=e(a.substring(1,a.length-1));a=[];var c=null;if(""!==b)for(var b=b.split(","),f=0;f<b.length;++f){var d=/\b([A-Za-z_$][\w$]*\b)(\s*"[ABC][\d]*")*\s*$/.exec(b[f]);if(f===b.length-1&&0<=b[f].indexOf("...")){c=new A(d[1]);break}a.push(new A(d[1]))}return new v(a,c)}function N(a){function b(a,e,d,g){a=M[g];f=!0;a=c(a.substring(1,a.length-1));return"__"+d+(""===a.middle?y("("+e.replace(/\.\s*$/,"")+
")","B"):y("("+e.replace(/\.\s*$/,"")+","+a.middle+")","B"))}function e(a,b,c){f=!0;return"__instanceof"+y("("+b+", "+c+")","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 y(a,"F")});a=a.replace(ub,function(a){return y(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 M[b]}).replace(/\[\s*\]/g,"[null]").replace(/\s*\]\s*\[\s*/g,", ");a="{"+a.substring(1,a.length-1)+"}";b="('"+b+"', "+y(a,"A")+")";return"$p.createJavaArray"+y(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=M[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(M[b[1]])?a:""+c});a=a.replace(/\(int\)([^,\]\)\}\?\:\*\+\-\/\^\|\%\&\~<\>\=]+)/g,function(a,b){var e=c(b);return e.untrim("__int_cast("+e.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,e,f,d){return c?(a=M[e],f?"pixels.setPixel"+y("("+a.substring(1,a.length-1)+","+d+")","B"):"pixels.getPixel"+y("("+a.substring(1,a.length-1)+")","B")):b?"pixels.getLength"+
y("()","B"):f?"pixels.set"+y("("+d+")","B"):"pixels.toArray"+y("()","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,
e);while(f);return a=a.replace(/\bthis(\s*"B\d+")/g,"$$constr$1")}function tb(a,b){this.baseInterfaceName=a;this.body=b;b.owner=this}function q(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=ba;var c="class"+ ++wa;ba=c;var e=b[1]+"$"+c,b=new tb(e,Ta(M[b[2]],e,"","implements "+b[1]));b.classId=c;b.scopeId=a;C[c]=b;ba=a;return b}function rc(a,b,c){this.name=a;this.params=b;this.body=c}function Ja(a){a=RegExp(/\b([A-Za-z_$][\w$]*)\s*"B(\d+)"\s*"A(\d+)"/).exec(a);
return new rc("function"!==a[1]?a[1]:null,Q(M[a[2]]),Da(M[a[3]]))}function X(a){this.members=a}function Z(a){a=a.split(",");for(var b=0;b<a.length;++b){var c=a[b].indexOf(":");a[b]=0>c?{value:ia(a[b])}:{label:e(a[b].substring(0,c)),value:ia(e(a[b].substring(c+1)))}}return new X(a)}function S(a){if("("===a.charAt(0)||"["===a.charAt(0))return a.charAt(0)+S(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)?"{"+y(a.substring(1,a.length-
1),"I")+"}":"["+S(a.substring(1,a.length-1))+"]";a=c(a);var b=N(a.middle),b=b.replace(/"[ABC](\d+)"/g,function(a,b){return S(M[b])});return a.untrim(b)}function ea(a){return a.replace(/(\.\s*)?((?:\b[A-Za-z_]|\$)[\w$]*)(\s*\.\s*([A-Za-z_$][\w$]*)(\s*\()?)?/g,function(a,b,c,e,f,d){return b?a:U({name:c,member:f,callSign:!!d})+(e===l?"":e)})}function ka(a,b){this.expr=a;this.transforms=b}function pa(a,b,c){this.name=a;this.value=b;this.isDefault=c}function Yb(a,b){var c=a.indexOf("="),f,d;0>c?(f=a,c=
b,d=!0):(f=a.substring(0,c),c=ia(a.substring(c+1)),d=!1);return new pa(e(f.replace(/(\s*"C\d+")+/g,"")),c,d)}function cb(a){return"int"===a||"float"===a?"0":"boolean"===a?"false":"color"===a?"0x00000000":"null"}function xa(a,b){this.definitions=a;this.varType=b}function Hb(a){this.expression=a}function db(a){if(ya.test(a)){var b=vb.exec(a);a=a.substring(b[0].length).split(",");for(var c=cb(b[2]),e=0;e<a.length;++e)a[e]=Yb(a[e],c);return new xa(a,b[2])}return new Hb(ia(a))}function Ib(a,b,c){this.initStatement=
a;this.condition=b;this.step=c}function Jb(a,b){this.initStatement=a;this.container=b}function jb(a,b){this.initStatement=a;this.container=b}function Ea(a){if(/\bin\b/.test(a))return a=a.substring(1,a.length-1).split(/\bin\b/g),new Jb(db(e(a[0])),ia(a[1]));if(0<=a.indexOf(":")&&0>a.indexOf(";"))return a=a.substring(1,a.length-1).split(":"),new jb(db(e(a[0])),ia(a[1]));a=a.substring(1,a.length-1).split(";");return new Ib(db(e(a[0])),ia(a[1]),ia(a[2]))}function ta(a){a.sort(function(a,b){return b.weight-
a.weight})}function Ua(a,b,c){this.name=a;this.body=b;this.isStatic=c;b.owner=this}function La(a,b,c){this.name=a;this.body=b;this.isStatic=c;b.owner=this}function Zb(a){var b=Ka.exec(a);Ka.lastIndex=0;var c=0<=b[1].indexOf("static"),e=M[n(b[6])];a=ba;var f="class"+ ++wa;ba=f;b="interface"===b[2]?new Ua(b[3],ga(e,b[3],b[4]),c):new La(b[3],Ta(e,b[3],b[4],b[5]),c);b.classId=f;b.scopeId=a;C[f]=b;ba=a;return b}function Kb(a,b,c,e){this.name=a;this.params=b;this.body=c;this.isStatic=e}function Lb(a){a=
oa.exec(a);oa.lastIndex=0;var b=0<=a[1].indexOf("static"),c=";"!==a[6]?M[n(a[6])]:"{}";return new Kb(a[3],Q(M[n(a[4])]),Da(c),b)}function Va(a,b,c){this.definitions=a;this.fieldType=b;this.isStatic=c}function $b(a){var b=vb.exec(a),c=0<=b[1].indexOf("static");a=a.substring(b[0].length).split(/,\s*/g);for(var e=cb(b[2]),f=0;f<a.length;++f)a[f]=Yb(a[f],e);return new Va(a,b[2],c)}function Wa(a,b){this.params=a;this.body=b}function ac(a){a=RegExp(/"B(\d+)"\s*"A(\d+)"/).exec(a);var b=Q(M[a[1]]);return new Wa(b,
Da(M[a[2]]))}function wb(a,b,c,e,f,d){this.name=a;this.interfacesNames=b;this.methodsNames=c;this.fields=e;this.innerClasses=f;this.misc=d;a=0;for(b=e.length;a<b;++a)e[a].owner=this}function Ma(a,b,c,e,f,d,g,h,k){this.name=a;this.baseClassName=b;this.interfacesNames=c;this.functions=e;this.methods=f;this.fields=d;this.cstrs=g;this.innerClasses=h;this.misc=k;a=0;for(b=d.length;a<b;++a)d[a].owner=this}function G(a,b){this.name=a;this.body=b;b.owner=this}function kb(a,b){this.name=a;this.body=b;b.owner=
this}function bc(a){var b=Ka.exec(a);Ka.lastIndex=0;var c=M[n(b[6])];a=ba;var e="class"+ ++wa;ba=e;b="interface"===b[2]?new G(b[3],ga(c,b[3],b[4])):new kb(b[3],Ta(c,b[3],b[4],b[5]));b.classId=e;b.scopeId=a;C[e]=b;ba=a;return b}function lb(a,b,c){this.name=a;this.params=b;this.body=c}function cc(a){a=oa.exec(a);oa.lastIndex=0;return new lb(a[3],Q(M[n(a[4])]),Da(M[n(a[6])]))}function Mb(a,b){this.argument=a;this.misc=b}function dc(a,b){this.argument=a;this.misc=b}function Nb(a,b,c){this.name=a;this.argument=
b;this.misc=c}function V(a){this.expr=a}function Ob(a){this.label=a}function xb(a){for(var b=[],c=0,e=a.length;c<e;++c){var f=a[c];f instanceof xa?b=b.concat(f.getNames()):f instanceof Mb&&f.argument.initStatement instanceof xa?b=b.concat(f.argument.initStatement.getNames()):(f instanceof Ua||f instanceof La||f instanceof G||f instanceof kb||f instanceof lb||f instanceof rc)&&b.push(f.name)}return g({},b)}function f(a){this.statements=a}function h(a){this.statements=a}var fa=m(),da=[];a=a.replace(/\r\n?|\n\r/g,
"\n").replace(/("(?:[^"\\\n]|\\.)*")|('(?:[^'\\\n]|\\.)*')|(([\[\(=|&!\^:?]\s*)(\/(?![*\/])(?:[^\/\\\n]|\\.)*\/[gim]*)\b)|(\/\/[^\n]*\n)|(\/\*(?:(?!\*\/)(?:.|\n))*\*\/)/g,function(a,b,c,e,f,d,g,h){return b||c?(b=da.length,da.push(a),"'"+b+"'"):e?(b=da.length,da.push(d),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");var T,qa=function(a,b,c,e){if(b||e)return a;T=!0;return""};do T=!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,
qa);while(T);var M=function(a){var b=[];a=a.split(/([\{\[\(\)\]\}])/);for(var c=a[0],e=[],f=1;f<a.length;f+=2){var d=a[f];if("["===d||"{"===d||"("===d)e.push(c),c=d;else if("]"===d||"}"===d||")"===d){var g="}"===d?"A":")"===d?"B":"C",h=b.length;b.push(c+d);c=e.pop()+'"'+g+(h+1)+'"'}c+=a[f+1]}b.unshift(c);return b}(a),U,C={},ba,wa=0,Ta,ga,Da,za,ia,Ka=/\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,
oa=/\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,ya=/^((?:(?: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,vb=/^((?:(?: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*/,ub=/\bfunction(?:\s+([A-Za-z_$][\w$]*))?\s*("B\d+")\s*("A\d+")/g;A.prototype.toString=function(){return this.name};
v.prototype.getNames=function(){for(var a=[],b=0,c=this.params.length;b<c;++b)a.push(this.params[b].name);return a};v.prototype.prependMethodArgs=function(a){return this.methodArgsParam?"{\nvar "+this.methodArgsParam.name+" = Array.prototype.slice.call(arguments, "+this.params.length+");\n"+a.substring(1):a};v.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)+")"};tb.prototype.toString=
function(){return"new ("+this.body+")"};rc.prototype.toString=function(){var a=U,b=g({"this":null},this.params.getNames());U=function(c){return b.hasOwnProperty(c.name)?c.name:a(c)};var c="function";this.name&&(c+=" "+this.name);var e=this.params.prependMethodArgs(this.body.toString()),c=c+(this.params+" "+e);U=a;return c};X.prototype.toString=function(){var a=U;U=function(b){return"this"===b.name?"this":a(b)};for(var b="",c=0,e=this.members.length;c<e;++c)this.members[c].label&&(b+=this.members[c].label+
": "),b+=this.members[c].value.toString()+", ";U=a;return b.substring(0,b.length-2)};ka.prototype.toString=function(){var a=this.transforms;return ea(this.expr).replace(/"!(\d+)"/g,function(b,c){return a[c].toString()})};ia=function(a){var b=[];a=S(a);a=a.replace(/"H(\d+)"/g,function(a,c){b.push(Ja(M[c]));return'"!'+(b.length-1)+'"'});a=a.replace(/"F(\d+)"/g,function(a,c){b.push(q(M[c]));return'"!'+(b.length-1)+'"'});a=a.replace(/"I(\d+)"/g,function(a,c){b.push(Z(M[c]));return'"!'+(b.length-1)+'"'});
return new ka(a,b)};pa.prototype.toString=function(){return this.name+" = "+this.value};xa.prototype.getNames=function(){for(var a=[],b=0,c=this.definitions.length;b<c;++b)a.push(this.definitions[b].name);return a};xa.prototype.toString=function(){return"var "+this.definitions.join(",")};Hb.prototype.toString=function(){return this.expression.toString()};Ib.prototype.toString=function(){return"("+this.initStatement+"; "+this.condition+"; "+this.step+")"};Jb.prototype.toString=function(){var a=this.initStatement.toString();
0<=a.indexOf("=")&&(a=a.substring(0,a.indexOf("=")));return"("+a+" in "+this.container+")"};jb.iteratorId=0;jb.prototype.toString=function(){var a=this.initStatement.toString(),b="$it"+jb.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)")+";)"};Ua.prototype.toString=function(){return""+this.body};La.prototype.toString=function(){return""+this.body};Kb.prototype.toString=
function(){var a=g({},this.params.getNames()),b=U;U=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";U=b;return c};Va.prototype.getNames=function(){for(var a=[],b=0,c=this.definitions.length;b<c;++b)a.push(this.definitions[b].name);return a};Va.prototype.toString=function(){var a=U({name:"[this]"});if(this.isStatic){for(var b=this.owner.name,c=[],e=0,f=this.definitions.length;e<f;++e){var d=
this.definitions[e],g=d.name,h=b+"."+g;c.push("if("+h+" === void(0)) {\n "+h+" = "+d.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+".")};Wa.prototype.toString=function(){var a=g({},this.params.getNames()),b=U;U=function(c){return a.hasOwnProperty(c.name)?c.name:b(c)};var c="function $constr_"+this.params.params.length+this.params.toString(),e=this.params.prependMethodArgs(this.body.toString());
/\$(superCstr|constr)\b/.test(e)||(e="{\n$superCstr();\n"+e.substring(1));U=b;return c+e+"\n"};wb.prototype.getMembers=function(a,b,c){this.owner.base&&this.owner.base.body.getMembers(a,b,c);var e,f,d,g;e=0;for(d=this.fields.length;e<d;++e){var h=this.fields[e].getNames();f=0;for(g=h.length;f<g;++f)a[h[f]]=this.fields[e]}e=0;for(d=this.methodsNames.length;e<d;++e)b[this.methodsNames[e]]=!0;e=0;for(d=this.innerClasses.length;e<d;++e)a=this.innerClasses[e],c[a.name]=a};wb.prototype.toString=function(){for(var a=
this.owner,b=0;a;)++b,a=a.scope;var a=this.name,c=b="";this.getMembers({},{},{});var e,f;if(this.owner.interfaces){var d=[],g;e=0;for(f=this.interfacesNames.length;e<f;++e)this.owner.interfaces[e]&&(g=U({name:this.interfacesNames[e]}),d.push(g),b+="$p.extendInterfaceMembers("+a+", "+g+");\n");c+=a+".$interfaces = ["+d.join(", ")+"];\n"}c=c+(a+".$isInterface = true;\n")+(a+".$methods = ['"+this.methodsNames.join("', '")+"'];\n");ta(this.innerClasses);e=0;for(f=this.innerClasses.length;e<f;++e)d=this.innerClasses[e],
d.isStatic&&(b+=a+"."+d.name+" = "+d+";\n");e=0;for(f=this.fields.length;e<f;++e)d=this.fields[e],d.isStatic&&(b+=a+"."+d.definitions.join(";\n"+a+".")+";\n");return"(function() {\nfunction "+a+"() { throw 'Unable to create the interface'; }\n"+b+c+"return "+a+";\n})()"};ga=function(a,b,e){a=a.substring(1,a.length-1);a=x(a);a=u(a,b);var f=[],d=[];a=a.replace(/"([DE])(\d+)"/g,function(a,b,c){"D"===b?f.push(c):"E"===b&&d.push(c);return""});a=a.split(/;(?:\s*;)*/g);var g,h;e!==l&&(g=e.replace(/^\s*extends\s+(.+?)\s*$/g,
"$1").split(/\s*,\s*/g));e=0;for(h=f.length;e<h;++e){var k=Lb(M[f[e]]);f[e]=k.name}e=0;for(h=a.length-1;e<h;++e)k=c(a[e]),a[e]=$b(k.middle);k=a.pop();e=0;for(h=d.length;e<h;++e)d[e]=Zb(M[d[e]]);return new wb(b,g,f,a,d,{tail:k})};Ma.prototype.getMembers=function(a,b,c){this.owner.base&&this.owner.base.body.getMembers(a,b,c);var e,f,d,g;e=0;for(d=this.fields.length;e<d;++e){var h=this.fields[e].getNames();f=0;for(g=h.length;f<g;++f)a[h[f]]=this.fields[e]}e=0;for(d=this.methods.length;e<d;++e)a=this.methods[e],
b[a.name]=a;e=0;for(d=this.innerClasses.length;e<d;++e)b=this.innerClasses[e],c[b.name]=b};Ma.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",f="",d="",g={},h={},k={};this.getMembers(g,h,k);var m=U;U=function(c){var e=c.name;return"this"===e?c.callSign||!c.member?a+".$self":a:g.hasOwnProperty(e)?g[e].isStatic?b+"."+e:a+"."+e:k.hasOwnProperty(e)?a+"."+e:h.hasOwnProperty(e)?h[e].isStatic?b+"."+e:a+".$self."+
e:m(c)};var l;this.baseClassName?(l=m({name:this.baseClassName}),c=c+("var $super = { $upcast: "+a+" };\n")+("function $superCstr(){"+l+".apply($super,arguments);if(!('$self' in $super)) $p.extendClassChain($super)}\n"),d+=b+".$base = "+l+";\n"):c+="function $superCstr(){$p.extendClassChain("+a+")}\n";this.owner.base&&(f+="$p.extendStaticMembers("+b+", "+l+");\n");var t,n,s;if(this.owner.interfaces){n=[];l=0;for(t=this.interfacesNames.length;l<t;++l)this.owner.interfaces[l]&&(s=m({name:this.interfacesNames[l]}),
n.push(s),f+="$p.extendInterfaceMembers("+b+", "+s+");\n");d+=b+".$interfaces = ["+n.join(", ")+"];\n"}0<this.functions.length&&(c+=this.functions.join("\n")+"\n");ta(this.innerClasses);l=0;for(t=this.innerClasses.length;l<t;++l)n=this.innerClasses[l],n.isStatic?(f+=b+"."+n.name+" = "+n+";\n",c+=a+"."+n.name+" = "+b+"."+n.name+";\n"):c+=a+"."+n.name+" = "+n+";\n";l=0;for(t=this.fields.length;l<t;++l){var u=this.fields[l];if(u.isStatic)for(f+=b+"."+u.definitions.join(";\n"+b+".")+";\n",n=0,s=u.definitions.length;n<
s;++n)var q=u.definitions[n].name,v=b+"."+q,c=c+("$p.defineProperty("+a+", '"+q+"', {get: function(){return "+v+"}, set: function(val){"+v+" = val}});\n");else c+=a+"."+u.definitions.join(";\n"+a+".")+";\n"}n={};l=0;for(t=this.methods.length;l<t;++l)s=this.methods[l],u=n[s.name],q=s.name+"$"+s.params.params.length,v=!!s.params.methodArgsParam,u?(++u,q+="_"+u):u=1,s.methodId=q,n[s.name]=u,s.isStatic?(f+=s,f+="$p.addMethod("+b+", '"+s.name+"', "+q+", "+v+");\n"):c+=s,c+="$p.addMethod("+a+", '"+s.name+
"', "+q+", "+v+");\n";c+=e(this.misc.tail);0<this.cstrs.length&&(c+=this.cstrs.join("\n")+"\n");c+="function $constr() {\n";n=[];l=0;for(t=this.cstrs.length;l<t;++l)s=this.cstrs[l].params.params.length,n.push("if(arguments.length "+(this.cstrs[l].params.methodArgsParam?">=":"===")+" "+s+") { $constr_"+s+".apply("+a+", arguments); }");0<n.length&&(c+=n.join(" else ")+" else ");c+="$superCstr();\n}\n";c+="$constr.apply(null, arguments);\n";U=m;return"(function() {\nfunction "+b+"() {\n"+c+"}\n"+f+d+
"return "+b+";\n})()"};Ta=function(a,b,e,f){a=a.substring(1,a.length-1);a=x(a);a=u(a,b);var d=[],g=[],h=[],k=[];a=a.replace(/"([DEGH])(\d+)"/g,function(a,b,c){"D"===b?d.push(c):"E"===b?g.push(c):"H"===b?k.push(c):h.push(c);return""});a=a.replace(/^(?:\s*;)+/,"").split(/;(?:\s*;)*/g);var m,n;e!==l&&(m=e.replace(/^\s*extends\s+([A-Za-z_$][\w$]*\b(?:\s*\.\s*[A-Za-z_$][\w$]*\b)*)\s*$/g,"$1"));f!==l&&(n=f.replace(/^\s*implements\s+(.+?)\s*$/g,"$1").split(/\s*,\s*/g));for(e=0;e<k.length;++e)k[e]=Ja(M[k[e]]);
for(e=0;e<d.length;++e)d[e]=Lb(M[d[e]]);for(e=0;e<a.length-1;++e)f=c(a[e]),a[e]=$b(f.middle);f=a.pop();for(e=0;e<h.length;++e)h[e]=ac(M[h[e]]);for(e=0;e<g.length;++e)g[e]=Zb(M[g[e]]);return new Ma(b,m,n,k,d,a,h,g,{tail:f})};G.prototype.toString=function(){return"var "+this.name+" = "+this.body+";\n$p."+this.name+" = "+this.name+";\n"};kb.prototype.toString=function(){return"var "+this.name+" = "+this.body+";\n$p."+this.name+" = "+this.name+";\n"};lb.prototype.toString=function(){var a=g({},this.params.getNames()),
b=U;U=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+";";U=b;return c};Mb.prototype.toString=function(){return this.misc.prefix+this.argument.toString()};dc.prototype.toString=function(){return this.misc.prefix+this.argument.toString()};Nb.prototype.toString=function(){var a=this.misc.prefix;this.argument!==l&&(a+=this.argument.toString());return a};V.prototype.toString=
function(){return"case "+this.expr+":"};Ob.prototype.toString=function(){return this.label};za=function(a,b,f){var d=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),g=[];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,k,m;null!==(k=d.exec(a));){if(k[1]!==l)m=a.lastIndexOf('"B',d.lastIndex),h=a.substring(h,m),"for"===k[1]?g.push(new Mb(Ea(M[k[2]]),
{prefix:h})):"catch"===k[1]?g.push(new dc(Q(M[k[2]]),{prefix:h})):g.push(new Nb(k[1],ia(M[k[2]]),{prefix:h}));else if(k[3]!==l)g.push(new Nb(k[3],l,{prefix:a.substring(h,d.lastIndex)}));else if(k[4]!==l){m=a.substring(h,d.lastIndex-k[4].length);if(0!==e(m).length)continue;g.push(m);h=k[4].charAt(1);k=k[5];"D"===h?g.push(b(M[k])):"E"===h?g.push(f(M[k])):"H"===h?g.push(Ja(M[k])):g.push(Da(M[k]))}else if(k[6]!==l)g.push(new V(ia(e(k[7]))));else if(k[8]!==l){m=a.substring(h,d.lastIndex-k[8].length);if(0!==
e(m).length)continue;g.push(new Ob(a.substring(h,d.lastIndex)))}else k=c(a.substring(h,d.lastIndex-1)),g.push(k.left),g.push(db(k.middle)),g.push(k.right+";");h=d.lastIndex}b=c(a.substring(h));g.push(b.left);""!==b.middle&&(g.push(db(b.middle)),g.push(";"+b.right));return g};f.prototype.toString=function(){var a=xb(this.statements),b=U;k(a)||(U=function(c){return a.hasOwnProperty(c.name)?c.name:b(c)});var c="{\n"+this.statements.join("")+"\n}";U=b;return c};Da=function(a){a=c(a.substring(1,a.length-
1));return new f(za(a.middle))};h.prototype.toString=function(){for(var a=[],c=[],e,f=0,g=this.statements.length;f<g;++f)e=this.statements[f],e instanceof kb||e instanceof G?a.push(e):c.push(e);ta(a);var h=xb(this.statements);U=function(a){a=a.name;return h.hasOwnProperty(a)?a:fa.hasOwnProperty(a)||d.hasOwnProperty(a)||b.hasOwnProperty(a)?"$p."+a:a};a="// this code was autogenerated from PJS\n(function($p) {\n"+a.join("")+"\n"+c.join("")+"\n})";U=null;return a};a=function(){var a=x(M[0]),a=a.replace(/\bimport\s+[^;]+;/g,
"");return new h(za(a,cc,bc))}();(function(a){function b(a,e){for(var f=e.split("."),d=a.scope,g;d;){if(d.hasOwnProperty(f[0])){g=d[f[0]];break}d=d.scope}g===l&&(g=c[f[0]]);for(var d=1,h=f.length;d<h&&g;++d)g=g.inScope[f[d]];return g}var c={},e;for(e in C)if(C.hasOwnProperty(e)){a=C[e];var f=a.scopeId,d=a.name;f?(f=C[f],a.scope=f,f.inScope===l&&(f.inScope={}),f.inScope[d]=a):c[d]=a}for(e in C)if(C.hasOwnProperty(e)){a=C[e];if(d=a.body.baseClassName)if(d=b(a,d))a.base=d,d.derived||(d.derived=[]),d.derived.push(a);
var d=a.body.interfacesNames,f=[],g,h;if(d&&0<d.length){g=0;for(h=d.length;g<h;++g){var k=b(a,d[g]);f.push(k);k&&(k.derived||(k.derived=[]),k.derived.push(a))}0<f.length&&(a.interfaces=f)}}})(a);(function(a){function b(a,e){var d=c[a];if(!d)return!1;var f=d.indexOf(e);if(0>f)return!1;d.splice(f,1);if(0<d.length)return!1;delete c[a];return!0}a=[];var c={},e,f,d;for(e in C)if(C.hasOwnProperty(e))if(d=C[e],d.inScope||d.derived){var g=[];if(d.inScope)for(f in d.inScope)d.inScope.hasOwnProperty(f)&&g.push(d.inScope[f]);
d.derived&&(g=g.concat(d.derived));c[e]=g}else a.push(e),d.weight=0;for(;0<a.length;)if(e=a.shift(),d=C[e],d.scopeId&&b(d.scopeId,d)&&(a.push(d.scopeId),C[d.scopeId].weight=d.weight+1),d.base&&b(d.base.classId,d)&&(a.push(d.base.classId),d.base.weight=d.weight+1),d.interfaces)for(e=0,f=d.interfaces.length;e<f;++e)d.interfaces[e]&&b(d.interfaces[e].classId,d)&&(a.push(d.interfaces[e].classId),d.interfaces[e].weight=d.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 e=b[c];return"/"===e.charAt(0)?e:/^'((?:[^'\\\n])|(?:\\.[0-9A-Fa-f]*))'$/.test(e)?"(new $p.Character("+e+"))":e})}(a,da)}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*$/,"")},k=0,m=c.length;k<m;k++){var l=c[k].split("=");if(l&&2===l.length){var n=g(l[0]),x=g(l[1]),l=[];if("preload"===n)for(l=x.split(","),n=0,x=l.length;n<x;n++){var v=g(l[n]);b.imageCache.add(v)}else if("font"===n)for(l=x.split(","),n=0,x=l.length;n<x;n++){var v=g(l[n]),A=/^\{(\d*?)\}$/.exec(v);PFont.preloading.add(A?JSON.parse("{"+d[A[1]]+"}"):v)}else"pauseOnBlur"===n?b.options.pauseOnBlur="true"===x:"globalKeyEvents"===
n?b.options.globalKeyEvents="true"===x:"param-"===n.substring(0,6)?b.params[n.substring(6)]=x:b.options[n]=x}}return a}var b=k.defaultScope,d=b.PConstants,c=k.aFunctions,l;g.compile=function(b){var c=new g.Sketch;b=a(b,c);b=n(b);c.sourceCode=b;return c};return g}})()},{}],24:[function(A,x,Q){x.exports=function(g,k,m){return function(n,a){n.__contains=function(b,d){return"string"!==typeof b?b.contains.apply(b,a(arguments)):null!==b&&null!==d&&"string"===typeof d&&-1<b.indexOf(d)};n.__replaceAll=function(b,
d,c){return"string"!==typeof b?b.replaceAll.apply(b,a(arguments)):b.replace(RegExp(d,"g"),c)};n.__replaceFirst=function(b,d,c){return"string"!==typeof b?b.replaceFirst.apply(b,a(arguments)):b.replace(RegExp(d,""),c)};n.__replace=function(b,d,c){if("string"!==typeof b)return b.replace.apply(b,a(arguments));if(d instanceof RegExp)return b.replace(d,c);"string"!==typeof d&&(d=d.toString());if(""===d)return b;var g=b.indexOf(d);if(0>g)return b;var k=0,m="";do m+=b.substring(k,g)+c,k=g+d.length;while(0<=
(g=b.indexOf(d,k)));return m+b.substring(k)};n.__equals=function(b,d){return b.equals instanceof Function?b.equals.apply(b,a(arguments)):k(b,d)};n.__equalsIgnoreCase=function(b,d){return"string"!==typeof b?b.equalsIgnoreCase.apply(b,a(arguments)):b.toLowerCase()===d.toLowerCase()};n.__toCharArray=function(b){if("string"!==typeof b)return b.toCharArray.apply(b,a(arguments));for(var d=[],c=0,g=b.length;c<g;++c)d[c]=new Char(b.charAt(c));return d};n.__split=function(b,d,c){if("string"!==typeof b)return b.split.apply(b,
a(arguments));var g=RegExp(d);if(c===m||1>c)return b.split(g);for(var k=[],n=b,e;-1!==(e=n.search(g))&&k.length<c-1;){var x=g.exec(n).toString();k.push(n.substring(0,e));n=n.substring(e+x.length)}-1===e&&""===n||k.push(n);return k};n.__codePointAt=function(a,d){var c=a.charCodeAt(d),g;return 55296<=c&&56319>=c?(g=a.charCodeAt(d+1),1024*(c-55296)+(g-56320)+65536):c};n.__matches=function(a,d){return RegExp(d).test(a)};n.__startsWith=function(b,d,c){if("string"!==typeof b)return b.startsWith.apply(b,
a(arguments));c=c||0;return 0>c||c>b.length?!1:""===d||d===b?!0:b.indexOf(d)===c};n.__endsWith=function(b,d){if("string"!==typeof b)return b.endsWith.apply(b,a(arguments));var c=d?d.length:0;return""===d||d===b?!0:b.indexOf(d)===b.length-c};n.__hashCode=function(b){return b.hashCode instanceof Function?b.hashCode.apply(b,a(arguments)):g(b)};n.__printStackTrace=function(a){n.println("Exception: "+a.toString())}}}},{}],25:[function(A,x,Q){x.exports=function(g,k,m,n,a){function b(a,b){var c=a,d=0,k=
0;g.pmouseX=g.mouseX;g.pmouseY=g.mouseY;if(c.offsetParent){do d+=c.offsetLeft,k+=c.offsetTop;while(c=c.offsetParent)}c=a;do d-=c.scrollLeft||0,k-=c.scrollTop||0;while(c=c.parentNode);var m,l,x,u;n.defaultView&&n.defaultView.getComputedStyle&&(m=parseInt(n.defaultView.getComputedStyle(a,null).paddingLeft,10)||0,l=parseInt(n.defaultView.getComputedStyle(a,null).paddingTop,10)||0,x=parseInt(n.defaultView.getComputedStyle(a,null).borderLeftWidth,10)||0,u=parseInt(n.defaultView.getComputedStyle(a,null).borderTopWidth,
10)||0);d=d+m+x;k=k+l+u;d+=window.pageXOffset;k+=window.pageYOffset;return{X:d,Y:k}}function d(a,c){var e=b(a,c);g.mouseX=c.pageX-e.X;g.mouseY=c.pageY-e.Y}function c(a){var c=b(a.changedTouches[0].target,a.changedTouches[0]),e;for(e=0;e<a.touches.length;e++){var d=a.touches[e];d.offsetX=d.pageX-c.X;d.offsetY=d.pageY-c.Y}for(e=0;e<a.targetTouches.length;e++)d=a.targetTouches[e],d.offsetX=d.pageX-c.X,d.offsetY=d.pageY-c.Y;for(e=0;e<a.changedTouches.length;e++)d=a.changedTouches[e],d.offsetX=d.pageX-
c.X,d.offsetY=d.pageY-c.Y;return a}m(k,"touchstart",function(b){k.setAttribute("style","-webkit-user-select: none");k.setAttribute("onclick","void(0)");k.setAttribute("style","-webkit-tap-highlight-color:rgba(0,0,0,0)");for(var l=0,e=eventHandlers.length;l<e;l++){var n=eventHandlers[l].type;"mouseout"!==n&&"mousemove"!==n&&"mousedown"!==n&&"mouseup"!==n&&"DOMMouseScroll"!==n&&"mousewheel"!==n&&"touchstart"!==n||detachEventHandler(eventHandlers[l])}g.touchStart!==a||g.touchMove!==a||g.touchEnd!==a||
g.touchCancel!==a?(m(k,"touchstart",function(b){g.touchStart!==a&&(b=c(b),g.touchStart(b))}),m(k,"touchmove",function(b){g.touchMove!==a&&(b.preventDefault(),b=c(b),g.touchMove(b))}),m(k,"touchend",function(b){g.touchEnd!==a&&(b=c(b),g.touchEnd(b))}),m(k,"touchcancel",function(b){g.touchCancel!==a&&(b=c(b),g.touchCancel(b))})):(m(k,"touchstart",function(a){d(k,a.touches[0]);g.__mousePressed=!0;g.mouseDragging=!1;g.mouseButton=PConstants.LEFT;"function"===typeof g.mousePressed&&g.mousePressed()}),
m(k,"touchmove",function(a){a.preventDefault();d(k,a.touches[0]);"function"!==typeof g.mouseMoved||g.__mousePressed||g.mouseMoved();"function"===typeof g.mouseDragged&&g.__mousePressed&&(g.mouseDragged(),g.mouseDragging=!0)}),m(k,"touchend",function(a){g.__mousePressed=!1;"function"!==typeof g.mouseClicked||g.mouseDragging||g.mouseClicked();"function"===typeof g.mouseReleased&&g.mouseReleased()}));k.dispatchEvent(b)});(function(){var a=!0,b=function(a){a.preventDefault();a.stopPropagation()};g.disableContextMenu=
function(){a&&(m(k,"contextmenu",b),a=!1)};g.enableContextMenu=function(){a||(detachEventHandler({elem:k,type:"contextmenu",fn:b}),a=!0)}})();m(k,"mousemove",function(a){d(k,a);"function"!==typeof g.mouseMoved||g.__mousePressed||g.mouseMoved();"function"===typeof g.mouseDragged&&g.__mousePressed&&(g.mouseDragged(),g.mouseDragging=!0)});m(k,"mouseout",function(a){"function"===typeof g.mouseOut&&g.mouseOut()});m(k,"mouseover",function(a){d(k,a);"function"===typeof g.mouseOver&&g.mouseOver()});k.onmousedown=
function(){k.focus();return!1};m(k,"mousedown",function(a){g.__mousePressed=!0;g.mouseDragging=!1;switch(a.which){case 1:g.mouseButton=PConstants.LEFT;break;case 2:g.mouseButton=PConstants.CENTER;break;case 3:g.mouseButton=PConstants.RIGHT}"function"===typeof g.mousePressed&&g.mousePressed()});m(k,"mouseup",function(a){g.__mousePressed=!1;"function"!==typeof g.mouseClicked||g.mouseDragging||g.mouseClicked();"function"===typeof g.mouseReleased&&g.mouseReleased()});var l=function(a){var b=0;a.wheelDelta?
(b=a.wheelDelta/120,window.opera&&(b=-b)):a.detail&&(b=-a.detail/3);(g.mouseScroll=b)&&"function"===typeof g.mouseScrolled&&g.mouseScrolled()};m(n,"DOMMouseScroll",l);m(n,"mousewheel",l)}},{}],26:[function(A,x,Q){x.exports=function(g){if(g instanceof Array){var k=-1;this.hasNext=function(){return++k<g.length};this.next=function(){return g[k]}}else{if(g.iterator instanceof Function)return g.iterator();throw"Unable to iterate: "+g;}}},{}],21:[function(A,x,Q){(function(){x.exports=function(g,k){function m(a,
b){return a in l?l[a]:"function"===typeof l[b]?l[b]:function(a){if(a instanceof Array)return a;if("number"===typeof a){var b=[];b.length=a;return b}}}var n=g.defaultScope,a=g.extend,b=g.Browser,d=b.ajax,c=b.navigator,l=b.window,t=b.document,s=g.noop,e=n.PConstants;PFont=n.PFont;PShapeSVG=n.PShapeSVG;PVector=n.PVector;Char=Character=n.Char;ObjectIterator=n.ObjectIterator;XMLElement=n.XMLElement;XML=n.XML;var x=l.HTMLCanvasElement,A=l.HTMLImageElement,B=l.localStorage;t.head||(t.head=t.getElementsByTagName("head")[0]);
var y=m("Float32Array","WebGLFloatArray"),Q=m("Int32Array","WebGLIntArray"),u=m("Uint16Array","WebGLUnsignedShortArray"),sd=m("Uint8Array","WebGLUnsignedByteArray");if(9<=t.documentMode&&!t.doctype)throw"The doctype directive is missing. The recommended doctype in Internet Explorer is the HTML5 doctype: <!DOCTYPE html>";var v=[],Xb={},N=this.Processing=function(b,g,m){function Ja(a,R,b){a.addEventListener?a.addEventListener(R,b,!1):a.attachEvent("on"+R,b);xb.push({elem:a,type:R,fn:b})}function X(a,
R,b,c){var e=Ga.locations[a];e===k&&(e=h.getUniformLocation(R,b),Ga.locations[a]=e);null!==e&&(4===c.length?h.uniform4fv(e,c):3===c.length?h.uniform3fv(e,c):2===c.length?h.uniform2fv(e,c):h.uniform1f(e,c))}function Z(a,R,b,c){var e=Ga.locations[a];e===k&&(e=h.getUniformLocation(R,b),Ga.locations[a]=e);null!==e&&(4===c.length?h.uniform4iv(e,c):3===c.length?h.uniform3iv(e,c):2===c.length?h.uniform2iv(e,c):h.uniform1i(e,c))}function S(a,R,b,c,e){var d=Ga.locations[a];d===k&&(d=h.getUniformLocation(R,
b),Ga.locations[a]=d);-1!==d&&(16===e.length?h.uniformMatrix4fv(d,c,e):9===e.length?h.uniformMatrix3fv(d,c,e):h.uniformMatrix2fv(d,c,e))}function ea(a,R,b,c,e){var d=Ga.attributes[a];d===k&&(d=h.getAttribLocation(R,b),Ga.attributes[a]=d);-1!==d&&(h.bindBuffer(h.ARRAY_BUFFER,e),h.vertexAttribPointer(d,c,h.FLOAT,!1,0,0),h.enableVertexAttribArray(d))}function ka(a,R,b){var c=Ga.attributes[a];c===k&&(c=h.getAttribLocation(R,b),Ga.attributes[a]=c);-1!==c&&h.disableVertexAttribArray(c)}function pa(a,R,
b,c){Xa===e.HSB?(b=f.color.toRGB(a,R,b),a=b[0],R=b[1],b=b[2]):(a=Math.round(255*(a/ua)),R=Math.round(255*(R/Fa)),b=Math.round(255*(b/va)));c=Math.round(255*(c/ja));a=0>a?0:a;R=0>R?0:R;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<R?255:R)<<8&e.GREEN_MASK|(255<b?255:b)&e.BLUE_MASK}function Yb(a){if(a<=ua&&0<=a){if(Xa===e.RGB)return pa(a,a,a,ja);if(Xa===e.HSB)return pa(0,0,a/ua*va,ja)}if(a)return 2147483647<a&&(a-=4294967296),a}function cb(a){var R,b,c;R=
((a&e.RED_MASK)>>>16)/255;b=((a&e.GREEN_MASK)>>>8)/255;c=(a&e.BLUE_MASK)/255;a=f.max(f.max(R,b),c);var d=f.min(f.min(R,b),c);if(d===a)return[0,0,a*va];R=(R===a?(b-c)/(a-d):b===a?2+(c-R)/(a-d):4+(R-b)/(a-d))/6;0>R?R+=1:1<R&&(R-=1);return[R*ua,(a-d)/a*Fa,a*va]}function xa(){h.restore();U=Ta=!0}function Hb(){var a=(Date.now()-wc)/1E3;hc++;var b=hc/a;0.5<a&&(wc=Date.now(),hc=0,f.__frameRate=b);f.frameCount++}function db(a){a=parseInt("0x"+a,16);2147483647<a&&(a-=4294967296);return a}function Ib(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 jb(a,b){if("number"===typeof a)return a&4294967295;if("boolean"===typeof a)return a?1:0;if("string"===typeof a)return parseInt(a,b||10)&4294967295;if(a instanceof
Char)return a.code}function Ea(){T&&(U&&(h.fillStyle=f.color.toString(M),U=!1),h.fill())}function ta(){C&&(Ta&&(h.strokeStyle=f.color.toString(wa),Ta=!1),h.stroke())}function Ua(){Ea();ta();h.closePath()}function La(a,b,mb){var c=Rc.shift();c===k&&(c={},c.canvas=t.createElement("canvas"),c.context=c.canvas.getContext("2d"));Rc.push(c);var e=c.canvas,d=c.context;b=b||a.width;mb=mb||a.height;e.width=b;e.height=mb;a?"data"in a?d.putImageData(a,0,0):(d.clearRect(0,0,b,mb),d.drawImage(a,0,0,b,mb)):d.clearRect(0,
0,b,mb);return c}function Zb(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(K){K*=4;var b=a.imageData.data;if(a.isRemote)throw"Image is loaded remotely. Cannot get pixels.";return b[K+3]<<24&e.ALPHA_MASK|b[K]<<16&e.RED_MASK|b[K+1]<<8&e.GREEN_MASK|b[K+2]&e.BLUE_MASK}}(a),setPixel:function(a){return function(K,b){var c=4*K,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 K=[],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)K.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 K}}(a),set:function(a){return function(K){var b,
c,d;if(this.isRemote)throw"Image is loaded remotely. Cannot set pixels.";c=a.imageData.data;for(var f=0,g=K.length;f<g;f++)d=K[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 Kb(a,b,c,gc){var d=new Ha(c,gc,e.ARGB);d.fromImageData(f.toImageData(a,b,c,gc));return d}function Lb(a,b,c,d,f){if(f.isRemote)throw"Image is loaded remotely. Cannot get x,y,w,h.";var g=new Ha(c,d,e.ARGB),h=g.imageData.data,k=f.width,
r=f.height;f=f.imageData.data;var m=Math.max(0,-b),l=Math.max(0,-a);d=Math.min(d,r-b);for(r=Math.min(c,k-a);m<d;++m)for(var n=4*((b+m)*k+(a+l)),p=4*(m*c+l),F=l;F<r;++F)h[p++]=f[n++],h[p++]=f[n++],h[p++]=f[n++],h[p++]=f[n++];g.__isDirty=!0;return g}function Va(){Pb&&(h=Sc,Pb=!1,f.updatePixels())}function $b(){function a(K,b){K[b]=function(){Va();h[b].apply(h,arguments)}}function b(a,K){f.defineProperty(a,K,{get:function(){Va();return h[K]},set:function(a){Va();h[K]=a}})}for(var c in h)"function"===
typeof h[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===k?"":a.toString()}function ac(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+Na:Ya===e.CENTER?g=Za/2-(f-1)*Aa/2:Ya===e.BOTTOM&&(g=-(Na+(f-1)*Aa));for(var h=0;h<f;++h)da.text$line(a[h],b,c+g,d,nb),g+=Aa}function wb(a,b,c,d,f,g){if(0!==a.length&&(0!==d&&0!==f)&&!(Oa>f)){for(var h=-1,k=0,r=0,m=[],l=0,n=
a.length;l<n;l++){var p=a[l],F=" "===p,s=ca.measureTextWidth(p);if("\n"!==p&&r+s<=d)F&&(h=l),r+=s;else{if(h+1===k)if(0<l)h=l;else return;"\n"===p?(m.push({text:a.substring(k,l),width:r}),k=l+1):(m.push({text:a.substring(k,h+1),width:r}),k=h+1);r=0;l=k-1}}k<n&&m.push({text:a.substring(k),width:r});a=1;h=Za;nb===e.CENTER?a=d/2:nb===e.RIGHT&&(a=d);d=m.length;k=Math.min(d,Math.floor(f/Aa));Ya===e.TOP?h=Za+Na:Ya===e.CENTER?h=f/2-Aa*(k/2-1):Ya===e.BOTTOM&&(h=Na+Aa);for(k=0;k<d;k++){l=k*Aa;if(h+l>f-Na)break;
r=m[k];da.text$line(r.text,b+a,c+h+l,g,nb)}}}function Ma(a){da="3D"===a?new D:"2D"===a?new H:new E;for(var b in E.prototype)E.prototype.hasOwnProperty(b)&&0>b.indexOf("$")&&(f[b]=da[b]);da.$init()}function G(a){return function(){Ma("2D");return da[a].apply(this,arguments)}}function kb(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 bc(a){"function"===typeof a.preventDefault?a.preventDefault():
"function"===typeof a.stopPropagation&&a.stopPropagation();return!1}function lb(){for(var a in gb)if(gb.hasOwnProperty(a)){f.__keyPressed=!0;return}f.__keyPressed=!1}function cc(a,b){gb[a]=b;ob=null;f.key=b;f.keyCode=a;f.keyPressed();f.keyCode=0;f.keyTyped();lb()}function Mb(a){var b=kb(a);if(b===e.DELETE)cc(b,new Char(127));else if(0>ud.indexOf(b))ob=b;else{var c=new Char(e.CODED);f.key=c;f.keyCode=b;gb[b]=c;f.keyPressed();ob=null;lb();return bc(a)}}function dc(a){if(null!==ob){var b=ob,c;c=a.which||
a.keyCode;var e=a.shiftKey||a.ctrlKey||a.altKey||a.metaKey;switch(c){case 13:c=e?13:10;break;case 8:c=e?127:8}c=new Char(c);cc(b,c);return bc(a)}}function Nb(a){a=kb(a);var b=gb[a];b!==k&&(f.key=b,f.keyCode=a,f.keyReleased(),delete gb[a],lb())}if(!(this instanceof N))throw"called Processing constructor as if it were a function: missing 'new'.";var V={},Ob=b===k&&g===k,V=Ob?t.createElement("canvas"):"string"===typeof b?t.getElementById(b):b;if(!("getContext"in V))throw"called Processing constructor without passing canvas element reference or id.";
var xb=[],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,V,Ja,t);m&&Object.keys(m).forEach(function(a){f[a]=m[a]});f.externals={canvas:V,context:k,sketch:k,window:l};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=k;f.mouseDragged=k;f.mouseMoved=k;
f.mousePressed=k;f.mouseReleased=k;f.mouseScrolled=k;f.mouseOver=k;f.mouseOut=k;f.touchStart=k;f.touchEnd=k;f.touchMove=k;f.touchCancel=k;f.key=k;f.keyCode=k;f.keyPressed=s;f.keyReleased=s;f.keyTyped=s;f.draw=k;f.setup=k;f.__mousePressed=!1;f.__keyPressed=!1;f.__frameRate=60;f.frameCount=0;f.width=100;f.height=100;var h,fa,da,T=!0,qa=[1,1,1,1],M=4294967295,U=!0,C=!0,ba=[0,0,0,1],wa=4278190080,Ta=!0,ga=1,Da=!1,za=!1,ia=!0,Ka=0,oa=e.CORNER,ya=e.CENTER,Gb=0,vb=0,ub=0,Fb=e.NORMAL_MODE_AUTO,sc=60,Pc=1E3/
sc,td=V.style.cursor,aa=e.POLYGON,tc=0,uc=20,Qc=!1,ib=-3355444,vc=20,ja=255,ua=255,Fa=255,va=255,ec=0,fc=0,Xa=e.RGB,eb=null,xc=null,Tc=Date.now(),wc=Tc,hc=0,Ba,Qb,ic,yb,zb,yc,zc,Ga={attributes:{},locations:{}},z,I,la,Ac,Bc,Cc,jc,Dc,Rb,Ec,Uc,Fc,Vc,kc,Wc,Xc,Yc,Zc=0,$c=0,ad=e.IMAGE,ra=!1,Gc,Hc,Ic,nb=e.LEFT,Ya=e.BASELINE,lc=e.MODEL,Ab="Arial",Oa=12,Za=9,Na=2,Aa=14,ca=PFont.get(Ab,Oa),Sc,Jc=null,Pb=!1,bd,cd=1E3,gb=[],ob=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],O=0,mc=0,pb=0,Pa=[],Qa=[],Ra=[],Sb=new y(e.SINCOS_LENGTH),Tb=new y(e.SINCOS_LENGTH),P,qb,Sa,L,ha,Bb,Cb,Ub,Ia,nc=!1,oc=60*(Math.PI/180),Kc=f.width/2,rb=f.height/2,sb=rb/Math.tan(oc/2),dd=sb/10,ed=10*sb,fd=f.width/f.height,p=[],sa=[],ma=0,Db=!1,Eb=!1,hb=!0,Vb=e.CORNER,gd=[],hd=new y([0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,
-0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5]),id=new y([0.5,0.5,0.5,0.5,-0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,
-0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-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 y([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 y([0,0,0,0,1,0,1,1,0,1,0,0]),wd=new y([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(c.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 e=a.createShader(a.VERTEX_SHADER);a.shaderSource(e,b);a.compileShader(e);if(!a.getShaderParameter(e,a.COMPILE_STATUS))throw a.getShaderInfoLog(e);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,e);a.attachShader(c,b);a.linkProgram(c);if(!a.getProgramParameter(c,a.LINK_STATUS))throw"Error linking shaders.";return c},jd=function(a,b,c,e,d){return{x:a,
y:b,w:c,h:e}},pc=jd,yd=function(a,b,c,e,d){return{x:a,y:b,w:d?c:c-a,h:d?e:e-b}},zd=function(a,b,c,e,d){return{x:a-c/2,y:b-e/2,w:c,h:e}},Y=function(){},H=function(){},D=function(){},E=function(){};H.prototype=new Y;H.prototype.constructor=H;D.prototype=new Y;D.prototype.constructor=D;E.prototype=new Y;E.prototype.constructor=E;Y.prototype.a3DOnlyFunction=s;f.shape=function(a,b,c,d,fb){1<=arguments.length&&null!==arguments[0]&&a.isVisible()&&(f.pushMatrix(),Vb===e.CENTER?5===arguments.length?(f.translate(b-
d/2,c-fb/2),f.scale(d/a.getWidth(),fb/a.getHeight())):3===arguments.length?f.translate(b-a.getWidth()/2,-a.getHeight()/2):f.translate(-a.getWidth()/2,-a.getHeight()/2):Vb===e.CORNER?5===arguments.length?(f.translate(b,c),f.scale(d/a.getWidth(),fb/a.getHeight())):3===arguments.length&&f.translate(b,c):Vb===e.CORNERS&&(5===arguments.length?(d-=b,fb-=c,f.translate(b,c),f.scale(d/a.getWidth(),fb/a.getHeight())):3===arguments.length&&f.translate(b,c)),a.draw(f),(1===arguments.length&&Vb===e.CENTER||1<
arguments.length)&&f.popMatrix())};f.shapeMode=function(a){Vb=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)};var kd=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,e;a instanceof PVector?(c=a.x,e=a.y,b||(b=new PVector)):a instanceof Array&&(c=a[0],e=a[1],b||(b=[]));b instanceof Array?(b[0]=this.elements[0]*c+this.elements[1]*e+this.elements[2],b[1]=
this.elements[3]*c+this.elements[4]*e+this.elements[5]):b instanceof PVector&&(b.x=this.elements[0]*c+this.elements[1]*e+this.elements[2],b.y=this.elements[3]*c+this.elements[4]*e+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,e=0;2>e;e++)for(var d=
0;3>d;d++,c++)b[c]+=this.elements[3*e+0]*a[d+0]+this.elements[3*e+1]*a[d+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],e=this.elements[1];this.elements[0]=b*c+a*e;this.elements[1]=-a*c+b*e;c=this.elements[3];e=this.elements[4];this.elements[3]=b*c+a*e;this.elements[4]=-a*c+b*e},rotateZ:function(a){this.rotate(a)},invRotateZ:function(a){this.rotateZ(a-Math.PI)},print:function(){var a=
kd(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 J=f.PMatrix3D=function(){this.reset()};J.prototype={set:function(){16===arguments.length?this.elements=Array.prototype.slice.call(arguments):1===arguments.length&&arguments[0]instanceof J?this.elements=arguments[0].array():1===arguments.length&&arguments[0]instanceof
Array&&(this.elements=arguments[0].slice())},get:function(){var a=new J;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===k&&(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,e,d,f;a instanceof PVector?(c=a.x,e=a.y,d=a.z,f=1,b||(b=new PVector)):a instanceof Array&&(c=a[0],e=a[1],d=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]*e+this.elements[2]*d+this.elements[3],b[1]=this.elements[4]*c+this.elements[5]*e+this.elements[6]*d+this.elements[7],b[2]=this.elements[8]*c+this.elements[9]*e+this.elements[10]*d+this.elements[11]):4===b.length&&
(b[0]=this.elements[0]*c+this.elements[1]*e+this.elements[2]*d+this.elements[3]*f,b[1]=this.elements[4]*c+this.elements[5]*e+this.elements[6]*d+this.elements[7]*f,b[2]=this.elements[8]*c+this.elements[9]*e+this.elements[10]*d+this.elements[11]*f,b[3]=this.elements[12]*c+this.elements[13]*e+this.elements[14]*d+this.elements[15]*f));b instanceof PVector&&(b.x=this.elements[0]*c+this.elements[1]*e+this.elements[2]*d+this.elements[3],b.y=this.elements[4]*c+this.elements[5]*e+this.elements[6]*d+this.elements[7],
b.z=this.elements[8]*c+this.elements[9]*e+this.elements[10]*d+this.elements[11]);return b},preApply:function(){var a;1===arguments.length&&arguments[0]instanceof J?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,e=0;4>e;e++)for(var d=0;4>d;d++,c++)b[c]+=this.elements[d+0]*a[4*e+0]+this.elements[d+4]*a[4*e+1]+this.elements[d+8]*a[4*e+2]+this.elements[d+
12]*a[4*e+3];this.elements=b.slice()},apply:function(){var a;1===arguments.length&&arguments[0]instanceof J?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,e=0;4>e;e++)for(var d=0;4>d;d++,c++)b[c]+=this.elements[4*e+0]*a[d+0]+this.elements[4*e+1]*a[d+4]+this.elements[4*e+2]*a[d+8]+this.elements[4*e+3]*a[d+12];this.elements=b.slice()},rotate:function(a,
b,c,e){if(c){var d=f.cos(a);a=f.sin(a);var g=1-d;this.apply(g*b*b+d,g*b*c-a*e,g*b*e+a*c,0,g*b*c+a*e,g*c*c+d,g*c*e-a*b,0,g*b*e-a*c,g*c*e+a*b,g*e*e+d,0,0,0,0,1)}else this.rotateZ(a)},invApply:function(){Ub===k&&(Ub=new J);var a=arguments;Ub.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(!Ub.invert())return!1;this.preApply(Ub);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,e){return c?e?this.elements[0]*a+this.elements[1]*b+this.elements[2]*c+this.elements[3]*e: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,e){return c?e?this.elements[4]*a+this.elements[5]*b+this.elements[6]*c+this.elements[7]*e: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,e){return e?this.elements[8]*a+this.elements[9]*b+this.elements[10]*c+this.elements[11]*e:this.elements[8]*a+this.elements[9]*b+this.elements[10]*c+this.elements[11]},multW:function(a,b,c,e){return e?this.elements[12]*a+
this.elements[13]*b+this.elements[14]*c+this.elements[15]*e: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],e=this.elements[1]*this.elements[6]-this.elements[2]*this.elements[5],d=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],k=this.elements[8]*this.elements[15]-this.elements[11]*this.elements[12],m=this.elements[9]*this.elements[14]-this.elements[10]*this.elements[13],l=this.elements[9]*this.elements[15]-this.elements[11]*this.elements[13],n=this.elements[10]*this.elements[15]-this.elements[11]*this.elements[14],
p=a*n-b*l+c*m+e*k-d*h+f*g;if(1E-9>=Math.abs(p))return!1;var F=[];F[0]=+this.elements[5]*n-this.elements[6]*l+this.elements[7]*m;F[4]=-this.elements[4]*n+this.elements[6]*k-this.elements[7]*h;F[8]=+this.elements[4]*l-this.elements[5]*k+this.elements[7]*g;F[12]=-this.elements[4]*m+this.elements[5]*h-this.elements[6]*g;F[1]=-this.elements[1]*n+this.elements[2]*l-this.elements[3]*m;F[5]=+this.elements[0]*n-this.elements[2]*k+this.elements[3]*h;F[9]=-this.elements[0]*l+this.elements[1]*k-this.elements[3]*
g;F[13]=+this.elements[0]*m-this.elements[1]*h+this.elements[2]*g;F[2]=+this.elements[13]*f-this.elements[14]*d+this.elements[15]*e;F[6]=-this.elements[12]*f+this.elements[14]*c-this.elements[15]*b;F[10]=+this.elements[12]*d-this.elements[13]*c+this.elements[15]*a;F[14]=-this.elements[12]*e+this.elements[13]*b-this.elements[14]*a;F[3]=-this.elements[9]*f+this.elements[10]*d-this.elements[11]*e;F[7]=+this.elements[8]*f-this.elements[10]*c+this.elements[11]*b;F[11]=-this.elements[8]*d+this.elements[9]*
c-this.elements[11]*a;F[15]=+this.elements[8]*e-this.elements[9]*b+this.elements[10]*a;a=1/p;F[0]*=a;F[1]*=a;F[2]*=a;F[3]*=a;F[4]*=a;F[5]*=a;F[6]*=a;F[7]*=a;F[8]*=a;F[9]*=a;F[10]*=a;F[11]*=a;F[12]*=a;F[13]*=a;F[14]*=a;F[15]*=a;this.elements=F.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=kd(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=
da.$newPMatrix();1===arguments.length?a.set(arguments[0]):a.set(arguments);this.matrixStack.push(a)};H.prototype.$newPMatrix=function(){return new $a};D.prototype.$newPMatrix=function(){return new J};ab.prototype.push=function(){this.matrixStack.push(this.peek())};ab.prototype.pop=function(){return this.matrixStack.pop()};ab.prototype.peek=function(){var a=da.$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===k)return a.split(/\s+/g);var c=b.split(/()/g),e="",d=a.length,f,g,h=[];for(f=0;f<d;f++)g=a[f],-1<c.indexOf(g)?(""!==e&&h.push(e),e=""):e+=g;""!==e&&h.push(e);return h};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 e=0<b?b:a.length,d=0;d<e;d++)c.push(a[d]);"string"===typeof a[0]?c.sort():c.sort(function(a,b){return a-
b});if(0<b)for(e=c.length;e<a.length;e++)c.push(a[e])}return c};f.splice=function(a,b,c){if(0===b.length)return a;if(b instanceof Array)for(var e=0;e<b.length;c++,e++)a.splice(c,0,b[e]);else a.splice(c,0,b);return a};f.subset=function(a,b,c){return a.slice(b,c!==k?b+c:a.length)};f.join=function(a,b){return a.join(b)};f.shorten=function(a){for(var b=[],c=a.length,e=0;e<c;e++)b[e]=a[e];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,e=0,d;2===arguments.length?(a=arguments[0],c=arguments[1],d=a.length):3===arguments.length?(a=arguments[0],c=arguments[1],d=arguments[2]):5===arguments.length&&(a=arguments[0],b=arguments[1],c=arguments[2],e=arguments[3],d=arguments[4]);for(var f=b;f<d+b;f++,e++)if(c[e]!==k)c[e]=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,K,e,d,R,f,mb,gc,h,fb){b=g(((b&4278190080)>>>24)+c,255)<<24;K+=(gc-K)*c>>8;e+=(h-e)*c>>8;c=d+((fb-d)*c>>8);return b|(0>K?0:255<K?255:K)<<16|(0>e?0:255<e?255:e)<<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,K){var e=(K&b)>>>24,h=a&c,k=a&d,w=a&f,m=K&c,l=K&d,n=K&f;return g(((a&b)>>>24)+e,255)<<24|h+((m-h)*e>>8)&c|k+((l-k)*e>>8)&d|w+((n-w)*e>>8)&f},add:function(a,K){var e=(K&b)>>>24;return g(((a&
b)>>>24)+e,255)<<24|g((a&c)+((K&c)>>8)*e,c)&c|g((a&d)+((K&d)>>8)*e,d)&d|g((a&f)+((K&f)*e>>8),f)},subtract:function(a,K){var e=(K&b)>>>24;return g(((a&b)>>>24)+e,255)<<24|h((a&c)-((K&c)>>8)*e,d)&c|h((a&d)-((K&d)>>8)*e,f)&d|h((a&f)-((K&f)*e>>8),0)},lightest:function(a,K){var e=(K&b)>>>24;return g(((a&b)>>>24)+e,255)<<24|h(a&c,((K&c)>>8)*e)&c|h(a&d,((K&d)>>8)*e)&d|h(a&f,(K&f)*e>>8)},darkest:function(a,K){var e=(K&b)>>>24,h=a&c,k=a&d,w=a&f,m=g(a&c,((K&c)>>8)*e),l=g(a&d,((K&d)>>8)*e),n=g(a&f,(K&f)*e>>
8);return g(((a&b)>>>24)+e,255)<<24|h+((m-h)*e>>8)&c|k+((l-k)*e>>8)&d|w+((n-w)*e>>8)&f},difference:function(e,g){var h=(e&c)>>16,k=(e&d)>>8,w=e&f,W=(g&c)>>16,m=(g&d)>>8,l=g&f;return a(e,(g&b)>>>24,h,k,w,W,m,l,h>W?h-W:W-h,k>m?k-m:m-k,w>l?w-l:l-w)},exclusion:function(e,g){var h=(e&c)>>16,k=(e&d)>>8,w=e&f,W=(g&c)>>16,m=(g&d)>>8,l=g&f;return a(e,(g&b)>>>24,h,k,w,W,m,l,h+W-(h*W>>7),k+m-(k*m>>7),w+l-(w*l>>7))},multiply:function(e,g){var h=(e&c)>>16,k=(e&d)>>8,w=e&f,W=(g&c)>>16,m=(g&d)>>8,l=g&f;return a(e,
(g&b)>>>24,h,k,w,W,m,l,h*W>>8,k*m>>8,w*l>>8)},screen:function(e,g){var h=(e&c)>>16,k=(e&d)>>8,w=e&f,W=(g&c)>>16,m=(g&d)>>8,l=g&f;return a(e,(g&b)>>>24,h,k,w,W,m,l,255-((255-h)*(255-W)>>8),255-((255-k)*(255-m)>>8),255-((255-w)*(255-l)>>8))},hard_light:function(e,g){var h=(e&c)>>16,k=(e&d)>>8,w=e&f,W=(g&c)>>16,m=(g&d)>>8,l=g&f;return a(e,(g&b)>>>24,h,k,w,W,m,l,128>W?h*W>>7:255-((255-h)*(255-W)>>7),128>m?k*m>>7:255-((255-k)*(255-m)>>7),128>l?w*l>>7:255-((255-w)*(255-l)>>7))},soft_light:function(e,g){var h=
(e&c)>>16,k=(e&d)>>8,w=e&f,W=(g&c)>>16,m=(g&d)>>8,l=g&f;return a(e,(g&b)>>>24,h,k,w,W,m,l,(h*W>>7)+(h*h>>8)-(h*h*W>>15),(k*m>>7)+(k*k>>8)-(k*k*m>>15),(w*l>>7)+(w*w>>8)-(w*w*l>>15))},overlay:function(e,g){var h=(e&c)>>16,k=(e&d)>>8,w=e&f,W=(g&c)>>16,m=(g&d)>>8,l=g&f;return a(e,(g&b)>>>24,h,k,w,W,m,l,128>h?h*W>>7:255-((255-h)*(255-W)>>7),128>k?k*m>>7:255-((255-k)*(255-m)>>7),128>w?w*l>>7:255-((255-w)*(255-l)>>7))},dodge:function(e,g){var h=(g&b)>>>24,k=(e&c)>>16,w=(e&d)>>8,W=e&f,m=(g&c)>>16,l=(g&d)>>
8,n=g&f,p=255;255!==m&&(p=(k<<8)/(255-m),p=0>p?0:255<p?255:p);var s=255;255!==l&&(s=(w<<8)/(255-l),s=0>s?0:255<s?255:s);var t=255;255!==n&&(t=(W<<8)/(255-n),t=0>t?0:255<t?255:t);return a(e,h,k,w,W,m,l,n,p,s,t)},burn:function(e,g){var h=(g&b)>>>24,k=(e&c)>>16,w=(e&d)>>8,W=e&f,m=(g&c)>>16,l=(g&d)>>8,n=g&f,p=0;0!==m&&(p=(255-k<<8)/m,p=255-(0>p?0:255<p?255:p));var s=0;0!==l&&(s=(255-w<<8)/l,s=255-(0>s?0:255<s?255:s));var t=0;0!==n&&(t=(255-W<<8)/n,t=255-(0>t?0:255<t?255:t));return a(e,h,k,w,W,m,l,n,p,
s,t)}}}();f.color=function(a,b,c,d){return a!==k&&b!==k&&c!==k&&d!==k?pa(a,b,c,d):a!==k&&b!==k&&c!==k?pa(a,b,c,ja):a!==k&&b!==k?(a&e.ALPHA_MASK?(b=Math.round(255*(b/ja)),b=255<b?255:b,a=a-(a&e.ALPHA_MASK)+((0>b?0:b)<<24&e.ALPHA_MASK)):a=Xa===e.RGB?pa(a,a,a,b):Xa===e.HSB?pa(0,0,a/ua*va,b):void 0,a):"number"===typeof a?Yb(a):pa(ua,Fa,va,ja)};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>ua?ua:a;b=b>Fa?Fa:b;c=c>va?va:c;a=360*(a/ua);b=100*(b/Fa);c=100*(c/va);var e=Math.round(255*(c/100));if(0===b)return[e,
e,e];a%=360;var d=a%60,f=Math.round(255*(c*(100-b)/1E4)),g=Math.round(255*(c*(6E3-b*d)/6E5));b=Math.round(255*(c*(6E3-b*(60-d))/6E5));switch(Math.floor(a/60)){case 0:return[e,b,f];case 1:return[g,e,f];case 2:return[f,e,b];case 3:return[f,g,e];case 4:return[b,f,e];case 5:return[e,f,g]}};f.brightness=function(a){return cb(a)[2]};f.saturation=function(a){return cb(a)[1]};f.hue=function(a){return cb(a)[0]};f.red=function(a){return((a&e.RED_MASK)>>>16)/255*ua};f.green=function(a){return((a&e.GREEN_MASK)>>>
8)/255*Fa};f.blue=function(a){return(a&e.BLUE_MASK)/255*va};f.alpha=function(a){return((a&e.ALPHA_MASK)>>>24)/255*ja};f.lerpColor=function(a,b,c){var d,g,h,k,m,r;a=f.color(a);b=f.color(b);if(Xa===e.HSB)return h=cb(a),a=((a&e.ALPHA_MASK)>>>24)/ja,g=cb(b),b=((b&e.ALPHA_MASK)>>>24)/ja,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)*ja,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)/ja;k=(b&e.RED_MASK)>>>16;m=(b&e.GREEN_MASK)>>>8;r=b&e.BLUE_MASK;b=((b&e.ALPHA_MASK)>>>24)/ja;d=f.lerp(d,k,c)|0;g=f.lerp(g,m,c)|0;h=f.lerp(h,r,c)|0;c=f.lerp(a,b,c)*ja;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&&(ua=arguments[1],Fa=arguments[2]||arguments[1],va=arguments[3]||arguments[1],ja=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(){L.print()};H.prototype.translate=function(a,b){L.translate(a,b);ha.invTranslate(a,b);h.translate(a,b)};D.prototype.translate=function(a,b,c){L.translate(a,b,c);ha.invTranslate(a,b,c)};H.prototype.scale=function(a,b){L.scale(a,b);ha.invScale(a,b);h.scale(a,b||a)};D.prototype.scale=function(a,b,c){L.scale(a,b,c);ha.invScale(a,b,c)};H.prototype.transform=
function(a){a=a.array();h.transform(a[0],a[3],a[1],a[4],a[2],a[5])};D.prototype.transformm=function(a){throw"p.transform is currently not supported in 3D mode";};H.prototype.pushMatrix=function(){Bb.load(L);Cb.load(ha);h.save()};D.prototype.pushMatrix=function(){Bb.load(L);Cb.load(ha)};H.prototype.popMatrix=function(){L.set(Bb.pop());ha.set(Cb.pop());xa()};D.prototype.popMatrix=function(){L.set(Bb.pop());ha.set(Cb.pop())};H.prototype.resetMatrix=function(){L.reset();ha.reset();h.setTransform(1,0,
0,1,0,0)};D.prototype.resetMatrix=function(){L.reset();ha.reset()};Y.prototype.applyMatrix=function(){var a=arguments;L.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]);ha.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;Y.prototype.applyMatrix.apply(this,a)};f.rotateX=function(a){L.rotateX(a);ha.invRotateX(a)};
H.prototype.rotateZ=function(){throw"rotateZ() is not supported in 2D mode. Use rotate(float) instead.";};D.prototype.rotateZ=function(a){L.rotateZ(a);ha.invRotateZ(a)};f.rotateY=function(a){L.rotateY(a);ha.invRotateY(a)};H.prototype.rotate=function(a){L.rotateZ(a);ha.invRotateZ(a);h.rotate(a)};D.prototype.rotate=function(a){f.rotateZ(a)};H.prototype.shearX=function(a){L.shearX(a);h.transform(1,0,a,1,0,0)};D.prototype.shearX=function(a){L.shearX(a)};H.prototype.shearY=function(a){L.shearY(a);h.transform(1,
a,0,1,0,0)};D.prototype.shearY=function(a){L.shearY(a)};f.pushStyle=function(){h.save();f.pushMatrix();gd.push({doFill:T,currentFillColor:M,doStroke:C,currentStrokeColor:wa,curTint:eb,curRectMode:oa,curColorMode:Xa,colorModeX:ua,colorModeZ:va,colorModeY:Fa,colorModeA:ja,curTextFont:ca,horizontalTextAlignment:nb,verticalTextAlignment:Ya,textMode:lc,curFontName:Ab,curTextSize:Oa,curTextAscent:Za,curTextDescent:Na,curTextLeading:Aa})};f.popStyle=function(){var a=gd.pop();if(a)xa(),f.popMatrix(),T=a.doFill,
M=a.currentFillColor,C=a.doStroke,wa=a.currentStrokeColor,eb=a.curTint,oa=a.curRectMode,Xa=a.curColorMode,ua=a.colorModeX,va=a.colorModeZ,Fa=a.colorModeY,ja=a.colorModeA,ca=a.curTextFont,Ab=a.curFontName,Oa=a.curTextSize,nb=a.horizontalTextAlignment,Ya=a.verticalTextAlignment,lc=a.textMode,Za=a.curTextAscent,Na=a.curTextDescent,Aa=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()-Tc};H.prototype.redraw=function(){Hb();h.lineWidth=ga;var a=f.pmouseX,b=f.pmouseY;f.pmouseX=ec;f.pmouseY=fc;h.save();f.draw();xa();ec=f.mouseX;fc=f.mouseY;f.pmouseX=a;f.pmouseY=b};D.prototype.redraw=function(){Hb();var a=f.pmouseX,b=f.pmouseY;f.pmouseX=ec;f.pmouseY=
fc;h.clear(h.DEPTH_BUFFER_BIT);Ga={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();ec=f.mouseX;fc=f.mouseY;f.pmouseX=a;f.pmouseY=b};f.noLoop=function(){Da=ia=!1;clearInterval(Ka);fa.onPause()};f.loop=function(){Da||(wc=Date.now(),hc=0,Ka=l.setInterval(function(){try{fa.onFrameStart(),f.redraw(),fa.onFrameEnd()}catch(a){throw l.clearInterval(Ka),a;}},Pc),Da=ia=!0,fa.onLoop())};f.frameRate=function(a){sc=
a;Pc=1E3/sc;ia&&(f.noLoop(),f.loop())};f.exit=function(){l.clearInterval(Ka);var a=f.externals.canvas.id;v.splice(Xb[a],1);delete Xb[a];delete V.onmousedown;for(var b in N.lib)N.lib.hasOwnProperty(b)&&N.lib[b].hasOwnProperty("detach")&&N.lib[b].detach(f);for(a=xb.length;a--;){var c=xb[a];b=c.elem;var e=c.type,c=c.fn;b.removeEventListener?b.removeEventListener(e,c,!1):b.detachEvent&&b.detachEvent("on"+e,c)}fa.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";V.style.cursor=a}else V.style.cursor=1===arguments.length?arguments[0]:td};f.noCursor=function(){V.style.cursor=e.NOCURSOR};f.link=function(a,b){b!==k?l.open(a,b):l.location=a};f.beginDraw=s;f.endDraw=s;H.prototype.toImageData=
function(a,b,c,e){a=a!==k?a:0;b=b!==k?b:0;c=c!==k?c:f.width;e=e!==k?e:f.height;return h.getImageData(a,b,c,e)};D.prototype.toImageData=function(a,b,c,e){a=a!==k?a:0;b=b!==k?b:0;c=c!==k?c:f.width;e=e!==k?e:f.height;var d=t.createElement("canvas").getContext("2d").createImageData(c,e),g=new sd(4*c*e);h.readPixels(a,b,c,e,h.RGBA,h.UNSIGNED_BYTE,g);a=0;b=g.length;for(var w=d.data;a<b;a++)w[a]=g[4*(e-1-Math.floor(a/4/c))*c+a%(4*c)];return d};f.status=function(a){l.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 e="";0<c;)e+=a>>>--c&1?"1":"0";return e};f.unbinary=function(a){for(var b=a.length-1,c=1,e=0;0<=b;){var d=a[b--];if("0"!==d&&"1"!==d)throw"the value passed into unbinary was not an 8 bit binary number";"1"===d&&(e+=c);c<<=1}return e};f.hex=function(a,b){1===arguments.length&&(b=a instanceof Char?4:8);var c=a,e=b,e=e===k||null===e?e=8:e;0>c&&(c=4294967295+c+1);for(c=Number(c).toString(16).toUpperCase();c.length<
e;)c="0"+c;c.length>=e&&(c=c.substring(c.length-e,c.length));return c};f.unhex=function(a){if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(db(a[c]));return b}return db(a)};f.loadStrings=function(a){if(B[a])return B[a].split("\n");a=d(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){B[a]=b.join("\n")};f.loadBytes=function(a){a=d(a);for(var b=[],c=0;c<a.length;c++)b.push(a.charCodeAt(c));return b};
f.matchAll=function(a,b){for(var c=[],e,d=RegExp(b,"g");null!==(e=d.exec(a));)c.push(e),0===e[0].length&&++d.lastIndex;return 0<c.length?c:null};f.match=function(a,b){return a.match(b)};var qc=[];f.println=function(a){var b=qc.length,c="";b&&(c=qc.join(""),qc.length=0);0===arguments.length&&0===b?N.logger.log(c+""):0!==arguments.length&&N.logger.log(c+a)};f.print=function(a){qc.push(a)};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(Ib(a[c]));return b}return Ib(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=[],e=0;e<a.length;e++)"string"!==typeof a[e]||/^\s*[+\-]?\d+\s*$/.test(a[e])?c.push(jb(a[e],b)):c.push(0);return c}return jb(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 e=[];c;)c.$interfaces&&(e=e.concat(c.$interfaces)),c=c.$base;for(;0<e.length;){c=e.shift();if(c===b)return!0;c.$interfaces&&(e=e.concat(c.$interfaces))}return!1}for(;c.hasOwnProperty("$base");)if(c=c.$base,c===b)return!0;return!1};Y.prototype.size=function(a,b,c){C&&f.stroke(0);T&&f.fill(255);c={fillStyle:h.fillStyle,strokeStyle:h.strokeStyle,lineCap:h.lineCap,lineJoin:h.lineJoin};
0<V.style.length&&(V.style.removeProperty("width"),V.style.removeProperty("height"));V.width=f.width=a||100;V.height=f.height=b||100;for(var d in c)c.hasOwnProperty(d)&&(h[d]=c[d]);f.textFont(ca);f.background();cd=Math.max(1E3,0.05*a*b);f.externals.context=h;for(a=0;a<e.SINCOS_LENGTH;a++)Sb[a]=f.sin(0.5*a*(e.PI/180)),Tb[a]=f.cos(0.5*a*(e.PI/180))};H.prototype.size=function(a,b,c){h===k&&(h=V.getContext("2d"),Bb=new ab,Cb=new ab,L=new $a,ha=new $a);Y.prototype.size.apply(this,arguments)};D.prototype.size=
function(){var a=!1;return function(b,c,e){if(a)throw"Multiple calls to size() for 3D renders are not allowed.";a=!0;try{V.width=f.width=b||100;V.height=f.height=c||100;for(var d=V,g=["experimental-webgl","webgl","webkit-3d"],k,m=0,r=g.length;m<r&&!(k=d.getContext(g[m],{antialias:!1,preserveDrawingBuffer:!0}));m++);h=k;Xc=h.createTexture();Yc=h.createTexture()}catch(l){N.debug(l)}if(!h)throw"WebGL context is not supported on this browser.";h.viewport(0,0,V.width,V.height);h.enable(h.DEPTH_TEST);h.enable(h.BLEND);
h.blendFunc(h.SRC_ALPHA,h.ONE_MINUS_SRC_ALPHA);I=Mc(h,"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; }}");
la=Mc(h,"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);z=Mc(h,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; }}");h.useProgram(z);Z("usingTexture3d",z,"usingTexture",ra);f.lightFalloff(1,0,0);f.shininess(1);f.ambient(255,255,255);f.specular(0,0,0);f.emissive(0,0,0);Ac=h.createBuffer();
h.bindBuffer(h.ARRAY_BUFFER,Ac);h.bufferData(h.ARRAY_BUFFER,hd,h.STATIC_DRAW);Bc=h.createBuffer();h.bindBuffer(h.ARRAY_BUFFER,Bc);h.bufferData(h.ARRAY_BUFFER,vd,h.STATIC_DRAW);Cc=h.createBuffer();h.bindBuffer(h.ARRAY_BUFFER,Cc);h.bufferData(h.ARRAY_BUFFER,id,h.STATIC_DRAW);jc=h.createBuffer();h.bindBuffer(h.ARRAY_BUFFER,jc);h.bufferData(h.ARRAY_BUFFER,Lc,h.STATIC_DRAW);Dc=h.createBuffer();h.bindBuffer(h.ARRAY_BUFFER,Dc);h.bufferData(h.ARRAY_BUFFER,wd,h.STATIC_DRAW);Rb=h.createBuffer();Ec=h.createBuffer();
Uc=h.createBuffer();Fc=h.createBuffer();Vc=h.createBuffer();Wc=h.createBuffer();kc=h.createBuffer();h.bindBuffer(h.ARRAY_BUFFER,kc);h.bufferData(h.ARRAY_BUFFER,new y([0,0,0]),h.STATIC_DRAW);Gc=h.createBuffer();h.bindBuffer(h.ARRAY_BUFFER,Gc);h.bufferData(h.ARRAY_BUFFER,new y([1,1,0,-1,1,0,-1,-1,0,1,-1,0]),h.STATIC_DRAW);Hc=h.createBuffer();h.bindBuffer(h.ARRAY_BUFFER,Hc);h.bufferData(h.ARRAY_BUFFER,new y([0,0,1,0,1,1,0,1]),h.STATIC_DRAW);Ic=h.createBuffer();h.bindBuffer(h.ELEMENT_ARRAY_BUFFER,Ic);
h.bufferData(h.ELEMENT_ARRAY_BUFFER,new u([0,1,2,2,3,0]),h.STATIC_DRAW);qb=new J;Sa=new J;L=new J;ha=new J;Ia=new J;f.camera();f.perspective();Bb=new ab;Cb=new ab;Qb=new J;ic=new J;yb=new J;zb=new J;yc=new J;zc=new J;zc.set(-1,3,-3,1,3,-6,3,0,-3,3,0,0,1,0,0,0);Y.prototype.size.apply(this,arguments)}}();H.prototype.ambientLight=Y.prototype.a3DOnlyFunction;D.prototype.ambientLight=function(a,b,c,d,f,g){if(O===e.MAX_LIGHTS)throw"can only create "+e.MAX_LIGHTS+" lights";d=new PVector(d,f,g);f=new J;f.scale(1,
-1,1);f.apply(L.array());f.mult(d,d);a=pa(a,b,c,0);a=[((a&e.RED_MASK)>>>16)/255,((a&e.GREEN_MASK)>>>8)/255,(a&e.BLUE_MASK)/255];h.useProgram(z);X("uLights.color.3d."+O,z,"uLights"+O+".color",a);X("uLights.position.3d."+O,z,"uLights"+O+".position",d.array());Z("uLights.type.3d."+O,z,"uLights"+O+".type",0);Z("uLightCount3d",z,"uLightCount",++O)};H.prototype.directionalLight=Y.prototype.a3DOnlyFunction;D.prototype.directionalLight=function(a,b,c,d,f,g){if(O===e.MAX_LIGHTS)throw"can only create "+e.MAX_LIGHTS+
" lights";h.useProgram(z);var k=new J;k.scale(1,-1,1);k.apply(L.array());k=k.array();d=[k[0]*d+k[4]*f+k[8]*g,k[1]*d+k[5]*f+k[9]*g,k[2]*d+k[6]*f+k[10]*g];a=pa(a,b,c,0);X("uLights.color.3d."+O,z,"uLights"+O+".color",[((a&e.RED_MASK)>>>16)/255,((a&e.GREEN_MASK)>>>8)/255,(a&e.BLUE_MASK)/255]);X("uLights.position.3d."+O,z,"uLights"+O+".position",d);Z("uLights.type.3d."+O,z,"uLights"+O+".type",1);Z("uLightCount3d",z,"uLightCount",++O)};H.prototype.lightFalloff=Y.prototype.a3DOnlyFunction;D.prototype.lightFalloff=
function(a,b,c){h.useProgram(z);X("uFalloff3d",z,"uFalloff",[a,b,c])};H.prototype.lightSpecular=Y.prototype.a3DOnlyFunction;D.prototype.lightSpecular=function(a,b,c){a=pa(a,b,c,0);a=[((a&e.RED_MASK)>>>16)/255,((a&e.GREEN_MASK)>>>8)/255,(a&e.BLUE_MASK)/255];h.useProgram(z);X("uSpecular3d",z,"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=Y.prototype.a3DOnlyFunction;D.prototype.pointLight=
function(a,b,c,d,f,g){if(O===e.MAX_LIGHTS)throw"can only create "+e.MAX_LIGHTS+" lights";d=new PVector(d,f,g);f=new J;f.scale(1,-1,1);f.apply(L.array());f.mult(d,d);a=pa(a,b,c,0);a=[((a&e.RED_MASK)>>>16)/255,((a&e.GREEN_MASK)>>>8)/255,(a&e.BLUE_MASK)/255];h.useProgram(z);X("uLights.color.3d."+O,z,"uLights"+O+".color",a);X("uLights.position.3d."+O,z,"uLights"+O+".position",d.array());Z("uLights.type.3d."+O,z,"uLights"+O+".type",2);Z("uLightCount3d",z,"uLightCount",++O)};H.prototype.noLights=Y.prototype.a3DOnlyFunction;
D.prototype.noLights=function(){O=0;h.useProgram(z);Z("uLightCount3d",z,"uLightCount",O)};H.prototype.spotLight=Y.prototype.a3DOnlyFunction;D.prototype.spotLight=function(a,b,c,d,f,g,k,m,r,l,n){if(O===e.MAX_LIGHTS)throw"can only create "+e.MAX_LIGHTS+" lights";h.useProgram(z);d=new PVector(d,f,g);f=new J;f.scale(1,-1,1);f.apply(L.array());f.mult(d,d);f=f.array();k=[f[0]*k+f[4]*m+f[8]*r,f[1]*k+f[5]*m+f[9]*r,f[2]*k+f[6]*m+f[10]*r];a=pa(a,b,c,0);X("uLights.color.3d."+O,z,"uLights"+O+".color",[((a&e.RED_MASK)>>>
16)/255,((a&e.GREEN_MASK)>>>8)/255,(a&e.BLUE_MASK)/255]);X("uLights.position.3d."+O,z,"uLights"+O+".position",d.array());X("uLights.direction.3d."+O,z,"uLights"+O+".direction",k);X("uLights.concentration.3d."+O,z,"uLights"+O+".concentration",n);X("uLights.angle.3d."+O,z,"uLights"+O+".angle",l);Z("uLights.type.3d."+O,z,"uLights"+O+".type",3);Z("uLightCount3d",z,"uLightCount",++O)};H.prototype.beginCamera=function(){throw"beginCamera() is not available in 2D mode";};D.prototype.beginCamera=function(){if(nc)throw"You cannot call beginCamera() again before calling endCamera()";
nc=!0;L=Sa;ha=qb};H.prototype.endCamera=function(){throw"endCamera() is not available in 2D mode";};D.prototype.endCamera=function(){if(!nc)throw"You cannot call endCamera() before calling beginCamera()";L.set(qb);ha.set(Sa);nc=!1};f.camera=function(a,b,c,e,d,g,h,m,r){a===k&&(Kc=f.width/2,rb=f.height/2,sb=rb/Math.tan(oc/2),a=Kc,b=rb,c=sb,e=Kc,d=rb,h=g=0,m=1,r=0);e=new PVector(a-e,b-d,c-g);var l=new PVector(h,m,r);e.normalize();r=PVector.cross(l,e);l=PVector.cross(e,r);r.normalize();l.normalize();
h=r.x;m=r.y;r=r.z;d=l.x;g=l.y;var l=l.z,n=e.x,p=e.y;e=e.z;qb.set(h,m,r,0,d,g,l,0,n,p,e,0,0,0,0,1);qb.translate(-a,-b,-c);Sa.reset();Sa.invApply(h,m,r,0,d,g,l,0,n,p,e,0,0,0,0,1);Sa.translate(a,b,c);L.set(qb);ha.set(Sa)};f.perspective=function(a,b,c,e){0===arguments.length&&(rb=V.height/2,sb=rb/Math.tan(oc/2),dd=sb/10,ed=10*sb,fd=f.width/f.height,a=oc,b=fd,c=dd,e=ed);var d,g;d=c*Math.tan(a/2);g=-d;f.frustum(g*b,d*b,g,d,c,e)};H.prototype.frustum=function(){throw"Processing.js: frustum() is not supported in 2D mode";
};D.prototype.frustum=function(a,b,c,e,d,f){Ia=new J;Ia.set(2*d/(b-a),0,(b+a)/(b-a),0,0,2*d/(e-c),(e+c)/(e-c),0,0,0,-(f+d)/(f-d),-(2*f*d)/(f-d),0,0,-1,0);a=new J;a.set(Ia);a.transpose();h.useProgram(I);S("projection2d",I,"uProjection",!1,a.array());h.useProgram(z);S("projection3d",z,"uProjection",!1,a.array());h.useProgram(la);S("uProjectionUS",la,"uProjection",!1,a.array())};f.ortho=function(a,b,c,e,d,g){0===arguments.length&&(a=0,b=f.width,c=0,e=f.height,d=-10,g=10);var k=2/(b-a),m=2/(e-c),r=-2/
(g-d),l=-(b+a)/(b-a),n=-(e+c)/(e-c),p=-(g+d)/(g-d);Ia=new J;Ia.set(k,0,0,l,0,m,0,n,0,0,r,p,0,0,0,1);k=new J;k.set(Ia);k.transpose();h.useProgram(I);S("projection2d",I,"uProjection",!1,k.array());h.useProgram(z);S("projection3d",z,"uProjection",!1,k.array());h.useProgram(la);S("uProjectionUS",la,"uProjection",!1,k.array())};f.printProjection=function(){Ia.print()};f.printCamera=function(){qb.print()};H.prototype.box=Y.prototype.a3DOnlyFunction;D.prototype.box=function(a,b,c){b&&c||(b=c=a);var e=new J;
e.scale(a,b,c);a=new J;a.scale(1,-1,1);a.apply(L.array());a.transpose();T&&(h.useProgram(z),S("model3d",z,"uModel",!1,e.array()),S("view3d",z,"uView",!1,a.array()),h.enable(h.POLYGON_OFFSET_FILL),h.polygonOffset(1,1),X("color3d",z,"uColor",qa),0<O?(b=new J,b.set(a),c=new J,c.set(e),b.mult(c),c=new J,c.set(b),c.invert(),c.transpose(),S("uNormalTransform3d",z,"uNormalTransform",!1,c.array()),ea("aNormal3d",z,"aNormal",3,Bc)):ka("aNormal3d",z,"aNormal"),ea("aVertex3d",z,"aVertex",3,Ac),ka("aColor3d",
z,"aColor"),ka("aTexture3d",z,"aTexture"),h.drawArrays(h.TRIANGLES,0,hd.length/3),h.disable(h.POLYGON_OFFSET_FILL));0<ga&&C&&(h.useProgram(I),S("uModel2d",I,"uModel",!1,e.array()),S("uView2d",I,"uView",!1,a.array()),X("uColor2d",I,"uColor",ba),Z("uIsDrawingText2d",I,"uIsDrawingText",!1),ea("vertex2d",I,"aVertex",3,Cc),ka("aTextureCoord2d",I,"aTextureCoord"),h.drawArrays(h.LINES,0,id.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!==
pb||b!==mc){var d=e.SINCOS_LENGTH/a,f=new y(a),g=new y(a);for(c=0;c<a;c++)f[c]=Tb[c*d%e.SINCOS_LENGTH|0],g[c]=Sb[c*d%e.SINCOS_LENGTH|0];c=a*(b-1)+2;d=0;Pa=new y(c);Qa=new y(c);Ra=new y(c);var k=0.5*e.SINCOS_LENGTH/b,m=k;for(c=1;c<b;c++){for(var r=Sb[m%e.SINCOS_LENGTH|0],l=-Tb[m%e.SINCOS_LENGTH|0],n=0;n<a;n++)Pa[d]=f[n]*r,Qa[d]=l,Ra[d++]=g[n]*r;m+=k}pb=a;mc=b;P=[];for(f=0;f<pb;f++)P.push(0),P.push(-1),P.push(0),P.push(Pa[f]),P.push(Qa[f]),P.push(Ra[f]);P.push(0);P.push(-1);P.push(0);P.push(Pa[0]);
P.push(Qa[0]);P.push(Ra[0]);k=0;for(f=2;f<mc;f++){g=c=k;d=k+=pb;for(m=0;m<pb;m++)P.push(Pa[g]),P.push(Qa[g]),P.push(Ra[g++]),P.push(Pa[d]),P.push(Qa[d]),P.push(Ra[d++]);g=c;d=k;P.push(Pa[g]);P.push(Qa[g]);P.push(Ra[g]);P.push(Pa[d]);P.push(Qa[d]);P.push(Ra[d])}for(f=0;f<pb;f++)d=k+f,P.push(Pa[d]),P.push(Qa[d]),P.push(Ra[d]),P.push(0),P.push(1),P.push(0);P.push(Pa[k]);P.push(Qa[k]);P.push(Ra[k]);P.push(0);P.push(1);P.push(0);h.bindBuffer(h.ARRAY_BUFFER,Rb);h.bufferData(h.ARRAY_BUFFER,new y(P),h.STATIC_DRAW)}};
H.prototype.sphere=Y.prototype.a3DOnlyFunction;D.prototype.sphere=function(a){(3>pb||2>mc)&&f.sphereDetail(30);var b=new J;b.scale(a,a,a);a=new J;a.scale(1,-1,1);a.apply(L.array());a.transpose();if(T){if(0<O){var c=new J;c.set(a);var e=new J;e.set(b);c.mult(e);e=new J;e.set(c);e.invert();e.transpose();S("uNormalTransform3d",z,"uNormalTransform",!1,e.array());ea("aNormal3d",z,"aNormal",3,Rb)}else ka("aNormal3d",z,"aNormal");h.useProgram(z);ka("aTexture3d",z,"aTexture");S("uModel3d",z,"uModel",!1,b.array());
S("uView3d",z,"uView",!1,a.array());ea("aVertex3d",z,"aVertex",3,Rb);ka("aColor3d",z,"aColor");h.enable(h.POLYGON_OFFSET_FILL);h.polygonOffset(1,1);X("uColor3d",z,"uColor",qa);h.drawArrays(h.TRIANGLE_STRIP,0,P.length/3);h.disable(h.POLYGON_OFFSET_FILL)}0<ga&&C&&(h.useProgram(I),S("uModel2d",I,"uModel",!1,b.array()),S("uView2d",I,"uView",!1,a.array()),ea("aVertex2d",I,"aVertex",3,Rb),ka("aTextureCoord2d",I,"aTextureCoord"),X("uColor2d",I,"uColor",ba),Z("uIsDrawingText",I,"uIsDrawingText",!1),h.drawArrays(h.LINE_STRIP,
0,P.length/3))};f.modelX=function(a,b,c){var e=L.array(),d=Sa.array(),f=e[0]*a+e[1]*b+e[2]*c+e[3],g=e[4]*a+e[5]*b+e[6]*c+e[7],h=e[8]*a+e[9]*b+e[10]*c+e[11];b=e[12]*a+e[13]*b+e[14]*c+e[15];a=d[0]*f+d[1]*g+d[2]*h+d[3]*b;d=d[12]*f+d[13]*g+d[14]*h+d[15]*b;return 0!==d?a/d:a};f.modelY=function(a,b,c){var e=L.array(),d=Sa.array(),f=e[0]*a+e[1]*b+e[2]*c+e[3],g=e[4]*a+e[5]*b+e[6]*c+e[7],h=e[8]*a+e[9]*b+e[10]*c+e[11];b=e[12]*a+e[13]*b+e[14]*c+e[15];a=d[4]*f+d[5]*g+d[6]*h+d[7]*b;d=d[12]*f+d[13]*g+d[14]*h+d[15]*
b;return 0!==d?a/d:a};f.modelZ=function(a,b,c){var e=L.array(),d=Sa.array(),f=e[0]*a+e[1]*b+e[2]*c+e[3],g=e[4]*a+e[5]*b+e[6]*c+e[7],h=e[8]*a+e[9]*b+e[10]*c+e[11];b=e[12]*a+e[13]*b+e[14]*c+e[15];a=d[8]*f+d[9]*g+d[10]*h+d[11]*b;d=d[12]*f+d[13]*g+d[14]*h+d[15]*b;return 0!==d?a/d:a};H.prototype.ambient=Y.prototype.a3DOnlyFunction;D.prototype.ambient=function(a,b,c){h.useProgram(z);Z("uUsingMat3d",z,"uUsingMat",!0);a=f.color(a,b,c);X("uMaterialAmbient3d",z,"uMaterialAmbient",f.color.toGLArray(a).slice(0,
3))};H.prototype.emissive=Y.prototype.a3DOnlyFunction;D.prototype.emissive=function(a,b,c){h.useProgram(z);Z("uUsingMat3d",z,"uUsingMat",!0);a=f.color(a,b,c);X("uMaterialEmissive3d",z,"uMaterialEmissive",f.color.toGLArray(a).slice(0,3))};H.prototype.shininess=Y.prototype.a3DOnlyFunction;D.prototype.shininess=function(a){h.useProgram(z);Z("uUsingMat3d",z,"uUsingMat",!0);X("uShininess3d",z,"uShininess",a)};H.prototype.specular=Y.prototype.a3DOnlyFunction;D.prototype.specular=function(a,b,c){h.useProgram(z);
Z("uUsingMat3d",z,"uUsingMat",!0);a=f.color(a,b,c);X("uMaterialSpecular3d",z,"uMaterialSpecular",f.color.toGLArray(a).slice(0,3))};f.screenX=function(a,b,c){var e=L.array();if(16===e.length){var d=e[0]*a+e[1]*b+e[2]*c+e[3],g=e[4]*a+e[5]*b+e[6]*c+e[7],h=e[8]*a+e[9]*b+e[10]*c+e[11];b=e[12]*a+e[13]*b+e[14]*c+e[15];c=Ia.array();a=c[0]*d+c[1]*g+c[2]*h+c[3]*b;d=c[12]*d+c[13]*g+c[14]*h+c[15]*b;0!==d&&(a/=d);return f.width*(1+a)/2}return L.multX(a,b)};f.screenY=function(a,b,c){var e=L.array();if(16===e.length){var d=
e[0]*a+e[1]*b+e[2]*c+e[3],g=e[4]*a+e[5]*b+e[6]*c+e[7],h=e[8]*a+e[9]*b+e[10]*c+e[11];b=e[12]*a+e[13]*b+e[14]*c+e[15];c=Ia.array();a=c[4]*d+c[5]*g+c[6]*h+c[7]*b;d=c[12]*d+c[13]*g+c[14]*h+c[15]*b;0!==d&&(a/=d);return f.height*(1+a)/2}return L.multY(a,b)};f.screenZ=function(a,b,c){var e=L.array();if(16!==e.length)return 0;var d=Ia.array(),f=e[0]*a+e[1]*b+e[2]*c+e[3],g=e[4]*a+e[5]*b+e[6]*c+e[7],h=e[8]*a+e[9]*b+e[10]*c+e[11];b=e[12]*a+e[13]*b+e[14]*c+e[15];a=d[8]*f+d[9]*g+d[10]*h+d[11]*b;d=d[12]*f+d[13]*
g+d[14]*h+d[15]*b;0!==d&&(a/=d);return(a+1)/2};Y.prototype.fill=function(a,b,c,e){a=f.color(a,b,c,e);a===M&&T||(T=!0,M=a)};H.prototype.fill=function(){Y.prototype.fill.apply(this,arguments);U=!0};D.prototype.fill=function(){Y.prototype.fill.apply(this,arguments);qa=f.color.toGLArray(M)};f.noFill=function(){T=!1};Y.prototype.stroke=function(a,b,c,e){a=f.color(a,b,c,e);a===wa&&C||(C=!0,wa=a)};H.prototype.stroke=function(){Y.prototype.stroke.apply(this,arguments);Ta=!0};D.prototype.stroke=function(){Y.prototype.stroke.apply(this,
arguments);ba=f.color.toGLArray(wa)};f.noStroke=function(){C=!1};Y.prototype.strokeWeight=function(a){ga=a};H.prototype.strokeWeight=function(a){Y.prototype.strokeWeight.apply(this,arguments);h.lineWidth=a};D.prototype.strokeWeight=function(a){Y.prototype.strokeWeight.apply(this,arguments);h.useProgram(I);X("pointSize2d",I,"uPointSize",a);h.useProgram(la);X("pointSizeUnlitShape",la,"uPointSize",a);h.lineWidth(a)};f.strokeCap=function(a){da.$ensureContext().lineCap=a};f.strokeJoin=function(a){da.$ensureContext().lineJoin=
a};H.prototype.smooth=function(){za=!0;var a=V.style;a.setProperty("image-rendering","optimizeQuality","important");a.setProperty("-ms-interpolation-mode","bicubic","important");h.hasOwnProperty("mozImageSmoothingEnabled")&&(h.mozImageSmoothingEnabled=!0)};D.prototype.smooth=function(){za=!0};H.prototype.noSmooth=function(){za=!1;var a=V.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");h.hasOwnProperty("mozImageSmoothingEnabled")&&(h.mozImageSmoothingEnabled=!1)};D.prototype.noSmooth=function(){za=!1};H.prototype.point=function(a,b){C&&(a=Math.round(a),b=Math.round(b),h.fillStyle=f.color.toString(wa),U=!0,1<ga?(h.beginPath(),h.arc(a,b,ga/2,0,e.TWO_PI,!1),h.fill()):h.fillRect(a,b,1,1))};D.prototype.point=
function(a,b,c){var e=new J;e.translate(a,b,c||0);e.transpose();a=new J;a.scale(1,-1,1);a.apply(L.array());a.transpose();h.useProgram(I);S("uModel2d",I,"uModel",!1,e.array());S("uView2d",I,"uView",!1,a.array());0<ga&&C&&(X("uColor2d",I,"uColor",ba),Z("uIsDrawingText2d",I,"uIsDrawingText",!1),Z("uSmooth2d",I,"uSmooth",za),ea("aVertex2d",I,"aVertex",3,kc),ka("aTextureCoord2d",I,"aTextureCoord"),h.drawArrays(h.POINTS,0,1))};f.beginShape=function(a){aa=a;p=[]};H.prototype.vertex=function(a,b,c){var e=
[];hb&&(hb=!1);e.isVert=!0;e[0]=a;e[1]=b;e[2]=0;e[3]=0;e[4]=0;e[5]=M;e[6]=wa;p.push(e);c&&(p[p.length-1].moveTo=c)};D.prototype.vertex=function(a,b,c,d,f){var g=[];hb&&(hb=!1);g.isVert=!0;f===k&&ra&&(f=d,d=c,c=0);d!==k&&f!==k&&(ad===e.IMAGE&&(d/=Zc,f/=$c),d=1<d?1:d,d=0>d?0:d,f=1<f?1:f,f=0>f?0:f);g[0]=a;g[1]=b;g[2]=c||0;g[3]=d||0;g[4]=f||0;g[5]=qa[0];g[6]=qa[1];g[7]=qa[2];g[8]=qa[3];g[9]=ba[0];g[10]=ba[1];g[11]=ba[2];g[12]=ba[3];g[13]=Gb;g[14]=vb;g[15]=ub;p.push(g)};var ld=function(a,b){var c=new J;
c.scale(1,-1,1);c.apply(L.array());c.transpose();h.useProgram(la);S("uViewUS",la,"uView",!1,c.array());Z("uSmoothUS",la,"uSmooth",za);ea("aVertexUS",la,"aVertex",3,kc);h.bufferData(h.ARRAY_BUFFER,new y(a),h.STREAM_DRAW);ea("aColorUS",la,"aColor",4,Fc);h.bufferData(h.ARRAY_BUFFER,new y(b),h.STREAM_DRAW);h.drawArrays(h.POINTS,0,a.length/3)},Ca=function(a,b,c){b="LINES"===b?h.LINES:"LINE_LOOP"===b?h.LINE_LOOP:h.LINE_STRIP;var e=new J;e.scale(1,-1,1);e.apply(L.array());e.transpose();h.useProgram(la);
S("uViewUS",la,"uView",!1,e.array());ea("aVertexUS",la,"aVertex",3,Ec);h.bufferData(h.ARRAY_BUFFER,new y(a),h.STREAM_DRAW);ea("aColorUS",la,"aColor",4,Vc);h.bufferData(h.ARRAY_BUFFER,new y(c),h.STREAM_DRAW);h.drawArrays(b,0,a.length/3)},bb=function(a,b,c,e){b="TRIANGLES"===b?h.TRIANGLES:"TRIANGLE_FAN"===b?h.TRIANGLE_FAN:h.TRIANGLE_STRIP;var d=new J;d.scale(1,-1,1);d.apply(L.array());d.transpose();h.useProgram(z);S("model3d",z,"uModel",!1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);S("view3d",z,"uView",!1,
d.array());h.enable(h.POLYGON_OFFSET_FILL);h.polygonOffset(1,1);X("color3d",z,"uColor",[-1,0,0,0]);ea("vertex3d",z,"aVertex",3,Uc);h.bufferData(h.ARRAY_BUFFER,new y(a),h.STREAM_DRAW);ra&&null!==eb&&xc(c);ea("aColor3d",z,"aColor",4,Fc);h.bufferData(h.ARRAY_BUFFER,new y(c),h.STREAM_DRAW);ka("aNormal3d",z,"aNormal");ra&&(Z("uUsingTexture3d",z,"uUsingTexture",ra),ea("aTexture3d",z,"aTexture",2,Wc),h.bufferData(h.ARRAY_BUFFER,new y(e),h.STREAM_DRAW));h.drawArrays(b,0,a.length/3);h.disable(h.POLYGON_OFFSET_FILL)};
H.prototype.endShape=function(a){if(0!==p.length){(a=a===e.CLOSE)&&p.push(p[0]);var b=[],c=[],d=[],g=[],m;hb=!0;var w,l,r=p.length;for(w=0;w<r;w++)for(m=p[w],l=0;3>l;l++)b.push(m[l]);for(w=0;w<r;w++)for(m=p[w],l=5;9>l;l++)c.push(m[l]);for(w=0;w<r;w++)for(m=p[w],l=9;13>l;l++)d.push(m[l]);for(w=0;w<r;w++)m=p[w],g.push(m[3]),g.push(m[4]);if(!Db||aa!==e.POLYGON&&aa!==k)if(!Eb||aa!==e.POLYGON&&aa!==k)if(aa===e.POINTS)for(w=0;w<r;w++)m=p[w],C&&f.stroke(m[6]),f.point(m[0],m[1]);else if(aa===e.LINES)for(w=
0;w+1<r;w+=2)m=p[w],C&&f.stroke(p[w+1][6]),f.line(m[0],m[1],p[w+1][0],p[w+1][1]);else if(aa===e.TRIANGLES)for(w=0;w+2<r;w+=3)m=p[w],h.beginPath(),h.moveTo(m[0],m[1]),h.lineTo(p[w+1][0],p[w+1][1]),h.lineTo(p[w+2][0],p[w+2][1]),h.lineTo(m[0],m[1]),T&&(f.fill(p[w+2][5]),Ea()),C&&(f.stroke(p[w+2][6]),ta()),h.closePath();else if(aa===e.TRIANGLE_STRIP)for(w=0;w+1<r;w++)m=p[w],h.beginPath(),h.moveTo(p[w+1][0],p[w+1][1]),h.lineTo(m[0],m[1]),C&&f.stroke(p[w+1][6]),T&&f.fill(p[w+1][5]),w+2<r&&(h.lineTo(p[w+
2][0],p[w+2][1]),C&&f.stroke(p[w+2][6]),T&&f.fill(p[w+2][5])),Ua();else if(aa===e.TRIANGLE_FAN){if(2<r)for(h.beginPath(),h.moveTo(p[0][0],p[0][1]),h.lineTo(p[1][0],p[1][1]),h.lineTo(p[2][0],p[2][1]),T&&(f.fill(p[2][5]),Ea()),C&&(f.stroke(p[2][6]),ta()),h.closePath(),w=3;w<r;w++)m=p[w],h.beginPath(),h.moveTo(p[0][0],p[0][1]),h.lineTo(p[w-1][0],p[w-1][1]),h.lineTo(m[0],m[1]),T&&(f.fill(m[5]),Ea()),C&&(f.stroke(m[6]),ta()),h.closePath()}else if(aa===e.QUADS)for(w=0;w+3<r;w+=4){m=p[w];h.beginPath();h.moveTo(m[0],
m[1]);for(l=1;4>l;l++)h.lineTo(p[w+l][0],p[w+l][1]);h.lineTo(m[0],m[1]);T&&(f.fill(p[w+3][5]),Ea());C&&(f.stroke(p[w+3][6]),ta());h.closePath()}else if(aa===e.QUAD_STRIP){if(3<r)for(w=0;w+1<r;w+=2)m=p[w],h.beginPath(),w+3<r?(h.moveTo(p[w+2][0],p[w+2][1]),h.lineTo(m[0],m[1]),h.lineTo(p[w+1][0],p[w+1][1]),h.lineTo(p[w+3][0],p[w+3][1]),T&&f.fill(p[w+3][5]),C&&f.stroke(p[w+3][6])):(h.moveTo(m[0],m[1]),h.lineTo(p[w+1][0],p[w+1][1])),Ua()}else{h.beginPath();h.moveTo(p[0][0],p[0][1]);for(w=1;w<r;w++)m=p[w],
m.isVert&&(m.moveTo?h.moveTo(m[0],m[1]):h.lineTo(m[0],m[1]));Ua()}else{h.beginPath();for(w=0;w<r;w++)m=p[w],p[w].isVert?p[w].moveTo?h.moveTo(m[0],m[1]):h.lineTo(m[0],m[1]):h.bezierCurveTo(p[w][0],p[w][1],p[w][2],p[w][3],p[w][4],p[w][5]);Ua()}else if(3<r){b=[];c=1-tc;h.beginPath();h.moveTo(p[1][0],p[1][1]);for(w=1;w+2<r;w++)m=p[w],b[0]=[m[0],m[1]],b[1]=[m[0]+(c*p[w+1][0]-c*p[w-1][0])/6,m[1]+(c*p[w+1][1]-c*p[w-1][1])/6],b[2]=[p[w+1][0]+(c*p[w][0]-c*p[w+2][0])/6,p[w+1][1]+(c*p[w][1]-c*p[w+2][1])/6],
b[3]=[p[w+1][0],p[w+1][1]],h.bezierCurveTo(b[1][0],b[1][1],b[2][0],b[2][1],b[3][0],b[3][1]);Ua()}Eb=Db=!1;sa=[];ma=0;a&&p.pop()}};D.prototype.endShape=function(a){if(0!==p.length){var b=a===e.CLOSE;a=[];var c=[],d=[],f=[],g=[],m;hb=!0;var l,r,n=p.length;for(l=0;l<n;l++)for(m=p[l],r=0;3>r;r++)c.push(m[r]);for(l=0;l<n;l++)for(m=p[l],r=5;9>r;r++)d.push(m[r]);for(l=0;l<n;l++)for(m=p[l],r=9;13>r;r++)f.push(m[r]);for(l=0;l<n;l++)m=p[l],g.push(m[3]),g.push(m[4]);if(b){c.push(p[0][0]);c.push(p[0][1]);c.push(p[0][2]);
for(l=5;9>l;l++)d.push(p[0][l]);for(l=9;13>l;l++)f.push(p[0][l]);g.push(p[0][3]);g.push(p[0][4])}if(!Db||aa!==e.POLYGON&&aa!==k)if(!Eb||aa!==e.POLYGON&&aa!==k){if(aa===e.POINTS){for(l=0;l<n;l++)for(m=p[l],r=0;3>r;r++)a.push(m[r]);ld(a,f)}else if(aa===e.LINES){for(l=0;l<n;l++)for(m=p[l],r=0;3>r;r++)a.push(m[r]);for(l=0;l<n;l++)for(m=p[l],r=5;9>r;r++)d.push(m[r]);Ca(a,"LINES",f)}else if(aa===e.TRIANGLES){if(2<n)for(l=0;l+2<n;l+=3){c=[];g=[];a=[];d=[];f=[];for(r=0;3>r;r++)for(b=0;3>b;b++)a.push(p[l+
r][b]),c.push(p[l+r][b]);for(r=0;3>r;r++)for(b=3;5>b;b++)g.push(p[l+r][b]);for(r=0;3>r;r++)for(b=5;9>b;b++)d.push(p[l+r][b]),f.push(p[l+r][b+4]);C&&Ca(a,"LINE_LOOP",f);(T||ra)&&bb(c,"TRIANGLES",d,g)}}else if(aa===e.TRIANGLE_STRIP){if(2<n)for(l=0;l+2<n;l++){a=[];c=[];f=[];d=[];g=[];for(r=0;3>r;r++)for(b=0;3>b;b++)a.push(p[l+r][b]),c.push(p[l+r][b]);for(r=0;3>r;r++)for(b=3;5>b;b++)g.push(p[l+r][b]);for(r=0;3>r;r++)for(b=5;9>b;b++)f.push(p[l+r][b+4]),d.push(p[l+r][b]);(T||ra)&&bb(c,"TRIANGLE_STRIP",
d,g);C&&Ca(a,"LINE_LOOP",f)}}else if(aa===e.TRIANGLE_FAN){if(2<n){for(l=0;3>l;l++)for(m=p[l],r=0;3>r;r++)a.push(m[r]);for(l=0;3>l;l++)for(m=p[l],r=9;13>r;r++)f.push(m[r]);C&&Ca(a,"LINE_LOOP",f);for(l=2;l+1<n;l++){a=[];f=[];a.push(p[0][0]);a.push(p[0][1]);a.push(p[0][2]);f.push(p[0][9]);f.push(p[0][10]);f.push(p[0][11]);f.push(p[0][12]);for(r=0;2>r;r++)for(b=0;3>b;b++)a.push(p[l+r][b]);for(r=0;2>r;r++)for(b=9;13>b;b++)f.push(p[l+r][b]);C&&Ca(a,"LINE_STRIP",f)}(T||ra)&&bb(c,"TRIANGLE_FAN",d,g)}}else if(aa===
e.QUADS)for(l=0;l+3<n;l+=4){a=[];for(r=0;4>r;r++)for(m=p[l+r],b=0;3>b;b++)a.push(m[b]);C&&Ca(a,"LINE_LOOP",f);if(T){c=[];d=[];g=[];for(r=0;3>r;r++)c.push(p[l][r]);for(r=5;9>r;r++)d.push(p[l][r]);for(r=0;3>r;r++)c.push(p[l+1][r]);for(r=5;9>r;r++)d.push(p[l+1][r]);for(r=0;3>r;r++)c.push(p[l+3][r]);for(r=5;9>r;r++)d.push(p[l+3][r]);for(r=0;3>r;r++)c.push(p[l+2][r]);for(r=5;9>r;r++)d.push(p[l+2][r]);ra&&(g.push(p[l+0][3]),g.push(p[l+0][4]),g.push(p[l+1][3]),g.push(p[l+1][4]),g.push(p[l+3][3]),g.push(p[l+
3][4]),g.push(p[l+2][3]),g.push(p[l+2][4]));bb(c,"TRIANGLE_STRIP",d,g)}}else if(aa===e.QUAD_STRIP){if(3<n){for(l=0;2>l;l++)for(m=p[l],r=0;3>r;r++)a.push(m[r]);for(l=0;2>l;l++)for(m=p[l],r=9;13>r;r++)f.push(m[r]);Ca(a,"LINE_STRIP",f);4<n&&0<n%2&&(c.splice(c.length-3),p.pop());for(l=0;l+3<n;l+=2){a=[];f=[];for(r=0;3>r;r++)a.push(p[l+1][r]);for(r=0;3>r;r++)a.push(p[l+3][r]);for(r=0;3>r;r++)a.push(p[l+2][r]);for(r=0;3>r;r++)a.push(p[l+0][r]);for(r=9;13>r;r++)f.push(p[l+1][r]);for(r=9;13>r;r++)f.push(p[l+
3][r]);for(r=9;13>r;r++)f.push(p[l+2][r]);for(r=9;13>r;r++)f.push(p[l+0][r]);C&&Ca(a,"LINE_STRIP",f)}(T||ra)&&bb(c,"TRIANGLE_LIST",d,g)}}else if(1===n){for(r=0;3>r;r++)a.push(p[0][r]);for(r=9;13>r;r++)f.push(p[0][r]);ld(a,f)}else{for(l=0;l<n;l++){m=p[l];for(r=0;3>r;r++)a.push(m[r]);for(r=5;9>r;r++)f.push(m[r])}C&&b?Ca(a,"LINE_LOOP",f):C&&!b&&Ca(a,"LINE_STRIP",f);(T||ra)&&bb(c,"TRIANGLE_FAN",d,g)}ra=!1;h.useProgram(z);Z("usingTexture3d",z,"uUsingTexture",ra)}else a=c,a.splice(a.length-3),f.splice(f.length-
4),C&&Ca(a,null,f),T&&bb(c,"TRIANGLES",d);else C&&Ca(c,null,f),T&&bb(c,null,d);Eb=Db=!1;sa=[];ma=0}};var md=function(a,b){var c=1/a,e=c*c,d=e*c;b.set(0,0,0,1,d,e,c,0,6*d,2*e,0,0,6*d,0,0,0)},nd=function(){yb||(Qb=new J,yb=new J,Qc=!0);var a=tc;Qb.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);md(uc,yb);yc||(ic=new J);ic.set(Qb);ic.preApply(yc);yb.apply(Qb)};H.prototype.bezierVertex=function(){Eb=!0;var a=[];if(hb)throw"vertex() must be used at least once before calling bezierVertex()";
for(var b=0;b<arguments.length;b++)a[b]=arguments[b];p.push(a);p[p.length-1].isVert=!1};D.prototype.bezierVertex=function(){Eb=!0;if(hb)throw"vertex() must be used at least once before calling bezierVertex()";if(9===arguments.length){zb===k&&(zb=new J);var a=p.length-1;md(vc,zb);zb.apply(zc);for(var b=zb.array(),c=p[a][0],e=p[a][1],a=p[a][2],d=b[4]*c+b[5]*arguments[0]+b[6]*arguments[3]+b[7]*arguments[6],g=b[8]*c+b[9]*arguments[0]+b[10]*arguments[3]+b[11]*arguments[6],h=b[12]*c+b[13]*arguments[0]+
b[14]*arguments[3]+b[15]*arguments[6],l=b[4]*e+b[5]*arguments[1]+b[6]*arguments[4]+b[7]*arguments[7],m=b[8]*e+b[9]*arguments[1]+b[10]*arguments[4]+b[11]*arguments[7],n=b[12]*e+b[13]*arguments[1]+b[14]*arguments[4]+b[15]*arguments[7],s=b[4]*a+b[5]*arguments[2]+b[6]*arguments[5]+b[7]*arguments[8],t=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],u=0;u<vc;u++)c+=d,d+=g,g+=h,e+=l,l+=m,m+=n,a+=s,s+=t,t+=b,f.vertex(c,e,a);
f.vertex(arguments[6],arguments[7],arguments[8])}};f.texture=function(a){var b=da.$ensureContext();if(a.__texture)b.bindTexture(b.TEXTURE_2D,a.__texture);else{if("canvas"===a.localName)b.bindTexture(b.TEXTURE_2D,Xc),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(),e=t.createElement("canvas"),d=e.getContext("2d"),
f;if(a.width&0===a.width-1)e.width=a.width;else{for(f=1;f<a.width;)f*=2;e.width=f}if(a.height&0===a.height-1)e.height=a.height;else{for(f=1;f<a.height;)f*=2;e.height=f}d.drawImage(a.sourceImg,0,0,a.width,a.height,0,0,e.width,e.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,e);b.generateMipmap(b.TEXTURE_2D);a.__texture=c}Zc=a.width;$c=a.height}ra=!0;b.useProgram(z);Z("usingTexture3d",z,"uUsingTexture",ra)};f.textureMode=function(a){ad=a};H.prototype.curveVertex=function(a,b){Db=!0;f.vertex(a,b)};D.prototype.curveVertex=function(a,b,c){Db=!0;Qc||nd();var e=[];e[0]=a;e[1]=b;e[2]=c;sa.push(e);ma++;if(3<ma){var d=sa[ma-4][0],g=sa[ma-4][1],h=sa[ma-4][2],k=sa[ma-3][0],l=sa[ma-3][1],m=sa[ma-3][2],n=
sa[ma-2][0],p=sa[ma-2][1],s=sa[ma-2][2],F=sa[ma-1][0],t=sa[ma-1][1],u=sa[ma-1][2];a=k;b=l;c=m;var q=yb.array(),e=q[4]*d+q[5]*k+q[6]*n+q[7]*F,v=q[8]*d+q[9]*k+q[10]*n+q[11]*F,d=q[12]*d+q[13]*k+q[14]*n+q[15]*F,k=q[4]*g+q[5]*l+q[6]*p+q[7]*t,n=q[8]*g+q[9]*l+q[10]*p+q[11]*t,g=q[12]*g+q[13]*l+q[14]*p+q[15]*t,l=q[4]*h+q[5]*m+q[6]*s+q[7]*u,p=q[8]*h+q[9]*m+q[10]*s+q[11]*u,h=q[12]*h+q[13]*m+q[14]*s+q[15]*u;f.vertex(a,b,c);for(m=0;m<uc;m++)a+=e,e+=v,v+=d,b+=k,k+=n,n+=g,c+=l,l+=p,p+=h,f.vertex(a,b,c)}};H.prototype.curve=
function(a,b,c,e,d,g,h,k){f.beginShape();f.curveVertex(a,b);f.curveVertex(c,e);f.curveVertex(d,g);f.curveVertex(h,k);f.endShape()};D.prototype.curve=function(a,b,c,e,d,g,h,l,m,n,p,s){s!==k?(f.beginShape(),f.curveVertex(a,b,c),f.curveVertex(e,d,g),f.curveVertex(h,l,m),f.curveVertex(n,p,s)):(f.beginShape(),f.curveVertex(a,b),f.curveVertex(c,e),f.curveVertex(d,g),f.curveVertex(h,l));f.endShape()};f.curveTightness=function(a){tc=a};f.curveDetail=function(a){uc=a;nd()};f.rectMode=function(a){oa=a};f.imageMode=
function(a){switch(a){case e.CORNER:pc=jd;break;case e.CORNERS:pc=yd;break;case e.CENTER:pc=zd;break;default:throw"Invalid imageMode";}};f.ellipseMode=function(a){ya=a};f.arc=function(a,b,c,d,g,h){if(!(0>=c||h<g)){ya===e.CORNERS?(c-=a,d-=b):ya===e.RADIUS?(a-=c,b-=d,c*=2,d*=2):ya===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);c/=2;d/=2;a+=c;b+=d;g=0|0.5+2*g*f.RAD_TO_DEG;h=0|0.5+2*h*f.RAD_TO_DEG;var k,l;if(T){var m=C;C=!1;f.beginShape();f.vertex(a,b);for(k=
g;k<=h;k++)l=k%e.SINCOS_LENGTH,f.vertex(a+Tb[l]*c,b+Sb[l]*d);f.endShape(e.CLOSE);C=m}if(C){m=T;T=!1;f.beginShape();for(k=g;k<=h;k++)l=k%e.SINCOS_LENGTH,f.vertex(a+Tb[l]*c,b+Sb[l]*d);f.endShape();T=m}}};H.prototype.line=function(a,b,c,e){if(C)if(a=Math.round(a),c=Math.round(c),b=Math.round(b),e=Math.round(e),a===c&&b===e)f.point(a,b);else{for(var d=k,g=k,l=!0,d=L.array(),m=[1,0,0,0,1,0],r=0;6>r&&l;r++)l=d[r]===m[r];l&&(a===c?(b>e&&(d=b,b=e,e=d),e++,1===ga%2&&h.translate(0.5,0)):b===e&&(a>c&&(d=a,a=
c,c=d),c++,1===ga%2&&h.translate(0,0.5)),1===ga&&(g=h.lineCap,h.lineCap="butt"));h.beginPath();h.moveTo(a||0,b||0);h.lineTo(c||0,e||0);ta();l&&(a===c&&1===ga%2?h.translate(-0.5,0):b===e&&1===ga%2&&h.translate(0,-0.5),1===ga&&(h.lineCap=g))}};D.prototype.line=function(a,b,c,e,d,g){if(d===k||g===k)g=0,d=e,e=c,c=0;a===e&&b===d&&c===g?f.point(a,b,c):(a=[a,b,c,e,d,g],b=new J,b.scale(1,-1,1),b.apply(L.array()),b.transpose(),0<ga&&C&&(h.useProgram(I),S("uModel2d",I,"uModel",!1,[1,0,0,0,0,1,0,0,0,0,1,0,0,
0,0,1]),S("uView2d",I,"uView",!1,b.array()),X("uColor2d",I,"uColor",ba),Z("uIsDrawingText",I,"uIsDrawingText",!1),ea("aVertex2d",I,"aVertex",3,Ec),ka("aTextureCoord2d",I,"aTextureCoord"),h.bufferData(h.ARRAY_BUFFER,new y(a),h.STREAM_DRAW),h.drawArrays(h.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()};D.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){vc=a};f.bezierPoint=function(a,b,c,e,d){return(1-d)*(1-d)*(1-d)*a+3*(1-d)*(1-d)*d*b+3*(1-d)*d*d*c+d*d*d*e};f.bezierTangent=
function(a,b,c,e,d){return 3*d*d*(-a+3*b-3*c+e)+6*d*(a-2*b+c)+3*(-a+b)};f.curvePoint=function(a,b,c,e,d){return 0.5*(2*b+(-a+c)*d+(2*a-5*b+4*c-e)*d*d+(-a+3*b-3*c+e)*d*d*d)};f.curveTangent=function(a,b,c,e,d){return 0.5*(-a+c+2*(2*a-5*b+4*c-e)*d+3*(-a+3*b-3*c+e)*d*d)};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,k,l){f.beginShape(e.QUADS);f.vertex(a,b,0);f.vertex(c,d,0);f.vertex(g,h,0);f.vertex(k,
l,0);f.endShape()};H.prototype.rect=function(a,b,c,d,f,g,l,m){if(c||d)if(oa===e.CORNERS?(c-=a,d-=b):oa===e.RADIUS?(c*=2,d*=2,a-=c/2,b-=d/2):oa===e.CENTER&&(a-=c/2,b-=d/2),a=Math.round(a),b=Math.round(b),c=Math.round(c),d=Math.round(d),f!==k){m===k&&(m=l=g=f);var r=c/2,n=d/2;if(f>r||f>n)f=Math.min(r,n);if(g>r||g>n)g=Math.min(r,n);if(l>r||l>n)l=Math.min(r,n);if(m>r||m>n)m=Math.min(r,n);T&&!C||h.translate(0.5,0.5);h.beginPath();h.moveTo(a+f,b);h.lineTo(a+c-g,b);h.quadraticCurveTo(a+c,b,a+c,b+g);h.lineTo(a+
c,b+d-l);h.quadraticCurveTo(a+c,b+d,a+c-l,b+d);h.lineTo(a+m,b+d);h.quadraticCurveTo(a,b+d,a,b+d-m);h.lineTo(a,b+f);h.quadraticCurveTo(a,b,a+f,b);T&&!C||h.translate(-0.5,-0.5);Ea();ta()}else C&&1===ga%2&&h.translate(0.5,0.5),h.beginPath(),h.rect(a,b,c,d),Ea(),ta(),C&&1===ga%2&&h.translate(-0.5,-0.5)};D.prototype.rect=function(a,b,c,d,f,g,l,m){if(f!==k)throw"rect() with rounded corners is not supported in 3D mode";oa===e.CORNERS?(c-=a,d-=b):oa===e.RADIUS?(c*=2,d*=2,a-=c/2,b-=d/2):oa===e.CENTER&&(a-=
c/2,b-=d/2);f=new J;f.translate(a,b,0);f.scale(c,d,1);f.transpose();b=new J;b.scale(1,-1,1);b.apply(L.array());b.transpose();0<ga&&C&&(h.useProgram(I),S("uModel2d",I,"uModel",!1,f.array()),S("uView2d",I,"uView",!1,b.array()),X("uColor2d",I,"uColor",ba),Z("uIsDrawingText2d",I,"uIsDrawingText",!1),ea("aVertex2d",I,"aVertex",3,jc),ka("aTextureCoord2d",I,"aTextureCoord"),h.drawArrays(h.LINE_LOOP,0,Lc.length/3));T&&(h.useProgram(z),S("uModel3d",z,"uModel",!1,f.array()),S("uView3d",z,"uView",!1,b.array()),
h.enable(h.POLYGON_OFFSET_FILL),h.polygonOffset(1,1),X("color3d",z,"uColor",qa),0<O?(a=new J,a.set(b),b=new J,b.set(f),a.mult(b),b=new J,b.set(a),b.invert(),b.transpose(),S("uNormalTransform3d",z,"uNormalTransform",!1,b.array()),ea("aNormal3d",z,"aNormal",3,Dc)):ka("normal3d",z,"aNormal"),ea("vertex3d",z,"aVertex",3,jc),h.drawArrays(h.TRIANGLE_FAN,0,Lc.length/3),h.disable(h.POLYGON_OFFSET_FILL))};H.prototype.ellipse=function(a,b,c,d){a=a||0;b=b||0;if(!(0>=c&&0>=d))if(ya===e.RADIUS?(c*=2,d*=2):ya===
e.CORNERS?(c-=a,d-=b,a+=c/2,b+=d/2):ya===e.CORNER&&(a+=c/2,b+=d/2),c===d)h.beginPath(),h.arc(a,b,c/2,0,e.TWO_PI,!1),Ea(),ta();else{c/=2;d/=2;var g=0.5522847498307933*c,k=0.5522847498307933*d;f.beginShape();f.vertex(a+c,b);f.bezierVertex(a+c,b-k,a+g,b-d,a,b-d);f.bezierVertex(a-g,b-d,a-c,b-k,a-c,b);f.bezierVertex(a-c,b+k,a-g,b+d,a,b+d);f.bezierVertex(a+g,b+d,a+c,b+k,a+c,b);f.endShape()}};D.prototype.ellipse=function(a,b,c,d){a=a||0;b=b||0;if(!(0>=c&&0>=d)){ya===e.RADIUS?(c*=2,d*=2):ya===e.CORNERS?(c-=
a,d-=b,a+=c/2,b+=d/2):ya===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(T){for(g=d=c=0;g<p.length;g++)c+=p[g][0],d+=p[g][1];c/=p.length;d/=p.length;g=[];a=[];b=[];g[0]=c;g[1]=d;g[2]=0;g[3]=0;g[4]=0;g[5]=qa[0];g[6]=qa[1];g[7]=qa[2];g[8]=qa[3];
g[9]=ba[0];g[10]=ba[1];g[11]=ba[2];g[12]=ba[3];g[13]=Gb;g[14]=vb;g[15]=ub;p.unshift(g);for(g=0;g<p.length;g++){for(c=0;3>c;c++)a.push(p[g][c]);for(c=5;9>c;c++)b.push(p[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.";Gb=a;vb=b;ub=c;0!==aa&&(Fb===e.NORMAL_MODE_AUTO?Fb=e.NORMAL_MODE_SHAPE:Fb===e.NORMAL_MODE_SHAPE&&(Fb=e.NORMAL_MODE_VERTEX))};f.save=function(a,
b){return b!==k?l.open(b.toDataURL(),"_blank"):l.open(f.externals.canvas.toDataURL(),"_blank")};var Ad=0;f.saveFrame=function(a){a===k&&(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=t.createElement("canvas").getContext("2d"),Rc=[k,k,k],Ha=function(a,b,c){this.__isDirty=!1;if(a instanceof A)this.fromHTMLImageData(a);else if(b||c){this.width=a||1;this.height=b||1;a=this.sourceImg=t.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=Zb(this)};Ha.prototype={__isPImage:!0,updatePixels:function(){var a=this.sourceImg;a&&(a instanceof x&&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(e){a.width&&a.height&&(this.isRemote=!0,this.width=a.width,this.height=a.height)}this.sourceImg=a},get:function(a,b,c,e){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,e,this)},set:function(a,b,c){f.set(a,b,c,this);this.__isDirty=!0},blend:function(a,b,c,e,d,g,h,k,l,m){9===
arguments.length?f.blend(this,a,b,c,e,d,g,h,k,l,this):10===arguments.length&&f.blend(a,b,c,e,d,g,h,k,l,m,this);delete this.sourceImg},copy:function(a,b,c,d,g,h,k,l,m){8===arguments.length?f.blend(this,a,b,c,d,g,h,k,l,e.REPLACE,this):9===arguments.length&&f.blend(a,b,c,d,g,h,k,l,m,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,e;if(a instanceof Ha||a.__isPImage)if(a.width===this.width&&a.height===this.height)for(a=a.toImageData(),c=2,e=4*this.width*this.height;c<e;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,e=a.length;c<e;++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:s,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=t.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=Ha;f.createImage=function(a,b,c){return new Ha(a,b,c)};f.loadImage=function(a,b,c){if(fa.imageCache.images[a])return b=new Ha(fa.imageCache.images[a]),b.loaded=!0,b;b=new Ha;var e=t.createElement("img");b.sourceImg=e;e.onload=function(a,b,c){return function(){b.fromHTMLImageData(a);
b.loaded=!0;c&&c()}}(e,b,c);e.src=a;return b};f.requestImage=f.loadImage;f.get=function(a,b,c,d,g){if(void 0!==g)return Lb(a,b,c,d,g);if(void 0!==d)return Kb(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:Pb?(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?Lb(0,0,a.width,a.height,a):Kb(0,0,f.width,f.height)};f.createGraphics=function(a,b,c){var e=new N;e.size(a,b,c);e.background(0,0);return e};f.set=function(a,b,c,e){if(3===arguments.length)"number"===typeof c?a<f.width&&(0<=a&&0<=b&&b<f.height)&&(Pb||(f.loadPixels(),null===Jc&&(Sc=h,Jc=new $b),Pb=!0,h=Jc,bd=
0),f.pixels.setPixel((0|a)+f.width*(0|b),c),++bd>cd&&Va()):(c instanceof Ha||c.__isPImage)&&f.image(c,a,b);else if(4===arguments.length){if(e.isRemote)throw"Image is loaded remotely. Cannot set x,y.";var d=f.color.toArray(c),g=4*b*e.width+4*a,k=e.imageData.data;k[g]=d[0];k[g+1]=d[1];k[g+2]=d[2];k[g+3]=d[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,e=f.imageData.data;e[c+0]=(b&16711680)>>>16;e[c+1]=(b&65280)>>>8;e[c+2]=b&255;e[c+3]=(b&4278190080)>>>24},toArray:function(){for(var a=[],b=f.imageData.width*f.imageData.height,c=f.imageData.data,e=0,d=0;e<b;e++,d+=4)a.push(c[d+3]<<24&4278190080|c[d+0]<<16&16711680|c[d+1]<<8&65280|c[d+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=da.$ensureContext().getImageData(0,
0,f.width,f.height)};f.updatePixels=function(){f.imageData&&da.$ensureContext().putImageData(f.imageData,0,0)};f.hint=function(a){var b=da.$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?za=!0:a===e.DISABLE_OPENGL_2X_SMOOTH&&(za=!1)};var od=function(a,b,c,e){if(a instanceof Ha||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,e);ib=a};H.prototype.background=function(a,b,c,e){a!==k&&od(a,b,c,e);ib instanceof Ha||ib.__isPImage?(h.save(),h.setTransform(1,0,0,1,0,0),f.image(ib,0,0)):(h.save(),h.setTransform(1,0,0,1,0,0),f.alpha(ib)!==ja&&h.clearRect(0,0,f.width,f.height),h.fillStyle=f.color.toString(ib),h.fillRect(0,0,f.width,f.height),U=!0);xa()};D.prototype.background=function(a,b,c,e){0<arguments.length&&
od(a,b,c,e);var d=f.color.toGLArray(ib);h.clearColor(d[0],d[1],d[2],d[3]);h.clear(h.COLOR_BUFFER_BIT|h.DEPTH_BUFFER_BIT)};H.prototype.image=function(a,b,c,e,d){b=Math.round(b);c=Math.round(c);if(0<a.width){var f=pc(b||0,c||0,e||a.width,d||a.height,4>arguments.length);if(a.sourceImg&&null===eb){var g=a.sourceImg;a.__isDirty&&a.updatePixels();h.drawImage(g,0,0,g.width,g.height,f.x,f.y,f.w,f.h)}else g=a.toImageData(),null!==eb&&(eb(g),a.__isDirty=!0),h.drawImage(La(g).canvas,0,0,a.width,a.height,f.x,
f.y,f.w,f.h)}};D.prototype.image=function(a,b,c,e,d){0<a.width&&(b=Math.round(b),c=Math.round(c),e=e||a.width,d=d||a.height,f.beginShape(f.QUADS),f.texture(a),f.vertex(b,c,0,0,0),f.vertex(b,c+d,0,0,d),f.vertex(b+e,c+d,0,e,d),f.vertex(b+e,c,0,e,0),f.endShape())};f.tint=function(a,b,c,e){a=f.color(a,b,c,e);var d=f.red(a)/ua,g=f.green(a)/Fa,h=f.blue(a)/va,k=f.alpha(a)/ja;eb=function(a){var b=a.data;a=4*a.width*a.height;for(var c=0;c<a;)b[c++]*=d,b[c++]*=g,b[c++]*=h,b[c++]*=k};xc=function(a){for(var b=
0;b<a.length;)a[b++]=d,a[b++]=g,a[b++]=h,a[b++]=k}};f.noTint=function(){xc=eb=null};f.copy=function(a,b,c,d,g,h,l,m,n){n===k&&(n=m,m=l,l=h,h=g,g=d,d=c,c=b,b=a,a=f);f.blend(a,b,c,d,g,h,l,m,n,e.REPLACE)};f.blend=function(a,b,c,e,d,g,h,l,m,n,p){if(a.isRemote)throw"Image is loaded remotely. Cannot blend image.";n===k&&(n=m,m=l,l=h,h=g,g=d,d=e,e=c,c=b,b=a,a=f);e=b+e;d=c+d;l=g+l;m=h+m;var s=p||f;p!==k&&n!==k||f.loadPixels();a.loadPixels();a===f&&f.intersect(b,c,e,d,g,h,l,m)?f.blit_resize(f.get(b,c,e-b,
d-c),0,0,e-b-1,d-c-1,s.imageData.data,s.width,s.height,g,h,l,m,n):f.blit_resize(a,b,c,e,d,s.imageData.data,s.width,s.height,g,h,l,m,n);p===k&&f.updatePixels()};var pd=function(a,b){var c=0,e=b.pixels.getLength(),d=new Q(e),f,g,h,k,l,m,n,p,s,t,q,u;if(a)for(;c<e;)for(f=c,g=c+b.width;c<g;)h=k=b.pixels.getPixel(c),m=c-1,l=c+1,n=c-b.width,p=c+b.width,m<f&&(m=c),l>=g&&(l=c),0>n&&(n=0),p>=e&&(p=c),n=b.pixels.getPixel(n),m=b.pixels.getPixel(m),p=b.pixels.getPixel(p),l=b.pixels.getPixel(l),h=77*(h>>16&255)+
151*(h>>8&255)+28*(h&255),t=77*(m>>16&255)+151*(m>>8&255)+28*(m&255),s=77*(l>>16&255)+151*(l>>8&255)+28*(l&255),q=77*(n>>16&255)+151*(n>>8&255)+28*(n&255),u=77*(p>>16&255)+151*(p>>8&255)+28*(p&255),t<h&&(k=m,h=t),s<h&&(k=l,h=s),q<h&&(k=n,h=q),u<h&&(k=p),d[c++]=k;else for(;c<e;)for(f=c,g=c+b.width;c<g;)h=k=b.pixels.getPixel(c),m=c-1,l=c+1,n=c-b.width,p=c+b.width,m<f&&(m=c),l>=g&&(l=c),0>n&&(n=0),p>=e&&(p=c),n=b.pixels.getPixel(n),m=b.pixels.getPixel(m),p=b.pixels.getPixel(p),l=b.pixels.getPixel(l),
h=77*(h>>16&255)+151*(h>>8&255)+28*(h&255),t=77*(m>>16&255)+151*(m>>8&255)+28*(m&255),s=77*(l>>16&255)+151*(l>>8&255)+28*(l&255),q=77*(n>>16&255)+151*(n>>8&255)+28*(n&255),u=77*(p>>16&255)+151*(p>>8&255)+28*(p&255),t>h&&(k=m,h=t),s>h&&(k=l,h=s),q>h&&(k=n,h=q),u>h&&(k=p),d[c++]=k;b.pixels.set(d)};f.filter=function(a,b,c){var d,g,h,l;3===arguments.length?(c.loadPixels(),d=c):(f.loadPixels(),d=f);b===k&&(b=null);if(d.isRemote)throw"Image is loaded remotely. Cannot filter image.";var m=d.pixels.getLength();
switch(a){case e.BLUR:var n=b||1,p=d,s,t,q,F,u,v,x,z,A;h=p.pixels.getLength();l=new y(h);m=new y(h);g=new y(h);h=new y(h);var E=0,C,H,G,n=f.floor(3.5*n),B,n=1>n?1:248>n?n:248;if(f.shared.blurRadius!==n){f.shared.blurRadius=n;f.shared.blurKernelSize=1+(f.shared.blurRadius<<1);f.shared.blurKernel=new y(f.shared.blurKernelSize);var D=f.shared.blurKernel,J=f.shared.blurKernelSize;for(B=0;B<J;B++)D[B]=0;J=(n-1)*(n-1);for(B=1;B<n;B++)D[n+B]=D[void 0]=J;D[n]=n*n}n=p.height;B=p.width;D=f.shared.blurKernelSize;
z=f.shared.blurRadius;var J=f.shared.blurKernel,I=p.imageData.data;for(H=0;H<n;H++){for(C=0;C<B;C++){q=t=s=F=p=0;v=C-z;if(0>v)u=-v,v=0;else{if(v>=B)break;u=0}for(G=u;G<D&&!(v>=B);G++)x=4*(v+E),u=J[G],F+=u*I[x+3],s+=u*I[x],t+=u*I[x+1],q+=u*I[x+2],p+=u,v++;x=E+C;h[x]=F/p;l[x]=s/p;m[x]=t/p;g[x]=q/p}E+=B}E=0;z=-z;A=z*B;for(H=0;H<n;H++){for(C=0;C<B;C++){q=t=s=F=p=0;if(0>z)u=x=-z,v=C;else{if(z>=n)break;u=0;x=z;v=C+A}for(G=u;G<D&&!(x>=n);G++)u=J[G],F+=u*h[v],s+=u*l[v],t+=u*m[v],q+=u*g[v],p+=u,x++,v+=B;x=
4*(C+E);I[x]=s/p;I[x+1]=t/p;I[x+2]=q/p;I[x+3]=F/p}E+=B;A+=B;z++}break;case e.GRAY:if(d.format===e.ALPHA){for(l=0;l<m;l++)g=255-d.pixels.getPixel(l),d.pixels.setPixel(l,4278190080|g<<16|g<<8|g);d.format=e.RGB}else for(l=0;l<m;l++)g=d.pixels.getPixel(l),h=77*(g>>16&255)+151*(g>>8&255)+28*(g&255)>>8,d.pixels.setPixel(l,g&e.ALPHA_MASK|h<<16|h<<8|h);break;case e.INVERT:for(l=0;l<m;l++)d.pixels.setPixel(l,d.pixels.getPixel(l)^16777215);break;case e.POSTERIZE:if(null===b)throw"Use filter(POSTERIZE, int levels) instead of filter(POSTERIZE)";
g=f.floor(b);if(2>g||255<g)throw"Levels must be between 2 and 255 for filter(POSTERIZE, levels)";h=g-1;for(l=0;l<m;l++)E=d.pixels.getPixel(l)>>16&255,n=d.pixels.getPixel(l)>>8&255,B=d.pixels.getPixel(l)&255,E=255*(E*g>>8)/h,n=255*(n*g>>8)/h,B=255*(B*g>>8)/h,d.pixels.setPixel(l,4278190080&d.pixels.getPixel(l)|E<<16|n<<8|B);break;case e.OPAQUE:for(l=0;l<m;l++)d.pixels.setPixel(l,d.pixels.getPixel(l)|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)";
g=f.floor(255*b);for(l=0;l<m;l++)h=f.max((d.pixels.getPixel(l)&e.RED_MASK)>>16,f.max((d.pixels.getPixel(l)&e.GREEN_MASK)>>8,d.pixels.getPixel(l)&e.BLUE_MASK)),d.pixels.setPixel(l,d.pixels.getPixel(l)&e.ALPHA_MASK|(h<g?0:16777215));break;case e.ERODE:pd(!0,d);break;case e.DILATE:pd(!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,e,d,f,g,h){c=c-a+1;e=e-b+1;g=g-d+1;h=h-f+1;d<a?(g+=d-a,g>c&&(g=c)):(a=c+a-d,g>a&&(g=a));f<b?(h+=f-b,h>e&&(h=e)):(b=e+b-f,h>b&&(h=b));return!(0>=g||0>=h)};var na={};na[e.BLEND]=f.modes.blend;na[e.ADD]=f.modes.add;na[e.SUBTRACT]=f.modes.subtract;na[e.LIGHTEST]=f.modes.lightest;na[e.DARKEST]=f.modes.darkest;na[e.REPLACE]=f.modes.replace;na[e.DIFFERENCE]=f.modes.difference;na[e.EXCLUSION]=f.modes.exclusion;na[e.MULTIPLY]=f.modes.multiply;na[e.SCREEN]=
f.modes.screen;na[e.OVERLAY]=f.modes.overlay;na[e.HARD_LIGHT]=f.modes.hard_light;na[e.SOFT_LIGHT]=f.modes.soft_light;na[e.DODGE]=f.modes.dodge;na[e.BURN]=f.modes.burn;f.blit_resize=function(a,b,c,d,g,h,k,l,m,n,p,s,t){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;p-=m;s-=n;if(!(0>=p||0>=s||0>=d||0>=g||m>=k||n>=l||b>=a.width||c>=a.height)){d=Math.floor(d/p*e.PRECISIONF);g=Math.floor(g/s*e.PRECISIONF);var q=f.shared;q.srcXOffset=Math.floor(0>m?-m*d:b*e.PRECISIONF);
q.srcYOffset=Math.floor(0>n?-n*g:c*e.PRECISIONF);0>m&&(p+=m,m=0);0>n&&(s+=n,n=0);p=Math.min(p,k-m);s=Math.min(s,l-n);b=n*k+m;var u;q.srcBuffer=a.imageData.data;q.iw=a.width;q.iw1=a.width-1;q.ih1=a.height-1;c=na[t];var v,x,y,z;m=e.ALPHA_MASK;n=e.RED_MASK;var A=e.GREEN_MASK,B=e.BLUE_MASK,E=e.PREC_MAXVAL,C=e.PRECISIONB,G=e.PREC_RED_SHIFT,H=e.PREC_ALPHA_SHIFT,D=q.srcBuffer,I=Math.min;for(t=0;t<s;t++){q.sX=q.srcXOffset;q.fracV=q.srcYOffset&E;q.ifV=E-q.fracV;q.v1=(q.srcYOffset>>C)*q.iw;q.v2=I((q.srcYOffset>>
C)+1,q.ih1)*q.iw;for(a=0;a<p;a++)l=4*(b+a),u=h[l+3]<<24&m|h[l]<<16&n|h[l+1]<<8&A|h[l+2]&B,q.fracU=q.sX&E,q.ifU=E-q.fracU,q.ul=q.ifU*q.ifV>>C,q.ll=q.ifU*q.fracV>>C,q.ur=q.fracU*q.ifV>>C,q.lr=q.fracU*q.fracV>>C,q.u1=q.sX>>C,q.u2=I(q.u1+1,q.iw1),v=4*(q.v1+q.u1),x=4*(q.v1+q.u2),y=4*(q.v2+q.u1),z=4*(q.v2+q.u2),q.cUL=D[v+3]<<24&m|D[v]<<16&n|D[v+1]<<8&A|D[v+2]&B,q.cUR=D[x+3]<<24&m|D[x]<<16&n|D[x+1]<<8&A|D[x+2]&B,q.cLL=D[y+3]<<24&m|D[y]<<16&n|D[y+1]<<8&A|D[y+2]&B,q.cLR=D[z+3]<<24&m|D[z]<<16&n|D[z+1]<<8&A|
D[z+2]&B,q.r=q.ul*((q.cUL&n)>>16)+q.ll*((q.cLL&n)>>16)+q.ur*((q.cUR&n)>>16)+q.lr*((q.cLR&n)>>16)<<G&n,q.g=q.ul*(q.cUL&A)+q.ll*(q.cLL&A)+q.ur*(q.cUR&A)+q.lr*(q.cLR&A)>>>C&A,q.b=q.ul*(q.cUL&B)+q.ll*(q.cLL&B)+q.ur*(q.cUR&B)+q.lr*(q.cLR&B)>>>C,q.a=q.ul*((q.cUL&m)>>>24)+q.ll*((q.cLL&m)>>>24)+q.ur*((q.cUR&m)>>>24)+q.lr*((q.cLR&m)>>>24)<<H&m,u=c(u,q.a|q.r|q.g|q.b),h[l]=(u&n)>>>16,h[l+1]=(u&A)>>>8,h[l+2]=u&B,h[l+3]=(u&m)>>>24,q.sX+=d;b+=k;q.srcYOffset+=g}}};f.loadFont=function(a,b){if(a===k)throw"font name required in loadFont.";
if(-1===a.indexOf(".svg"))return b===k&&(b=ca.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,e=b.length,d=0;d<e;d++)try{c+=parseFloat(f.glyphLook(f.glyphTable[a],b[d]).horiz_adv_x)}catch(g){N.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!==k&&
(a.glyph||(a=PFont.get(a.name,b)),Oa=b);ca=a;Ab=ca.name;Za=ca.ascent;Na=ca.descent;Aa=ca.leading;da.$ensureContext().font=ca.css};f.textSize=function(a){ca=PFont.get(Ab,a);Oa=a;Za=ca.ascent;Na=ca.descent;Aa=ca.leading;da.$ensureContext().font=ca.css};f.textAscent=function(){return Za};f.textDescent=function(){return Na};f.textLeading=function(a){Aa=a};f.textAlign=function(a,b){nb=a;Ya=b||e.BASELINE};H.prototype.textWidth=function(a){a=Wa(a).split(/\r?\n/g);var b=0,c,e=a.length;h.font=ca.css;for(c=
0;c<e;++c)b=Math.max(b,ca.measureTextWidth(a[c]));return b|0};D.prototype.textWidth=function(a){a=Wa(a).split(/\r?\n/g);var b=0,c,e=a.length;Ba===k&&(Ba=t.createElement("canvas"));var d=Ba.getContext("2d");d.font=ca.css;for(c=0;c<e;++c)b=Math.max(b,d.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){N.debug(c)}};H.prototype.text$line=function(a,b,c,d,g){d=d=0;if(ca.glyph){d=
f.glyphTable[Ab];h.save();h.translate(b,c+Oa);g!==e.RIGHT&&g!==e.CENTER||d.width(a);b=1/d.units_per_em*Oa;h.scale(b,b);b=0;for(c=a.length;b<c;b++)try{f.glyphLook(d,a[b]).draw()}catch(k){N.debug(k)}xa()}else if(a&&"fillText"in h){U&&(h.fillStyle=f.color.toString(M),U=!1);if(g===e.RIGHT||g===e.CENTER)d=ca.measureTextWidth(a),d=g===e.RIGHT?-d:-d/2;h.fillText(a,b+d,c)}};D.prototype.text$line=function(a,b,c,d,f){Ba===k&&(Ba=t.createElement("canvas"));var g=h;h=Ba.getContext("2d");h.font=ca.css;var l=ca.measureTextWidth(a);
Ba.width=l;Ba.height=Oa;h=Ba.getContext("2d");h.font=ca.css;h.textBaseline="top";H.prototype.text$line(a,0,0,0,e.LEFT);a=Ba.width/Ba.height;h=g;h.bindTexture(h.TEXTURE_2D,Yc);h.texImage2D(h.TEXTURE_2D,0,h.RGBA,h.RGBA,h.UNSIGNED_BYTE,Ba);h.texParameteri(h.TEXTURE_2D,h.TEXTURE_MAG_FILTER,h.LINEAR);h.texParameteri(h.TEXTURE_2D,h.TEXTURE_MIN_FILTER,h.LINEAR);h.texParameteri(h.TEXTURE_2D,h.TEXTURE_WRAP_T,h.CLAMP_TO_EDGE);h.texParameteri(h.TEXTURE_2D,h.TEXTURE_WRAP_S,h.CLAMP_TO_EDGE);g=0;f===e.RIGHT?g=
-l:f===e.CENTER&&(g=-l/2);f=new J;l=0.5*Oa;f.translate(b+g-l/2,c-l,d);f.scale(-a*l,-l,l);f.translate(-1,-1,-1);f.transpose();b=new J;b.scale(1,-1,1);b.apply(L.array());b.transpose();h.useProgram(I);ea("aVertex2d",I,"aVertex",3,Gc);ea("aTextureCoord2d",I,"aTextureCoord",2,Hc);Z("uSampler2d",I,"uSampler",[0]);Z("uIsDrawingText2d",I,"uIsDrawingText",!0);S("uModel2d",I,"uModel",!1,f.array());S("uView2d",I,"uView",!1,b.array());X("uColor2d",I,"uColor",qa);h.bindBuffer(h.ELEMENT_ARRAY_BUFFER,Ic);h.drawElements(h.TRIANGLES,
6,h.UNSIGNED_SHORT,0)};f.text=function(){lc!==e.SHAPE&&(3===arguments.length?ac(Wa(arguments[0]),arguments[1],arguments[2],0):4===arguments.length?ac(Wa(arguments[0]),arguments[1],arguments[2],arguments[3]):5===arguments.length?wb(Wa(arguments[0]),arguments[1],arguments[2],arguments[3],arguments[4],0):6===arguments.length&&wb(Wa(arguments[0]),arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]))};f.textMode=function(a){lc=a};f.loadGlyphs=function(a){var b,c,d,e,g,m,n,q,p,s,u,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},y=function(a){var f=x("[A-Za-z][0-9\\- ]+|Z",a);v="return {draw:function(){var curContext=beforePathDraw();curContext.beginPath();";q=a=m=g=e=d=c=b=0;p="";s=f.length-1;for(var k=0;k<s;k++){var l=f[k][0];a=x("[0-9\\-]+",l);switch(l[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":g=parseFloat(a[0][0]);m=parseFloat(a[1][0]);"Q"===p||"T"===p?(a=Math.sqrt(Math.pow(b-d,2)+Math.pow(e-c,2)),q=Math.PI+Math.atan2(d-b,e-c),d=b+Math.sin(q)*a,e=c+Math.cos(q)*a):(d=b,e=c);v+="curContext.quadraticCurveTo("+d+","+-e+","+g+","+-m+");";b=g;c=m;break;case "Q":d=parseFloat(a[0][0]);e=parseFloat(a[1][0]);g=parseFloat(a[2][0]);
m=parseFloat(a[3][0]);v+="curContext.quadraticCurveTo("+d+","+-e+","+g+","+-m+");";b=g;c=m;break;case "Z":v+="curContext.closePath();"}p=l[0]}v+="afterPathDraw();";v+="curContext.translate("+u+",0);";v+="}}";return(new Function("beforePathDraw","afterPathDraw",v))(function(){h.save();return da.$ensureContext()},function(){Ea();ta();xa()})},z=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"),g=b[d].getAttribute("glyph-name");u=b[d].getAttribute("horiz-adv-x");null===u&&(u=f.glyphTable[a].horiz_adv_x);n=b[d].getAttribute("d");n!==k&&(v=y(n),f.glyphTable[a][g]={name:g,unicode:e,horiz_adv_x:u,draw:v.draw})}};f.glyphTable[a]={};
(function(){var b;try{b=t.implementation.createDocument("","",null)}catch(c){N.debug(c.message);return}try{b.async=!1,b.load(a),z(b.getElementsByTagName("svg")[0])}catch(d){N.debug(d);try{var e=new l.XMLHttpRequest;e.open("GET",a,!1);e.send(null);z(e.responseXML.documentElement)}catch(f){N.debug(d)}}})(a);return f.glyphTable[a]};f.param=function(a){var b="data-processing-"+a;if(V.hasAttribute(b))return V.getAttribute(b);for(var b=0,c=V.childNodes.length;b<c;++b){var d=V.childNodes.item(b);if(1===
d.nodeType&&"param"===d.tagName.toLowerCase()&&d.getAttribute("name")===a)return d.getAttribute("value")}return fa.params.hasOwnProperty(a)?fa.params[a]:null};E.prototype.translate=G("translate");E.prototype.transform=G("transform");E.prototype.scale=G("scale");E.prototype.pushMatrix=G("pushMatrix");E.prototype.popMatrix=G("popMatrix");E.prototype.resetMatrix=G("resetMatrix");E.prototype.applyMatrix=G("applyMatrix");E.prototype.rotate=G("rotate");E.prototype.rotateZ=G("rotateZ");E.prototype.shearX=
G("shearX");E.prototype.shearY=G("shearY");E.prototype.redraw=G("redraw");E.prototype.toImageData=G("toImageData");E.prototype.ambientLight=G("ambientLight");E.prototype.directionalLight=G("directionalLight");E.prototype.lightFalloff=G("lightFalloff");E.prototype.lightSpecular=G("lightSpecular");E.prototype.pointLight=G("pointLight");E.prototype.noLights=G("noLights");E.prototype.spotLight=G("spotLight");E.prototype.beginCamera=G("beginCamera");E.prototype.endCamera=G("endCamera");E.prototype.frustum=
G("frustum");E.prototype.box=G("box");E.prototype.sphere=G("sphere");E.prototype.ambient=G("ambient");E.prototype.emissive=G("emissive");E.prototype.shininess=G("shininess");E.prototype.specular=G("specular");E.prototype.fill=G("fill");E.prototype.stroke=G("stroke");E.prototype.strokeWeight=G("strokeWeight");E.prototype.smooth=G("smooth");E.prototype.noSmooth=G("noSmooth");E.prototype.point=G("point");E.prototype.vertex=G("vertex");E.prototype.endShape=G("endShape");E.prototype.bezierVertex=G("bezierVertex");
E.prototype.curveVertex=G("curveVertex");E.prototype.curve=G("curve");E.prototype.line=G("line");E.prototype.bezier=G("bezier");E.prototype.rect=G("rect");E.prototype.ellipse=G("ellipse");E.prototype.background=G("background");E.prototype.image=G("image");E.prototype.textWidth=G("textWidth");E.prototype.text$line=G("text$line");E.prototype.$ensureContext=G("$ensureContext");E.prototype.$newPMatrix=G("$newPMatrix");E.prototype.size=function(a,b,c){Ma(c===e.WEBGL?"3D":"2D");f.size(a,b,c)};E.prototype.$init=
s;H.prototype.$init=function(){f.size(f.width,f.height);h.lineCap="round";f.noSmooth();f.disableContextMenu()};D.prototype.$init=function(){f.use3DContext=!0;f.disableContextMenu()};Y.prototype.$ensureContext=function(){return h};V.getAttribute("tabindex")||V.setAttribute("tabindex",0);if(Ob)fa=new N.Sketch,Ma(),f.size=function(a,b,c){c&&c===e.WEBGL?Ma("3D"):Ma("2D");f.size(a,b,c)};else{fa=g instanceof N.Sketch?g:"function"===typeof g?new N.Sketch(g):g?N.compile(g):new N.Sketch(function(){});f.externals.sketch=
fa;Ma();V.onfocus=function(){f.focused=!0};V.onblur=function(){f.focused=!1;fa.options.globalKeyEvents||(f.__keyPressed=!1,gb=[],ob=null)};fa.options.pauseOnBlur&&(Ja(l,"focus",function(){ia&&f.loop()}),Ja(l,"blur",function(){ia&&Da&&(f.noLoop(),ia=!0);f.__keyPressed=!1;gb=[];ob=null}));var Nc=fa.options.globalKeyEvents?l:V;Ja(Nc,"keydown",Mb);Ja(Nc,"keypress",dc);Ja(Nc,"keyup",Nb);for(var Wb in N.lib)N.lib.hasOwnProperty(Wb)&&(N.lib[Wb].hasOwnProperty("attach")?N.lib[Wb].attach(f):N.lib[Wb]instanceof
Function&&N.lib[Wb].call(this));var qd=function(a){if(fa.imageCache.pending||PFont.preloading.pending(100))l.setTimeout(function(){qd(a)},100);else{if(l.opera){var b,c,d=fa.imageCache.operaCache;for(b in d)d.hasOwnProperty(b)&&(c=d[b],null!==c&&t.body.removeChild(c),delete d[b])}fa.attach(a,n);fa.onLoad(a);a.setup&&(a.setup(),a.resetMatrix(),fa.onSetup());Va();a.draw&&(ia?a.loop():a.redraw())}};this.externals.canvas.id!==k&&this.externals.canvas.id.length||(this.externals.canvas.id="__processing"+
v.length);Xb[this.externals.canvas.id]=v.length;v.push(this);qd(f)}};N.debug=function(){return"console"in l?function(a){l.console.log("Processing.js: "+a)}:s}();N.prototype=n;N.instances=v;N.getInstanceById=function(a){return v[Xb[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)})(n);return N}})()},{}]},{},[1]);