forked from BrainJS/brain.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbrowser.min.js
415 lines (325 loc) · 317 KB
/
browser.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
/**
* Modules in this bundle
* @license
*
* brain.js:
* license: MIT (http://opensource.org/licenses/MIT)
* author: Heather Arthur <fayearthur@gmail.com>
* homepage: https://github.com/brainjs/brain.js#readme
* version: 1.1.2
*
* acorn:
* license: MIT (http://opensource.org/licenses/MIT)
* maintainers: Marijn Haverbeke <marijnh@gmail.com>, Ingvar Stepanyan <me@rreverser.com>
* homepage: https://github.com/acornjs/acorn
* version: 5.4.1
*
* base64-js:
* license: MIT (http://opensource.org/licenses/MIT)
* author: T. Jameson Little <t.jameson.little@gmail.com>
* homepage: https://github.com/beatgammit/base64-js
* version: 1.2.3
*
* buffer:
* license: MIT (http://opensource.org/licenses/MIT)
* author: Feross Aboukhadijeh <feross@feross.org>
* contributors: Romain Beauxis <toots@rastageeks.org>, James Halliday <mail@substack.net>
* homepage: https://github.com/feross/buffer
* version: 4.9.1
*
* core-util-is:
* license: MIT (http://opensource.org/licenses/MIT)
* author: Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)
* version: 1.0.2
*
* events:
* license: MIT (http://opensource.org/licenses/MIT)
* author: Irakli Gozalishvili <rfobic@gmail.com> (http://jeditoolkit.com)
* version: 1.1.1
*
* gpu.js:
* license: MIT (http://opensource.org/licenses/MIT)
* author: The gpu.js Team
* homepage: http://gpu.rocks/
* version: 1.0.0
*
* ieee754:
* license: BSD-3-Clause (http://opensource.org/licenses/BSD-3-Clause)
* author: Feross Aboukhadijeh <feross@feross.org>
* contributors: Romain Beauxis <toots@rastageeks.org>
* version: 1.1.8
*
* inherits:
* license: ISC (http://opensource.org/licenses/ISC)
* version: 2.0.3
*
* isarray:
* license: MIT (http://opensource.org/licenses/MIT)
* author: Julian Gruber <mail@juliangruber.com>
* homepage: https://github.com/juliangruber/isarray
* version: 1.0.0
*
* process:
* license: MIT (http://opensource.org/licenses/MIT)
* author: Roman Shtylman <shtylman@gmail.com>
* version: 0.11.10
*
* process-nextick-args:
* license: MIT (http://opensource.org/licenses/MIT)
* homepage: https://github.com/calvinmetcalf/process-nextick-args
* version: 2.0.0
*
* readable-stream:
* license: MIT (http://opensource.org/licenses/MIT)
* version: 2.3.4
*
* safe-buffer:
* license: MIT (http://opensource.org/licenses/MIT)
* author: Feross Aboukhadijeh <feross@feross.org>
* homepage: https://github.com/feross/safe-buffer
* version: 5.1.1
*
* stream-browserify:
* license: MIT (http://opensource.org/licenses/MIT)
* author: James Halliday <mail@substack.net>
* homepage: https://github.com/substack/stream-browserify
* version: 2.0.1
*
* string_decoder:
* license: MIT (http://opensource.org/licenses/MIT)
* homepage: https://github.com/rvagg/string_decoder
* version: 1.0.3
*
* thaw.js:
* license: MIT (http://opensource.org/licenses/MIT)
* author: Robert Lee Plummer Jr. <robertleeplummerjr@gmail.com>
* homepage: https://github.com/robertleeplummerjr/thaw.js#readme
* version: 2.0.0
*
* util-deprecate:
* license: MIT (http://opensource.org/licenses/MIT)
* author: Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)
* homepage: https://github.com/TooTallNate/util-deprecate
* version: 1.0.2
*
* This header is generated by licensify (https://github.com/twada/licensify)
*/
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.brain = f()}})(function(){var define,module,exports;return (function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(require,module,exports){
"use strict";function testPartition(t,e,r,s,a){var i=new t(e),o=Date.now(),n=i.train(s,r),l=Date.now(),f=i.test(a),u=Date.now();return Object.assign({},f,{trainTime:l-o,testTime:u-l,iterations:n.iterations,trainError:n.error,learningRate:r.learningRate,hidden:i.hiddenSizes,network:i.toJSON()})}function shuffleArray(t){for(var e=t.length-1;e>0;e--){var r=Math.floor(Math.random()*(e+1)),s=t[e];t[e]=t[r],t[r]=s}return t}function crossValidate(t,e,r,s,a){a=a||4;var i=e.length/a;if(e.constructor===Array)shuffleArray(e);else{var o={};shuffleArray(Object.keys(e)).forEach(function(t){o[t]=e[t]}),e=o}for(var n={error:0,trainTime:0,testTime:0,iterations:0,trainError:0},l={truePos:0,trueNeg:0,falsePos:0,falseNeg:0,total:0},f=[],u=[],c=void 0,h=void 0,P=0;P<a;P++){var d=e.slice(0),g=d.splice(P*i,i),v=d,y=testPartition(t,r,s,v,g);for(c in n)c in n&&(h=n[c],n[c]=h+y[c]);for(c in l)c in l&&(h=l[c],l[c]=h+y[c]);f.concat(u.misclasses),u.push(y)}for(c in n)c in n&&(h=n[c],n[c]=h/a);return l.precision=l.truePos/(l.truePos+l.falsePos),l.recall=l.truePos/(l.truePos+l.falseNeg),l.accuracy=(l.trueNeg+l.truePos)/l.total,l.testSize=i,l.trainSize=e.length-i,{avgs:n,stats:l,sets:u,misclasses:f}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.testPartition=testPartition,exports.shuffleArray=shuffleArray,exports.default=crossValidate;
},{}],2:[function(require,module,exports){
"use strict";function likely(e,r){var l=r.run(e),t=null,u=-1;for(var n in l){var i=l[n];i>u&&(t=n,u=i)}return t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=likely;
},{}],3:[function(require,module,exports){
"use strict";function _classCallCheck(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function r(r,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(r,o.key,o)}}return function(e,n,o){return n&&r(e.prototype,n),o&&r(e,o),e}}(),lookup=function(){function r(){_classCallCheck(this,r)}return _createClass(r,null,[{key:"buildLookup",value:function(e){var n=e.reduce(function(r,e){return Object.assign(r,e)},{});return r.lookupFromHash(n)}},{key:"lookupFromHash",value:function(r){var e={},n=0;for(var o in r)e[o]=n++;return e}},{key:"toArray",value:function(r,e){var n=[];for(var o in r)n[r[o]]=e[o]||0;return n}},{key:"toHash",value:function(r,e){var n={};for(var o in r)n[o]=e[r[o]];return n}},{key:"lookupFromArray",value:function(r){for(var e={},n=0,o=r.length;o-- >0;)e[r[o]]=n++;return e}}]),r}();exports.default=lookup;
},{}],4:[function(require,module,exports){
"use strict";function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _toConsumableArray(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]=t[e];return r}return Array.from(t)}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function weightedSumSigmoid(t,e,r){for(var a=e[this.thread.x],u=0;u<this.constants.size;u++)a+=t[this.thread.x][u]*r[u];return 1/(1+Math.exp(-a))}function weightedSumRelu(t,e,r){for(var a=e[this.thread.x],u=0;u<this.constants.size;u++)a+=t[this.thread.x][u]*r[u];return a<0?0:a}function weightedSumLeakyRelu(t,e,r){for(var a=e[this.thread.x],u=0;u<this.constants.size;u++)a+=t[this.thread.x][u]*r[u];return a<0?0:.01*a}function weightedSumTanh(t,e,r){for(var a=e[this.thread.x],u=0;u<this.constants.size;u++)a+=t[this.thread.x][u]*r[u];return Math.tanh(a)}function calcErrorOutput(t,e){return e[this.thread.x]-t}function calcDeltasSigmoid(t,e){return t*e*(1-e)}function calcDeltasRelu(t,e){return e>0?t:0}function calcDeltasLeakyRelu(t,e){return e>0?t:.01*t}function calcDeltasTanh(t,e){return(1-e*e)*t}function calcError(t,e){for(var r=0,a=0;a<this.constants.size;a++)r+=e[a]*t[a][this.thread.x];return r}function calcChanges(t,e,r,a,u){return a*e[this.thread.y]*r[this.thread.x]+u*t[this.thread.y][this.thread.x]}function addWeights(t,e){return t+e[this.thread.y][this.thread.x]}function addBiases(t,e,r){return t[this.thread.x]+e[this.thread.x]*r}function mse(t){for(var e=0,r=0;r<this.constants.size;r++)e+=Math.pow(t[r],2);return e/this.constants.size}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function t(t,e){for(var r=0;r<e.length;r++){var a=e[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}return function(e,r,a){return r&&t(e.prototype,r),a&&t(e,a),e}}(),_get=function t(e,r,a){null===e&&(e=Function.prototype);var u=Object.getOwnPropertyDescriptor(e,r);if(void 0===u){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,r,a)}if("value"in u)return u.value;var s=u.get;if(void 0!==s)return s.call(a)},_neuralNetwork=require("./neural-network"),_neuralNetwork2=_interopRequireDefault(_neuralNetwork),_lookup=require("./lookup"),_lookup2=_interopRequireDefault(_lookup),_gpu=require("gpu.js"),_gpu2=_interopRequireDefault(_gpu),NeuralNetworkGPU=function(t){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};_classCallCheck(this,e);var r=_possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return r.forwardPropagate=[],r.backwardPropagate=[],r.changesPropagate=[],r.biasesPropagate=[],r.gpu=new _gpu2.default({mode:t.mode}),r}return _inherits(e,t),_createClass(e,[{key:"_initialize",value:function(t){_get(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_initialize",this).call(this,t),this.buildRunInput(),this.buildCalculateDeltas(),this.buildGetChanges(),this.buildChangeBiases(),this.buildGetMSE()}},{key:"setActivation",value:function(){}},{key:"_trainPattern",value:function(t,e,r){return r=r||this.trainOpts.learningRate,this.runInput(t),this.calculateDeltas(e),this.getChanges(r),this.changeBiases(r),this.getMSE(this.errors[this.outputLayer])[0]}},{key:"buildRunInput",value:function(){var t=null;switch(this.activation){case"sigmoid":t=weightedSumSigmoid;break;case"relu":t=weightedSumRelu;break;case"leaky-relu":t=weightedSumLeakyRelu;break;case"tanh":t=weightedSumTanh;break;default:throw new Error("unknown activation "+this.activation)}for(var e=1;e<=this.outputLayer;e++)this.forwardPropagate[e]=this.gpu.createKernel(t,{output:[this.sizes[e]],outputToTexture:!0,constants:{size:this.sizes[e-1]}})}},{key:"runInput",value:function(t){var e=void 0;this.outputs[0]=t;for(var r=1;r<=this.outputLayer;r++)this.outputs[r]=this.forwardPropagate[r](this.weights[r],this.biases[r],t),e=t=this.outputs[r];return e}},{key:"buildCalculateDeltas",value:function(){var t=null;switch(this.activation){case"sigmoid":t=calcDeltasSigmoid;break;case"relu":t=calcDeltasRelu;break;case"leaky-relu":t=calcDeltasLeakyRelu;break;case"tanh":t=calcDeltasTanh;break;default:throw new Error("unknown activation "+this.activation)}for(var e=this.outputLayer;e>0;e--)e===this.outputLayer?this.backwardPropagate[e]=this.gpu.createKernelMap({error:_gpu2.default.alias("calcErrorOutput",calcErrorOutput),deltas:_gpu2.default.alias("calcDeltas",t)},function(e,r){var a=e[this.thread.x];return t(calcErrorOutput(a,r),a)},{output:[this.sizes[e]],outputToTexture:!0}):this.backwardPropagate[e]=this.gpu.createKernelMap({error:_gpu2.default.alias("calcError",calcError),deltas:_gpu2.default.alias("calcDeltas",t)},function(e,r,a){var u=r[this.thread.x];return t(calcError(e,a),u)},{output:[this.sizes[e]],outputToTexture:!0,constants:{size:this.deltas[e+1].length}})}},{key:"calculateDeltas",value:function(t,e){for(var r=this.outputLayer;r>0;r--){var a=void 0;a=r===this.outputLayer?this.backwardPropagate[r](this.outputs[r],t):this.backwardPropagate[r](this.weights[r+1],this.outputs[r],this.deltas[r+1]),this.deltas[r]=a.deltas,this.errors[r]=a.error}}},{key:"buildGetChanges",value:function(){for(var t=1;t<=this.outputLayer;t++)this.changesPropagate[t]=this.gpu.createKernelMap({weights:_gpu2.default.alias("addWeights",addWeights),changes:_gpu2.default.alias("calcChanges",calcChanges)},function(t,e,r,a,u,i){return addWeights(calcChanges(a,e,t,u,i),r)},{output:[this.sizes[t-1],this.sizes[t]],outputToTexture:!0,constants:{size:this.outputs[t-1].length}})}},{key:"getChanges",value:function(t){for(var e=1;e<=this.outputLayer;e++){var r=this.changesPropagate[e](this.outputs[e-1],this.deltas[e],this.weights[e],this.changes[e],t,this.trainOpts.momentum);this.changes[e]=r.changes,this.weights[e]=r.weights}}},{key:"buildChangeBiases",value:function(){for(var t=1;t<=this.outputLayer;t++)this.biasesPropagate[t]=this.gpu.createKernel(addBiases,{output:[this.sizes[t]],outputToTexture:!0})}},{key:"changeBiases",value:function(t){for(var e=1;e<=this.outputLayer;e++)this.biases[e]=this.biasesPropagate[e](this.biases[e],this.deltas[e],t)}},{key:"buildGetMSE",value:function(){this.getMSE=this.gpu.createKernel(mse,{output:[1],constants:{size:this.sizes[this.outputLayer]}})}},{key:"run",value:function(t){if(!this.isRunnable)return null;this.inputLookup&&(t=_lookup2.default.toArray(this.inputLookup,t));var e=[].concat(_toConsumableArray(this.runInput(t).toArray(this.gpu)));return this.outputLookup&&(e=_lookup2.default.toHash(this.outputLookup,e)),e}},{key:"_formatData",value:function(t){var e=this;if(!Array.isArray(t)){var r=[];r.push(t),t=r}var a=t[0].input;return Array.isArray(a)||a instanceof Float32Array||(this.inputLookup||(this.inputLookup=_lookup2.default.buildLookup(t.map(function(t){return t.input}))),t=t.map(function(t){var r=_lookup2.default.toArray(e.inputLookup,t.input);return Object.assign({},t,{input:r})},this)),Array.isArray(t[0].output)||(this.outputLookup||(this.outputLookup=_lookup2.default.buildLookup(t.map(function(t){return t.output}))),t=t.map(function(t){var r=_lookup2.default.toArray(e.outputLookup,t.output);return Object.assign({},t,{output:r})},this)),t}},{key:"toFunction",value:function(){throw new Error("not implemented on NeuralNetworkGPU")}}]),e}(_neuralNetwork2.default);exports.default=NeuralNetworkGPU;
},{"./lookup":3,"./neural-network":5,"gpu.js":76}],5:[function(require,module,exports){
"use strict";function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _toConsumableArray(t){if(Array.isArray(t)){for(var i=0,e=Array(t.length);i<t.length;i++)e[i]=t[i];return e}return Array.from(t)}function _classCallCheck(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function t(t,i){for(var e=0;e<i.length;e++){var r=i[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(i,e,r){return e&&t(i.prototype,e),r&&t(i,r),i}}(),_lookup=require("./lookup"),_lookup2=_interopRequireDefault(_lookup),_trainStream=require("./train-stream"),_trainStream2=_interopRequireDefault(_trainStream),_max=require("./utilities/max"),_max2=_interopRequireDefault(_max),_mse=require("./utilities/mse"),_mse2=_interopRequireDefault(_mse),_randos=require("./utilities/randos"),_randos2=_interopRequireDefault(_randos),_range=require("./utilities/range"),_range2=_interopRequireDefault(_range),_toArray=require("./utilities/to-array"),_toArray2=_interopRequireDefault(_toArray),_zeros=require("./utilities/zeros"),_zeros2=_interopRequireDefault(_zeros),_thaw=require("thaw.js"),_thaw2=_interopRequireDefault(_thaw),NeuralNetwork=function(){function t(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};_classCallCheck(this,t),Object.assign(this,this.constructor.defaults,i),this.hiddenSizes=i.hiddenLayers,this.trainOpts={},this._updateTrainingOptions(Object.assign({},this.constructor.trainDefaults,i)),this.sizes=null,this.outputLayer=null,this.biases=null,this.weights=null,this.outputs=null,this.deltas=null,this.changes=null,this.errors=null,this.constructor.prototype.hasOwnProperty("runInput")||(this.runInput=null),this.constructor.prototype.hasOwnProperty("calculateDeltas")||(this.calculateDeltas=null)}return _createClass(t,null,[{key:"_validateTrainingOptions",value:function(i){var e={iterations:function(t){return"number"==typeof t&&t>0},errorThresh:function(t){return"number"==typeof t&&t>0&&t<1},log:function(t){return"function"==typeof t||"boolean"==typeof t},logPeriod:function(t){return"number"==typeof t&&t>0},learningRate:function(t){return"number"==typeof t&&t>0&&t<1},momentum:function(t){return"number"==typeof t&&t>0&&t<1},callback:function(t){return"function"==typeof t||null===t},callbackPeriod:function(t){return"number"==typeof t&&t>0},timeout:function(t){return"number"==typeof t&&t>0}};Object.keys(t.trainDefaults).forEach(function(t){if(e.hasOwnProperty(t)&&!e[t](i[t]))throw new Error("["+t+", "+i[t]+"] is out of normal training range, your network will probably not train.")})}},{key:"trainDefaults",get:function(){return{iterations:2e4,errorThresh:.005,log:!1,logPeriod:10,learningRate:.3,momentum:.1,callback:null,callbackPeriod:10,timeout:1/0}}},{key:"defaults",get:function(){return{binaryThresh:.5,hiddenLayers:[3],activation:"sigmoid"}}}]),_createClass(t,[{key:"_initialize",value:function(){if(!this.sizes)throw new Error("Sizes must be set before initializing");this.outputLayer=this.sizes.length-1,this.biases=[],this.weights=[],this.outputs=[],this.deltas=[],this.changes=[],this.errors=[];for(var t=0;t<=this.outputLayer;t++){var i=this.sizes[t];if(this.deltas[t]=(0,_zeros2.default)(i),this.errors[t]=(0,_zeros2.default)(i),this.outputs[t]=(0,_zeros2.default)(i),t>0){this.biases[t]=(0,_randos2.default)(i),this.weights[t]=new Array(i),this.changes[t]=new Array(i);for(var e=0;e<i;e++){var r=this.sizes[t-1];this.weights[t][e]=(0,_randos2.default)(r),this.changes[t][e]=(0,_zeros2.default)(r)}}}this.setActivation()}},{key:"setActivation",value:function(t){switch(this.activation=t||this.activation,this.activation){case"sigmoid":this.runInput=this.runInput||this._runInputSigmoid,this.calculateDeltas=this.calculateDeltas||this._calculateDeltasSigmoid;break;case"relu":this.runInput=this.runInput||this._runInputRelu,this.calculateDeltas=this.calculateDeltas||this._calculateDeltasRelu;break;case"leaky-relu":this.runInput=this.runInput||this._runInputLeakyRelu,this.calculateDeltas=this.calculateDeltas||this._calculateDeltasLeakyRelu;break;case"tanh":this.runInput=this.runInput||this._runInputTanh,this.calculateDeltas=this.calculateDeltas||this._calculateDeltasTanh;break;default:throw new Error("unknown activation "+this.activation+", The activation should be one of ['sigmoid', 'relu', 'leaky-relu', 'tanh']")}}},{key:"run",value:function(t){if(!this.isRunnable)return null;this.inputLookup&&(t=_lookup2.default.toArray(this.inputLookup,t));var i=[].concat(_toConsumableArray(this.runInput(t)));return this.outputLookup&&(i=_lookup2.default.toHash(this.outputLookup,i)),i}},{key:"_runInputSigmoid",value:function(t){this.outputs[0]=t;for(var i=null,e=1;e<=this.outputLayer;e++){for(var r=0;r<this.sizes[e];r++){for(var s=this.weights[e][r],a=this.biases[e][r],n=0;n<s.length;n++)a+=s[n]*t[n];this.outputs[e][r]=1/(1+Math.exp(-a))}i=t=this.outputs[e]}return i}},{key:"_runInputRelu",value:function(t){this.outputs[0]=t;for(var i=null,e=1;e<=this.outputLayer;e++){for(var r=0;r<this.sizes[e];r++){for(var s=this.weights[e][r],a=this.biases[e][r],n=0;n<s.length;n++)a+=s[n]*t[n];this.outputs[e][r]=a<0?0:a}i=t=this.outputs[e]}return i}},{key:"_runInputLeakyRelu",value:function(t){this.outputs[0]=t;for(var i=null,e=1;e<=this.outputLayer;e++){for(var r=0;r<this.sizes[e];r++){for(var s=this.weights[e][r],a=this.biases[e][r],n=0;n<s.length;n++)a+=s[n]*t[n];this.outputs[e][r]=a<0?0:.01*a}i=t=this.outputs[e]}return i}},{key:"_runInputTanh",value:function(t){this.outputs[0]=t;for(var i=null,e=1;e<=this.outputLayer;e++){for(var r=0;r<this.sizes[e];r++){for(var s=this.weights[e][r],a=this.biases[e][r],n=0;n<s.length;n++)a+=s[n]*t[n];this.outputs[e][r]=Math.tanh(a)}i=t=this.outputs[e]}return i}},{key:"_verifyIsInitialized",value:function(t){var i=this;this.sizes||(this.sizes=[],this.sizes.push(t[0].input.length),this.hiddenSizes?this.hiddenSizes.forEach(function(t){i.sizes.push(t)}):this.sizes.push(Math.max(3,Math.floor(t[0].input.length/2))),this.sizes.push(t[0].output.length),this._initialize())}},{key:"_updateTrainingOptions",value:function(i){var e=this;Object.keys(t.trainDefaults).forEach(function(t){return e.trainOpts[t]=i.hasOwnProperty(t)?i[t]:e.trainOpts[t]}),t._validateTrainingOptions(this.trainOpts),this._setLogMethod(i.log||this.trainOpts.log),this.activation=i.activation||this.activation}},{key:"_getTrainOptsJSON",value:function(){var i=this;return Object.keys(t.trainDefaults).reduce(function(t,e){return"timeout"===e&&i.trainOpts[e]===1/0?t:(i.trainOpts[e]&&(t[e]=i.trainOpts[e]),"log"===e&&(t.log="function"==typeof t.log),t)},{})}},{key:"_setLogMethod",value:function(t){this.trainOpts.log="function"==typeof t?t:!!t&&console.log}},{key:"_calculateTrainingError",value:function(t){for(var i=0,e=0;e<t.length;++e)i+=this._trainPattern(t[e].input,t[e].output);return i/t.length}},{key:"_trainingTick",value:function(t,i,e){return!(i.iterations>=this.trainOpts.iterations||i.error<=this.trainOpts.errorThresh||Date.now()>=e)&&(i.iterations++,i.error=this._calculateTrainingError(t),this.trainOpts.log&&i.iterations%this.trainOpts.logPeriod==0&&this.trainOpts.log("iterations: "+i.iterations+", training error: "+i.error),this.trainOpts.callback&&i.iterations%this.trainOpts.callbackPeriod==0&&this.trainOpts.callback(Object.assign(i)),!0)}},{key:"_prepTraining",value:function(t,i){this._updateTrainingOptions(i),t=this._formatData(t);var e=Date.now()+this.trainOpts.timeout,r={error:1,iterations:0};return this._verifyIsInitialized(t),{data:t,status:r,endTime:e}}},{key:"train",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=void 0,r=void 0,s=this._prepTraining(t,i);for(t=s.data,e=s.status,r=s.endTime;this._trainingTick(t,e,r););return e}},{key:"trainAsync",value:function(t){var i=this,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=void 0,s=void 0,a=this._prepTraining(t,e);return t=a.data,r=a.status,s=a.endTime,new Promise(function(e,a){try{var n=new _thaw2.default(new Array(i.trainOpts.iterations),{delay:!0,each:function(){return i._trainingTick(t,r,s)||n.stop()},done:function(){return e(r)}});n.tick()}catch(t){a({trainError:t,status:r})}})}},{key:"_trainPattern",value:function(t,i){return this.runInput(t),this.calculateDeltas(i),this._adjustWeights(),(0,_mse2.default)(this.errors[this.outputLayer])}},{key:"_calculateDeltasSigmoid",value:function(t){for(var i=this.outputLayer;i>=0;i--)for(var e=0;e<this.sizes[i];e++){var r=this.outputs[i][e],s=0;if(i===this.outputLayer)s=t[e]-r;else for(var a=this.deltas[i+1],n=0;n<a.length;n++)s+=a[n]*this.weights[i+1][n][e];this.errors[i][e]=s,this.deltas[i][e]=s*r*(1-r)}}},{key:"_calculateDeltasRelu",value:function(t){for(var i=this.outputLayer;i>=0;i--)for(var e=0;e<this.sizes[i];e++){var r=this.outputs[i][e],s=0;if(i===this.outputLayer)s=t[e]-r;else for(var a=this.deltas[i+1],n=0;n<a.length;n++)s+=a[n]*this.weights[i+1][n][e];this.errors[i][e]=s,this.deltas[i][e]=r>0?s:0}}},{key:"_calculateDeltasLeakyRelu",value:function(t){for(var i=this.outputLayer;i>=0;i--)for(var e=0;e<this.sizes[i];e++){var r=this.outputs[i][e],s=0;if(i===this.outputLayer)s=t[e]-r;else for(var a=this.deltas[i+1],n=0;n<a.length;n++)s+=a[n]*this.weights[i+1][n][e];this.errors[i][e]=s,this.deltas[i][e]=r>0?s:.01*s}}},{key:"_calculateDeltasTanh",value:function(t){for(var i=this.outputLayer;i>=0;i--)for(var e=0;e<this.sizes[i];e++){var r=this.outputs[i][e],s=0;if(i===this.outputLayer)s=t[e]-r;else for(var a=this.deltas[i+1],n=0;n<a.length;n++)s+=a[n]*this.weights[i+1][n][e];this.errors[i][e]=s,this.deltas[i][e]=(1-r*r)*s}}},{key:"_adjustWeights",value:function(){for(var t=1;t<=this.outputLayer;t++)for(var i=this.outputs[t-1],e=0;e<this.sizes[t];e++){for(var r=this.deltas[t][e],s=0;s<i.length;s++){var a=this.changes[t][e][s];a=this.trainOpts.learningRate*r*i[s]+this.trainOpts.momentum*a,this.changes[t][e][s]=a,this.weights[t][e][s]+=a}this.biases[t][e]+=this.trainOpts.learningRate*r}}},{key:"_formatData",value:function(t){var i=this;if(!Array.isArray(t)){var e=[];e.push(t),t=e}var r=t[0].input;return Array.isArray(r)||r instanceof Float32Array||(this.inputLookup||(this.inputLookup=_lookup2.default.buildLookup(t.map(function(t){return t.input}))),t=t.map(function(t){var e=_lookup2.default.toArray(i.inputLookup,t.input);return Object.assign({},t,{input:e})},this)),Array.isArray(t[0].output)||(this.outputLookup||(this.outputLookup=_lookup2.default.buildLookup(t.map(function(t){return t.output}))),t=t.map(function(t){var e=_lookup2.default.toArray(i.outputLookup,t.output);return Object.assign({},t,{output:e})},this)),t}},{key:"test",value:function(t){var i=this;t=this._formatData(t);for(var e=1===t[0].output.length,r=0,s=0,a=0,n=0,u=[],o=0,h=0;h<t.length;h++)!function(h){var l=i.runInput(t[h].input),p=t[h].output,c=void 0,f=void 0;if(e?(c=l[0]>i.binaryThresh?1:0,f=p[0]):(c=l.indexOf((0,_max2.default)(l)),f=p.indexOf((0,_max2.default)(p))),c!==f){var v=t[h];Object.assign(v,{actual:c,expected:f}),u.push(v)}e&&(0===c&&0===f?n++:1===c&&1===f?a++:0===c&&1===f?s++:1===c&&0===f&&r++);var y=l.map(function(t,i){return p[i]-t});o+=(0,_mse2.default)(y)}(h);var l=o/t.length,p={error:l,misclasses:u};return e&&Object.assign(p,{trueNeg:n,truePos:a,falseNeg:s,falsePos:r,total:t.length,precision:a/(a+r),recall:a/(a+s),accuracy:(n+a)/t.length}),p}},{key:"toJSON",value:function(){for(var t=[],i=0;i<=this.outputLayer;i++){t[i]={};var e=void 0;e=0===i&&this.inputLookup?Object.keys(this.inputLookup):i===this.outputLayer&&this.outputLookup?Object.keys(this.outputLookup):(0,_range2.default)(0,this.sizes[i]);for(var r=0;r<e.length;r++){var s=e[r];if(t[i][s]={},i>0){t[i][s].bias=this.biases[i][r],t[i][s].weights={};for(var a in t[i-1]){var n=a;1===i&&this.inputLookup&&(n=this.inputLookup[a]),t[i][s].weights[a]=this.weights[i][r][n]}}}}return{sizes:this.sizes,layers:t,outputLookup:!!this.outputLookup,inputLookup:!!this.inputLookup,activation:this.activation,trainOpts:this._getTrainOptsJSON()}}},{key:"fromJSON",value:function(t){this.sizes=t.sizes,this._initialize();for(var i=0;i<=this.outputLayer;i++){var e=t.layers[i];if(0!==i||e[0]&&!t.inputLookup?i!==this.outputLayer||e[0]&&!t.outputLookup||(this.outputLookup=_lookup2.default.lookupFromHash(e)):this.inputLookup=_lookup2.default.lookupFromHash(e),i>0){var r=Object.keys(e);this.sizes[i]=r.length;for(var s in r){var a=r[s];this.biases[i][s]=e[a].bias,this.weights[i][s]=(0,_toArray2.default)(e[a].weights)}}}return t.hasOwnProperty("trainOpts")&&this._updateTrainingOptions(t.trainOpts),this.setActivation(this.activation||"sigmoid"),this}},{key:"toFunction",value:function(){function t(e,r,s){if(0===r)return"string"==typeof s?"input['"+s+"']":"input["+s+"]";var a=e[r],n=a[s],u=[n.bias];for(var o in n.weights)n.weights[o]<0?u.push(n.weights[o]+"*("+t(e,r-1,o)+")"):u.push("+"+n.weights[o]+"*("+t(e,r-1,o)+")");switch(i){case"sigmoid":return"1/(1+1/Math.exp("+u.join("")+"))";case"relu":return"var sum = "+u.join("")+";(sum < 0 ? 0 : sum);";case"leaky-relu":return"var sum = "+u.join("")+";(sum < 0 ? 0 : 0.01 * sum);";case"tanh":return"Math.tanh("+u.join("")+");";default:throw new Error("unknown activation type "+i)}}var i=this.activation,e=this.toJSON().layers,r=[],s=void 0;for(var a in e[e.length-1])r.push(t(e,e.length-1,a));return s=this.outputLookup?"{"+Object.keys(this.outputLookup).map(function(t,i){return"'"+t+"':"+r[i]})+"}":"["+r.join(",")+"]",new Function("input","return "+s)}},{key:"createTrainStream",value:function(t){return t=t||{},t.neuralNetwork=this,this.setActivation(),this.trainStream=new _trainStream2.default(t),this.trainStream}},{key:"isRunnable",get:function(){var t=this;if(!this.runInput)return console.error("Activation function has not been initialized, did you run train()?"),!1;var i=["sizes","outputLayer","biases","weights","outputs","deltas","changes","errors"].filter(function(i){return null===t[i]});return!(i.length>0)||(console.error("Some settings have not been initialized correctly, did you run train()? Found issues with: "+i.join(", ")),!1)}}]),t}();exports.default=NeuralNetwork;
},{"./lookup":3,"./train-stream":33,"./utilities/max":35,"./utilities/mse":36,"./utilities/randos":40,"./utilities/range":41,"./utilities/to-array":42,"./utilities/zeros":43,"thaw.js":100}],6:[function(require,module,exports){
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),_matrix=require("./matrix"),_matrix2=_interopRequireDefault(_matrix),_randomMatrix=require("./matrix/random-matrix"),_randomMatrix2=_interopRequireDefault(_randomMatrix),_rnn=require("./rnn"),_rnn2=_interopRequireDefault(_rnn),GRU=function(e){function t(){return _classCallCheck(this,t),_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return _inherits(t,e),_createClass(t,[{key:"getModel",value:function(e,t){return{updateGateInputMatrix:new _randomMatrix2.default(e,t,.08),updateGateHiddenMatrix:new _randomMatrix2.default(e,e,.08),updateGateBias:new _matrix2.default(e,1),resetGateInputMatrix:new _randomMatrix2.default(e,t,.08),resetGateHiddenMatrix:new _randomMatrix2.default(e,e,.08),resetGateBias:new _matrix2.default(e,1),cellWriteInputMatrix:new _randomMatrix2.default(e,t,.08),cellWriteHiddenMatrix:new _randomMatrix2.default(e,e,.08),cellWriteBias:new _matrix2.default(e,1)}}},{key:"getEquation",value:function(e,t,r,n){var a=e.sigmoid.bind(e),i=e.add.bind(e),u=e.multiply.bind(e),o=e.multiplyElement.bind(e),l=e.tanh.bind(e),d=e.allOnes.bind(e),s=e.cloneNegative.bind(e),c=a(i(i(u(n.updateGateInputMatrix,t),u(n.updateGateHiddenMatrix,r)),n.updateGateBias)),f=a(i(i(u(n.resetGateInputMatrix,t),u(n.resetGateHiddenMatrix,r)),n.resetGateBias)),p=l(i(i(u(n.cellWriteInputMatrix,t),u(n.cellWriteHiddenMatrix,o(f,r))),n.cellWriteBias));return i(o(i(d(c.rows,c.columns),s(c)),p),o(r,c))}}]),t}(_rnn2.default);exports.default=GRU;
},{"./matrix":14,"./matrix/random-matrix":21,"./rnn":32}],7:[function(require,module,exports){
"use strict";function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),_matrix=require("./matrix"),_matrix2=_interopRequireDefault(_matrix),_randomMatrix=require("./matrix/random-matrix"),_randomMatrix2=_interopRequireDefault(_randomMatrix),_rnn=require("./rnn"),_rnn2=_interopRequireDefault(_rnn),LSTM=function(t){function e(){return _classCallCheck(this,e),_possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return _inherits(e,t),_createClass(e,[{key:"getModel",value:function(t,e){return{inputMatrix:new _randomMatrix2.default(t,e,.08),inputHidden:new _randomMatrix2.default(t,t,.08),inputBias:new _matrix2.default(t,1),forgetMatrix:new _randomMatrix2.default(t,e,.08),forgetHidden:new _randomMatrix2.default(t,t,.08),forgetBias:new _matrix2.default(t,1),outputMatrix:new _randomMatrix2.default(t,e,.08),outputHidden:new _randomMatrix2.default(t,t,.08),outputBias:new _matrix2.default(t,1),cellActivationMatrix:new _randomMatrix2.default(t,e,.08),cellActivationHidden:new _randomMatrix2.default(t,t,.08),cellActivationBias:new _matrix2.default(t,1)}}},{key:"getEquation",value:function(t,e,r,n){var i=t.sigmoid.bind(t),a=t.add.bind(t),o=t.multiply.bind(t),u=t.multiplyElement.bind(t),l=t.tanh.bind(t),d=i(a(a(o(n.inputMatrix,e),o(n.inputHidden,r)),n.inputBias)),f=i(a(a(o(n.forgetMatrix,e),o(n.forgetHidden,r)),n.forgetBias)),c=i(a(a(o(n.outputMatrix,e),o(n.outputHidden,r)),n.outputBias)),s=l(a(a(o(n.cellActivationMatrix,e),o(n.cellActivationHidden,r)),n.cellActivationBias));return u(c,l(a(u(f,r),u(d,s))))}}]),e}(_rnn2.default);exports.default=LSTM;
},{"./matrix":14,"./matrix/random-matrix":21,"./rnn":32}],8:[function(require,module,exports){
"use strict";function addB(e,t,d){for(var a=0;a<e.deltas.length;a++)t.deltas[a]=e.deltas[a],d.deltas[a]=e.deltas[a]}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=addB;
},{}],9:[function(require,module,exports){
"use strict";function add(e,t,s){for(var d=0;d<t.weights.length;d++)e.weights[d]=t.weights[d]+s.weights[d],e.deltas[d]=0}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=add;
},{}],10:[function(require,module,exports){
"use strict";function allOnes(e){for(var t=0;t<e.weights.length;t++)e.weights[t]=1,e.deltas[t]=0}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=allOnes;
},{}],11:[function(require,module,exports){
"use strict";function cloneNegative(e,s){e.rows=parseInt(s.rows),e.columns=parseInt(s.columns),e.weights=s.weights.slice(0),e.deltas=s.deltas.slice(0);for(var t=0;t<s.weights.length;t++)e.weights[t]=-s.weights[t],e.deltas[t]=0}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=cloneNegative;
},{}],12:[function(require,module,exports){
"use strict";function copy(e,s){e.rows=parseInt(s.rows),e.columns=parseInt(s.columns),e.weights=s.weights.slice(0),e.deltas=s.deltas.slice(0)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=copy;
},{}],13:[function(require,module,exports){
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var u=t[r];u.enumerable=u.enumerable||!1,u.configurable=!0,"value"in u&&(u.writable=!0),Object.defineProperty(e,u.key,u)}}return function(t,r,u){return r&&e(t.prototype,r),u&&e(t,u),t}}(),_=require("./"),_2=_interopRequireDefault(_),_onesMatrix=require("./ones-matrix"),_onesMatrix2=_interopRequireDefault(_onesMatrix),_copy=require("./copy"),_copy2=_interopRequireDefault(_copy),_cloneNegative2=require("./clone-negative"),_cloneNegative3=_interopRequireDefault(_cloneNegative2),_add2=require("./add"),_add3=_interopRequireDefault(_add2),_addB=require("./add-b"),_addB2=_interopRequireDefault(_addB),_allOnes2=require("./all-ones"),_allOnes3=_interopRequireDefault(_allOnes2),_multiply2=require("./multiply"),_multiply3=_interopRequireDefault(_multiply2),_multiplyB=require("./multiply-b"),_multiplyB2=_interopRequireDefault(_multiplyB),_multiplyElement2=require("./multiply-element"),_multiplyElement3=_interopRequireDefault(_multiplyElement2),_multiplyElementB=require("./multiply-element-b"),_multiplyElementB2=_interopRequireDefault(_multiplyElementB),_relu2=require("./relu"),_relu3=_interopRequireDefault(_relu2),_reluB=require("./relu-b"),_reluB2=_interopRequireDefault(_reluB),_rowPluck=require("./row-pluck"),_rowPluck2=_interopRequireDefault(_rowPluck),_rowPluckB=require("./row-pluck-b"),_rowPluckB2=_interopRequireDefault(_rowPluckB),_sigmoid2=require("./sigmoid"),_sigmoid3=_interopRequireDefault(_sigmoid2),_sigmoidB=require("./sigmoid-b"),_sigmoidB2=_interopRequireDefault(_sigmoidB),_tanh2=require("./tanh"),_tanh3=_interopRequireDefault(_tanh2),_tanhB=require("./tanh-b"),_tanhB2=_interopRequireDefault(_tanhB),Equation=function(){function e(){_classCallCheck(this,e),this.inputRow=0,this.states=[]}return _createClass(e,[{key:"add",value:function(e,t){if(e.weights.length!==t.weights.length)throw new Error("misaligned matrices");var r=new _2.default(e.rows,e.columns);return this.states.push({left:e,right:t,product:r,forwardFn:_add3.default,backpropagationFn:_addB2.default}),r}},{key:"allOnes",value:function(e,t){var r=new _2.default(e,t);return this.states.push({left:r,product:r,forwardFn:_allOnes3.default}),r}},{key:"cloneNegative",value:function(e){var t=new _2.default(e.rows,e.columns);return this.states.push({left:e,product:t,forwardFn:_cloneNegative3.default}),t}},{key:"subtract",value:function(e,t){if(e.weights.length!==t.weights.length)throw new Error("misaligned matrices");return this.add(this.add(this.allOnes(e.rows,e.columns),this.cloneNegative(e)),t)}},{key:"multiply",value:function(e,t){if(e.columns!==t.rows)throw new Error("misaligned matrices");var r=new _2.default(e.rows,t.columns);return this.states.push({left:e,right:t,product:r,forwardFn:_multiply3.default,backpropagationFn:_multiplyB2.default}),r}},{key:"multiplyElement",value:function(e,t){if(e.weights.length!==t.weights.length)throw new Error("misaligned matrices");var r=new _2.default(e.rows,e.columns);return this.states.push({left:e,right:t,product:r,forwardFn:_multiplyElement3.default,backpropagationFn:_multiplyElementB2.default}),r}},{key:"relu",value:function(e){var t=new _2.default(e.rows,e.columns);return this.states.push({left:e,product:t,forwardFn:_relu3.default,backpropagationFn:_reluB2.default}),t}},{key:"inputMatrixToRow",value:function(e){var t=this,r=new _2.default(e.columns,1);return this.states.push({left:e,get right(){return t.inputRow},product:r,forwardFn:_rowPluck2.default,backpropagationFn:_rowPluckB2.default}),r}},{key:"sigmoid",value:function(e){var t=new _2.default(e.rows,e.columns);return this.states.push({left:e,product:t,forwardFn:_sigmoid3.default,backpropagationFn:_sigmoidB2.default}),t}},{key:"tanh",value:function(e){var t=new _2.default(e.rows,e.columns);return this.states.push({left:e,product:t,forwardFn:_tanh3.default,backpropagationFn:_tanhB2.default}),t}},{key:"observe",value:function(e){var t=0,r=0;return this.states.push({forwardFn:function(){t++},backpropagationFn:function(){r++}}),e}},{key:"run",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.inputRow=e;for(var t=void 0,r=0,u=this.states.length;r<u;r++)t=this.states[r],t.hasOwnProperty("forwardFn")&&t.forwardFn(t.product,t.left,t.right);return t.product}},{key:"runBackpropagate",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.inputRow=e;for(var t=this.states.length,r=void 0;t-- >0;)r=this.states[t],r.hasOwnProperty("backpropagationFn")&&r.backpropagationFn(r.product,r.left,r.right);return r.product}}]),e}();exports.default=Equation;
},{"./":14,"./add":9,"./add-b":8,"./all-ones":10,"./clone-negative":11,"./copy":12,"./multiply":19,"./multiply-b":16,"./multiply-element":18,"./multiply-element-b":17,"./ones-matrix":20,"./relu":23,"./relu-b":22,"./row-pluck":25,"./row-pluck-b":24,"./sigmoid":28,"./sigmoid-b":27,"./tanh":31,"./tanh-b":30}],14:[function(require,module,exports){
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function e(e,t){for(var s=0;s<t.length;s++){var r=t[s];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,s,r){return s&&e(t.prototype,s),r&&e(t,r),t}}(),_zeros=require("../../utilities/zeros"),_zeros2=_interopRequireDefault(_zeros),Matrix=function(){function e(t,s){_classCallCheck(this,e),void 0!==t&&void 0!==s&&(this.rows=t,this.columns=s,this.weights=(0,_zeros2.default)(t*s),this.deltas=(0,_zeros2.default)(t*s))}return _createClass(e,[{key:"getWeights",value:function(e,t){var s=this.columns*e+t;if(s<0&&s>=this.weights.length)throw new Error("get accessor is skewed");return this.weights[s]}},{key:"setWeight",value:function(e,t,s){var r=this.columns*e+t;if(r<0&&r>=this.weights.length)throw new Error("set accessor is skewed");this.weights[r]=s}},{key:"setDeltas",value:function(e,t,s){var r=this.columns*e+t;if(r<0&&r>=this.weights.length)throw new Error("set accessor is skewed");this.deltas[r]=s}},{key:"toJSON",value:function(){return{rows:this.rows,columns:this.columns,weights:this.weights.slice(0)}}},{key:"weightsToArray",value:function(){for(var e=[],t=0,s=0,r=0;r<this.weights.length;r++)0===s&&e.push([]),e[t].push(this.weights[r]),++s>=this.columns&&(s=0,t++);return e}},{key:"deltasToArray",value:function(){for(var e=[],t=0,s=0,r=0;r<this.deltas.length;r++)0===s&&e.push([]),e[t].push(this.deltas[r]),++s>=this.columns&&(s=0,t++);return e}}],[{key:"fromJSON",value:function(t){for(var s=new e(t.rows,t.columns),r=0,i=t.rows*t.columns;r<i;r++)s.weights[r]=t.weights[r];return s}},{key:"fromArray",value:function(t,s){var r=t.length,i=t[0].length,n=new e(r,i);s=s||t;for(var o=0;o<r;o++)for(var u=t[o],a=s[o],l=0;l<i;l++)n.setWeight(o,l,u[l]),n.setDeltas(o,l,a[l]);return n}}]),e}();exports.default=Matrix;
},{"../../utilities/zeros":43}],15:[function(require,module,exports){
"use strict";function maxI(e){for(var t=e.weights,r=t[0],a=0,o=1;o<t.length;o++){var s=t[o];s<r||(a=o,r=s)}return a}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=maxI;
},{}],16:[function(require,module,exports){
"use strict";function multiplyB(e,t,r){for(var s=t.rows,l=t.columns,o=r.columns,a=0;a<s;a++)for(var u=l*a,i=o*a,d=0;d<o;d++)for(var f=0;f<l;f++){var c=o*f,n=u+f,p=c+d,v=e.deltas[i+d];t.deltas[n]+=r.weights[p]*v,r.deltas[p]+=t.weights[n]*v}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=multiplyB;
},{}],17:[function(require,module,exports){
"use strict";function multiplyElementB(e,t,l){for(var s=0;s<t.weights.length;s++)t.deltas[s]=l.weights[s]*e.deltas[s],l.deltas[s]=t.weights[s]*e.deltas[s]}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=multiplyElementB;
},{}],18:[function(require,module,exports){
"use strict";function multiplyElement(e,t,l){for(var s=t.weights,i=0;i<s.length;i++)e.weights[i]=t.weights[i]*l.weights[i],e.deltas[i]=0}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=multiplyElement;
},{}],19:[function(require,module,exports){
"use strict";function multiply(e,t,r){for(var s=t.rows,l=t.columns,o=r.columns,u=0;u<s;u++)for(var a=l*u,i=o*u,f=0;f<o;f++){for(var c=0,d=0;d<l;d++){var n=o*d,p=a+d,v=n+f;c+=t.weights[p]*r.weights[v],t.deltas[p]=0,r.deltas[v]=0}e.weights[i+f]=c}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=multiply;
},{}],20:[function(require,module,exports){
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(exports,"__esModule",{value:!0});var _=require("./"),_2=_interopRequireDefault(_),_ones=require("../../utilities/ones"),_ones2=_interopRequireDefault(_ones),OnesMatrix=function(e){function t(e,r){_classCallCheck(this,t);var o=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,r));return o.rows=e,o.columns=r,o.weights=(0,_ones2.default)(e*r),o.deltas=(0,_ones2.default)(e*r),o}return _inherits(t,e),t}(_2.default);exports.default=OnesMatrix;
},{"../../utilities/ones":37,"./":14}],21:[function(require,module,exports){
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(exports,"__esModule",{value:!0});var _=require("./"),_2=_interopRequireDefault(_),_random=require("../../utilities/random"),RandomMatrix=function(e){function t(e,r,o){_classCallCheck(this,t);var n=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,r));n.rows=e,n.columns=r,n.std=o;for(var i=0,s=n.weights.length;i<s;i++)n.weights[i]=(0,_random.randomF)(-o,o);return n}return _inherits(t,e),t}(_2.default);exports.default=RandomMatrix;
},{"../../utilities/random":39,"./":14}],22:[function(require,module,exports){
"use strict";function reluB(e,t){for(var l=0;l<e.deltas.length;l++)t.deltas[l]=t.weights[l]>0?e.deltas[l]:0}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=reluB;
},{}],23:[function(require,module,exports){
"use strict";function relu(e,t){for(var r=0;r<t.weights.length;r++)e.weights[r]=Math.max(0,t.weights[r]),e.deltas[r]=0}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=relu;
},{}],24:[function(require,module,exports){
"use strict";function rowPluckB(e,t,o){for(var r=t.columns,l=r*o,s=0;s<r;s++)t.deltas[l+s]=e.deltas[s]}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=rowPluckB;
},{}],25:[function(require,module,exports){
"use strict";function rowPluck(e,t,o){for(var r=t.columns,s=r*o,u=0;u<r;u++)e.weights[u]=t.weights[s+u],e.deltas[u]=0}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=rowPluck;
},{}],26:[function(require,module,exports){
"use strict";function sampleI(e){for(var r=randomF(0,1),a=0,o=0,t=e.weights;;){if((a+=t[o])>r)return o;o++}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=sampleI;var _random=require("../../utilities/random"),randomF=_random.randomF;
},{"../../utilities/random":39}],27:[function(require,module,exports){
"use strict";function sigmoidB(e,t){for(var s=0;s<e.deltas.length;s++){var d=e.weights[s];t.deltas[s]=d*(1-d)*e.deltas[s]}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=sigmoidB;
},{}],28:[function(require,module,exports){
"use strict";function sigmoid(e,t){for(var i=0;i<t.weights.length;i++)e.weights[i]=1/(1+Math.exp(-t.weights[i])),e.deltas[i]=0}function sig(e){return 1/(1+Math.exp(-e))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=sigmoid;
},{}],29:[function(require,module,exports){
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function softmax(e){for(var t=new _2.default(e.rows,e.columns),r=-999999,s=0;s<e.weights.length;s++)e.weights[s]>r&&(r=e.weights[s]);for(var i=0,u=0;u<e.weights.length;u++)t.weights[u]=Math.exp(e.weights[u]-r),i+=t.weights[u];for(var o=0;o<e.weights.length;o++)t.weights[o]/=i;return t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=softmax;var _=require("./"),_2=_interopRequireDefault(_);
},{"./":14}],30:[function(require,module,exports){
"use strict";function tanhB(e,t){for(var a=0;a<e.deltas.length;a++){var s=e.weights[a];t.deltas[a]=(1-s*s)*e.deltas[a]}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=tanhB;
},{}],31:[function(require,module,exports){
"use strict";function tanh(t,e){for(var s=0;s<e.weights.length;s++)t.weights[s]=Math.tanh(e.weights[s]),t.deltas[s]=0}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=tanh;
},{}],32:[function(require,module,exports){
"use strict";function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),_matrix=require("./matrix"),_matrix2=_interopRequireDefault(_matrix),_randomMatrix=require("./matrix/random-matrix"),_randomMatrix2=_interopRequireDefault(_randomMatrix),_equation=require("./matrix/equation"),_equation2=_interopRequireDefault(_equation),_sampleI=require("./matrix/sample-i"),_sampleI2=_interopRequireDefault(_sampleI),_maxI=require("./matrix/max-i"),_maxI2=_interopRequireDefault(_maxI),_softmax=require("./matrix/softmax"),_softmax2=_interopRequireDefault(_softmax),_copy=require("./matrix/copy"),_copy2=_interopRequireDefault(_copy),_random=require("../utilities/random"),_zeros=require("../utilities/zeros"),_zeros2=_interopRequireDefault(_zeros),_dataFormatter=require("../utilities/data-formatter"),_dataFormatter2=_interopRequireDefault(_dataFormatter),RNN=function(){function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};_classCallCheck(this,t);var n=t.defaults;for(var a in n)n.hasOwnProperty(a)&&(this[a]=r.hasOwnProperty(a)?r[a]:n[a]);this.stepCache={},this.runs=0,this.totalCost=null,this.ratioClipped=null,this.model=null,this.initialLayerInputs=this.hiddenSizes.map(function(t){return new _matrix2.default(e.hiddenSizes[0],1)}),this.inputLookup=null,this.outputLookup=null,this.initialize()}return _createClass(t,[{key:"initialize",value:function(){this.model={input:null,hiddenLayers:[],output:null,equations:[],allMatrices:[],equationConnections:[]},null!==this.dataFormatter&&(this.inputSize=this.inputRange=this.outputSize=this.dataFormatter.characters.length),this.json?this.fromJSON(this.json):this.mapModel()}},{key:"createHiddenLayers",value:function(){var t=this.hiddenSizes,e=this.model,r=e.hiddenLayers;r.push(this.getModel(t[0],this.inputSize));for(var n=t[0],a=1;a<t.length;a++){var i=t[a];r.push(this.getModel(i,n)),n=i}}},{key:"getModel",value:function(t,e){return{weight:new _randomMatrix2.default(t,e,.08),transition:new _randomMatrix2.default(t,t,.08),bias:new _matrix2.default(t,1)}}},{key:"getEquation",value:function(t,e,r,n){var a=t.relu.bind(t),i=t.add.bind(t),o=t.multiply.bind(t);return a(i(i(o(n.weight,e),o(n.transition,r)),n.bias))}},{key:"createInputMatrix",value:function(){this.model.input=new _randomMatrix2.default(this.inputRange+1,this.inputSize,.08)}},{key:"createOutputMatrix",value:function(){var t=this.model,e=this.outputSize,r=this.hiddenSizes[this.hiddenSizes.length-1];t.outputConnector=new _randomMatrix2.default(e+1,r,.08),t.output=new _matrix2.default(e+1,1)}},{key:"bindEquation",value:function(){var t=this.model,e=this.hiddenSizes,r=t.hiddenLayers,n=new _equation2.default,a=[],i=t.equationConnections.length>0?t.equationConnections[t.equationConnections.length-1]:this.initialLayerInputs,o=this.getEquation(n,n.inputMatrixToRow(t.input),i[0],r[0]);a.push(o);for(var u=1,s=e.length;u<s;u++)o=this.getEquation(n,o,i[u],r[u]),a.push(o);t.equationConnections.push(a),n.add(n.multiply(t.outputConnector,o),t.output),t.equations.push(n)}},{key:"mapModel",value:function(){var t=this.model,e=t.hiddenLayers,r=t.allMatrices;if(this.createInputMatrix(),!t.input)throw new Error("net.model.input not set");if(r.push(t.input),this.createHiddenLayers(),!t.hiddenLayers.length)throw new Error("net.hiddenLayers not set");for(var n=0,a=e.length;n<a;n++){var i=e[n];for(var o in i)i.hasOwnProperty(o)&&r.push(i[o])}if(this.createOutputMatrix(),!t.outputConnector)throw new Error("net.model.outputConnector not set");if(!t.output)throw new Error("net.model.output not set");r.push(t.outputConnector),r.push(t.output)}},{key:"trainPattern",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=this.runInput(t);return this.runBackpropagate(t),this.step(e),r}},{key:"runInput",value:function(t){this.runs++;for(var e=this.model,r=t.length,n=0,a=0,i=void 0;e.equations.length<=t.length+1;)this.bindEquation();for(var o=-1,u=t.length;o<u;o++){var s=o+1;i=e.equations[s];var l=-1===o?0:t[o]+1,h=o===r-1?0:t[o+1]+1,p=i.run(l),d=p,f=(0,_softmax2.default)(p);n+=-Math.log2(f.weights[h]),a+=-Math.log(f.weights[h]),d.deltas=f.weights.slice(0),d.deltas[h]-=1}return this.totalCost=a,Math.pow(2,n/(r-1))}},{key:"runBackpropagate",value:function(t){for(var e=t.length,r=this.model,n=r.equations;e>0;)n[e].runBackpropagate(t[e-1]+1),e--;n[0].runBackpropagate(0)}},{key:"step",value:function(){for(var t=(arguments.length>0&&void 0!==arguments[0]&&arguments[0],this.learningRate),e=this.regc,r=this.clipval,n=this.model,a=0,i=0,o=n.allMatrices,u=0;u<o.length;u++){var s=o[u],l=s.weights,h=s.deltas;u in this.stepCache||(this.stepCache[u]=(0,_zeros2.default)(s.rows*s.columns));for(var p=this.stepCache[u],d=0;d<l.length;d++){var f=h[d],c=l[d];p[d]=p[d]*this.decayRate+(1-this.decayRate)*f*f,f>r&&(f=r,a++),f<-r&&(f=-r,a++),i++,l[d]=c+-t*f/Math.sqrt(p[d]+this.smoothEps)-e*c}}this.ratioClipped=a/i}},{key:"run",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;if(!this.isRunnable)return null;for(var a=this.formatDataIn(t),i=this.model,o=[],u=0;i.equations.length<e;)this.bindEquation();for(;;){var s=0===u?0:u<a.length?a[u-1]+1:o[u-1],l=i.equations[u],h=l.run(s),p=new _matrix2.default(i.output.rows,i.output.columns);if((0,_copy2.default)(p,h),1!==n&&r)for(var d=0,f=p.weights.length;d<f;d++)p.weights[d]/=n;var c=(0,_softmax2.default)(p),m=r?(0,_sampleI2.default)(c):(0,_maxI2.default)(c);if(u++,0===m)break;if(u>=e)break;o.push(m)}return this.formatDataOut(a,o.slice(a.length).map(function(t){return t-1}))}},{key:"train",value:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};r=Object.assign({},t.trainDefaults,r);var n=r.iterations,a=r.errorThresh,i=!0===r.log?console.log:r.log,o=r.logPeriod,u=r.learningRate||this.learningRate,s=r.callback,l=r.callbackPeriod,h=1/0,p=void 0;for(this.hasOwnProperty("setupData")&&(e=this.setupData(e)),r.keepNetworkIntact||this.initialize(),p=0;p<n&&h>a;p++){for(var d=0,f=0;f<e.length;f++){d+=this.trainPattern(e[f],u)}if(h=d/e.length,isNaN(h))throw new Error("network error rate is unexpected NaN, check network configurations and try again");i&&p%o==0&&i("iterations:",p,"training error:",h),s&&p%l==0&&s({error:h,iterations:p})}return{error:h,iterations:p}}},{key:"test",value:function(t){throw new Error("not yet implemented")}},{key:"toJSON",value:function(){var e=t.defaults,r=this.model,n={};for(var a in e)n[a]=this[a];return{type:this.constructor.name,options:n,input:r.input.toJSON(),hiddenLayers:r.hiddenLayers.map(function(t){var e={};for(var r in t)e[r]=t[r].toJSON();return e}),outputConnector:this.model.outputConnector.toJSON(),output:this.model.output.toJSON()}}},{key:"toJSONString",value:function(){return JSON.stringify(this.toJSON())}},{key:"fromJSON",value:function(e){this.json=e;var r=t.defaults,n=this.model,a=e.options,i=n.allMatrices;n.input=_matrix2.default.fromJSON(e.input),i.push(n.input),n.hiddenLayers=e.hiddenLayers.map(function(t){var e={};for(var r in t)e[r]=_matrix2.default.fromJSON(t[r]),i.push(e[r]);return e}),n.outputConnector=_matrix2.default.fromJSON(e.outputConnector),n.output=_matrix2.default.fromJSON(e.output),i.push(n.outputConnector),i.push(n.output);for(var o in r)r.hasOwnProperty(o)&&(this[o]=a.hasOwnProperty(o)?a[o]:r[o]);a.hasOwnProperty("dataFormatter")&&null!==a.dataFormatter&&(this.dataFormatter=_dataFormatter2.default.fromJSON(a.dataFormatter),delete a.dataFormatter),this.bindEquation()}},{key:"fromJSONString",value:function(t){return this.fromJSON(JSON.parse(t))}},{key:"toFunction",value:function(){function t(t,r){for(var n=0,a=u.length;n<a;n++){var i=u[n];if(n===r){var o=e(t);switch(t){case i.left:if(o>-1)return"typeof prevStates["+o+"] === 'object' ? prevStates["+o+"].product : new Matrix("+t.rows+", "+t.columns+")";case i.right:if(o>-1)return"typeof prevStates["+o+"] === 'object' ? prevStates["+o+"].product : new Matrix("+t.rows+", "+t.columns+")";case i.product:return"new Matrix("+t.rows+", "+t.columns+")";default:throw Error("unknown state")}}if(t===i.product)return"states["+n+"].product";if(t===i.right)return"states["+n+"].right";if(t===i.left)return"states["+n+"].left"}}function e(t){for(var e=a.equationConnections[0],r=i[0].states,n=0,o=r.length;n<o;n++)if(r[n].product===t)return n;return e.indexOf(t)}function r(e,r){if(!e||!e.rows||!e.columns)return"null";if(e===a.input)return"json.input";if(e===a.outputConnector)return"json.outputConnector";if(e===a.output)return"json.output";for(var n=0,i=a.hiddenLayers.length;n<i;n++){var o=a.hiddenLayers[n];for(var u in o)if(o.hasOwnProperty(u)&&o[u]===e)return"json.hiddenLayers["+n+"]."+u}return t(e,r)}function n(t){return t=t.toString().split("{"),t.shift(),t=t.join("{"),t=t.split("}"),t.pop(),t.join("}").split("\n").join("\n ").replace("product.deltas[i] = 0;","").replace("product.deltas[column] = 0;","").replace("left.deltas[leftIndex] = 0;","").replace("right.deltas[rightIndex] = 0;","").replace("product.deltas = left.deltas.slice(0);","")}for(var a=this.model,i=this.model.equations,o=i[1],u=o.states,s=JSON.stringify(this.toJSON()),l=[],h={},p=[],d=0,f=u.length;d<f;d++){var c=u[d];l.push("states["+d+"] = {\n name: '"+c.forwardFn.name+"',\n left: "+r(c.left,d)+",\n right: "+r(c.right,d)+",\n product: "+r(c.product,d)+"\n }");var m=c.forwardFn.name;h[m]||(h[m]=!0,p.push(" case '"+m+"': //compiled from "+function(t){return"src/recurrent/matrix/"+t.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()})+".js"}(m)+"\n "+n(c.forwardFn.toString())+"\n break;"))}var g="\n if (typeof rawInput === 'undefined') rawInput = [];\n if (typeof maxPredictionLength === 'undefined') maxPredictionLength = 100;\n if (typeof isSampleI === 'undefined') isSampleI = false;\n if (typeof temperature === 'undefined') temperature = 1;\n "+(null!==this.dataFormatter?this.dataFormatter.toFunctionString():"")+"\n \n var input = "+(null!==this.dataFormatter&&"function"==typeof this.formatDataIn?"formatDataIn(rawInput)":"rawInput")+";\n var json = "+s+";\n var _i = 0;\n var output = [];\n var states = [];\n var prevStates;\n while (true) {\n var previousIndex = (_i === 0\n ? 0\n : _i < input.length\n ? input[_i - 1] + 1\n : output[_i - 1])\n ;\n var rowPluckIndex = previousIndex;\n prevStates = states;\n states = [];\n "+l.join(";\n ")+";\n for (var stateIndex = 0, stateMax = "+l.length+"; stateIndex < stateMax; stateIndex++) {\n var state = states[stateIndex];\n var product = state.product;\n var left = state.left;\n var right = state.right;\n \n switch (state.name) {\n"+p.join("\n")+"\n }\n }\n \n var logProbabilities = state.product;\n if (temperature !== 1 && isSampleI) {\n for (var q = 0, nq = logProbabilities.weights.length; q < nq; q++) {\n logProbabilities.weights[q] /= temperature;\n }\n }\n\n var probs = softmax(logProbabilities);\n var nextIndex = isSampleI ? sampleI(probs) : maxI(probs);\n \n _i++;\n if (nextIndex === 0) {\n break;\n }\n if (_i >= maxPredictionLength) {\n break;\n }\n\n output.push(nextIndex);\n }\n "+(null!==this.dataFormatter&&"function"==typeof this.formatDataOut?"return formatDataOut(input, output.slice(input.length).map(function(value) { return value - 1; }))":"return output.slice(input.length).map(function(value) { return value - 1; })")+";\n function Matrix(rows, columns) {\n this.rows = rows;\n this.columns = columns;\n this.weights = zeros(rows * columns);\n }\n "+(null!==this.dataFormatter&&"function"==typeof this.formatDataIn?"function formatDataIn(input, output) { "+n(this.formatDataIn.toString()).replace(/this[.]dataFormatter[\n\s]+[.]/g,"").replace(/this[.]dataFormatter[.]/g,"").replace(/this[.]dataFormatter/g,"true")+" }":"")+"\n "+(null!==this.dataFormatter&&"function"==typeof this.formatDataOut?"function formatDataOut(input, output) { "+n(this.formatDataOut.toString()).replace(/this[.]dataFormatter[\n\s]+[.]/g,"").replace(/this[.]dataFormatter[.]/g,"").replace(/this[.]dataFormatter/g,"true")+" }":"")+"\n "+_zeros2.default.toString()+"\n "+_softmax2.default.toString().replace("_2.default","Matrix")+"\n "+_random.randomF.toString()+"\n "+_sampleI2.default.toString()+"\n "+_maxI2.default.toString();return new Function("rawInput","maxPredictionLength","isSampleI","temperature",g)}},{key:"isRunnable",get:function(){return 0!==this.model.equations.length||(console.error("No equations bound, did you run train()?"),!1)}}]),t}();exports.default=RNN,RNN.defaults={inputSize:20,inputRange:20,hiddenSizes:[20,20],outputSize:20,learningRate:.01,decayRate:.999,smoothEps:1e-8,regc:1e-6,clipval:5,json:null,setupData:function(t){if(!("string"==typeof t[0]||Array.isArray(t[0])||t[0].hasOwnProperty("input")&&t[0].hasOwnProperty("output")))return t;var e=[],r=[];if("string"==typeof t[0]||Array.isArray(t[0])){if(null===this.dataFormatter){for(var n=0;n<t.length;n++)e.push(t[n]);this.dataFormatter=new _dataFormatter2.default(e)}for(var a=0,i=t.length;a<i;a++)r.push(this.formatDataIn(t[a]))}else{if(null===this.dataFormatter){for(var o=0;o<t.length;o++)e.push(t[o].input),e.push(t[o].output);this.dataFormatter=_dataFormatter2.default.fromArrayInputOutput(e)}for(var u=0,s=t.length;u<s;u++)r.push(this.formatDataIn(t[u].input,t[u].output))}return r},formatDataIn:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return null!==this.dataFormatter?this.dataFormatter.indexTable.hasOwnProperty("stop-input")?this.dataFormatter.toIndexesInputOutput(t,e):this.dataFormatter.toIndexes(t):t},formatDataOut:function(t,e){return null!==this.dataFormatter?this.dataFormatter.toCharacters(e).join(""):e},dataFormatter:null},RNN.trainDefaults={iterations:2e4,errorThresh:.005,log:!1,logPeriod:10,learningRate:.3,callback:null,callbackPeriod:10,keepNetworkIntact:!1};
},{"../utilities/data-formatter":34,"../utilities/random":39,"../utilities/zeros":43,"./matrix":14,"./matrix/copy":12,"./matrix/equation":13,"./matrix/max-i":15,"./matrix/random-matrix":21,"./matrix/sample-i":26,"./matrix/softmax":29}],33:[function(require,module,exports){
"use strict";function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _toConsumableArray(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]=t[e];return r}return Array.from(t)}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function uniques(t){return[].concat(_toConsumableArray(new Set(t)))}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),_stream=require("stream"),_lookup=require("./lookup"),_lookup2=_interopRequireDefault(_lookup),TrainStream=function(t){function e(t){var r;_classCallCheck(this,e);var i=_possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,{objectMode:!0}));if(t=t||{},!t.neuralNetwork)throw new Error("no neural network specified");return i.neuralNetwork=t.neuralNetwork,i.dataFormatDetermined=!1,i.inputKeys=[],i.outputKeys=[],i.i=0,i.iterations=t.iterations||2e4,i.errorThresh=t.errorThresh||.005,i.log=!!t.log&&("function"==typeof t.log?t.log:console.log),i.logPeriod=t.logPeriod||10,i.callback=t.callback,i.callbackPeriod=t.callbackPeriod||10,i.floodCallback=t.floodCallback,i.doneTrainingCallback=t.doneTrainingCallback,i.size=0,i.count=0,i.sum=0,i.on("finish",i.finishStreamIteration.bind(i)),r=i,_possibleConstructorReturn(i,r)}return _inherits(e,t),_createClass(e,[{key:"_write",value:function(t,e,r){if(!t)return this.emit("finish"),r();if(!this.dataFormatDetermined)return this.size++,this.inputKeys=uniques(this.inputKeys.slice(0).concat(Object.keys(t.input))),this.outputKeys=uniques(this.outputKeys.slice(0).concat(Object.keys(t.output))),this.firstDatum=this.firstDatum||t,r();this.count++;var i=this.neuralNetwork.formatData(t);this.trainDatum(i[0]),r()}},{key:"trainDatum",value:function(t){var e=this.neuralNetwork.trainPattern(t.input,t.output);this.sum+=e}},{key:"finishStreamIteration",value:function(){if(this.dataFormatDetermined&&this.size!==this.count&&this.log("This iteration's data length was different from the first."),!this.dataFormatDetermined){this.neuralNetwork.inputLookup=_lookup2.default.lookupFromArray(this.inputKeys),Array.isArray(this.firstDatum.output)||(this.neuralNetwork.outputLookup=_lookup2.default.lookupFromArray(this.outputKeys));var t=this.neuralNetwork.formatData(this.firstDatum),e=[],r=t[0].input.length,i=t[0].output.length,o=this.hiddenSizes;return o?o.forEach(function(t){e.push(t)}):e.push(Math.max(3,Math.floor(r/2))),e.unshift(r),e.push(i),this.dataFormatDetermined=!0,this.neuralNetwork.initialize(e),void("function"==typeof this.floodCallback&&this.floodCallback())}var n=this.sum/this.size;if(this.log&&this.i%this.logPeriod==0&&this.log("iterations:",this.i,"training error:",n),this.callback&&this.i%this.callbackPeriod==0&&this.callback({error:n,iterations:this.i}),this.sum=0,this.count=0,++this.i<this.iterations&&n>this.errorThresh){if("function"==typeof this.floodCallback)return this.floodCallback()}else if("function"==typeof this.doneTrainingCallback)return this.doneTrainingCallback({error:n,iterations:this.i})}}]),e}(_stream.Writable);exports.default=TrainStream;
},{"./lookup":3,"stream":98}],34:[function(require,module,exports){
"use strict";function _toConsumableArray(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]=t[e];return r}return Array.from(t)}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function t(t,e){for(var r=0;r<e.length;r++){var a=e[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}return function(e,r,a){return r&&t(e.prototype,r),a&&t(e,a),e}}(),DataFormatter=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;_classCallCheck(this,t),void 0!==e&&(this.values=e,this.indexTable={},this.characterTable={},this.characters=[],this.buildCharactersFromIterable(e),this.buildTables(r))}return _createClass(t,[{key:"buildCharactersFromIterable",value:function(t){for(var e={},r=0,a=t.length;r<a;r++){var n=t[r];if(n.hasOwnProperty("length"))for(var i=0,o=n.length;i<o;i++){var u=n[i];e.hasOwnProperty(u)||(e[u]=!0,this.characters.push(u))}else{var l=t[r];if(e.hasOwnProperty(l))continue;e[r]=!0,this.characters.push(l)}}}},{key:"buildTables",value:function(t){for(var e=this.characters.length,r=0;r<e;r++){var a=this.characters[r];r>=t&&(this.indexTable[a]=r,this.characterTable[r]=a)}}},{key:"toIndexes",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=[],a=this.indexTable,n=0,i=t.length;n<i;n++){var o=t[n],u=a[o];if(void 0===u)throw new Error('unrecognized character "'+o+'"');u<e||r.push(u)}return r}},{key:"toIndexesInputOutput",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=void 0;return a="string"==typeof t?this.toIndexes(t.split("").concat(["stop-input","start-output"]),r):this.toIndexes(t.concat(["stop-input","start-output"]),r),null===e?a:"string"==typeof e?a.concat(this.toIndexes(e.split(""),r)):a.concat(this.toIndexes(e,r))}},{key:"toCharacters",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=[],a=this.characterTable,n=0,i=t.length;n<i;n++){var o=t[n];if(!(o<e)){var u=a[o];if(void 0===u)throw new Error('unrecognized index "'+o+'"');r.push(u)}}return r}},{key:"toString",value:function(t,e){return this.toCharacters(t,e).join("")}},{key:"addInputOutput",value:function(){this.addSpecial("stop-input"),this.addSpecial("start-output")}},{key:"addSpecial",value:function(){for(var t=0;t<arguments.length;t++){var e=arguments[t],r=this.indexTable[e]=this.characters.length;this.characterTable[r]=e,this.characters.push(e)}}},{key:"toFunctionString",value:function(){return"\nvar characterTable = "+JSON.stringify(this.characterTable)+";\nvar indexTable = "+JSON.stringify(this.indexTable)+";\nvar characters = "+JSON.stringify(this.characters)+";\n"+this.toIndexes.toString().replace(/(let|var) indexTable = this[.]indexTable;\n/,"").replace(/this[.]/g,"")+"\n"+this.toIndexesInputOutput.toString().replace(/this[.]/g,"")+"\n"+this.toCharacters.toString().replace(/(let|var) characterTable = this[.]characterTable;\n/g,"").replace(/this[.]/,"")+"\n"}}],[{key:"fromAllPrintable",value:function(e){for(var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:["\n"],a=32;a<=126;a++)r.push(String.fromCharCode(a));return new t(r,e)}},{key:"fromAllPrintableInputOutput",value:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:["\n"],a=t.fromAllPrintable(e,r);return a.addInputOutput(),a}},{key:"fromStringInputOutput",value:function(e,r){var a,n=(a=String.prototype).concat.apply(a,_toConsumableArray(new Set(e))),i=new t(n,r);return i.addInputOutput(),i}},{key:"fromArrayInputOutput",value:function(e,r){var a=new t(e.filter(function(t,e,r){return r.indexOf(t)===e}).sort(),r);return a.addInputOutput(),a}},{key:"fromString",value:function(e,r){var a;return new t((a=String.prototype).concat.apply(a,_toConsumableArray(new Set(e))),r)}},{key:"fromJSON",value:function(e){var r=new t;return r.indexTable=e.indexTable,r.characterTable=e.characterTable,r.values=e.values,r.characters=e.characters,r}}]),t}();exports.default=DataFormatter;
},{}],35:[function(require,module,exports){
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function max(e){return Math.max.apply(Math,(0,_toArray2.default)(e))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=max;var _toArray=require("./to-array"),_toArray2=_interopRequireDefault(_toArray);
},{"./to-array":42}],36:[function(require,module,exports){
"use strict";function mse(e){for(var t=0,r=0;r<e.length;r++)t+=Math.pow(e[r],2);return t/e.length}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=mse;
},{}],37:[function(require,module,exports){
"use strict";function ones(e){if("undefined"!=typeof Float32Array)return new Float32Array(e).fill(1);for(var r=new Array(e),t=0;t<e;t++)r[t]=1;return r}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=ones;
},{}],38:[function(require,module,exports){
"use strict";function randomWeight(){return.4*Math.random()-.2}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=randomWeight;
},{}],39:[function(require,module,exports){
"use strict";function randomF(a,r){return Math.random()*(r-a)+a}function randomI(a,r){return Math.floor(Math.random()*(r-a)+a)}function randomN(a,r){return a+gaussRandom()*r}function gaussRandom(){if(gaussRandom.returnV)return gaussRandom.returnV=!1,gaussRandom.vVal;var a=2*Math.random()-1,r=2*Math.random()-1,n=a*a+r*r;if(0==n||n>1)return gaussRandom();var o=Math.sqrt(-2*Math.log(n)/n);return gaussRandom.vVal=r*o,gaussRandom.returnV=!0,a*o}Object.defineProperty(exports,"__esModule",{value:!0}),exports.randomF=randomF,exports.randomI=randomI,exports.randomN=randomN,gaussRandom.returnV=!1,gaussRandom.vVal=0;
},{}],40:[function(require,module,exports){
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function randos(e){for(var r=new Float32Array(e),t=0;t<e;t++)r[t]=(0,_randomWeight2.default)();return r}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=randos;var _randomWeight=require("./random-weight"),_randomWeight2=_interopRequireDefault(_randomWeight);
},{"./random-weight":38}],41:[function(require,module,exports){
"use strict";function range(e,r){for(var t=[];e<r;e++)t.push(e);return t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=range;
},{}],42:[function(require,module,exports){
"use strict";function toArray(r){if(Array.isArray(r))return r;var e=Object.keys(r),t=new Float32Array(e.length);for(var a in e)t[a]=r[e[a]];return t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=toArray;
},{}],43:[function(require,module,exports){
"use strict";function zeros(e){return new Float32Array(e)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=zeros;
},{}],44:[function(require,module,exports){
var crossValidate=require("./dist/cross-validate").default,likely=require("./dist/likely").default,lookup=require("./dist/lookup").default,NeuralNetwork=require("./dist/neural-network").default,NeuralNetworkGPU=require("./dist/neural-network-gpu").default,TrainStream=require("./dist/train-stream").default,RNN=require("./dist/recurrent/rnn").default,LSTM=require("./dist/recurrent/lstm").default,GRU=require("./dist/recurrent/gru").default,utilities={max:require("./dist/utilities/max").default,mse:require("./dist/utilities/mse").default,ones:require("./dist/utilities/ones").default,random:require("./dist/utilities/random").default,randomWeight:require("./dist/utilities/random-weight").default,randos:require("./dist/utilities/randos").default,range:require("./dist/utilities/range").default,toArray:require("./dist/utilities/to-array").default,DataFormatter:require("./dist/utilities/data-formatter").default,zeros:require("./dist/utilities/zeros").default},brain={crossValidate:crossValidate,likely:likely,lookup:lookup,NeuralNetwork:NeuralNetwork,NeuralNetworkGPU:NeuralNetworkGPU,TrainStream:TrainStream,recurrent:{RNN:RNN,LSTM:LSTM,GRU:GRU},utilities:utilities};"undefined"!=typeof window&&(window.brain=brain),"undefined"!=typeof self&&(self.brain=brain),"undefined"!=typeof module&&(module.exports=brain);
},{"./dist/cross-validate":1,"./dist/likely":2,"./dist/lookup":3,"./dist/neural-network":5,"./dist/neural-network-gpu":4,"./dist/recurrent/gru":6,"./dist/recurrent/lstm":7,"./dist/recurrent/rnn":32,"./dist/train-stream":33,"./dist/utilities/data-formatter":34,"./dist/utilities/max":35,"./dist/utilities/mse":36,"./dist/utilities/ones":37,"./dist/utilities/random":39,"./dist/utilities/random-weight":38,"./dist/utilities/randos":40,"./dist/utilities/range":41,"./dist/utilities/to-array":42,"./dist/utilities/zeros":43}],45:[function(require,module,exports){
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.acorn={})}(this,function(t){"use strict";function e(t,e){for(var s=65536,i=0;i<e.length;i+=2){if((s+=e[i])>t)return!1;if((s+=e[i+1])>=t)return!0}}function s(t,s){return t<65?36===t:t<91||(t<97?95===t:t<123||(t<=65535?t>=170&&C.test(String.fromCharCode(t)):!1!==s&&e(t,_)))}function i(t,s){return t<48?36===t:t<58||!(t<65)&&(t<91||(t<97?95===t:t<123||(t<=65535?t>=170&&L.test(String.fromCharCode(t)):!1!==s&&(e(t,_)||e(t,P)))))}function r(t,e){return new T(t,{beforeExpr:!0,binop:e})}function n(t,e){return void 0===e&&(e={}),e.keyword=t,R[t]=new T(t,e)}function a(t){return 10===t||13===t||8232===t||8233===t}function o(t,e){return q.call(t,e)}function h(t,e){for(var s=1,i=0;;){D.lastIndex=i;var r=D.exec(t);if(!(r&&r.index<e))return new j(s,e-i);++s,i=r.index+r[0].length}}function p(t){var e={};for(var s in G)e[s]=t&&o(t,s)?t[s]:G[s];if(e.ecmaVersion>=2015&&(e.ecmaVersion-=2009),null==e.allowReserved&&(e.allowReserved=e.ecmaVersion<5),U(e.onToken)){var i=e.onToken;e.onToken=function(t){return i.push(t)}}return U(e.onComment)&&(e.onComment=c(e,e.onComment)),e}function c(t,e){return function(s,i,r,n,a,o){var h={type:s?"Block":"Line",value:i,start:r,end:n};t.locations&&(h.loc=new W(this,a,o)),t.ranges&&(h.range=[r,n]),e.push(h)}}function l(t){return new RegExp("^(?:"+t.replace(/ /g,"|")+")$")}function u(){this.shorthandAssign=this.trailingComma=this.parenthesizedAssign=this.parenthesizedBind=this.doubleProto=-1}function d(t,e,s,i){return t.type=e,t.end=s,this.options.locations&&(t.loc.end=i),this.options.ranges&&(t.range[1]=s),t}function f(t,e,s,i){try{return new RegExp(t,e)}catch(t){if(void 0!==s)throw t instanceof SyntaxError&&i.raise(s,"Error parsing regular expression: "+t.message),t}}function m(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t)))}function x(t,e){return new Q(e,t).parse()}function y(t,e,s){var i=new Q(s,t,e);return i.nextToken(),i.parseExpression()}function v(t,e){return new Q(e,t)}function g(e,s,i){t.parse_dammit=e,t.LooseParser=s,t.pluginsLoose=i}var b={3:"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",5:"class enum extends super const export import",6:"enum",strict:"implements interface let package private protected public static yield",strictBind:"eval arguments"},k="break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this",w={5:k,6:k+" const class extends export import super"},E=/^in(stanceof)?$/,A="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞮꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",S="·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣔ-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_",C=new RegExp("["+A+"]"),L=new RegExp("["+A+S+"]");A=S=null;var _=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541],P=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239],T=function(t,e){void 0===e&&(e={}),this.label=t,this.keyword=e.keyword,this.beforeExpr=!!e.beforeExpr,this.startsExpr=!!e.startsExpr,this.isLoop=!!e.isLoop,this.isAssign=!!e.isAssign,this.prefix=!!e.prefix,this.postfix=!!e.postfix,this.binop=e.binop||null,this.updateContext=null},N={beforeExpr:!0},I={startsExpr:!0},R={},V={num:new T("num",I),regexp:new T("regexp",I),string:new T("string",I),name:new T("name",I),eof:new T("eof"),bracketL:new T("[",{beforeExpr:!0,startsExpr:!0}),bracketR:new T("]"),braceL:new T("{",{beforeExpr:!0,startsExpr:!0}),braceR:new T("}"),parenL:new T("(",{beforeExpr:!0,startsExpr:!0}),parenR:new T(")"),comma:new T(",",N),semi:new T(";",N),colon:new T(":",N),dot:new T("."),question:new T("?",N),arrow:new T("=>",N),template:new T("template"),invalidTemplate:new T("invalidTemplate"),ellipsis:new T("...",N),backQuote:new T("`",I),dollarBraceL:new T("${",{beforeExpr:!0,startsExpr:!0}),eq:new T("=",{beforeExpr:!0,isAssign:!0}),assign:new T("_=",{beforeExpr:!0,isAssign:!0}),incDec:new T("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new T("!/~",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:r("||",1),logicalAND:r("&&",2),bitwiseOR:r("|",3),bitwiseXOR:r("^",4),bitwiseAND:r("&",5),equality:r("==/!=/===/!==",6),relational:r("</>/<=/>=",7),bitShift:r("<</>>/>>>",8),plusMin:new T("+/-",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:r("%",10),star:r("*",10),slash:r("/",10),starstar:new T("**",{beforeExpr:!0}),_break:n("break"),_case:n("case",N),_catch:n("catch"),_continue:n("continue"),_debugger:n("debugger"),_default:n("default",N),_do:n("do",{isLoop:!0,beforeExpr:!0}),_else:n("else",N),_finally:n("finally"),_for:n("for",{isLoop:!0}),_function:n("function",I),_if:n("if"),_return:n("return",N),_switch:n("switch"),_throw:n("throw",N),_try:n("try"),_var:n("var"),_const:n("const"),_while:n("while",{isLoop:!0}),_with:n("with"),_new:n("new",{beforeExpr:!0,startsExpr:!0}),_this:n("this",I),_super:n("super",I),_class:n("class",I),_extends:n("extends",N),_export:n("export"),_import:n("import"),_null:n("null",I),_true:n("true",I),_false:n("false",I),_in:n("in",{beforeExpr:!0,binop:7}),_instanceof:n("instanceof",{beforeExpr:!0,binop:7}),_typeof:n("typeof",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_void:n("void",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_delete:n("delete",{beforeExpr:!0,prefix:!0,startsExpr:!0})},F=/\r\n?|\n|\u2028|\u2029/,D=new RegExp(F.source,"g"),B=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/,O=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,M=Object.prototype,q=M.hasOwnProperty,z=M.toString,U=Array.isArray||function(t){return"[object Array]"===z.call(t)},j=function(t,e){this.line=t,this.column=e};j.prototype.offset=function(t){return new j(this.line,this.column+t)};var W=function(t,e,s){this.start=e,this.end=s,null!==t.sourceFile&&(this.source=t.sourceFile)},G={ecmaVersion:7,sourceType:"script",onInsertedSemicolon:null,onTrailingComma:null,allowReserved:null,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowHashBang:!1,locations:!1,onToken:null,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null,preserveParens:!1,plugins:{}},Y={},Q=function(t,e,s){this.options=t=p(t),this.sourceFile=t.sourceFile,this.keywords=l(w[t.ecmaVersion>=6?6:5]);var i="";if(!t.allowReserved){for(var r=t.ecmaVersion;!(i=b[r]);r--);"module"==t.sourceType&&(i+=" await")}this.reservedWords=l(i);var n=(i?i+" ":"")+b.strict;this.reservedWordsStrict=l(n),this.reservedWordsStrictBind=l(n+" "+b.strictBind),this.input=String(e),this.containsEsc=!1,this.loadPlugins(t.plugins),s?(this.pos=s,this.lineStart=this.input.lastIndexOf("\n",s-1)+1,this.curLine=this.input.slice(0,this.lineStart).split(F).length):(this.pos=this.lineStart=0,this.curLine=1),this.type=V.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=this.initialContext(),this.exprAllowed=!0,this.inModule="module"===t.sourceType,this.strict=this.inModule||this.strictDirective(this.pos),this.potentialArrowAt=-1,this.inFunction=this.inGenerator=this.inAsync=!1,this.yieldPos=this.awaitPos=0,this.labels=[],0===this.pos&&t.allowHashBang&&"#!"===this.input.slice(0,2)&&this.skipLineComment(2),this.scopeStack=[],this.enterFunctionScope()};Q.prototype.isKeyword=function(t){return this.keywords.test(t)},Q.prototype.isReservedWord=function(t){return this.reservedWords.test(t)},Q.prototype.extend=function(t,e){this[t]=e(this[t])},Q.prototype.loadPlugins=function(t){var e=this;for(var s in t){var i=Y[s];if(!i)throw new Error("Plugin '"+s+"' not found");i(e,t[s])}},Q.prototype.parse=function(){var t=this.options.program||this.startNode();return this.nextToken(),this.parseTopLevel(t)};var H=Q.prototype,X=/^(?:'((?:\\.|[^'])*?)'|"((?:\\.|[^"])*?)"|;)/;H.strictDirective=function(t){for(var e=this;;){O.lastIndex=t,t+=O.exec(e.input)[0].length;var s=X.exec(e.input.slice(t));if(!s)return!1;if("use strict"==(s[1]||s[2]))return!0;t+=s[0].length}},H.eat=function(t){return this.type===t&&(this.next(),!0)},H.isContextual=function(t){return this.type===V.name&&this.value===t&&!this.containsEsc},H.eatContextual=function(t){return!!this.isContextual(t)&&(this.next(),!0)},H.expectContextual=function(t){this.eatContextual(t)||this.unexpected()},H.canInsertSemicolon=function(){return this.type===V.eof||this.type===V.braceR||F.test(this.input.slice(this.lastTokEnd,this.start))},H.insertSemicolon=function(){if(this.canInsertSemicolon())return this.options.onInsertedSemicolon&&this.options.onInsertedSemicolon(this.lastTokEnd,this.lastTokEndLoc),!0},H.semicolon=function(){this.eat(V.semi)||this.insertSemicolon()||this.unexpected()},H.afterTrailingComma=function(t,e){if(this.type==t)return this.options.onTrailingComma&&this.options.onTrailingComma(this.lastTokStart,this.lastTokStartLoc),e||this.next(),!0},H.expect=function(t){this.eat(t)||this.unexpected()},H.unexpected=function(t){this.raise(null!=t?t:this.start,"Unexpected token")},H.checkPatternErrors=function(t,e){if(t){t.trailingComma>-1&&this.raiseRecoverable(t.trailingComma,"Comma is not permitted after the rest element");var s=e?t.parenthesizedAssign:t.parenthesizedBind;s>-1&&this.raiseRecoverable(s,"Parenthesized pattern")}},H.checkExpressionErrors=function(t,e){if(!t)return!1;var s=t.shorthandAssign,i=t.doubleProto;if(!e)return s>=0||i>=0;s>=0&&this.raise(s,"Shorthand property assignments are valid only in destructuring patterns"),i>=0&&this.raiseRecoverable(i,"Redefinition of __proto__ property")},H.checkYieldAwaitInDefaultParams=function(){this.yieldPos&&(!this.awaitPos||this.yieldPos<this.awaitPos)&&this.raise(this.yieldPos,"Yield expression cannot be a default value"),this.awaitPos&&this.raise(this.awaitPos,"Await expression cannot be a default value")},H.isSimpleAssignTarget=function(t){return"ParenthesizedExpression"===t.type?this.isSimpleAssignTarget(t.expression):"Identifier"===t.type||"MemberExpression"===t.type};var $=Q.prototype;$.parseTopLevel=function(t){var e=this,s={};for(t.body||(t.body=[]);this.type!==V.eof;){var i=e.parseStatement(!0,!0,s);t.body.push(i)}return this.adaptDirectivePrologue(t.body),this.next(),this.options.ecmaVersion>=6&&(t.sourceType=this.options.sourceType),this.finishNode(t,"Program")};var K={kind:"loop"},J={kind:"switch"};$.isLet=function(){if(this.options.ecmaVersion<6||!this.isContextual("let"))return!1;O.lastIndex=this.pos;var t=O.exec(this.input),e=this.pos+t[0].length,r=this.input.charCodeAt(e);if(91===r||123==r)return!0;if(s(r,!0)){for(var n=e+1;i(this.input.charCodeAt(n),!0);)++n;var a=this.input.slice(e,n);if(!E.test(a))return!0}return!1},$.isAsyncFunction=function(){if(this.options.ecmaVersion<8||!this.isContextual("async"))return!1;O.lastIndex=this.pos;var t=O.exec(this.input),e=this.pos+t[0].length;return!(F.test(this.input.slice(this.pos,e))||"function"!==this.input.slice(e,e+8)||e+8!=this.input.length&&i(this.input.charAt(e+8)))},$.parseStatement=function(t,e,s){var i,r=this.type,n=this.startNode();switch(this.isLet()&&(r=V._var,i="let"),r){case V._break:case V._continue:return this.parseBreakContinueStatement(n,r.keyword);case V._debugger:return this.parseDebuggerStatement(n);case V._do:return this.parseDoStatement(n);case V._for:return this.parseForStatement(n);case V._function:return!t&&this.options.ecmaVersion>=6&&this.unexpected(),this.parseFunctionStatement(n,!1);case V._class:return t||this.unexpected(),this.parseClass(n,!0);case V._if:return this.parseIfStatement(n);case V._return:return this.parseReturnStatement(n);case V._switch:return this.parseSwitchStatement(n);case V._throw:return this.parseThrowStatement(n);case V._try:return this.parseTryStatement(n);case V._const:case V._var:return i=i||this.value,t||"var"==i||this.unexpected(),this.parseVarStatement(n,i);case V._while:return this.parseWhileStatement(n);case V._with:return this.parseWithStatement(n);case V.braceL:return this.parseBlock();case V.semi:return this.parseEmptyStatement(n);case V._export:case V._import:return this.options.allowImportExportEverywhere||(e||this.raise(this.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.start,"'import' and 'export' may appear only with 'sourceType: module'")),r===V._import?this.parseImport(n):this.parseExport(n,s);default:if(this.isAsyncFunction())return t||this.unexpected(),this.next(),this.parseFunctionStatement(n,!0);var a=this.value,o=this.parseExpression();return r===V.name&&"Identifier"===o.type&&this.eat(V.colon)?this.parseLabeledStatement(n,a,o):this.parseExpressionStatement(n,o)}},$.parseBreakContinueStatement=function(t,e){var s=this,i="break"==e;this.next(),this.eat(V.semi)||this.insertSemicolon()?t.label=null:this.type!==V.name?this.unexpected():(t.label=this.parseIdent(),this.semicolon());for(var r=0;r<this.labels.length;++r){var n=s.labels[r];if(null==t.label||n.name===t.label.name){if(null!=n.kind&&(i||"loop"===n.kind))break;if(t.label&&i)break}}return r===this.labels.length&&this.raise(t.start,"Unsyntactic "+e),this.finishNode(t,i?"BreakStatement":"ContinueStatement")},$.parseDebuggerStatement=function(t){return this.next(),this.semicolon(),this.finishNode(t,"DebuggerStatement")},$.parseDoStatement=function(t){return this.next(),this.labels.push(K),t.body=this.parseStatement(!1),this.labels.pop(),this.expect(V._while),t.test=this.parseParenExpression(),this.options.ecmaVersion>=6?this.eat(V.semi):this.semicolon(),this.finishNode(t,"DoWhileStatement")},$.parseForStatement=function(t){this.next();var e=this.options.ecmaVersion>=9&&this.inAsync&&this.eatContextual("await")?this.lastTokStart:-1;if(this.labels.push(K),this.enterLexicalScope(),this.expect(V.parenL),this.type===V.semi)return e>-1&&this.unexpected(e),this.parseFor(t,null);var s=this.isLet();if(this.type===V._var||this.type===V._const||s){var i=this.startNode(),r=s?"let":this.value;return this.next(),(this.parseVar(i,!0,r),this.finishNode(i,"VariableDeclaration"),!(this.type===V._in||this.options.ecmaVersion>=6&&this.isContextual("of"))||1!==i.declarations.length||"var"!==r&&i.declarations[0].init)?(e>-1&&this.unexpected(e),this.parseFor(t,i)):(this.options.ecmaVersion>=9&&(this.type===V._in?e>-1&&this.unexpected(e):t.await=e>-1),this.parseForIn(t,i))}var n=new u,a=this.parseExpression(!0,n);return this.type===V._in||this.options.ecmaVersion>=6&&this.isContextual("of")?(this.options.ecmaVersion>=9&&(this.type===V._in?e>-1&&this.unexpected(e):t.await=e>-1),this.toAssignable(a,!1,n),this.checkLVal(a),this.parseForIn(t,a)):(this.checkExpressionErrors(n,!0),e>-1&&this.unexpected(e),this.parseFor(t,a))},$.parseFunctionStatement=function(t,e){return this.next(),this.parseFunction(t,!0,!1,e)},$.parseIfStatement=function(t){return this.next(),t.test=this.parseParenExpression(),t.consequent=this.parseStatement(!this.strict&&this.type==V._function),t.alternate=this.eat(V._else)?this.parseStatement(!this.strict&&this.type==V._function):null,this.finishNode(t,"IfStatement")},$.parseReturnStatement=function(t){return this.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.start,"'return' outside of function"),this.next(),this.eat(V.semi)||this.insertSemicolon()?t.argument=null:(t.argument=this.parseExpression(),this.semicolon()),this.finishNode(t,"ReturnStatement")},$.parseSwitchStatement=function(t){var e=this;this.next(),t.discriminant=this.parseParenExpression(),t.cases=[],this.expect(V.braceL),this.labels.push(J),this.enterLexicalScope();for(var s,i=!1;this.type!=V.braceR;)if(e.type===V._case||e.type===V._default){var r=e.type===V._case;s&&e.finishNode(s,"SwitchCase"),t.cases.push(s=e.startNode()),s.consequent=[],e.next(),r?s.test=e.parseExpression():(i&&e.raiseRecoverable(e.lastTokStart,"Multiple default clauses"),i=!0,s.test=null),e.expect(V.colon)}else s||e.unexpected(),s.consequent.push(e.parseStatement(!0));return this.exitLexicalScope(),s&&this.finishNode(s,"SwitchCase"),this.next(),this.labels.pop(),this.finishNode(t,"SwitchStatement")},$.parseThrowStatement=function(t){return this.next(),F.test(this.input.slice(this.lastTokEnd,this.start))&&this.raise(this.lastTokEnd,"Illegal newline after throw"),t.argument=this.parseExpression(),this.semicolon(),this.finishNode(t,"ThrowStatement")};var Z=[];$.parseTryStatement=function(t){if(this.next(),t.block=this.parseBlock(),t.handler=null,this.type===V._catch){var e=this.startNode();this.next(),this.expect(V.parenL),e.param=this.parseBindingAtom(),this.enterLexicalScope(),this.checkLVal(e.param,"let"),this.expect(V.parenR),e.body=this.parseBlock(!1),this.exitLexicalScope(),t.handler=this.finishNode(e,"CatchClause")}return t.finalizer=this.eat(V._finally)?this.parseBlock():null,t.handler||t.finalizer||this.raise(t.start,"Missing catch or finally clause"),this.finishNode(t,"TryStatement")},$.parseVarStatement=function(t,e){return this.next(),this.parseVar(t,!1,e),this.semicolon(),this.finishNode(t,"VariableDeclaration")},$.parseWhileStatement=function(t){return this.next(),t.test=this.parseParenExpression(),this.labels.push(K),t.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(t,"WhileStatement")},$.parseWithStatement=function(t){return this.strict&&this.raise(this.start,"'with' in strict mode"),this.next(),t.object=this.parseParenExpression(),t.body=this.parseStatement(!1),this.finishNode(t,"WithStatement")},$.parseEmptyStatement=function(t){return this.next(),this.finishNode(t,"EmptyStatement")},$.parseLabeledStatement=function(t,e,s){for(var i=this,r=0,n=i.labels;r<n.length;r+=1){n[r].name===e&&i.raise(s.start,"Label '"+e+"' is already declared")}for(var a=this.type.isLoop?"loop":this.type===V._switch?"switch":null,o=this.labels.length-1;o>=0;o--){var h=i.labels[o];if(h.statementStart!=t.start)break;h.statementStart=i.start,h.kind=a}return this.labels.push({name:e,kind:a,statementStart:this.start}),t.body=this.parseStatement(!0),("ClassDeclaration"==t.body.type||"VariableDeclaration"==t.body.type&&"var"!=t.body.kind||"FunctionDeclaration"==t.body.type&&(this.strict||t.body.generator))&&this.raiseRecoverable(t.body.start,"Invalid labeled declaration"),this.labels.pop(),t.label=s,this.finishNode(t,"LabeledStatement")},$.parseExpressionStatement=function(t,e){return t.expression=e,this.semicolon(),this.finishNode(t,"ExpressionStatement")},$.parseBlock=function(t){var e=this;void 0===t&&(t=!0);var s=this.startNode();for(s.body=[],this.expect(V.braceL),t&&this.enterLexicalScope();!this.eat(V.braceR);){var i=e.parseStatement(!0);s.body.push(i)}return t&&this.exitLexicalScope(),this.finishNode(s,"BlockStatement")},$.parseFor=function(t,e){return t.init=e,this.expect(V.semi),t.test=this.type===V.semi?null:this.parseExpression(),this.expect(V.semi),t.update=this.type===V.parenR?null:this.parseExpression(),this.expect(V.parenR),this.exitLexicalScope(),t.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(t,"ForStatement")},$.parseForIn=function(t,e){var s=this.type===V._in?"ForInStatement":"ForOfStatement";return this.next(),"ForInStatement"==s&&("AssignmentPattern"===e.type||"VariableDeclaration"===e.type&&null!=e.declarations[0].init&&(this.strict||"Identifier"!==e.declarations[0].id.type))&&this.raise(e.start,"Invalid assignment in for-in loop head"),t.left=e,t.right="ForInStatement"==s?this.parseExpression():this.parseMaybeAssign(),this.expect(V.parenR),this.exitLexicalScope(),t.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(t,s)},$.parseVar=function(t,e,s){var i=this;for(t.declarations=[],t.kind=s;;){var r=i.startNode();if(i.parseVarId(r,s),i.eat(V.eq)?r.init=i.parseMaybeAssign(e):"const"!==s||i.type===V._in||i.options.ecmaVersion>=6&&i.isContextual("of")?"Identifier"==r.id.type||e&&(i.type===V._in||i.isContextual("of"))?r.init=null:i.raise(i.lastTokEnd,"Complex binding patterns require an initialization value"):i.unexpected(),t.declarations.push(i.finishNode(r,"VariableDeclarator")),!i.eat(V.comma))break}return t},$.parseVarId=function(t,e){t.id=this.parseBindingAtom(e),this.checkLVal(t.id,e,!1)},$.parseFunction=function(t,e,s,i){this.initFunction(t),(this.options.ecmaVersion>=9||this.options.ecmaVersion>=6&&!i)&&(t.generator=this.eat(V.star)),this.options.ecmaVersion>=8&&(t.async=!!i),e&&(t.id="nullableID"===e&&this.type!=V.name?null:this.parseIdent(),t.id&&this.checkLVal(t.id,"var"));var r=this.inGenerator,n=this.inAsync,a=this.yieldPos,o=this.awaitPos,h=this.inFunction;return this.inGenerator=t.generator,this.inAsync=t.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,this.enterFunctionScope(),e||(t.id=this.type==V.name?this.parseIdent():null),this.parseFunctionParams(t),this.parseFunctionBody(t,s),this.inGenerator=r,this.inAsync=n,this.yieldPos=a,this.awaitPos=o,this.inFunction=h,this.finishNode(t,e?"FunctionDeclaration":"FunctionExpression")},$.parseFunctionParams=function(t){this.expect(V.parenL),t.params=this.parseBindingList(V.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams()},$.parseClass=function(t,e){var s=this;this.next(),this.parseClassId(t,e),this.parseClassSuper(t);var i=this.startNode(),r=!1;for(i.body=[],this.expect(V.braceL);!this.eat(V.braceR);){var n=s.parseClassMember(i);n&&"MethodDefinition"===n.type&&"constructor"===n.kind&&(r&&s.raise(n.start,"Duplicate constructor in the same class"),r=!0)}return t.body=this.finishNode(i,"ClassBody"),this.finishNode(t,e?"ClassDeclaration":"ClassExpression")},$.parseClassMember=function(t){var e=this;if(this.eat(V.semi))return null;var s=this.startNode(),i=function(t,i){void 0===i&&(i=!1);var r=e.start,n=e.startLoc;return!!e.eatContextual(t)&&(!(e.type===V.parenL||i&&e.canInsertSemicolon())||(s.key&&e.unexpected(),s.computed=!1,s.key=e.startNodeAt(r,n),s.key.name=t,e.finishNode(s.key,"Identifier"),!1))};s.kind="method",s.static=i("static");var r=this.eat(V.star),n=!1;r||(this.options.ecmaVersion>=8&&i("async",!0)?(n=!0,r=this.options.ecmaVersion>=9&&this.eat(V.star)):i("get")?s.kind="get":i("set")&&(s.kind="set")),s.key||this.parsePropertyName(s);var a=s.key;return s.computed||s.static||!("Identifier"===a.type&&"constructor"===a.name||"Literal"===a.type&&"constructor"===a.value)?s.static&&"Identifier"===a.type&&"prototype"===a.name&&this.raise(a.start,"Classes may not have a static property named prototype"):("method"!==s.kind&&this.raise(a.start,"Constructor can't have get/set modifier"),r&&this.raise(a.start,"Constructor can't be a generator"),n&&this.raise(a.start,"Constructor can't be an async method"),s.kind="constructor"),this.parseClassMethod(t,s,r,n),"get"===s.kind&&0!==s.value.params.length&&this.raiseRecoverable(s.value.start,"getter should have no params"),"set"===s.kind&&1!==s.value.params.length&&this.raiseRecoverable(s.value.start,"setter should have exactly one param"),"set"===s.kind&&"RestElement"===s.value.params[0].type&&this.raiseRecoverable(s.value.params[0].start,"Setter cannot use rest params"),s},$.parseClassMethod=function(t,e,s,i){e.value=this.parseMethod(s,i),t.body.push(this.finishNode(e,"MethodDefinition"))},$.parseClassId=function(t,e){t.id=this.type===V.name?this.parseIdent():!0===e?this.unexpected():null},$.parseClassSuper=function(t){t.superClass=this.eat(V._extends)?this.parseExprSubscripts():null},$.parseExport=function(t,e){var s=this;if(this.next(),this.eat(V.star))return this.expectContextual("from"),this.type!==V.string&&this.unexpected(),t.source=this.parseExprAtom(),this.semicolon(),this.finishNode(t,"ExportAllDeclaration");if(this.eat(V._default)){this.checkExport(e,"default",this.lastTokStart);var i;if(this.type===V._function||(i=this.isAsyncFunction())){var r=this.startNode();this.next(),i&&this.next(),t.declaration=this.parseFunction(r,"nullableID",!1,i)}else if(this.type===V._class){var n=this.startNode();t.declaration=this.parseClass(n,"nullableID")}else t.declaration=this.parseMaybeAssign(),this.semicolon();return this.finishNode(t,"ExportDefaultDeclaration")}if(this.shouldParseExportStatement())t.declaration=this.parseStatement(!0),"VariableDeclaration"===t.declaration.type?this.checkVariableExport(e,t.declaration.declarations):this.checkExport(e,t.declaration.id.name,t.declaration.id.start),t.specifiers=[],t.source=null;else{if(t.declaration=null,t.specifiers=this.parseExportSpecifiers(e),this.eatContextual("from"))this.type!==V.string&&this.unexpected(),t.source=this.parseExprAtom();else{for(var a=0,o=t.specifiers;a<o.length;a+=1){var h=o[a];s.checkUnreserved(h.local)}t.source=null}this.semicolon()}return this.finishNode(t,"ExportNamedDeclaration")},$.checkExport=function(t,e,s){t&&(o(t,e)&&this.raiseRecoverable(s,"Duplicate export '"+e+"'"),t[e]=!0)},$.checkPatternExport=function(t,e){var s=this,i=e.type;if("Identifier"==i)this.checkExport(t,e.name,e.start);else if("ObjectPattern"==i)for(var r=0,n=e.properties;r<n.length;r+=1){var a=n[r];s.checkPatternExport(t,a)}else if("ArrayPattern"==i)for(var o=0,h=e.elements;o<h.length;o+=1){var p=h[o];p&&s.checkPatternExport(t,p)}else"Property"==i?this.checkPatternExport(t,e.value):"AssignmentPattern"==i?this.checkPatternExport(t,e.left):"RestElement"==i?this.checkPatternExport(t,e.argument):"ParenthesizedExpression"==i&&this.checkPatternExport(t,e.expression)},$.checkVariableExport=function(t,e){var s=this;if(t)for(var i=0,r=e;i<r.length;i+=1){var n=r[i];s.checkPatternExport(t,n.id)}},$.shouldParseExportStatement=function(){return"var"===this.type.keyword||"const"===this.type.keyword||"class"===this.type.keyword||"function"===this.type.keyword||this.isLet()||this.isAsyncFunction()},$.parseExportSpecifiers=function(t){var e=this,s=[],i=!0;for(this.expect(V.braceL);!this.eat(V.braceR);){if(i)i=!1;else if(e.expect(V.comma),e.afterTrailingComma(V.braceR))break;var r=e.startNode();r.local=e.parseIdent(!0),r.exported=e.eatContextual("as")?e.parseIdent(!0):r.local,e.checkExport(t,r.exported.name,r.exported.start),s.push(e.finishNode(r,"ExportSpecifier"))}return s},$.parseImport=function(t){return this.next(),this.type===V.string?(t.specifiers=Z,t.source=this.parseExprAtom()):(t.specifiers=this.parseImportSpecifiers(),this.expectContextual("from"),t.source=this.type===V.string?this.parseExprAtom():this.unexpected()),this.semicolon(),this.finishNode(t,"ImportDeclaration")},$.parseImportSpecifiers=function(){var t=this,e=[],s=!0;if(this.type===V.name){var i=this.startNode();if(i.local=this.parseIdent(),this.checkLVal(i.local,"let"),e.push(this.finishNode(i,"ImportDefaultSpecifier")),!this.eat(V.comma))return e}if(this.type===V.star){var r=this.startNode();return this.next(),this.expectContextual("as"),r.local=this.parseIdent(),this.checkLVal(r.local,"let"),e.push(this.finishNode(r,"ImportNamespaceSpecifier")),e}for(this.expect(V.braceL);!this.eat(V.braceR);){if(s)s=!1;else if(t.expect(V.comma),t.afterTrailingComma(V.braceR))break;var n=t.startNode();n.imported=t.parseIdent(!0),t.eatContextual("as")?n.local=t.parseIdent():(t.checkUnreserved(n.imported),n.local=n.imported),t.checkLVal(n.local,"let"),e.push(t.finishNode(n,"ImportSpecifier"))}return e},$.adaptDirectivePrologue=function(t){for(var e=0;e<t.length&&this.isDirectiveCandidate(t[e]);++e)t[e].directive=t[e].expression.raw.slice(1,-1)},$.isDirectiveCandidate=function(t){return"ExpressionStatement"===t.type&&"Literal"===t.expression.type&&"string"==typeof t.expression.value&&('"'===this.input[t.start]||"'"===this.input[t.start])};var tt=Q.prototype;tt.toAssignable=function(t,e,s){var i=this;if(this.options.ecmaVersion>=6&&t)switch(t.type){case"Identifier":this.inAsync&&"await"===t.name&&this.raise(t.start,"Can not use 'await' as identifier inside an async function");break;case"ObjectPattern":case"ArrayPattern":case"RestElement":break;case"ObjectExpression":t.type="ObjectPattern",s&&this.checkPatternErrors(s,!0);for(var r=0,n=t.properties;r<n.length;r+=1){var a=n[r];i.toAssignable(a,e),"RestElement"!==a.type||"ArrayPattern"!==a.argument.type&&"ObjectPattern"!==a.argument.type||i.raise(a.argument.start,"Unexpected token")}break;case"Property":"init"!==t.kind&&this.raise(t.key.start,"Object pattern can't contain getter or setter"),this.toAssignable(t.value,e);break;case"ArrayExpression":t.type="ArrayPattern",s&&this.checkPatternErrors(s,!0),this.toAssignableList(t.elements,e);break;case"SpreadElement":t.type="RestElement",this.toAssignable(t.argument,e),"AssignmentPattern"===t.argument.type&&this.raise(t.argument.start,"Rest elements cannot have a default value");break;case"AssignmentExpression":"="!==t.operator&&this.raise(t.left.end,"Only '=' operator can be used for specifying default value."),t.type="AssignmentPattern",delete t.operator,this.toAssignable(t.left,e);case"AssignmentPattern":break;case"ParenthesizedExpression":this.toAssignable(t.expression,e);break;case"MemberExpression":if(!e)break;default:this.raise(t.start,"Assigning to rvalue")}else s&&this.checkPatternErrors(s,!0);return t},tt.toAssignableList=function(t,e){for(var s=this,i=t.length,r=0;r<i;r++){var n=t[r];n&&s.toAssignable(n,e)}if(i){var a=t[i-1];6===this.options.ecmaVersion&&e&&a&&"RestElement"===a.type&&"Identifier"!==a.argument.type&&this.unexpected(a.argument.start)}return t},tt.parseSpread=function(t){
var e=this.startNode();return this.next(),e.argument=this.parseMaybeAssign(!1,t),this.finishNode(e,"SpreadElement")},tt.parseRestBinding=function(){var t=this.startNode();return this.next(),6===this.options.ecmaVersion&&this.type!==V.name&&this.unexpected(),t.argument=this.parseBindingAtom(),this.finishNode(t,"RestElement")},tt.parseBindingAtom=function(){if(this.options.ecmaVersion>=6)switch(this.type){case V.bracketL:var t=this.startNode();return this.next(),t.elements=this.parseBindingList(V.bracketR,!0,!0),this.finishNode(t,"ArrayPattern");case V.braceL:return this.parseObj(!0)}return this.parseIdent()},tt.parseBindingList=function(t,e,s){for(var i=this,r=[],n=!0;!this.eat(t);)if(n?n=!1:i.expect(V.comma),e&&i.type===V.comma)r.push(null);else{if(s&&i.afterTrailingComma(t))break;if(i.type===V.ellipsis){var a=i.parseRestBinding();i.parseBindingListItem(a),r.push(a),i.type===V.comma&&i.raise(i.start,"Comma is not permitted after the rest element"),i.expect(t);break}var o=i.parseMaybeDefault(i.start,i.startLoc);i.parseBindingListItem(o),r.push(o)}return r},tt.parseBindingListItem=function(t){return t},tt.parseMaybeDefault=function(t,e,s){if(s=s||this.parseBindingAtom(),this.options.ecmaVersion<6||!this.eat(V.eq))return s;var i=this.startNodeAt(t,e);return i.left=s,i.right=this.parseMaybeAssign(),this.finishNode(i,"AssignmentPattern")},tt.checkLVal=function(t,e,s){var i=this;switch(t.type){case"Identifier":this.strict&&this.reservedWordsStrictBind.test(t.name)&&this.raiseRecoverable(t.start,(e?"Binding ":"Assigning to ")+t.name+" in strict mode"),s&&(o(s,t.name)&&this.raiseRecoverable(t.start,"Argument name clash"),s[t.name]=!0),e&&"none"!==e&&(("var"===e&&!this.canDeclareVarName(t.name)||"var"!==e&&!this.canDeclareLexicalName(t.name))&&this.raiseRecoverable(t.start,"Identifier '"+t.name+"' has already been declared"),"var"===e?this.declareVarName(t.name):this.declareLexicalName(t.name));break;case"MemberExpression":e&&this.raiseRecoverable(t.start,"Binding member expression");break;case"ObjectPattern":for(var r=0,n=t.properties;r<n.length;r+=1){var a=n[r];i.checkLVal(a,e,s)}break;case"Property":this.checkLVal(t.value,e,s);break;case"ArrayPattern":for(var h=0,p=t.elements;h<p.length;h+=1){var c=p[h];c&&i.checkLVal(c,e,s)}break;case"AssignmentPattern":this.checkLVal(t.left,e,s);break;case"RestElement":this.checkLVal(t.argument,e,s);break;case"ParenthesizedExpression":this.checkLVal(t.expression,e,s);break;default:this.raise(t.start,(e?"Binding":"Assigning to")+" rvalue")}};var et=Q.prototype;et.checkPropClash=function(t,e,s){if(!(this.options.ecmaVersion>=9&&"SpreadElement"===t.type||this.options.ecmaVersion>=6&&(t.computed||t.method||t.shorthand))){var i,r=t.key;switch(r.type){case"Identifier":i=r.name;break;case"Literal":i=String(r.value);break;default:return}var n=t.kind;if(this.options.ecmaVersion>=6)return void("__proto__"===i&&"init"===n&&(e.proto&&(s&&s.doubleProto<0?s.doubleProto=r.start:this.raiseRecoverable(r.start,"Redefinition of __proto__ property")),e.proto=!0));i="$"+i;var a=e[i];if(a){var o;o="init"===n?this.strict&&a.init||a.get||a.set:a.init||a[n],o&&this.raiseRecoverable(r.start,"Redefinition of property")}else a=e[i]={init:!1,get:!1,set:!1};a[n]=!0}},et.parseExpression=function(t,e){var s=this,i=this.start,r=this.startLoc,n=this.parseMaybeAssign(t,e);if(this.type===V.comma){var a=this.startNodeAt(i,r);for(a.expressions=[n];this.eat(V.comma);)a.expressions.push(s.parseMaybeAssign(t,e));return this.finishNode(a,"SequenceExpression")}return n},et.parseMaybeAssign=function(t,e,s){if(this.inGenerator&&this.isContextual("yield"))return this.parseYield();var i=!1,r=-1,n=-1;e?(r=e.parenthesizedAssign,n=e.trailingComma,e.parenthesizedAssign=e.trailingComma=-1):(e=new u,i=!0);var a=this.start,o=this.startLoc;this.type!=V.parenL&&this.type!=V.name||(this.potentialArrowAt=this.start);var h=this.parseMaybeConditional(t,e);if(s&&(h=s.call(this,h,a,o)),this.type.isAssign){var p=this.startNodeAt(a,o);return p.operator=this.value,p.left=this.type===V.eq?this.toAssignable(h,!1,e):h,i||u.call(e),e.shorthandAssign=-1,this.checkLVal(h),this.next(),p.right=this.parseMaybeAssign(t),this.finishNode(p,"AssignmentExpression")}return i&&this.checkExpressionErrors(e,!0),r>-1&&(e.parenthesizedAssign=r),n>-1&&(e.trailingComma=n),h},et.parseMaybeConditional=function(t,e){var s=this.start,i=this.startLoc,r=this.parseExprOps(t,e);if(this.checkExpressionErrors(e))return r;if(this.eat(V.question)){var n=this.startNodeAt(s,i);return n.test=r,n.consequent=this.parseMaybeAssign(),this.expect(V.colon),n.alternate=this.parseMaybeAssign(t),this.finishNode(n,"ConditionalExpression")}return r},et.parseExprOps=function(t,e){var s=this.start,i=this.startLoc,r=this.parseMaybeUnary(e,!1);return this.checkExpressionErrors(e)?r:r.start==s&&"ArrowFunctionExpression"===r.type?r:this.parseExprOp(r,s,i,-1,t)},et.parseExprOp=function(t,e,s,i,r){var n=this.type.binop;if(null!=n&&(!r||this.type!==V._in)&&n>i){var a=this.type===V.logicalOR||this.type===V.logicalAND,o=this.value;this.next();var h=this.start,p=this.startLoc,c=this.parseExprOp(this.parseMaybeUnary(null,!1),h,p,n,r),l=this.buildBinary(e,s,t,c,o,a);return this.parseExprOp(l,e,s,i,r)}return t},et.buildBinary=function(t,e,s,i,r,n){var a=this.startNodeAt(t,e);return a.left=s,a.operator=r,a.right=i,this.finishNode(a,n?"LogicalExpression":"BinaryExpression")},et.parseMaybeUnary=function(t,e){var s,i=this,r=this.start,n=this.startLoc;if(this.inAsync&&this.isContextual("await"))s=this.parseAwait(),e=!0;else if(this.type.prefix){var a=this.startNode(),o=this.type===V.incDec;a.operator=this.value,a.prefix=!0,this.next(),a.argument=this.parseMaybeUnary(null,!0),this.checkExpressionErrors(t,!0),o?this.checkLVal(a.argument):this.strict&&"delete"===a.operator&&"Identifier"===a.argument.type?this.raiseRecoverable(a.start,"Deleting local variable in strict mode"):e=!0,s=this.finishNode(a,o?"UpdateExpression":"UnaryExpression")}else{if(s=this.parseExprSubscripts(t),this.checkExpressionErrors(t))return s;for(;this.type.postfix&&!this.canInsertSemicolon();){var h=i.startNodeAt(r,n);h.operator=i.value,h.prefix=!1,h.argument=s,i.checkLVal(s),i.next(),s=i.finishNode(h,"UpdateExpression")}}return!e&&this.eat(V.starstar)?this.buildBinary(r,n,s,this.parseMaybeUnary(null,!1),"**",!1):s},et.parseExprSubscripts=function(t){var e=this.start,s=this.startLoc,i=this.parseExprAtom(t),r="ArrowFunctionExpression"===i.type&&")"!==this.input.slice(this.lastTokStart,this.lastTokEnd);if(this.checkExpressionErrors(t)||r)return i;var n=this.parseSubscripts(i,e,s);return t&&"MemberExpression"===n.type&&(t.parenthesizedAssign>=n.start&&(t.parenthesizedAssign=-1),t.parenthesizedBind>=n.start&&(t.parenthesizedBind=-1)),n},et.parseSubscripts=function(t,e,s,i){for(var r=this,n=this.options.ecmaVersion>=8&&"Identifier"===t.type&&"async"===t.name&&this.lastTokEnd==t.end&&!this.canInsertSemicolon()&&"async"===this.input.slice(t.start,t.end),a=void 0;;)if((a=r.eat(V.bracketL))||r.eat(V.dot)){var o=r.startNodeAt(e,s);o.object=t,o.property=a?r.parseExpression():r.parseIdent(!0),o.computed=!!a,a&&r.expect(V.bracketR),t=r.finishNode(o,"MemberExpression")}else if(!i&&r.eat(V.parenL)){var h=new u,p=r.yieldPos,c=r.awaitPos;r.yieldPos=0,r.awaitPos=0;var l=r.parseExprList(V.parenR,r.options.ecmaVersion>=8,!1,h);if(n&&!r.canInsertSemicolon()&&r.eat(V.arrow))return r.checkPatternErrors(h,!1),r.checkYieldAwaitInDefaultParams(),r.yieldPos=p,r.awaitPos=c,r.parseArrowExpression(r.startNodeAt(e,s),l,!0);r.checkExpressionErrors(h,!0),r.yieldPos=p||r.yieldPos,r.awaitPos=c||r.awaitPos;var d=r.startNodeAt(e,s);d.callee=t,d.arguments=l,t=r.finishNode(d,"CallExpression")}else{if(r.type!==V.backQuote)return t;var f=r.startNodeAt(e,s);f.tag=t,f.quasi=r.parseTemplate({isTagged:!0}),t=r.finishNode(f,"TaggedTemplateExpression")}},et.parseExprAtom=function(t){var e,s=this.potentialArrowAt==this.start;switch(this.type){case V._super:return this.inFunction||this.raise(this.start,"'super' outside of function or class"),e=this.startNode(),this.next(),this.type!==V.dot&&this.type!==V.bracketL&&this.type!==V.parenL&&this.unexpected(),this.finishNode(e,"Super");case V._this:return e=this.startNode(),this.next(),this.finishNode(e,"ThisExpression");case V.name:var i=this.start,r=this.startLoc,n=this.containsEsc,a=this.parseIdent(this.type!==V.name);if(this.options.ecmaVersion>=8&&!n&&"async"===a.name&&!this.canInsertSemicolon()&&this.eat(V._function))return this.parseFunction(this.startNodeAt(i,r),!1,!1,!0);if(s&&!this.canInsertSemicolon()){if(this.eat(V.arrow))return this.parseArrowExpression(this.startNodeAt(i,r),[a],!1);if(this.options.ecmaVersion>=8&&"async"===a.name&&this.type===V.name&&!n)return a=this.parseIdent(),!this.canInsertSemicolon()&&this.eat(V.arrow)||this.unexpected(),this.parseArrowExpression(this.startNodeAt(i,r),[a],!0)}return a;case V.regexp:var o=this.value;return e=this.parseLiteral(o.value),e.regex={pattern:o.pattern,flags:o.flags},e;case V.num:case V.string:return this.parseLiteral(this.value);case V._null:case V._true:case V._false:return e=this.startNode(),e.value=this.type===V._null?null:this.type===V._true,e.raw=this.type.keyword,this.next(),this.finishNode(e,"Literal");case V.parenL:var h=this.start,p=this.parseParenAndDistinguishExpression(s);return t&&(t.parenthesizedAssign<0&&!this.isSimpleAssignTarget(p)&&(t.parenthesizedAssign=h),t.parenthesizedBind<0&&(t.parenthesizedBind=h)),p;case V.bracketL:return e=this.startNode(),this.next(),e.elements=this.parseExprList(V.bracketR,!0,!0,t),this.finishNode(e,"ArrayExpression");case V.braceL:return this.parseObj(!1,t);case V._function:return e=this.startNode(),this.next(),this.parseFunction(e,!1);case V._class:return this.parseClass(this.startNode(),!1);case V._new:return this.parseNew();case V.backQuote:return this.parseTemplate();default:this.unexpected()}},et.parseLiteral=function(t){var e=this.startNode();return e.value=t,e.raw=this.input.slice(this.start,this.end),this.next(),this.finishNode(e,"Literal")},et.parseParenExpression=function(){this.expect(V.parenL);var t=this.parseExpression();return this.expect(V.parenR),t},et.parseParenAndDistinguishExpression=function(t){var e,s=this,i=this.start,r=this.startLoc,n=this.options.ecmaVersion>=8;if(this.options.ecmaVersion>=6){this.next();var a,o=this.start,h=this.startLoc,p=[],c=!0,l=!1,d=new u,f=this.yieldPos,m=this.awaitPos;for(this.yieldPos=0,this.awaitPos=0;this.type!==V.parenR;){if(c?c=!1:s.expect(V.comma),n&&s.afterTrailingComma(V.parenR,!0)){l=!0;break}if(s.type===V.ellipsis){a=s.start,p.push(s.parseParenItem(s.parseRestBinding())),s.type===V.comma&&s.raise(s.start,"Comma is not permitted after the rest element");break}p.push(s.parseMaybeAssign(!1,d,s.parseParenItem))}var x=this.start,y=this.startLoc;if(this.expect(V.parenR),t&&!this.canInsertSemicolon()&&this.eat(V.arrow))return this.checkPatternErrors(d,!1),this.checkYieldAwaitInDefaultParams(),this.yieldPos=f,this.awaitPos=m,this.parseParenArrowList(i,r,p);p.length&&!l||this.unexpected(this.lastTokStart),a&&this.unexpected(a),this.checkExpressionErrors(d,!0),this.yieldPos=f||this.yieldPos,this.awaitPos=m||this.awaitPos,p.length>1?(e=this.startNodeAt(o,h),e.expressions=p,this.finishNodeAt(e,"SequenceExpression",x,y)):e=p[0]}else e=this.parseParenExpression();if(this.options.preserveParens){var v=this.startNodeAt(i,r);return v.expression=e,this.finishNode(v,"ParenthesizedExpression")}return e},et.parseParenItem=function(t){return t},et.parseParenArrowList=function(t,e,s){return this.parseArrowExpression(this.startNodeAt(t,e),s)};var st=[];et.parseNew=function(){var t=this.startNode(),e=this.parseIdent(!0);if(this.options.ecmaVersion>=6&&this.eat(V.dot)){t.meta=e;var s=this.containsEsc;return t.property=this.parseIdent(!0),("target"!==t.property.name||s)&&this.raiseRecoverable(t.property.start,"The only valid meta property for new is new.target"),this.inFunction||this.raiseRecoverable(t.start,"new.target can only be used in functions"),this.finishNode(t,"MetaProperty")}var i=this.start,r=this.startLoc;return t.callee=this.parseSubscripts(this.parseExprAtom(),i,r,!0),this.eat(V.parenL)?t.arguments=this.parseExprList(V.parenR,this.options.ecmaVersion>=8,!1):t.arguments=st,this.finishNode(t,"NewExpression")},et.parseTemplateElement=function(t){var e=t.isTagged,s=this.startNode();return this.type===V.invalidTemplate?(e||this.raiseRecoverable(this.start,"Bad escape sequence in untagged template literal"),s.value={raw:this.value,cooked:null}):s.value={raw:this.input.slice(this.start,this.end).replace(/\r\n?/g,"\n"),cooked:this.value},this.next(),s.tail=this.type===V.backQuote,this.finishNode(s,"TemplateElement")},et.parseTemplate=function(t){var e=this;void 0===t&&(t={});var s=t.isTagged;void 0===s&&(s=!1);var i=this.startNode();this.next(),i.expressions=[];var r=this.parseTemplateElement({isTagged:s});for(i.quasis=[r];!r.tail;)e.expect(V.dollarBraceL),i.expressions.push(e.parseExpression()),e.expect(V.braceR),i.quasis.push(r=e.parseTemplateElement({isTagged:s}));return this.next(),this.finishNode(i,"TemplateLiteral")},et.isAsyncProp=function(t){return!t.computed&&"Identifier"===t.key.type&&"async"===t.key.name&&(this.type===V.name||this.type===V.num||this.type===V.string||this.type===V.bracketL||this.type.keyword||this.options.ecmaVersion>=9&&this.type===V.star)&&!F.test(this.input.slice(this.lastTokEnd,this.start))},et.parseObj=function(t,e){var s=this,i=this.startNode(),r=!0,n={};for(i.properties=[],this.next();!this.eat(V.braceR);){if(r)r=!1;else if(s.expect(V.comma),s.afterTrailingComma(V.braceR))break;var a=s.parseProperty(t,e);t||s.checkPropClash(a,n,e),i.properties.push(a)}return this.finishNode(i,t?"ObjectPattern":"ObjectExpression")},et.parseProperty=function(t,e){var s,i,r,n,a=this.startNode();if(this.options.ecmaVersion>=9&&this.eat(V.ellipsis))return t?(a.argument=this.parseIdent(!1),this.type===V.comma&&this.raise(this.start,"Comma is not permitted after the rest element"),this.finishNode(a,"RestElement")):(this.type===V.parenL&&e&&(e.parenthesizedAssign<0&&(e.parenthesizedAssign=this.start),e.parenthesizedBind<0&&(e.parenthesizedBind=this.start)),a.argument=this.parseMaybeAssign(!1,e),this.type===V.comma&&e&&e.trailingComma<0&&(e.trailingComma=this.start),this.finishNode(a,"SpreadElement"));this.options.ecmaVersion>=6&&(a.method=!1,a.shorthand=!1,(t||e)&&(r=this.start,n=this.startLoc),t||(s=this.eat(V.star)));var o=this.containsEsc;return this.parsePropertyName(a),!t&&!o&&this.options.ecmaVersion>=8&&!s&&this.isAsyncProp(a)?(i=!0,s=this.options.ecmaVersion>=9&&this.eat(V.star),this.parsePropertyName(a,e)):i=!1,this.parsePropertyValue(a,t,s,i,r,n,e,o),this.finishNode(a,"Property")},et.parsePropertyValue=function(t,e,s,i,r,n,a,o){if((s||i)&&this.type===V.colon&&this.unexpected(),this.eat(V.colon))t.value=e?this.parseMaybeDefault(this.start,this.startLoc):this.parseMaybeAssign(!1,a),t.kind="init";else if(this.options.ecmaVersion>=6&&this.type===V.parenL)e&&this.unexpected(),t.kind="init",t.method=!0,t.value=this.parseMethod(s,i);else if(e||o||!(this.options.ecmaVersion>=5)||t.computed||"Identifier"!==t.key.type||"get"!==t.key.name&&"set"!==t.key.name||this.type==V.comma||this.type==V.braceR)this.options.ecmaVersion>=6&&!t.computed&&"Identifier"===t.key.type?(this.checkUnreserved(t.key),t.kind="init",e?t.value=this.parseMaybeDefault(r,n,t.key):this.type===V.eq&&a?(a.shorthandAssign<0&&(a.shorthandAssign=this.start),t.value=this.parseMaybeDefault(r,n,t.key)):t.value=t.key,t.shorthand=!0):this.unexpected();else{(s||i)&&this.unexpected(),t.kind=t.key.name,this.parsePropertyName(t),t.value=this.parseMethod(!1);var h="get"===t.kind?0:1;if(t.value.params.length!==h){var p=t.value.start;"get"===t.kind?this.raiseRecoverable(p,"getter should have no params"):this.raiseRecoverable(p,"setter should have exactly one param")}else"set"===t.kind&&"RestElement"===t.value.params[0].type&&this.raiseRecoverable(t.value.params[0].start,"Setter cannot use rest params")}},et.parsePropertyName=function(t){if(this.options.ecmaVersion>=6){if(this.eat(V.bracketL))return t.computed=!0,t.key=this.parseMaybeAssign(),this.expect(V.bracketR),t.key;t.computed=!1}return t.key=this.type===V.num||this.type===V.string?this.parseExprAtom():this.parseIdent(!0)},et.initFunction=function(t){t.id=null,this.options.ecmaVersion>=6&&(t.generator=!1,t.expression=!1),this.options.ecmaVersion>=8&&(t.async=!1)},et.parseMethod=function(t,e){var s=this.startNode(),i=this.inGenerator,r=this.inAsync,n=this.yieldPos,a=this.awaitPos,o=this.inFunction;return this.initFunction(s),this.options.ecmaVersion>=6&&(s.generator=t),this.options.ecmaVersion>=8&&(s.async=!!e),this.inGenerator=s.generator,this.inAsync=s.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,this.enterFunctionScope(),this.expect(V.parenL),s.params=this.parseBindingList(V.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams(),this.parseFunctionBody(s,!1),this.inGenerator=i,this.inAsync=r,this.yieldPos=n,this.awaitPos=a,this.inFunction=o,this.finishNode(s,"FunctionExpression")},et.parseArrowExpression=function(t,e,s){var i=this.inGenerator,r=this.inAsync,n=this.yieldPos,a=this.awaitPos,o=this.inFunction;return this.enterFunctionScope(),this.initFunction(t),this.options.ecmaVersion>=8&&(t.async=!!s),this.inGenerator=!1,this.inAsync=t.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,t.params=this.toAssignableList(e,!0),this.parseFunctionBody(t,!0),this.inGenerator=i,this.inAsync=r,this.yieldPos=n,this.awaitPos=a,this.inFunction=o,this.finishNode(t,"ArrowFunctionExpression")},et.parseFunctionBody=function(t,e){var s=e&&this.type!==V.braceL,i=this.strict,r=!1;if(s)t.body=this.parseMaybeAssign(),t.expression=!0,this.checkParams(t,!1);else{var n=this.options.ecmaVersion>=7&&!this.isSimpleParamList(t.params);i&&!n||(r=this.strictDirective(this.end))&&n&&this.raiseRecoverable(t.start,"Illegal 'use strict' directive in function with non-simple parameter list");var a=this.labels;this.labels=[],r&&(this.strict=!0),this.checkParams(t,!i&&!r&&!e&&this.isSimpleParamList(t.params)),t.body=this.parseBlock(!1),t.expression=!1,this.adaptDirectivePrologue(t.body.body),this.labels=a}this.exitFunctionScope(),this.strict&&t.id&&this.checkLVal(t.id,"none"),this.strict=i},et.isSimpleParamList=function(t){for(var e=0,s=t;e<s.length;e+=1){if("Identifier"!==s[e].type)return!1}return!0},et.checkParams=function(t,e){for(var s=this,i={},r=0,n=t.params;r<n.length;r+=1){var a=n[r];s.checkLVal(a,"var",e?null:i)}},et.parseExprList=function(t,e,s,i){for(var r=this,n=[],a=!0;!this.eat(t);){if(a)a=!1;else if(r.expect(V.comma),e&&r.afterTrailingComma(t))break;var o=void 0;s&&r.type===V.comma?o=null:r.type===V.ellipsis?(o=r.parseSpread(i),i&&r.type===V.comma&&i.trailingComma<0&&(i.trailingComma=r.start)):o=r.parseMaybeAssign(!1,i),n.push(o)}return n},et.checkUnreserved=function(t){var e=t.start,s=t.end,i=t.name;if(this.inGenerator&&"yield"===i&&this.raiseRecoverable(e,"Can not use 'yield' as identifier inside a generator"),this.inAsync&&"await"===i&&this.raiseRecoverable(e,"Can not use 'await' as identifier inside an async function"),this.isKeyword(i)&&this.raise(e,"Unexpected keyword '"+i+"'"),!(this.options.ecmaVersion<6&&-1!=this.input.slice(e,s).indexOf("\\"))){(this.strict?this.reservedWordsStrict:this.reservedWords).test(i)&&(this.inAsync||"await"!==i||this.raiseRecoverable(e,"Can not use keyword 'await' outside an async function"),this.raiseRecoverable(e,"The keyword '"+i+"' is reserved"))}},et.parseIdent=function(t,e){var s=this.startNode();return t&&"never"==this.options.allowReserved&&(t=!1),this.type===V.name?s.name=this.value:this.type.keyword?(s.name=this.type.keyword,"class"!==s.name&&"function"!==s.name||this.lastTokEnd===this.lastTokStart+1&&46===this.input.charCodeAt(this.lastTokStart)||this.context.pop()):this.unexpected(),this.next(),this.finishNode(s,"Identifier"),t||this.checkUnreserved(s),s},et.parseYield=function(){this.yieldPos||(this.yieldPos=this.start);var t=this.startNode();return this.next(),this.type==V.semi||this.canInsertSemicolon()||this.type!=V.star&&!this.type.startsExpr?(t.delegate=!1,t.argument=null):(t.delegate=this.eat(V.star),t.argument=this.parseMaybeAssign()),this.finishNode(t,"YieldExpression")},et.parseAwait=function(){this.awaitPos||(this.awaitPos=this.start);var t=this.startNode();return this.next(),t.argument=this.parseMaybeUnary(null,!0),this.finishNode(t,"AwaitExpression")};var it=Q.prototype;it.raise=function(t,e){var s=h(this.input,t);e+=" ("+s.line+":"+s.column+")";var i=new SyntaxError(e);throw i.pos=t,i.loc=s,i.raisedAt=this.pos,i},it.raiseRecoverable=it.raise,it.curPosition=function(){if(this.options.locations)return new j(this.curLine,this.pos-this.lineStart)};var rt=Q.prototype,nt=Object.assign||function(t){for(var e=[],s=arguments.length-1;s-- >0;)e[s]=arguments[s+1];for(var i=0,r=e;i<r.length;i+=1){var n=r[i];for(var a in n)o(n,a)&&(t[a]=n[a])}return t};rt.enterFunctionScope=function(){this.scopeStack.push({var:{},lexical:{},childVar:{},parentLexical:{}})},rt.exitFunctionScope=function(){this.scopeStack.pop()},rt.enterLexicalScope=function(){var t=this.scopeStack[this.scopeStack.length-1],e={var:{},lexical:{},childVar:{},parentLexical:{}};this.scopeStack.push(e),nt(e.parentLexical,t.lexical,t.parentLexical)},rt.exitLexicalScope=function(){var t=this.scopeStack.pop(),e=this.scopeStack[this.scopeStack.length-1];nt(e.childVar,t.var,t.childVar)},rt.canDeclareVarName=function(t){var e=this.scopeStack[this.scopeStack.length-1];return!o(e.lexical,t)&&!o(e.parentLexical,t)},rt.canDeclareLexicalName=function(t){var e=this.scopeStack[this.scopeStack.length-1];return!o(e.lexical,t)&&!o(e.var,t)&&!o(e.childVar,t)},rt.declareVarName=function(t){this.scopeStack[this.scopeStack.length-1].var[t]=!0},rt.declareLexicalName=function(t){this.scopeStack[this.scopeStack.length-1].lexical[t]=!0};var at=function(t,e,s){this.type="",this.start=e,this.end=0,t.options.locations&&(this.loc=new W(t,s)),t.options.directSourceFile&&(this.sourceFile=t.options.directSourceFile),t.options.ranges&&(this.range=[e,0])},ot=Q.prototype;ot.startNode=function(){return new at(this,this.start,this.startLoc)},ot.startNodeAt=function(t,e){return new at(this,t,e)},ot.finishNode=function(t,e){return d.call(this,t,e,this.lastTokEnd,this.lastTokEndLoc)},ot.finishNodeAt=function(t,e,s,i){return d.call(this,t,e,s,i)};var ht=function(t,e,s,i,r){this.token=t,this.isExpr=!!e,this.preserveSpace=!!s,this.override=i,this.generator=!!r},pt={b_stat:new ht("{",!1),b_expr:new ht("{",!0),b_tmpl:new ht("${",!1),p_stat:new ht("(",!1),p_expr:new ht("(",!0),q_tmpl:new ht("`",!0,!0,function(t){return t.tryReadTemplateToken()}),f_stat:new ht("function",!1),f_expr:new ht("function",!0),f_expr_gen:new ht("function",!0,!1,null,!0),f_gen:new ht("function",!1,!1,null,!0)},ct=Q.prototype;ct.initialContext=function(){return[pt.b_stat]},ct.braceIsBlock=function(t){var e=this.curContext();return e===pt.f_expr||e===pt.f_stat||(t!==V.colon||e!==pt.b_stat&&e!==pt.b_expr?t===V._return||t==V.name&&this.exprAllowed?F.test(this.input.slice(this.lastTokEnd,this.start)):t===V._else||t===V.semi||t===V.eof||t===V.parenR||t==V.arrow||(t==V.braceL?e===pt.b_stat:t!=V._var&&t!=V.name&&!this.exprAllowed):!e.isExpr)},ct.inGeneratorContext=function(){for(var t=this,e=this.context.length-1;e>=1;e--){var s=t.context[e];if("function"===s.token)return s.generator}return!1},ct.updateContext=function(t){var e,s=this.type;s.keyword&&t==V.dot?this.exprAllowed=!1:(e=s.updateContext)?e.call(this,t):this.exprAllowed=s.beforeExpr},V.parenR.updateContext=V.braceR.updateContext=function(){if(1==this.context.length)return void(this.exprAllowed=!0);var t=this.context.pop();t===pt.b_stat&&"function"===this.curContext().token&&(t=this.context.pop()),this.exprAllowed=!t.isExpr},V.braceL.updateContext=function(t){this.context.push(this.braceIsBlock(t)?pt.b_stat:pt.b_expr),this.exprAllowed=!0},V.dollarBraceL.updateContext=function(){this.context.push(pt.b_tmpl),this.exprAllowed=!0},V.parenL.updateContext=function(t){var e=t===V._if||t===V._for||t===V._with||t===V._while;this.context.push(e?pt.p_stat:pt.p_expr),this.exprAllowed=!0},V.incDec.updateContext=function(){},V._function.updateContext=V._class.updateContext=function(t){t.beforeExpr&&t!==V.semi&&t!==V._else&&(t!==V.colon&&t!==V.braceL||this.curContext()!==pt.b_stat)?this.context.push(pt.f_expr):this.context.push(pt.f_stat),this.exprAllowed=!1},V.backQuote.updateContext=function(){this.curContext()===pt.q_tmpl?this.context.pop():this.context.push(pt.q_tmpl),this.exprAllowed=!1},V.star.updateContext=function(t){if(t==V._function){var e=this.context.length-1;this.context[e]===pt.f_expr?this.context[e]=pt.f_expr_gen:this.context[e]=pt.f_gen}this.exprAllowed=!0},V.name.updateContext=function(t){var e=!1;this.options.ecmaVersion>=6&&("of"==this.value&&!this.exprAllowed||"yield"==this.value&&this.inGeneratorContext())&&(e=!0),this.exprAllowed=e};var lt=function(t){this.type=t.type,this.value=t.value,this.start=t.start,this.end=t.end,t.options.locations&&(this.loc=new W(t,t.startLoc,t.endLoc)),t.options.ranges&&(this.range=[t.start,t.end])},ut=Q.prototype,dt="object"==typeof Packages&&"[object JavaPackage]"==Object.prototype.toString.call(Packages);ut.next=function(){this.options.onToken&&this.options.onToken(new lt(this)),this.lastTokEnd=this.end,this.lastTokStart=this.start,this.lastTokEndLoc=this.endLoc,this.lastTokStartLoc=this.startLoc,this.nextToken()},ut.getToken=function(){return this.next(),new lt(this)},"undefined"!=typeof Symbol&&(ut[Symbol.iterator]=function(){var t=this;return{next:function(){var e=t.getToken();return{done:e.type===V.eof,value:e}}}}),ut.curContext=function(){return this.context[this.context.length-1]},ut.nextToken=function(){var t=this.curContext();return t&&t.preserveSpace||this.skipSpace(),this.start=this.pos,this.options.locations&&(this.startLoc=this.curPosition()),this.pos>=this.input.length?this.finishToken(V.eof):t.override?t.override(this):void this.readToken(this.fullCharCodeAtPos())},ut.readToken=function(t){return s(t,this.options.ecmaVersion>=6)||92===t?this.readWord():this.getTokenFromCode(t)},ut.fullCharCodeAtPos=function(){var t=this.input.charCodeAt(this.pos);return t<=55295||t>=57344?t:(t<<10)+this.input.charCodeAt(this.pos+1)-56613888},ut.skipBlockComment=function(){var t=this,e=this.options.onComment&&this.curPosition(),s=this.pos,i=this.input.indexOf("*/",this.pos+=2);if(-1===i&&this.raise(this.pos-2,"Unterminated comment"),this.pos=i+2,this.options.locations){D.lastIndex=s;for(var r;(r=D.exec(this.input))&&r.index<this.pos;)++t.curLine,t.lineStart=r.index+r[0].length}this.options.onComment&&this.options.onComment(!0,this.input.slice(s+2,i),s,this.pos,e,this.curPosition())},ut.skipLineComment=function(t){for(var e=this,s=this.pos,i=this.options.onComment&&this.curPosition(),r=this.input.charCodeAt(this.pos+=t);this.pos<this.input.length&&!a(r);)r=e.input.charCodeAt(++e.pos);this.options.onComment&&this.options.onComment(!1,this.input.slice(s+t,this.pos),s,this.pos,i,this.curPosition())},ut.skipSpace=function(){var t=this;t:for(;this.pos<this.input.length;){var e=t.input.charCodeAt(t.pos);switch(e){case 32:case 160:++t.pos;break;case 13:10===t.input.charCodeAt(t.pos+1)&&++t.pos;case 10:case 8232:case 8233:++t.pos,t.options.locations&&(++t.curLine,t.lineStart=t.pos);break;case 47:switch(t.input.charCodeAt(t.pos+1)){case 42:t.skipBlockComment();break;case 47:t.skipLineComment(2);break;default:break t}break;default:if(!(e>8&&e<14||e>=5760&&B.test(String.fromCharCode(e))))break t;++t.pos}}},ut.finishToken=function(t,e){this.end=this.pos,this.options.locations&&(this.endLoc=this.curPosition());var s=this.type;this.type=t,this.value=e,this.updateContext(s)},ut.readToken_dot=function(){var t=this.input.charCodeAt(this.pos+1);if(t>=48&&t<=57)return this.readNumber(!0);var e=this.input.charCodeAt(this.pos+2);return this.options.ecmaVersion>=6&&46===t&&46===e?(this.pos+=3,this.finishToken(V.ellipsis)):(++this.pos,this.finishToken(V.dot))},ut.readToken_slash=function(){var t=this.input.charCodeAt(this.pos+1);return this.exprAllowed?(++this.pos,this.readRegexp()):61===t?this.finishOp(V.assign,2):this.finishOp(V.slash,1)},ut.readToken_mult_modulo_exp=function(t){var e=this.input.charCodeAt(this.pos+1),s=1,i=42===t?V.star:V.modulo;return this.options.ecmaVersion>=7&&42==t&&42===e&&(++s,i=V.starstar,e=this.input.charCodeAt(this.pos+2)),61===e?this.finishOp(V.assign,s+1):this.finishOp(i,s)},ut.readToken_pipe_amp=function(t){var e=this.input.charCodeAt(this.pos+1);return e===t?this.finishOp(124===t?V.logicalOR:V.logicalAND,2):61===e?this.finishOp(V.assign,2):this.finishOp(124===t?V.bitwiseOR:V.bitwiseAND,1)},ut.readToken_caret=function(){return 61===this.input.charCodeAt(this.pos+1)?this.finishOp(V.assign,2):this.finishOp(V.bitwiseXOR,1)},ut.readToken_plus_min=function(t){var e=this.input.charCodeAt(this.pos+1);return e===t?45!=e||this.inModule||62!=this.input.charCodeAt(this.pos+2)||0!==this.lastTokEnd&&!F.test(this.input.slice(this.lastTokEnd,this.pos))?this.finishOp(V.incDec,2):(this.skipLineComment(3),this.skipSpace(),this.nextToken()):61===e?this.finishOp(V.assign,2):this.finishOp(V.plusMin,1)},ut.readToken_lt_gt=function(t){var e=this.input.charCodeAt(this.pos+1),s=1;return e===t?(s=62===t&&62===this.input.charCodeAt(this.pos+2)?3:2,61===this.input.charCodeAt(this.pos+s)?this.finishOp(V.assign,s+1):this.finishOp(V.bitShift,s)):33!=e||60!=t||this.inModule||45!=this.input.charCodeAt(this.pos+2)||45!=this.input.charCodeAt(this.pos+3)?(61===e&&(s=2),this.finishOp(V.relational,s)):(this.skipLineComment(4),this.skipSpace(),this.nextToken())},ut.readToken_eq_excl=function(t){var e=this.input.charCodeAt(this.pos+1);return 61===e?this.finishOp(V.equality,61===this.input.charCodeAt(this.pos+2)?3:2):61===t&&62===e&&this.options.ecmaVersion>=6?(this.pos+=2,this.finishToken(V.arrow)):this.finishOp(61===t?V.eq:V.prefix,1)},ut.getTokenFromCode=function(t){switch(t){case 46:return this.readToken_dot();case 40:return++this.pos,this.finishToken(V.parenL);case 41:return++this.pos,this.finishToken(V.parenR);case 59:return++this.pos,this.finishToken(V.semi);case 44:return++this.pos,this.finishToken(V.comma);case 91:return++this.pos,this.finishToken(V.bracketL);case 93:return++this.pos,this.finishToken(V.bracketR);case 123:return++this.pos,this.finishToken(V.braceL);case 125:return++this.pos,this.finishToken(V.braceR);case 58:return++this.pos,this.finishToken(V.colon);case 63:return++this.pos,this.finishToken(V.question);case 96:if(this.options.ecmaVersion<6)break;return++this.pos,this.finishToken(V.backQuote);case 48:var e=this.input.charCodeAt(this.pos+1);if(120===e||88===e)return this.readRadixNumber(16);if(this.options.ecmaVersion>=6){if(111===e||79===e)return this.readRadixNumber(8);if(98===e||66===e)return this.readRadixNumber(2)}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(t);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo_exp(t);case 124:case 38:return this.readToken_pipe_amp(t);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(t);case 60:case 62:return this.readToken_lt_gt(t);case 61:case 33:return this.readToken_eq_excl(t);case 126:return this.finishOp(V.prefix,1)}this.raise(this.pos,"Unexpected character '"+m(t)+"'")},ut.finishOp=function(t,e){var s=this.input.slice(this.pos,this.pos+e);return this.pos+=e,this.finishToken(t,s)};var ft=!!f("","u");ut.readRegexp=function(){for(var t,e,s=this,i=this.pos;;){s.pos>=s.input.length&&s.raise(i,"Unterminated regular expression");var r=s.input.charAt(s.pos);if(F.test(r)&&s.raise(i,"Unterminated regular expression"),t)t=!1;else{if("["===r)e=!0;else if("]"===r&&e)e=!1;else if("/"===r&&!e)break;t="\\"===r}++s.pos}var n=this.input.slice(i,this.pos);++this.pos;var a=this.pos,o=this.readWord1()
;this.containsEsc&&this.unexpected(a);var h=n,p="";if(o){var c="gim";this.options.ecmaVersion>=6&&(c+="uy"),this.options.ecmaVersion>=9&&(c+="s");for(var l=0;l<o.length;l++){var u=o.charAt(l);-1==c.indexOf(u)&&s.raise(i,"Invalid regular expression flag"),o.indexOf(u,l+1)>-1&&s.raise(i,"Duplicate regular expression flag")}o.indexOf("u")>=0&&(ft?p="u":(h=h.replace(/\\u\{([0-9a-fA-F]+)\}/g,function(t,e,r){return e=Number("0x"+e),e>1114111&&s.raise(i+r+3,"Code point out of bounds"),"x"}),h=h.replace(/\\u([a-fA-F0-9]{4})|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"),p=p.replace("u","")))}var d=null;return dt||(f(h,p,i,this),d=f(n,o)),this.finishToken(V.regexp,{pattern:n,flags:o,value:d})},ut.readInt=function(t,e){for(var s=this,i=this.pos,r=0,n=0,a=null==e?1/0:e;n<a;++n){var o=s.input.charCodeAt(s.pos),h=void 0;if((h=o>=97?o-97+10:o>=65?o-65+10:o>=48&&o<=57?o-48:1/0)>=t)break;++s.pos,r=r*t+h}return this.pos===i||null!=e&&this.pos-i!==e?null:r},ut.readRadixNumber=function(t){this.pos+=2;var e=this.readInt(t);return null==e&&this.raise(this.start+2,"Expected number in radix "+t),s(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number"),this.finishToken(V.num,e)},ut.readNumber=function(t){var e=this.pos;t||null!==this.readInt(10)||this.raise(e,"Invalid number");var i=this.pos-e>=2&&48===this.input.charCodeAt(e);i&&this.strict&&this.raise(e,"Invalid number"),i&&/[89]/.test(this.input.slice(e,this.pos))&&(i=!1);var r=this.input.charCodeAt(this.pos);46!==r||i||(++this.pos,this.readInt(10),r=this.input.charCodeAt(this.pos)),69!==r&&101!==r||i||(r=this.input.charCodeAt(++this.pos),43!==r&&45!==r||++this.pos,null===this.readInt(10)&&this.raise(e,"Invalid number")),s(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number");var n=this.input.slice(e,this.pos),a=i?parseInt(n,8):parseFloat(n);return this.finishToken(V.num,a)},ut.readCodePoint=function(){var t,e=this.input.charCodeAt(this.pos);if(123===e){this.options.ecmaVersion<6&&this.unexpected();var s=++this.pos;t=this.readHexChar(this.input.indexOf("}",this.pos)-this.pos),++this.pos,t>1114111&&this.invalidStringToken(s,"Code point out of bounds")}else t=this.readHexChar(4);return t},ut.readString=function(t){for(var e=this,s="",i=++this.pos;;){e.pos>=e.input.length&&e.raise(e.start,"Unterminated string constant");var r=e.input.charCodeAt(e.pos);if(r===t)break;92===r?(s+=e.input.slice(i,e.pos),s+=e.readEscapedChar(!1),i=e.pos):(a(r)&&e.raise(e.start,"Unterminated string constant"),++e.pos)}return s+=this.input.slice(i,this.pos++),this.finishToken(V.string,s)};var mt={};ut.tryReadTemplateToken=function(){this.inTemplateElement=!0;try{this.readTmplToken()}catch(t){if(t!==mt)throw t;this.readInvalidTemplateToken()}this.inTemplateElement=!1},ut.invalidStringToken=function(t,e){if(this.inTemplateElement&&this.options.ecmaVersion>=9)throw mt;this.raise(t,e)},ut.readTmplToken=function(){for(var t=this,e="",s=this.pos;;){t.pos>=t.input.length&&t.raise(t.start,"Unterminated template");var i=t.input.charCodeAt(t.pos);if(96===i||36===i&&123===t.input.charCodeAt(t.pos+1))return t.pos!==t.start||t.type!==V.template&&t.type!==V.invalidTemplate?(e+=t.input.slice(s,t.pos),t.finishToken(V.template,e)):36===i?(t.pos+=2,t.finishToken(V.dollarBraceL)):(++t.pos,t.finishToken(V.backQuote));if(92===i)e+=t.input.slice(s,t.pos),e+=t.readEscapedChar(!0),s=t.pos;else if(a(i)){switch(e+=t.input.slice(s,t.pos),++t.pos,i){case 13:10===t.input.charCodeAt(t.pos)&&++t.pos;case 10:e+="\n";break;default:e+=String.fromCharCode(i)}t.options.locations&&(++t.curLine,t.lineStart=t.pos),s=t.pos}else++t.pos}},ut.readInvalidTemplateToken=function(){for(var t=this;this.pos<this.input.length;this.pos++)switch(t.input[t.pos]){case"\\":++t.pos;break;case"$":if("{"!==t.input[t.pos+1])break;case"`":return t.finishToken(V.invalidTemplate,t.input.slice(t.start,t.pos))}this.raise(this.start,"Unterminated template")},ut.readEscapedChar=function(t){var e=this.input.charCodeAt(++this.pos);switch(++this.pos,e){case 110:return"\n";case 114:return"\r";case 120:return String.fromCharCode(this.readHexChar(2));case 117:return m(this.readCodePoint());case 116:return"\t";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:10===this.input.charCodeAt(this.pos)&&++this.pos;case 10:return this.options.locations&&(this.lineStart=this.pos,++this.curLine),"";default:if(e>=48&&e<=55){var s=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],i=parseInt(s,8);return i>255&&(s=s.slice(0,-1),i=parseInt(s,8)),this.pos+=s.length-1,e=this.input.charCodeAt(this.pos),"0"===s&&56!=e&&57!=e||!this.strict&&!t||this.invalidStringToken(this.pos-1-s.length,"Octal literal in strict mode"),String.fromCharCode(i)}return String.fromCharCode(e)}},ut.readHexChar=function(t){var e=this.pos,s=this.readInt(16,t);return null===s&&this.invalidStringToken(e,"Bad character escape sequence"),s},ut.readWord1=function(){var t=this;this.containsEsc=!1;for(var e="",r=!0,n=this.pos,a=this.options.ecmaVersion>=6;this.pos<this.input.length;){var o=t.fullCharCodeAtPos();if(i(o,a))t.pos+=o<=65535?1:2;else{if(92!==o)break;t.containsEsc=!0,e+=t.input.slice(n,t.pos);var h=t.pos;117!=t.input.charCodeAt(++t.pos)&&t.invalidStringToken(t.pos,"Expecting Unicode escape sequence \\uXXXX"),++t.pos;var p=t.readCodePoint();(r?s:i)(p,a)||t.invalidStringToken(h,"Invalid Unicode escape"),e+=m(p),n=t.pos}r=!1}return e+this.input.slice(n,this.pos)},ut.readWord=function(){var t=this.readWord1(),e=V.name;return this.keywords.test(t)&&(this.containsEsc&&this.raiseRecoverable(this.start,"Escape sequence in keyword "+t),e=R[t]),this.finishToken(e,t)};t.version="5.4.1",t.parse=x,t.parseExpressionAt=y,t.tokenizer=v,t.addLooseExports=g,t.Parser=Q,t.plugins=Y,t.defaultOptions=G,t.Position=j,t.SourceLocation=W,t.getLineInfo=h,t.Node=at,t.TokenType=T,t.tokTypes=V,t.keywordTypes=R,t.TokContext=ht,t.tokContexts=pt,t.isIdentifierChar=i,t.isIdentifierStart=s,t.Token=lt,t.isNewLine=a,t.lineBreak=F,t.lineBreakG=D,t.nonASCIIwhitespace=B,Object.defineProperty(t,"__esModule",{value:!0})});
},{}],46:[function(require,module,exports){
"use strict";function placeHoldersCount(o){var r=o.length;if(r%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===o[r-2]?2:"="===o[r-1]?1:0}function byteLength(o){return 3*o.length/4-placeHoldersCount(o)}function toByteArray(o){var r,e,t,u,n,p=o.length;u=placeHoldersCount(o),n=new Arr(3*p/4-u),e=u>0?p-4:p;var a=0;for(r=0;r<e;r+=4)t=revLookup[o.charCodeAt(r)]<<18|revLookup[o.charCodeAt(r+1)]<<12|revLookup[o.charCodeAt(r+2)]<<6|revLookup[o.charCodeAt(r+3)],n[a++]=t>>16&255,n[a++]=t>>8&255,n[a++]=255&t;return 2===u?(t=revLookup[o.charCodeAt(r)]<<2|revLookup[o.charCodeAt(r+1)]>>4,n[a++]=255&t):1===u&&(t=revLookup[o.charCodeAt(r)]<<10|revLookup[o.charCodeAt(r+1)]<<4|revLookup[o.charCodeAt(r+2)]>>2,n[a++]=t>>8&255,n[a++]=255&t),n}function tripletToBase64(o){return lookup[o>>18&63]+lookup[o>>12&63]+lookup[o>>6&63]+lookup[63&o]}function encodeChunk(o,r,e){for(var t,u=[],n=r;n<e;n+=3)t=(o[n]<<16&16711680)+(o[n+1]<<8&65280)+(255&o[n+2]),u.push(tripletToBase64(t));return u.join("")}function fromByteArray(o){for(var r,e=o.length,t=e%3,u="",n=[],p=0,a=e-t;p<a;p+=16383)n.push(encodeChunk(o,p,p+16383>a?a:p+16383));return 1===t?(r=o[e-1],u+=lookup[r>>2],u+=lookup[r<<4&63],u+="=="):2===t&&(r=(o[e-2]<<8)+o[e-1],u+=lookup[r>>10],u+=lookup[r>>4&63],u+=lookup[r<<2&63],u+="="),n.push(u),n.join("")}exports.byteLength=byteLength,exports.toByteArray=toByteArray,exports.fromByteArray=fromByteArray;for(var lookup=[],revLookup=[],Arr="undefined"!=typeof Uint8Array?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,len=code.length;i<len;++i)lookup[i]=code[i],revLookup[code.charCodeAt(i)]=i;revLookup["-".charCodeAt(0)]=62,revLookup["_".charCodeAt(0)]=63;
},{}],47:[function(require,module,exports){
},{}],48:[function(require,module,exports){
(function (global){
"use strict";function typedArraySupport(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}function kMaxLength(){return Buffer.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function createBuffer(t,e){if(kMaxLength()<e)throw new RangeError("Invalid typed array length");return Buffer.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e),t.__proto__=Buffer.prototype):(null===t&&(t=new Buffer(e)),t.length=e),t}function Buffer(t,e,r){if(!(Buffer.TYPED_ARRAY_SUPPORT||this instanceof Buffer))return new Buffer(t,e,r);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return allocUnsafe(this,t)}return from(this,t,e,r)}function from(t,e,r,n){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?fromArrayBuffer(t,e,r,n):"string"==typeof e?fromString(t,e,r):fromObject(t,e)}function assertSize(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function alloc(t,e,r,n){return assertSize(e),e<=0?createBuffer(t,e):void 0!==r?"string"==typeof n?createBuffer(t,e).fill(r,n):createBuffer(t,e).fill(r):createBuffer(t,e)}function allocUnsafe(t,e){if(assertSize(e),t=createBuffer(t,e<0?0:0|checked(e)),!Buffer.TYPED_ARRAY_SUPPORT)for(var r=0;r<e;++r)t[r]=0;return t}function fromString(t,e,r){if("string"==typeof r&&""!==r||(r="utf8"),!Buffer.isEncoding(r))throw new TypeError('"encoding" must be a valid string encoding');var n=0|byteLength(e,r);t=createBuffer(t,n);var f=t.write(e,r);return f!==n&&(t=t.slice(0,f)),t}function fromArrayLike(t,e){var r=e.length<0?0:0|checked(e.length);t=createBuffer(t,r);for(var n=0;n<r;n+=1)t[n]=255&e[n];return t}function fromArrayBuffer(t,e,r,n){if(e.byteLength,r<0||e.byteLength<r)throw new RangeError("'offset' is out of bounds");if(e.byteLength<r+(n||0))throw new RangeError("'length' is out of bounds");return e=void 0===r&&void 0===n?new Uint8Array(e):void 0===n?new Uint8Array(e,r):new Uint8Array(e,r,n),Buffer.TYPED_ARRAY_SUPPORT?(t=e,t.__proto__=Buffer.prototype):t=fromArrayLike(t,e),t}function fromObject(t,e){if(Buffer.isBuffer(e)){var r=0|checked(e.length);return t=createBuffer(t,r),0===t.length?t:(e.copy(t,0,0,r),t)}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||isnan(e.length)?createBuffer(t,0):fromArrayLike(t,e);if("Buffer"===e.type&&isArray(e.data))return fromArrayLike(t,e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function checked(t){if(t>=kMaxLength())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+kMaxLength().toString(16)+" bytes");return 0|t}function SlowBuffer(t){return+t!=t&&(t=0),Buffer.alloc(+t)}function byteLength(t,e){if(Buffer.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return utf8ToBytes(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return base64ToBytes(t).length;default:if(n)return utf8ToBytes(t).length;e=(""+e).toLowerCase(),n=!0}}function slowToString(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,e>>>=0,r<=e)return"";for(t||(t="utf8");;)switch(t){case"hex":return hexSlice(this,e,r);case"utf8":case"utf-8":return utf8Slice(this,e,r);case"ascii":return asciiSlice(this,e,r);case"latin1":case"binary":return latin1Slice(this,e,r);case"base64":return base64Slice(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function swap(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function bidirectionalIndexOf(t,e,r,n,f){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=f?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(f)return-1;r=t.length-1}else if(r<0){if(!f)return-1;r=0}if("string"==typeof e&&(e=Buffer.from(e,n)),Buffer.isBuffer(e))return 0===e.length?-1:arrayIndexOf(t,e,r,n,f);if("number"==typeof e)return e&=255,Buffer.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?f?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):arrayIndexOf(t,[e],r,n,f);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(t,e,r,n,f){function i(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}var o=1,u=t.length,s=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;o=2,u/=2,s/=2,r/=2}var a;if(f){var h=-1;for(a=r;a<u;a++)if(i(t,a)===i(e,-1===h?0:a-h)){if(-1===h&&(h=a),a-h+1===s)return h*o}else-1!==h&&(a-=a-h),h=-1}else for(r+s>u&&(r=u-s),a=r;a>=0;a--){for(var c=!0,l=0;l<s;l++)if(i(t,a+l)!==i(e,l)){c=!1;break}if(c)return a}return-1}function hexWrite(t,e,r,n){r=Number(r)||0;var f=t.length-r;n?(n=Number(n))>f&&(n=f):n=f;var i=e.length;if(i%2!=0)throw new TypeError("Invalid hex string");n>i/2&&(n=i/2);for(var o=0;o<n;++o){var u=parseInt(e.substr(2*o,2),16);if(isNaN(u))return o;t[r+o]=u}return o}function utf8Write(t,e,r,n){return blitBuffer(utf8ToBytes(e,t.length-r),t,r,n)}function asciiWrite(t,e,r,n){return blitBuffer(asciiToBytes(e),t,r,n)}function latin1Write(t,e,r,n){return asciiWrite(t,e,r,n)}function base64Write(t,e,r,n){return blitBuffer(base64ToBytes(e),t,r,n)}function ucs2Write(t,e,r,n){return blitBuffer(utf16leToBytes(e,t.length-r),t,r,n)}function base64Slice(t,e,r){return 0===e&&r===t.length?base64.fromByteArray(t):base64.fromByteArray(t.slice(e,r))}function utf8Slice(t,e,r){r=Math.min(t.length,r);for(var n=[],f=e;f<r;){var i=t[f],o=null,u=i>239?4:i>223?3:i>191?2:1;if(f+u<=r){var s,a,h,c;switch(u){case 1:i<128&&(o=i);break;case 2:s=t[f+1],128==(192&s)&&(c=(31&i)<<6|63&s)>127&&(o=c);break;case 3:s=t[f+1],a=t[f+2],128==(192&s)&&128==(192&a)&&(c=(15&i)<<12|(63&s)<<6|63&a)>2047&&(c<55296||c>57343)&&(o=c);break;case 4:s=t[f+1],a=t[f+2],h=t[f+3],128==(192&s)&&128==(192&a)&&128==(192&h)&&(c=(15&i)<<18|(63&s)<<12|(63&a)<<6|63&h)>65535&&c<1114112&&(o=c)}}null===o?(o=65533,u=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),f+=u}return decodeCodePointsArray(n)}function decodeCodePointsArray(t){var e=t.length;if(e<=MAX_ARGUMENTS_LENGTH)return String.fromCharCode.apply(String,t);for(var r="",n=0;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=MAX_ARGUMENTS_LENGTH));return r}function asciiSlice(t,e,r){var n="";r=Math.min(t.length,r);for(var f=e;f<r;++f)n+=String.fromCharCode(127&t[f]);return n}function latin1Slice(t,e,r){var n="";r=Math.min(t.length,r);for(var f=e;f<r;++f)n+=String.fromCharCode(t[f]);return n}function hexSlice(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);for(var f="",i=e;i<r;++i)f+=toHex(t[i]);return f}function utf16leSlice(t,e,r){for(var n=t.slice(e,r),f="",i=0;i<n.length;i+=2)f+=String.fromCharCode(n[i]+256*n[i+1]);return f}function checkOffset(t,e,r){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>r)throw new RangeError("Trying to access beyond buffer length")}function checkInt(t,e,r,n,f,i){if(!Buffer.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>f||e<i)throw new RangeError('"value" argument is out of bounds');if(r+n>t.length)throw new RangeError("Index out of range")}function objectWriteUInt16(t,e,r,n){e<0&&(e=65535+e+1);for(var f=0,i=Math.min(t.length-r,2);f<i;++f)t[r+f]=(e&255<<8*(n?f:1-f))>>>8*(n?f:1-f)}function objectWriteUInt32(t,e,r,n){e<0&&(e=4294967295+e+1);for(var f=0,i=Math.min(t.length-r,4);f<i;++f)t[r+f]=e>>>8*(n?f:3-f)&255}function checkIEEE754(t,e,r,n,f,i){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function writeFloat(t,e,r,n,f){return f||checkIEEE754(t,e,r,4,3.4028234663852886e38,-3.4028234663852886e38),ieee754.write(t,e,r,n,23,4),r+4}function writeDouble(t,e,r,n,f){return f||checkIEEE754(t,e,r,8,1.7976931348623157e308,-1.7976931348623157e308),ieee754.write(t,e,r,n,52,8),r+8}function base64clean(t){if(t=stringtrim(t).replace(INVALID_BASE64_RE,""),t.length<2)return"";for(;t.length%4!=0;)t+="=";return t}function stringtrim(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function toHex(t){return t<16?"0"+t.toString(16):t.toString(16)}function utf8ToBytes(t,e){e=e||1/0;for(var r,n=t.length,f=null,i=[],o=0;o<n;++o){if((r=t.charCodeAt(o))>55295&&r<57344){if(!f){if(r>56319){(e-=3)>-1&&i.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&i.push(239,191,189);continue}f=r;continue}if(r<56320){(e-=3)>-1&&i.push(239,191,189),f=r;continue}r=65536+(f-55296<<10|r-56320)}else f&&(e-=3)>-1&&i.push(239,191,189);if(f=null,r<128){if((e-=1)<0)break;i.push(r)}else if(r<2048){if((e-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function asciiToBytes(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}function utf16leToBytes(t,e){for(var r,n,f,i=[],o=0;o<t.length&&!((e-=2)<0);++o)r=t.charCodeAt(o),n=r>>8,f=r%256,i.push(f),i.push(n);return i}function base64ToBytes(t){return base64.toByteArray(base64clean(t))}function blitBuffer(t,e,r,n){for(var f=0;f<n&&!(f+r>=e.length||f>=t.length);++f)e[f+r]=t[f];return f}function isnan(t){return t!==t}var base64=require("base64-js"),ieee754=require("ieee754"),isArray=require("isarray");exports.Buffer=Buffer,exports.SlowBuffer=SlowBuffer,exports.INSPECT_MAX_BYTES=50,Buffer.TYPED_ARRAY_SUPPORT=void 0!==global.TYPED_ARRAY_SUPPORT?global.TYPED_ARRAY_SUPPORT:typedArraySupport(),exports.kMaxLength=kMaxLength(),Buffer.poolSize=8192,Buffer._augment=function(t){return t.__proto__=Buffer.prototype,t},Buffer.from=function(t,e,r){return from(null,t,e,r)},Buffer.TYPED_ARRAY_SUPPORT&&(Buffer.prototype.__proto__=Uint8Array.prototype,Buffer.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&Buffer[Symbol.species]===Buffer&&Object.defineProperty(Buffer,Symbol.species,{value:null,configurable:!0})),Buffer.alloc=function(t,e,r){return alloc(null,t,e,r)},Buffer.allocUnsafe=function(t){return allocUnsafe(null,t)},Buffer.allocUnsafeSlow=function(t){return allocUnsafe(null,t)},Buffer.isBuffer=function(t){return!(null==t||!t._isBuffer)},Buffer.compare=function(t,e){if(!Buffer.isBuffer(t)||!Buffer.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var r=t.length,n=e.length,f=0,i=Math.min(r,n);f<i;++f)if(t[f]!==e[f]){r=t[f],n=e[f];break}return r<n?-1:n<r?1:0},Buffer.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Buffer.concat=function(t,e){if(!isArray(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return Buffer.alloc(0);var r;if(void 0===e)for(e=0,r=0;r<t.length;++r)e+=t[r].length;var n=Buffer.allocUnsafe(e),f=0;for(r=0;r<t.length;++r){var i=t[r];if(!Buffer.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(n,f),f+=i.length}return n},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)swap(this,e,e+1);return this},Buffer.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)swap(this,e,e+3),swap(this,e+1,e+2);return this},Buffer.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)swap(this,e,e+7),swap(this,e+1,e+6),swap(this,e+2,e+5),swap(this,e+3,e+4);return this},Buffer.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?utf8Slice(this,0,t):slowToString.apply(this,arguments)},Buffer.prototype.equals=function(t){if(!Buffer.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===Buffer.compare(this,t)},Buffer.prototype.inspect=function(){var t="",e=exports.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,e).match(/.{2}/g).join(" "),this.length>e&&(t+=" ... ")),"<Buffer "+t+">"},Buffer.prototype.compare=function(t,e,r,n,f){if(!Buffer.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===f&&(f=this.length),e<0||r>t.length||n<0||f>this.length)throw new RangeError("out of range index");if(n>=f&&e>=r)return 0;if(n>=f)return-1;if(e>=r)return 1;if(e>>>=0,r>>>=0,n>>>=0,f>>>=0,this===t)return 0;for(var i=f-n,o=r-e,u=Math.min(i,o),s=this.slice(n,f),a=t.slice(e,r),h=0;h<u;++h)if(s[h]!==a[h]){i=s[h],o=a[h];break}return i<o?-1:o<i?1:0},Buffer.prototype.includes=function(t,e,r){return-1!==this.indexOf(t,e,r)},Buffer.prototype.indexOf=function(t,e,r){return bidirectionalIndexOf(this,t,e,r,!0)},Buffer.prototype.lastIndexOf=function(t,e,r){return bidirectionalIndexOf(this,t,e,r,!1)},Buffer.prototype.write=function(t,e,r,n){if(void 0===e)n="utf8",r=this.length,e=0;else if(void 0===r&&"string"==typeof e)n=e,r=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(r)?(r|=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var f=this.length-e;if((void 0===r||r>f)&&(r=f),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return hexWrite(this,t,e,r);case"utf8":case"utf-8":return utf8Write(this,t,e,r);case"ascii":return asciiWrite(this,t,e,r);case"latin1":case"binary":return latin1Write(this,t,e,r);case"base64":return base64Write(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,t,e,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},Buffer.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var MAX_ARGUMENTS_LENGTH=4096;Buffer.prototype.slice=function(t,e){var r=this.length;t=~~t,e=void 0===e?r:~~e,t<0?(t+=r)<0&&(t=0):t>r&&(t=r),e<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t);var n;if(Buffer.TYPED_ARRAY_SUPPORT)n=this.subarray(t,e),n.__proto__=Buffer.prototype;else{var f=e-t;n=new Buffer(f,void 0);for(var i=0;i<f;++i)n[i]=this[i+t]}return n},Buffer.prototype.readUIntLE=function(t,e,r){t|=0,e|=0,r||checkOffset(t,e,this.length);for(var n=this[t],f=1,i=0;++i<e&&(f*=256);)n+=this[t+i]*f;return n},Buffer.prototype.readUIntBE=function(t,e,r){t|=0,e|=0,r||checkOffset(t,e,this.length);for(var n=this[t+--e],f=1;e>0&&(f*=256);)n+=this[t+--e]*f;return n},Buffer.prototype.readUInt8=function(t,e){return e||checkOffset(t,1,this.length),this[t]},Buffer.prototype.readUInt16LE=function(t,e){return e||checkOffset(t,2,this.length),this[t]|this[t+1]<<8},Buffer.prototype.readUInt16BE=function(t,e){return e||checkOffset(t,2,this.length),this[t]<<8|this[t+1]},Buffer.prototype.readUInt32LE=function(t,e){return e||checkOffset(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},Buffer.prototype.readUInt32BE=function(t,e){return e||checkOffset(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},Buffer.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||checkOffset(t,e,this.length);for(var n=this[t],f=1,i=0;++i<e&&(f*=256);)n+=this[t+i]*f;return f*=128,n>=f&&(n-=Math.pow(2,8*e)),n},Buffer.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||checkOffset(t,e,this.length);for(var n=e,f=1,i=this[t+--n];n>0&&(f*=256);)i+=this[t+--n]*f;return f*=128,i>=f&&(i-=Math.pow(2,8*e)),i},Buffer.prototype.readInt8=function(t,e){return e||checkOffset(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},Buffer.prototype.readInt16LE=function(t,e){e||checkOffset(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt16BE=function(t,e){e||checkOffset(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt32LE=function(t,e){return e||checkOffset(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},Buffer.prototype.readInt32BE=function(t,e){return e||checkOffset(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},Buffer.prototype.readFloatLE=function(t,e){return e||checkOffset(t,4,this.length),ieee754.read(this,t,!0,23,4)},Buffer.prototype.readFloatBE=function(t,e){return e||checkOffset(t,4,this.length),ieee754.read(this,t,!1,23,4)},Buffer.prototype.readDoubleLE=function(t,e){return e||checkOffset(t,8,this.length),ieee754.read(this,t,!0,52,8)},Buffer.prototype.readDoubleBE=function(t,e){return e||checkOffset(t,8,this.length),ieee754.read(this,t,!1,52,8)},Buffer.prototype.writeUIntLE=function(t,e,r,n){if(t=+t,e|=0,r|=0,!n){checkInt(this,t,e,r,Math.pow(2,8*r)-1,0)}var f=1,i=0;for(this[e]=255&t;++i<r&&(f*=256);)this[e+i]=t/f&255;return e+r},Buffer.prototype.writeUIntBE=function(t,e,r,n){if(t=+t,e|=0,r|=0,!n){checkInt(this,t,e,r,Math.pow(2,8*r)-1,0)}var f=r-1,i=1;for(this[e+f]=255&t;--f>=0&&(i*=256);)this[e+f]=t/i&255;return e+r},Buffer.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||checkInt(this,t,e,1,255,0),Buffer.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},Buffer.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||checkInt(this,t,e,2,65535,0),Buffer.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):objectWriteUInt16(this,t,e,!0),e+2},Buffer.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||checkInt(this,t,e,2,65535,0),Buffer.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):objectWriteUInt16(this,t,e,!1),e+2},Buffer.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||checkInt(this,t,e,4,4294967295,0),Buffer.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):objectWriteUInt32(this,t,e,!0),e+4},Buffer.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||checkInt(this,t,e,4,4294967295,0),Buffer.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):objectWriteUInt32(this,t,e,!1),e+4},Buffer.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var f=Math.pow(2,8*r-1);checkInt(this,t,e,r,f-1,-f)}var i=0,o=1,u=0;for(this[e]=255&t;++i<r&&(o*=256);)t<0&&0===u&&0!==this[e+i-1]&&(u=1),this[e+i]=(t/o>>0)-u&255;return e+r},Buffer.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var f=Math.pow(2,8*r-1);checkInt(this,t,e,r,f-1,-f)}var i=r-1,o=1,u=0;for(this[e+i]=255&t;--i>=0&&(o*=256);)t<0&&0===u&&0!==this[e+i+1]&&(u=1),this[e+i]=(t/o>>0)-u&255;return e+r},Buffer.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||checkInt(this,t,e,1,127,-128),Buffer.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},Buffer.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||checkInt(this,t,e,2,32767,-32768),Buffer.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):objectWriteUInt16(this,t,e,!0),e+2},Buffer.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||checkInt(this,t,e,2,32767,-32768),Buffer.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):objectWriteUInt16(this,t,e,!1),e+2},Buffer.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||checkInt(this,t,e,4,2147483647,-2147483648),Buffer.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):objectWriteUInt32(this,t,e,!0),e+4},Buffer.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||checkInt(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),Buffer.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):objectWriteUInt32(this,t,e,!1),e+4},Buffer.prototype.writeFloatLE=function(t,e,r){return writeFloat(this,t,e,!0,r)},Buffer.prototype.writeFloatBE=function(t,e,r){return writeFloat(this,t,e,!1,r)},Buffer.prototype.writeDoubleLE=function(t,e,r){return writeDouble(this,t,e,!0,r)},Buffer.prototype.writeDoubleBE=function(t,e,r){return writeDouble(this,t,e,!1,r)},Buffer.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e<n-r&&(n=t.length-e+r);var f,i=n-r;if(this===t&&r<e&&e<n)for(f=i-1;f>=0;--f)t[f+e]=this[f+r];else if(i<1e3||!Buffer.TYPED_ARRAY_SUPPORT)for(f=0;f<i;++f)t[f+e]=this[f+r];else Uint8Array.prototype.set.call(t,this.subarray(r,r+i),e);return i},Buffer.prototype.fill=function(t,e,r,n){if("string"==typeof t){if("string"==typeof e?(n=e,e=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),1===t.length){var f=t.charCodeAt(0);f<256&&(t=f)}if(void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!Buffer.isEncoding(n))throw new TypeError("Unknown encoding: "+n)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<r)throw new RangeError("Out of range index");if(r<=e)return this;e>>>=0,r=void 0===r?this.length:r>>>0,t||(t=0);var i;if("number"==typeof t)for(i=e;i<r;++i)this[i]=t;else{var o=Buffer.isBuffer(t)?t:utf8ToBytes(new Buffer(t,n).toString()),u=o.length;for(i=0;i<r-e;++i)this[i+e]=o[i%u]}return this};var INVALID_BASE64_RE=/[^+\/0-9A-Za-z-_]/g;
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{"base64-js":46,"ieee754":77,"isarray":80}],49:[function(require,module,exports){
(function (Buffer){
function isArray(r){return Array.isArray?Array.isArray(r):"[object Array]"===objectToString(r)}function isBoolean(r){return"boolean"==typeof r}function isNull(r){return null===r}function isNullOrUndefined(r){return null==r}function isNumber(r){return"number"==typeof r}function isString(r){return"string"==typeof r}function isSymbol(r){return"symbol"==typeof r}function isUndefined(r){return void 0===r}function isRegExp(r){return"[object RegExp]"===objectToString(r)}function isObject(r){return"object"==typeof r&&null!==r}function isDate(r){return"[object Date]"===objectToString(r)}function isError(r){return"[object Error]"===objectToString(r)||r instanceof Error}function isFunction(r){return"function"==typeof r}function isPrimitive(r){return null===r||"boolean"==typeof r||"number"==typeof r||"string"==typeof r||"symbol"==typeof r||void 0===r}function objectToString(r){return Object.prototype.toString.call(r)}exports.isArray=isArray,exports.isBoolean=isBoolean,exports.isNull=isNull,exports.isNullOrUndefined=isNullOrUndefined,exports.isNumber=isNumber,exports.isString=isString,exports.isSymbol=isSymbol,exports.isUndefined=isUndefined,exports.isRegExp=isRegExp,exports.isObject=isObject,exports.isDate=isDate,exports.isError=isError,exports.isFunction=isFunction,exports.isPrimitive=isPrimitive,exports.isBuffer=Buffer.isBuffer;
}).call(this,{"isBuffer":require("../../is-buffer/index.js")})
},{"../../is-buffer/index.js":79}],50:[function(require,module,exports){
function EventEmitter(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function isFunction(e){return"function"==typeof e}function isNumber(e){return"number"==typeof e}function isObject(e){return"object"==typeof e&&null!==e}function isUndefined(e){return void 0===e}module.exports=EventEmitter,EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._maxListeners=void 0,EventEmitter.defaultMaxListeners=10,EventEmitter.prototype.setMaxListeners=function(e){if(!isNumber(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},EventEmitter.prototype.emit=function(e){var t,i,n,s,r,o;if(this._events||(this._events={}),"error"===e&&(!this._events.error||isObject(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}if(i=this._events[e],isUndefined(i))return!1;if(isFunction(i))switch(arguments.length){case 1:i.call(this);break;case 2:i.call(this,arguments[1]);break;case 3:i.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),i.apply(this,s)}else if(isObject(i))for(s=Array.prototype.slice.call(arguments,1),o=i.slice(),n=o.length,r=0;r<n;r++)o[r].apply(this,s);return!0},EventEmitter.prototype.addListener=function(e,t){var i;if(!isFunction(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,isFunction(t.listener)?t.listener:t),this._events[e]?isObject(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,isObject(this._events[e])&&!this._events[e].warned&&(i=isUndefined(this._maxListeners)?EventEmitter.defaultMaxListeners:this._maxListeners)&&i>0&&this._events[e].length>i&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.once=function(e,t){function i(){this.removeListener(e,i),n||(n=!0,t.apply(this,arguments))}if(!isFunction(t))throw TypeError("listener must be a function");var n=!1;return i.listener=t,this.on(e,i),this},EventEmitter.prototype.removeListener=function(e,t){var i,n,s,r;if(!isFunction(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(i=this._events[e],s=i.length,n=-1,i===t||isFunction(i.listener)&&i.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(isObject(i)){for(r=s;r-- >0;)if(i[r]===t||i[r].listener&&i[r].listener===t){n=r;break}if(n<0)return this;1===i.length?(i.length=0,delete this._events[e]):i.splice(n,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},EventEmitter.prototype.removeAllListeners=function(e){var t,i;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(i=this._events[e],isFunction(i))this.removeListener(e,i);else if(i)for(;i.length;)this.removeListener(e,i[i.length-1]);return delete this._events[e],this},EventEmitter.prototype.listeners=function(e){return this._events&&this._events[e]?isFunction(this._events[e])?[this._events[e]]:this._events[e].slice():[]},EventEmitter.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(isFunction(t))return 1;if(t)return t.length}return 0},EventEmitter.listenerCount=function(e,t){return e.listenerCount(t)};
},{}],51:[function(require,module,exports){
"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var _createClass=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),FunctionBuilderBase=require("../function-builder-base"),CPUFunctionNode=require("./function-node");module.exports=function(e){function t(){_classCallCheck(this,t);var e=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.Node=CPUFunctionNode,e}return _inherits(t,e),_createClass(t,[{key:"polyfillStandardFunctions",value:function(){}}]),t}(FunctionBuilderBase);
},{"../function-builder-base":56,"./function-node":52}],52:[function(require,module,exports){
"use strict";function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var _createClass=function(){function t(t,e){for(var s=0;s<e.length;s++){var n=e[s];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,s,n){return s&&t(e.prototype,s),n&&t(e,n),e}}(),BaseFunctionNode=require("../function-node-base"),utils=require("../../core/utils");module.exports=function(t){function e(){return _classCallCheck(this,e),_possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return _inherits(e,t),_createClass(e,[{key:"generate",value:function(){return this.debug&&console.log(this),this.functionStringArray=this.astGeneric(this.getJsAST(),[],this),this.functionString=this.functionStringArray.join("").trim(),this.functionString}},{key:"getFunctionPrototypeString",value:function(){return this.webGlFunctionPrototypeString?this.webGlFunctionPrototypeString:this.webGlFunctionPrototypeString=this.generate()}},{key:"astGeneric",value:function(t,e,s){if(null===t)throw this.astErrorOutput("NULL ast",t,s);if(Array.isArray(t)){for(var n=0;n<t.length;n++)this.astGeneric(t[n],e,s);return e}switch(t.type){case"FunctionDeclaration":return this.astFunctionDeclaration(t,e,s);case"FunctionExpression":return this.astFunctionExpression(t,e,s);case"ReturnStatement":return this.astReturnStatement(t,e,s);case"Literal":return this.astLiteral(t,e,s);case"BinaryExpression":return this.astBinaryExpression(t,e,s);case"Identifier":return this.astIdentifierExpression(t,e,s);case"AssignmentExpression":return this.astAssignmentExpression(t,e,s);case"ExpressionStatement":return this.astExpressionStatement(t,e,s);case"EmptyStatement":return this.astEmptyStatement(t,e,s);case"BlockStatement":return this.astBlockStatement(t,e,s);case"IfStatement":return this.astIfStatement(t,e,s);case"BreakStatement":return this.astBreakStatement(t,e,s);case"ContinueStatement":return this.astContinueStatement(t,e,s);case"ForStatement":return this.astForStatement(t,e,s);case"WhileStatement":return this.astWhileStatement(t,e,s);case"VariableDeclaration":return this.astVariableDeclaration(t,e,s);case"VariableDeclarator":return this.astVariableDeclarator(t,e,s);case"ThisExpression":return this.astThisExpression(t,e,s);case"SequenceExpression":return this.astSequenceExpression(t,e,s);case"UnaryExpression":return this.astUnaryExpression(t,e,s);case"UpdateExpression":return this.astUpdateExpression(t,e,s);case"LogicalExpression":return this.astLogicalExpression(t,e,s);case"MemberExpression":return this.astMemberExpression(t,e,s);case"CallExpression":return this.astCallExpression(t,e,s);case"ArrayExpression":return this.astArrayExpression(t,e,s);case"DebuggerStatement":return this.astDebuggerStatement(t,e,s)}throw this.astErrorOutput("Unknown ast type : "+t.type,t,s)}},{key:"astFunctionDeclaration",value:function(t,e,s){return this.addFunction&&this.addFunction(null,utils.getAstString(this.jsFunctionString,t)),e}},{key:"astFunctionExpression",value:function(t,e,s){if(!s.isRootKernel){e.push("function"),s.kernalAst=t,e.push(" "),e.push(s.functionName),e.push("(");for(var n=0;n<s.paramNames.length;++n){var r=s.paramNames[n];n>0&&e.push(", "),e.push(" "),e.push("user_"),e.push(r)}e.push(") {\n")}for(var a=0;a<t.body.body.length;++a)this.astGeneric(t.body.body[a],e,s),e.push("\n");return s.isRootKernel||e.push("}\n"),e}},{key:"astReturnStatement",value:function(t,e,s){return s.isRootKernel?(e.push("kernelResult = "),this.astGeneric(t.argument,e,s),e.push(";")):s.isSubKernel?(e.push(s.functionName+"Result = "),this.astGeneric(t.argument,e,s),e.push(";"),e.push("return "+s.functionName+"Result;")):(e.push("return "),this.astGeneric(t.argument,e,s),e.push(";")),e}},{key:"astLiteral",value:function(t,e,s){if(isNaN(t.value))throw this.astErrorOutput("Non-numeric literal not supported : "+t.value,t,s);return e.push(t.value),e}},{key:"astBinaryExpression",value:function(t,e,s){return e.push("("),this.astGeneric(t.left,e,s),e.push(t.operator),this.astGeneric(t.right,e,s),e.push(")"),e}},{key:"astIdentifierExpression",value:function(t,e,s){if("Identifier"!==t.type)throw this.astErrorOutput("IdentifierExpression - not an Identifier",t,s);switch(t.name){case"gpu_threadX":e.push("threadId.x");break;case"gpu_threadY":e.push("threadId.y");break;case"gpu_threadZ":e.push("threadId.z");break;case"gpu_outputX":e.push("uOutputDim.x");break;case"gpu_outputY":e.push("uOutputDim.y");break;case"gpu_outputZ":e.push("uOutputDim.z");break;default:if(this.constants&&this.constants.hasOwnProperty(t.name))e.push("constants_"+t.name);else{var n=s.getUserParamName(t.name);null!==n?e.push("user_"+n):e.push("user_"+t.name)}}return e}},{key:"astForStatement",value:function(t,e,s){if("ForStatement"!==t.type)throw this.astErrorOutput("Invalid for statment",t,s);if(t.test&&"BinaryExpression"===t.test.type){if(("Identifier"===t.test.right.type||"Literal"===t.test.right.type)&&"<"===t.test.operator&&!1===this.isIdentifierConstant(t.test.right.name)){if(this.loopMaxIterations||(console.warn("Warning: loopMaxIterations is not set! Using default of 1000 which may result in unintended behavior."),console.warn("Set loopMaxIterations or use a for loop of fixed length to silence this message.")),e.push("for ("),this.astGeneric(t.init,e,s),";"!==e[e.length-1]&&e.push(";"),this.astGeneric(t.test.left,e,s),e.push(t.test.operator),e.push("LOOP_MAX"),e.push(";"),this.astGeneric(t.update,e,s),e.push(")"),e.push("{\n"),e.push("if ("),this.astGeneric(t.test.left,e,s),e.push(t.test.operator),this.astGeneric(t.test.right,e,s),e.push(") {\n"),"BlockStatement"===t.body.type)for(var n=0;n<t.body.body.length;n++)this.astGeneric(t.body.body[n],e,s);else this.astGeneric(t.body,e,s);return e.push("} else {\n"),e.push("break;\n"),e.push("}\n"),e.push("}\n"),e}if(t.init.declarations){var r=JSON.parse(JSON.stringify(t.init.declarations)),a=t.update.argument;if(!Array.isArray(r)||r.length<1)throw console.log(this.jsFunctionString),new Error("Error: Incompatible for loop declaration");if(r.length>1){for(var i=null,u=0;u<r.length;u++){var o=r[u];o.id.name===a.name?(i=o,r.splice(u,1)):(e.push("var "),this.astGeneric(o,e,s),e.push(";"))}e.push("for (let "),this.astGeneric(i,e,s),e.push(";")}else e.push("for ("),this.astGeneric(t.init,e,s);return this.astGeneric(t.test,e,s),e.push(";"),this.astGeneric(t.update,e,s),e.push(")"),this.astGeneric(t.body,e,s),e}}throw this.astErrorOutput("Invalid for statement",t,s)}},{key:"astWhileStatement",value:function(t,e,s){if("WhileStatement"!==t.type)throw this.astErrorOutput("Invalid while statment",t,s);return e.push("for (let i = 0; i < LOOP_MAX; i++) {"),e.push("if ("),this.astGeneric(t.test,e,s),e.push(") {\n"),this.astGeneric(t.body,e,s),e.push("} else {\n"),e.push("break;\n"),e.push("}\n"),e.push("}\n"),e}},{key:"astAssignmentExpression",value:function(t,e,s){return this.astGeneric(t.left,e,s),e.push(t.operator),this.astGeneric(t.right,e,s),e}},{key:"astEmptyStatement",value:function(t,e,s){return e}},{key:"astBlockStatement",value:function(t,e,s){e.push("{\n");for(var n=0;n<t.body.length;n++)this.astGeneric(t.body[n],e,s);return e.push("}\n"),e}},{key:"astExpressionStatement",value:function(t,e,s){return this.astGeneric(t.expression,e,s),e.push(";\n"),e}},{key:"astVariableDeclaration",value:function(t,e,s){e.push("var ");for(var n=0;n<t.declarations.length;n++)n>0&&e.push(","),this.astGeneric(t.declarations[n],e,s);return e.push(";"),e}},{key:"astVariableDeclarator",value:function(t,e,s){return this.astGeneric(t.id,e,s),null!==t.init&&(e.push("="),this.astGeneric(t.init,e,s)),e}},{key:"astIfStatement",value:function(t,e,s){return e.push("if ("),this.astGeneric(t.test,e,s),e.push(")"),"BlockStatement"===t.consequent.type?this.astGeneric(t.consequent,e,s):(e.push(" {\n"),this.astGeneric(t.consequent,e,s),e.push("\n}\n")),t.alternate&&(e.push("else "),"BlockStatement"===t.alternate.type?this.astGeneric(t.alternate,e,s):(e.push(" {\n"),this.astGeneric(t.alternate,e,s),e.push("\n}\n"))),e}},{key:"astBreakStatement",value:function(t,e,s){return e.push("break;\n"),e}},{key:"astContinueStatement",value:function(t,e,s){return e.push("continue;\n"),e}},{key:"astLogicalExpression",value:function(t,e,s){return e.push("("),this.astGeneric(t.left,e,s),e.push(t.operator),this.astGeneric(t.right,e,s),e.push(")"),e}},{key:"astUpdateExpression",value:function(t,e,s){return t.prefix?(e.push(t.operator),this.astGeneric(t.argument,e,s)):(this.astGeneric(t.argument,e,s),e.push(t.operator)),e}},{key:"astUnaryExpression",value:function(t,e,s){return t.prefix?(e.push(t.operator),this.astGeneric(t.argument,e,s)):(this.astGeneric(t.argument,e,s),e.push(t.operator)),e}},{key:"astThisExpression",value:function(t,e,s){return e.push("_this"),e}},{key:"astMemberExpression",value:function(t,e,s){if(t.computed)if("Identifier"===t.object.type)this.astGeneric(t.object,e,s),e.push("["),this.astGeneric(t.property,e,s),e.push("]");else{this.astGeneric(t.object,e,s);var n=e.pop();e.push("]["),this.astGeneric(t.property,e,s),e.push(n)}else{var r=this.astMemberExpressionUnroll(t);switch("Identifier"===t.property.type&&t.computed&&(r="user_"+r),0===r.indexOf("this")&&(r="_"+r),r){case"_this.output.x":e.push(this.output[0]);break;case"_this.output.y":e.push(this.output[1]);break;case"_this.output.z":e.push(this.output[2]);break;default:e.push(r)}}return e}},{key:"astSequenceExpression",value:function(t,e,s){for(var n=0;n<t.expressions.length;n++)n>0&&e.push(","),this.astGeneric(t.expressions,e,s);return e}},{key:"astCallExpression",value:function(t,e,s){if(t.callee){var n=this.astMemberExpressionUnroll(t.callee);s.calledFunctions.indexOf(n)<0&&s.calledFunctions.push(n),s.hasOwnProperty("funcName")||(s.calledFunctionsArguments[n]=[]);var r=[];s.calledFunctionsArguments[n].push(r),e.push(n),e.push("(");for(var a=0;a<t.arguments.length;++a){var i=t.arguments[a];if(a>0&&e.push(", "),this.astGeneric(i,e,s),"Identifier"===i.type){var u=s.paramNames.indexOf(i.name);-1===u?r.push(null):r.push({name:i.name,type:s.paramTypes[u]})}else r.push(null)}return e.push(")"),e}throw this.astErrorOutput("Unknown CallExpression",t,s)}},{key:"astArrayExpression",value:function(t,e,s){var n=t.elements.length;e.push("new Float32Array(");for(var r=0;r<n;++r){r>0&&e.push(", ");var a=t.elements[r];this.astGeneric(a,e,s)}return e.push(")"),e}},{key:"astDebuggerStatement",value:function(t,e,s){return e.push("debugger;"),e}}],[{key:"astFunctionPrototype",value:function(t,e,s){if(s.isRootKernel||s.isSubKernel)return e;e.push(s.returnType),e.push(" "),e.push(s.functionName),e.push("(");for(var n=0;n<s.paramNames.length;++n)n>0&&e.push(", "),e.push(s.paramTypes[n]),e.push(" "),e.push("user_"),e.push(s.paramNames[n]);return e.push(");\n"),e}}]),e}(BaseFunctionNode);
},{"../../core/utils":75,"../function-node-base":57}],53:[function(require,module,exports){
"use strict";var utils=require("../../core/utils"),kernelRunShortcut=require("../kernel-run-shortcut");module.exports=function(n,t){return"() => {\n "+kernelRunShortcut.toString()+";\n const utils = {\n allPropertiesOf: function "+utils.allPropertiesOf.toString()+",\n clone: function "+utils.clone.toString()+",\n /*splitArray: function "+utils.splitArray.toString()+",\n getArgumentType: function "+utils.getArgumentType.toString()+",\n getOutput: function "+utils.getOutput.toString()+",\n dimToTexSize: function "+utils.dimToTexSize.toString()+",\n copyFlatten: function "+utils.copyFlatten.toString()+",\n flatten: function "+utils.flatten.toString()+",\n systemEndianness: '"+utils.systemEndianness()+"',\n initWebGl: function "+utils.initWebGl.toString()+",\n isArray: function "+utils.isArray.toString()+"*/\n };\n class "+(t||"Kernel")+" {\n constructor() { \n this.argumentsLength = 0;\n this._canvas = null;\n this._webGl = null;\n this.built = false;\n this.program = null;\n this.paramNames = "+JSON.stringify(n.paramNames)+";\n this.paramTypes = "+JSON.stringify(n.paramTypes)+";\n this.texSize = "+JSON.stringify(n.texSize)+";\n this.output = "+JSON.stringify(n.output)+";\n this._kernelString = `"+n._kernelString+"`;\n this.output = "+JSON.stringify(n.output)+";\n\t\t this.run = function() {\n this.run = null;\n this.build();\n return this.run.apply(this, arguments);\n }.bind(this);\n this.thread = {\n x: 0,\n y: 0,\n z: 0\n };\n }\n setCanvas(canvas) { this._canvas = canvas; return this; }\n setWebGl(webGl) { this._webGl = webGl; return this; }\n "+n.build.toString()+"\n run () { "+n.kernelString+" }\n getKernelString() { return this._kernelString; }\n };\n return kernelRunShortcut(new Kernel());\n };"};
},{"../../core/utils":75,"../kernel-run-shortcut":59}],54:[function(require,module,exports){
"use strict";function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var _createClass=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),KernelBase=require("../kernel-base"),utils=require("../../core/utils"),kernelString=require("./kernel-string");module.exports=function(t){function e(t,n){_classCallCheck(this,e);var r=_possibleConstructorReturn(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r._fnBody=utils.getFunctionBodyFromString(t),r._fn=null,r.run=null,r._canvasCtx=null,r._imageData=null,r._colorData=null,r._kernelString=null,r.thread={x:0,y:0,z:0},r.run=function(){return this.run=null,this.build.apply(this,arguments),this.run.apply(this,arguments)}.bind(r),r}return _inherits(e,t),_createClass(e,[{key:"validateOptions",value:function(){if(!this.output||0===this.output.length){if(1!==arguments.length)throw"Auto dimensions only supported for kernels with only one input";var t=utils.getArgumentType(arguments[0]);if("Array"===t)this.output=utils.getDimensions(t);else{if("Texture"!==t)throw"Auto dimensions not supported for input type: "+t;this.output=arguments[0].output}}}},{key:"build",value:function(){this.setupParams(arguments);for(var t=this.threadDim=utils.clone(this.output);t.length<3;)t.push(1);if(this.graphical){var e=this.getCanvas();e.width=t[0],e.height=t[1],this._canvasCtx=e.getContext("2d"),this._imageData=this._canvasCtx.createImageData(t[0],t[1]),this._colorData=new Uint8ClampedArray(t[0]*t[1]*4)}var n=this.getKernelString();this.debug&&(console.log("Options:"),console.dir(this),console.log("Function output:"),console.log(n)),this.kernelString=n,this.run=new Function([],n).bind(this)()}},{key:"color",value:function(t,e,n,r){void 0===r&&(r=1),t=Math.floor(255*t),e=Math.floor(255*e),n=Math.floor(255*n),r=Math.floor(255*r);var i=this.output[0],s=this.output[1],u=this.thread.x,a=s-this.thread.y-1,l=u+a*i;this._colorData[4*l+0]=t,this._colorData[4*l+1]=e,this._colorData[4*l+2]=n,this._colorData[4*l+3]=r}},{key:"getKernelString",value:function(){var t=this;if(null!==this._kernelString)return this._kernelString;for(var e=this.functionBuilder,n=this.threadDim||(this.threadDim=utils.clone(this.output));n.length<3;)n.push(1);if(e.addKernel(this.fnString,{prototypeOnly:!1,constants:this.constants,output:this.output,debug:this.debug,loopMaxIterations:this.loopMaxIterations},this.paramNames,this.paramTypes),e.addFunctions(this.functions,{constants:this.constants,output:this.output}),null!==this.subKernels){this.subKernelOutputTextures=[],this.subKernelOutputVariableNames=[];for(var r=0;r<this.subKernels.length;r++){var i=this.subKernels[r];e.addSubKernel(i,{prototypeOnly:!1,constants:this.constants,output:this.output,debug:this.debug,loopMaxIterations:this.loopMaxIterations}),this.subKernelOutputVariableNames.push(i.name+"Result")}}else if(null!==this.subKernelProperties){this.subKernelOutputVariableNames=[];var s=0;for(var u in this.subKernelProperties)if(this.subKernelProperties.hasOwnProperty(u)){var a=this.subKernelProperties[u];e.addSubKernel(a),this.subKernelOutputVariableNames.push(a.name+"Result"),s++}}var l=e.getPrototypes(),o=l.shift();return this._kernelString="\n\t\tvar LOOP_MAX = "+this._getLoopMaxString()+";\n\t\tvar _this = this;\n "+(null===this.subKernelOutputVariableNames?"":this.subKernelOutputVariableNames.map(function(t){return" var "+t+" = null;\n"}).join(""))+"\n return function ("+this.paramNames.map(function(t){return"user_"+t}).join(", ")+") {\n var ret = new Array("+n[2]+");\n "+(null===this.subKernelOutputVariableNames?"":this.subKernelOutputVariableNames.map(function(t){return" "+t+"Z = new Array("+n[2]+");\n"}).join(""))+"\n for (this.thread.z = 0; this.thread.z < "+n[2]+"; this.thread.z++) {\n ret[this.thread.z] = new Array("+n[1]+");\n "+(null===this.subKernelOutputVariableNames?"":this.subKernelOutputVariableNames.map(function(t){return" "+t+"Z[this.thread.z] = new Array("+n[1]+");\n"}).join(""))+"\n for (this.thread.y = 0; this.thread.y < "+n[1]+"; this.thread.y++) {\n ret[this.thread.z][this.thread.y] = new Array("+n[0]+");\n "+(null===this.subKernelOutputVariableNames?"":this.subKernelOutputVariableNames.map(function(t){return" "+t+"Z[this.thread.z][this.thread.y] = new Array("+n[0]+");\n"}).join(""))+"\n for (this.thread.x = 0; this.thread.x < "+n[0]+"; this.thread.x++) {\n var kernelResult;\n "+o+"\n ret[this.thread.z][this.thread.y][this.thread.x] = kernelResult;\n"+(null===this.subKernelOutputVariableNames?"":this.subKernelOutputVariableNames.map(function(t){return" "+t+"Z[this.thread.z][this.thread.y][this.thread.x] = "+t+";\n"}).join(""))+"\n }\n }\n }\n \n if (this.graphical) {\n this._imageData.data.set(this._colorData);\n this._canvasCtx.putImageData(this._imageData, 0, 0);\n return;\n }\n \n if (this.output.length === 1) {\n ret = ret[0][0];\n"+(null===this.subKernelOutputVariableNames?"":this.subKernelOutputVariableNames.map(function(t){return" "+t+" = "+t+"Z[0][0];\n"}).join(""))+"\n \n } else if (this.output.length === 2) {\n ret = ret[0];\n "+(null===this.subKernelOutputVariableNames?"":this.subKernelOutputVariableNames.map(function(t){return" "+t+" = "+t+"Z[0];\n"}).join(""))+"\n }\n \n "+(null===this.subKernelOutputVariableNames?"return ret;\n":null!==this.subKernels?"var result = [\n "+this.subKernelOutputVariableNames.map(function(t){return""+t}).join(",\n")+"\n ];\n result.result = ret;\n return result;\n":"return {\n result: ret,\n "+Object.keys(this.subKernelProperties).map(function(e,n){return e+": "+t.subKernelOutputVariableNames[n]}).join(",\n")+"\n };")+"\n "+(l.length>0?l.join("\n"):"")+"\n }.bind(this);"}},{key:"toString",value:function(){return kernelString(this)}},{key:"precompileKernelObj",value:function(t){return{threadDim:this.threadDim||(this.threadDim=utils.clone(this.output))}}},{key:"_getLoopMaxString",value:function(){return this.loopMaxIterations?" "+parseInt(this.loopMaxIterations)+";\n":" 1000;\n"}}],[{key:"compileKernel",value:function(t){for(var e=t.threadDim;e.length<3;)e.push(1)}}]),e}(KernelBase);
},{"../../core/utils":75,"../kernel-base":58,"./kernel-string":53}],55:[function(require,module,exports){
"use strict";function _classCallCheck(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,r){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!r||"object"!=typeof r&&"function"!=typeof r?e:r}function _inherits(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function, not "+typeof r);e.prototype=Object.create(r&&r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),r&&(Object.setPrototypeOf?Object.setPrototypeOf(e,r):e.__proto__=r)}var _createClass=function(){function e(e,r){for(var t=0;t<r.length;t++){var n=r[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(r,t,n){return t&&e(r.prototype,t),n&&e(r,n),r}}(),utils=require("../../core/utils"),RunnerBase=require("../runner-base"),CPUKernel=require("./kernel"),CPUFunctionBuilder=require("./function-builder");module.exports=function(e){function r(e){_classCallCheck(this,r);var t=_possibleConstructorReturn(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,new CPUFunctionBuilder,e));return t.Kernel=CPUKernel,t.kernel=null,t}return _inherits(r,e),_createClass(r,[{key:"getMode",value:function(){return"cpu"}}]),r}(RunnerBase);
},{"../../core/utils":75,"../runner-base":60,"./function-builder":51,"./kernel":54}],56:[function(require,module,exports){
"use strict";function _classCallCheck(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function n(n,t){for(var e=0;e<t.length;e++){var i=t[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(n,i.key,i)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();module.exports=function(){function n(t){_classCallCheck(this,n),this.nodeMap={},this.nativeFunctions={},this.gpu=t,this.rootKernel=null,this.Node=null}return _createClass(n,[{key:"addNativeFunction",value:function(n,t){this.nativeFunctions[n]=t}},{key:"addFunction",value:function(n,t,e,i,o){this.addFunctionNode(new this.Node(n,t,e,i,o).setAddFunction(this.addFunction.bind(this)))}},{key:"addFunctions",value:function(n,t){if(n)if(Array.isArray(n))for(var e=0;e<n.length;e++)this.addFunction(null,n[e],t);else for(var i in n)this.addFunction(i,n[i],t)}},{key:"addNativeFunctions",value:function(n){for(var t in n)n.hasOwnProperty(t)&&this.addNativeFunction(t,n[t])}},{key:"addFunctionNode",value:function(n){this.nodeMap[n.functionName]=n,n.isRootKernel&&(this.rootKernel=n)}},{key:"traceFunctionCalls",value:function(n,t,e){n=n||"kernel",t=t||[];var i=this.nodeMap[n];if(i){var o=t.indexOf(n);if(-1===o){t.push(n),e&&(i.parent=e),i.getFunctionString();for(var r=0;r<i.calledFunctions.length;++r)this.traceFunctionCalls(i.calledFunctions[r],t,i)}else{var a=t.splice(o,1)[0];t.push(a)}}return this.nativeFunctions[n]&&(t.indexOf(n)>=0||t.push(n)),t}},{key:"addKernel",value:function(n,t,e,i){var o=new this.Node("kernel",n,t,i);return o.setAddFunction(this.addFunction.bind(this)),o.paramNames=e,o.paramTypes=i,o.isRootKernel=!0,this.addFunctionNode(o),o}},{key:"addSubKernel",value:function(n,t,e,i){var o=new this.Node(null,n,t,e,i);return o.setAddFunction(this.addFunction.bind(this)),o.isSubKernel=!0,this.addFunctionNode(o),o}},{key:"getPrototypeString",value:function(n){return this.getPrototypes(n).join("\n")}},{key:"getPrototypes",value:function(n){return this.rootKernel.generate(),n?this.getPrototypesFromFunctionNames(this.traceFunctionCalls(n,[]).reverse()):this.getPrototypesFromFunctionNames(Object.keys(this.nodeMap))}},{key:"getStringFromFunctionNames",value:function(n){for(var t=[],e=0;e<n.length;++e){this.nodeMap[n[e]]&&t.push(this.nodeMap[n[e]].getFunctionString())}return t.join("\n")}},{key:"getPrototypesFromFunctionNames",value:function(n,t){for(var e=[],i=0;i<n.length;++i){var o=n[i],r=this.nodeMap[o];r?e.push(r.getFunctionPrototypeString(t)):this.nativeFunctions[o]&&e.push(this.nativeFunctions[o])}return e}},{key:"getPrototypeStringFromFunctionNames",value:function(n,t){return this.getPrototypesFromFunctionNames(n,t).toString()}},{key:"getString",value:function(n,t){return void 0===t&&(t={}),n?this.getStringFromFunctionNames(this.traceFunctionCalls(n,[],t).reverse(),t):this.getStringFromFunctionNames(Object.keys(this.nodeMap),t)}},{key:"polyfillStandardFunctions",value:function(){throw new Error("polyfillStandardFunctions not defined on base function builder")}}]),n}();
},{}],57:[function(require,module,exports){
"use strict";function _classCallCheck(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_createClass=function(){function t(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(n,e,r){return e&&t(n.prototype,e),r&&t(n,r),n}}(),utils=require("../core/utils"),acorn=require("acorn");module.exports=function(){function BaseFunctionNode(t,n,e,r,i){if(_classCallCheck(this,BaseFunctionNode),this.calledFunctions=[],this.calledFunctionsArguments={},this.initVariables=[],this.readVariables=[],this.writeVariables=[],this.addFunction=null,this.isRootKernel=!1,this.isSubKernel=!1,this.parent=null,this.debug=null,this.prototypeOnly=null,this.constants=null,this.output=null,e&&(e.hasOwnProperty("debug")&&(this.debug=e.debug),e.hasOwnProperty("prototypeOnly")&&(this.prototypeOnly=e.prototypeOnly),e.hasOwnProperty("constants")&&(this.constants=e.constants),e.hasOwnProperty("output")&&(this.output=e.output),e.hasOwnProperty("loopMaxIterations")&&(this.loopMaxIterations=e.loopMaxIterations)),!n)throw"jsFunction, parameter is missing";if(this.jsFunctionString=n.toString(),!utils.isFunctionString(this.jsFunctionString))throw console.error("jsFunction, to string conversion check failed: not a function?",this.jsFunctionString),"jsFunction, to string conversion check failed: not a function?";if(utils.isFunction(n)?this.jsFunction=n:this.jsFunction=null,this.functionName=t||n&&n.name||utils.getFunctionNameFromString(this.jsFunctionString),!this.functionName)throw"jsFunction, missing name argument or value";if(this.paramNames=utils.getParamNamesFromString(this.jsFunctionString),r){if(Array.isArray(r)){if(r.length!==this.paramNames.length)throw"Invalid argument type array length, against function length -> ("+r.length+","+this.paramNames.length+")";this.paramTypes=r}else if("object"===(void 0===r?"undefined":_typeof(r))){var s=Object.keys(r);if(r.hasOwnProperty("returns")&&(this.returnType=r.returns,s.splice(s.indexOf("returns"),1)),s.length>0&&s.length!==this.paramNames.length)throw"Invalid argument type array length, against function length -> ("+s.length+","+this.paramNames.length+")";this.paramTypes=this.paramNames.map(function(t){return r.hasOwnProperty(t)?r[t]:"float"})}}else this.paramTypes=[];this.returnType||(this.returnType=i||"float")}return _createClass(BaseFunctionNode,[{key:"isIdentifierConstant",value:function(t){return!!this.constants&&this.constants.hasOwnProperty(t)}},{key:"setAddFunction",value:function(t){return this.addFunction=t,this}},{key:"getJsFunction",value:function getJsFunction(){if(this.jsFunction)return this.jsFunction;if(this.jsFunctionString)return this.jsFunction=eval(this.jsFunctionString),this.jsFunction;throw"Missing jsFunction, and jsFunctionString parameter"}},{key:"astMemberExpressionUnroll",value:function(t,n){if("Identifier"===t.type)return t.name;if("ThisExpression"===t.type)return"this";if("MemberExpression"===t.type&&t.object&&t.property)return t.object.hasOwnProperty("name")&&"_"===t.object.name[0]?this.astMemberExpressionUnroll(t.property,n):this.astMemberExpressionUnroll(t.object,n)+"."+this.astMemberExpressionUnroll(t.property,n);if(t.hasOwnProperty("expressions")){var e=t.expressions[0];if("Literal"===e.type&&0===e.value&&2===t.expressions.length)return this.astMemberExpressionUnroll(t.expressions[1])}throw this.astErrorOutput("Unknown CallExpression_unroll",t,n)}},{key:"getJsAST",value:function(t){if(this.jsFunctionAST)return this.jsFunctionAST;if(null===(t=t||acorn))throw"Missing JS to AST parser";var n=t.parse("var "+this.functionName+" = "+this.jsFunctionString+";",{locations:!0});if(null===n)throw"Failed to parse JS code";var e=n.body[0].declarations[0].init;return this.jsFunctionAST=e,e}},{key:"getFunctionString",value:function(){return this.generate(),this.functionString}},{key:"setFunctionString",value:function(t){this.functionString=t}},{key:"getParamType",value:function(t){var n=this.paramNames.indexOf(t);if(-1===n)return null;if(!this.parent)return null;if(this.paramTypes[n])return this.paramTypes[n];for(var e=this.parent.calledFunctionsArguments[this.functionName],r=0;r<e.length;r++){var i=e[r];if(null!==i[n])return this.paramTypes[n]=i[n].type}return null}},{key:"getUserParamName",value:function(t){var n=this.paramNames.indexOf(t);if(-1===n)return null;if(!this.parent)return null;for(var e=this.parent.calledFunctionsArguments[this.functionName],r=0;r<e.length;r++){var i=e[r];if(null!==i[n])return i[n].name}return null}},{key:"generate",value:function(t){throw new Error("generate not defined on BaseFunctionNode")}},{key:"astErrorOutput",value:function(t,n,e){return console.error(utils.getAstString(this.jsFunctionString,n)),console.error(t,n,e),t}},{key:"astDebuggerStatement",value:function(t,n,e){return n}}]),BaseFunctionNode}();
},{"../core/utils":75,"acorn":45}],58:[function(require,module,exports){
"use strict";function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function t(t,e){for(var n=0;n<e.length;n++){var u=e[n];u.enumerable=u.enumerable||!1,u.configurable=!0,"value"in u&&(u.writable=!0),Object.defineProperty(t,u.key,u)}}return function(e,n,u){return n&&t(e.prototype,n),u&&t(e,u),e}}(),utils=require("../core/utils");module.exports=function(){function t(e,n){_classCallCheck(this,t),this.paramNames=utils.getParamNamesFromString(e),this.fnString=e,this.output=null,this.debug=!1,this.graphical=!1,this.loopMaxIterations=0,this.constants=null,this.wraparound=null,this.hardcodeConstants=null,this.outputToTexture=null,this.texSize=null,this._canvas=null,this._webGl=null,this.threadDim=null,this.floatTextures=null,this.floatOutput=null,this.floatOutputForce=null,this.addFunction=null,this.functions=null,this.nativeFunctions=null,this.copyData=!0,this.subKernels=null,this.subKernelProperties=null,this.subKernelNames=null,this.subKernelOutputVariableNames=null,this.functionBuilder=null,this.paramTypes=null;for(var u in n)n.hasOwnProperty(u)&&this.hasOwnProperty(u)&&(this[u]=n[u]);n.hasOwnProperty("canvas")&&(this._canvas=n.canvas),n.hasOwnProperty("output")&&this.setOutput(n.output),this._canvas||(this._canvas=utils.initCanvas())}return _createClass(t,[{key:"build",value:function(){throw new Error('"build" not defined on Base')}},{key:"setupParams",value:function(t){for(var e=this.paramTypes=[],n=0;n<t.length;n++){var u=t[n],s=utils.getArgumentType(u);e.push(s)}}},{key:"setAddFunction",value:function(t){return this.addFunction=t,this}},{key:"setFunctions",value:function(t){return this.functions=t,this}},{key:"setOutput",value:function(t){return t.hasOwnProperty("x")?t.hasOwnProperty("y")?t.hasOwnProperty("z")?this.output=[t.x,t.y,t.z]:this.output=[t.x,t.y]:this.output=[t.x]:this.output=t,this}},{key:"setDebug",value:function(t){return this.debug=t,this}},{key:"setGraphical",value:function(t){return this.graphical=t,this}},{key:"setLoopMaxIterations",value:function(t){return this.loopMaxIterations=t,this}},{key:"setConstants",value:function(t){return this.constants=t,this}},{key:"setWraparound",value:function(t){return console.warn("Wraparound mode is not supported and undocumented."),this.wraparound=t,this}},{key:"setHardcodeConstants",value:function(t){return this.hardcodeConstants=t,this}},{key:"setOutputToTexture",value:function(t){return this.outputToTexture=t,this}},{key:"setFloatTextures",value:function(t){return this.floatTextures=t,this}},{key:"setFloatOutput",value:function(t){return this.floatOutput=t,this}},{key:"setFloatOutputForce",value:function(t){return this.floatOutputForce=t,this}},{key:"setCanvas",value:function(t){return this._canvas=t,this}},{key:"setWebGl",value:function(t){return this._webGl=t,this}},{key:"setCopyData",value:function(t){return this.copyData=t,this}},{key:"getCanvas",value:function(){return this._canvas}},{key:"getWebGl",value:function(){return this._webGl}},{key:"validateOptions",value:function(){throw new Error("validateOptions not defined")}},{key:"exec",value:function(){return this.execute.apply(this,arguments)}},{key:"execute",value:function(){var t=this,e=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);return utils.newPromise(function(n,u){try{n(t.run.apply(t,e))}catch(t){u(t)}})}},{key:"addSubKernel",value:function(t){return null===this.subKernels&&(this.subKernels=[],this.subKernelNames=[]),this.subKernels.push(t),this.subKernelNames.push(utils.getFunctionNameFromString(t)),this}},{key:"addSubKernelProperty",value:function(t,e){if(null===this.subKernelProperties&&(this.subKernelProperties={},this.subKernelNames=[]),this.subKernelProperties.hasOwnProperty(t))throw new Error("cannot add sub kernel "+t+", already defined");return this.subKernelProperties[t]=e,this.subKernelNames.push(utils.getFunctionNameFromString(e)),this}},{key:"addNativeFunction",value:function(t,e){this.functionBuilder.addNativeFunction(t,e)}}]),t}();
},{"../core/utils":75}],59:[function(require,module,exports){
"use strict";var utils=require("../core/utils");module.exports=function(t){var n=function(){return t.run.apply(t,arguments)};return utils.allPropertiesOf(t).forEach(function(e){"_"===e[0]&&"_"===e[1]||("function"==typeof t[e]?n[e]="add"===e.substring(0,3)||"set"===e.substring(0,3)?function(){return t[e].apply(t,arguments),n}:t[e].bind(t):(n.__defineGetter__(e,function(){return t[e]}),n.__defineSetter__(e,function(n){t[e]=n})))}),n.kernel=t,n};
},{"../core/utils":75}],60:[function(require,module,exports){
"use strict";function _classCallCheck(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function e(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(n,t,r){return t&&e(n.prototype,t),r&&e(n,r),n}}(),utils=require("../core/utils"),kernelRunShortcut=require("./kernel-run-shortcut");module.exports=function(){function e(n,t){_classCallCheck(this,e),t=t||{},this.kernel=t.kernel,this.canvas=t.canvas,this.webGl=t.webGl,this.fn=null,this.functionBuilder=n,this.fnString=null,this.endianness=utils.systemEndianness(),this.functionBuilder.polyfillStandardFunctions()}return _createClass(e,[{key:"textureToArray",value:function(e){return this.createKernel(function(e){return e[this.thread.z][this.thread.y][this.thread.x]})(e)}},{key:"deleteTexture",value:function(e){this.webGl.deleteTexture(e.texture)}},{key:"buildPromiseKernel",value:function(){throw new Error("not yet implemented")}},{key:"getMode",value:function(){throw new Error('"mode" not implemented on BaseRunner')}},{key:"buildKernel",value:function(e,n){n=Object.assign({},n||{});var t=e.toString();return n.functionBuilder||(n.functionBuilder=this.functionBuilder),n.canvas||(n.canvas=this.canvas),n.webGl||(n.webGl=this.webgl),kernelRunShortcut(new this.Kernel(t,n))}}]),e}();
},{"../core/utils":75,"./kernel-run-shortcut":59}],61:[function(require,module,exports){
"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function _round(e){return Math.floor(e+.5)}var _createClass=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),FunctionBuilderBase=require("../function-builder-base"),WebGLFunctionNode=require("./function-node");module.exports=function(e){function t(){_classCallCheck(this,t);var e=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.Node=WebGLFunctionNode,e}return _inherits(t,e),_createClass(t,[{key:"polyfillStandardFunctions",value:function(){this.addFunction("round",_round)}}],[{key:"round",value:function(e){return _round(e)}}]),t}(FunctionBuilderBase);
},{"../function-builder-base":56,"./function-node":62}],62:[function(require,module,exports){
"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function isIdentifierKernelParam(e,t,s){return-1!==s.paramNames.indexOf(e)}function ensureIndentifierType(e,t,s,r){var n=s.loc.start;if(!isIdentifierKernelParam(e,r)&&"float"!==t)throw new Error("Error unexpected identifier "+e+" on line "+n.line);if(r.paramTypes[r.paramNames.indexOf(e)]!==t)throw new Error("Error unexpected identifier "+e+" on line "+n.line)}function webGlRegexOptimize(e){return e.replace(DECODE32_ENCODE32,"((").replace(ENCODE32_DECODE32,"((")}var _createClass=function(){function e(e,t){for(var s=0;s<t.length;s++){var r=t[s];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,s,r){return s&&e(t.prototype,s),r&&e(t,r),t}}(),FunctionNodeBase=require("../function-node-base"),utils=require("../../core/utils"),jsMathPrefix="Math.",localPrefix="this.",constantsPrefix="this.constants.",DECODE32_ENCODE32=/decode32\(\s+encode32\(/g,ENCODE32_DECODE32=/encode32\(\s+decode32\(/g;module.exports=function(e){function t(){return _classCallCheck(this,t),_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return _inherits(t,e),_createClass(t,[{key:"generate",value:function(){return this.debug&&console.log(this),this.prototypeOnly?t.astFunctionPrototype(this.getJsAST(),[],this).join("").trim():(this.functionStringArray=this.astGeneric(this.getJsAST(),[],this),this.functionString=webGlRegexOptimize(this.functionStringArray.join("").trim()),this.functionString)}},{key:"astGeneric",value:function(e,t,s){if(null===e)throw this.astErrorOutput("NULL ast",e,s);if(Array.isArray(e)){for(var r=0;r<e.length;r++)this.astGeneric(e[r],t,s);return t}switch(e.type){case"FunctionDeclaration":return this.astFunctionDeclaration(e,t,s);case"FunctionExpression":return this.astFunctionExpression(e,t,s);case"ReturnStatement":return this.astReturnStatement(e,t,s);case"Literal":return this.astLiteral(e,t,s);case"BinaryExpression":return this.astBinaryExpression(e,t,s);case"Identifier":return this.astIdentifierExpression(e,t,s);case"AssignmentExpression":return this.astAssignmentExpression(e,t,s);case"ExpressionStatement":return this.astExpressionStatement(e,t,s);case"EmptyStatement":return this.astEmptyStatement(e,t,s);case"BlockStatement":return this.astBlockStatement(e,t,s);case"IfStatement":return this.astIfStatement(e,t,s);case"BreakStatement":return this.astBreakStatement(e,t,s);case"ContinueStatement":return this.astContinueStatement(e,t,s);case"ForStatement":return this.astForStatement(e,t,s);case"WhileStatement":return this.astWhileStatement(e,t,s);case"VariableDeclaration":return this.astVariableDeclaration(e,t,s);case"VariableDeclarator":return this.astVariableDeclarator(e,t,s);case"ThisExpression":return this.astThisExpression(e,t,s);case"SequenceExpression":return this.astSequenceExpression(e,t,s);case"UnaryExpression":return this.astUnaryExpression(e,t,s);case"UpdateExpression":return this.astUpdateExpression(e,t,s);case"LogicalExpression":return this.astLogicalExpression(e,t,s);case"MemberExpression":return this.astMemberExpression(e,t,s);case"CallExpression":return this.astCallExpression(e,t,s);case"ArrayExpression":return this.astArrayExpression(e,t,s);case"DebuggerStatement":return this.astDebuggerStatement(e,t,s)}throw this.astErrorOutput("Unknown ast type : "+e.type,e,s)}},{key:"astFunctionDeclaration",value:function(e,t,s){return this.addFunction&&this.addFunction(null,utils.getAstString(this.jsFunctionString,e)),t}},{key:"astFunctionExpression",value:function(e,t,s){if(s.isRootKernel?(t.push("void"),s.kernalAst=e):t.push(s.returnType),t.push(" "),t.push(s.functionName),t.push("("),!s.isRootKernel)for(var r=0;r<s.paramNames.length;++r){var n=s.paramNames[r];r>0&&t.push(", ");var i=s.getParamType(n);switch(i){case"Texture":case"Input":case"Array":t.push("sampler2D");break;default:t.push("float")}t.push(" "),t.push("user_"),t.push(n)}t.push(") {\n");for(var a=0;a<e.body.body.length;++a)this.astGeneric(e.body.body[a],t,s),t.push("\n");return t.push("}\n"),t}},{key:"astReturnStatement",value:function(e,t,s){return s.isRootKernel?(t.push("kernelResult = "),this.astGeneric(e.argument,t,s),t.push(";"),t.push("return;")):s.isSubKernel?(t.push(s.functionName+"Result = "),this.astGeneric(e.argument,t,s),t.push(";"),t.push("return "+s.functionName+"Result;")):(t.push("return "),this.astGeneric(e.argument,t,s),t.push(";")),t}},{key:"astLiteral",value:function(e,t,s){if(isNaN(e.value))throw this.astErrorOutput("Non-numeric literal not supported : "+e.value,e,s);return t.push(e.value),Number.isInteger(e.value)&&t.push(".0"),t}},{key:"astBinaryExpression",value:function(e,t,s){return t.push("("),"%"===e.operator?(t.push("mod("),this.astGeneric(e.left,t,s),t.push(","),this.astGeneric(e.right,t,s),t.push(")")):"==="===e.operator?(this.astGeneric(e.left,t,s),t.push("=="),this.astGeneric(e.right,t,s)):"!=="===e.operator?(this.astGeneric(e.left,t,s),t.push("!="),this.astGeneric(e.right,t,s)):(this.astGeneric(e.left,t,s),t.push(e.operator),this.astGeneric(e.right,t,s)),t.push(")"),t}},{key:"astIdentifierExpression",value:function(e,t,s){if("Identifier"!==e.type)throw this.astErrorOutput("IdentifierExpression - not an Identifier",e,s);switch(e.name){case"gpu_threadX":t.push("threadId.x");break;case"gpu_threadY":t.push("threadId.y");break;case"gpu_threadZ":t.push("threadId.z");break;case"gpu_outputX":t.push("uOutputDim.x");break;case"gpu_outputY":t.push("uOutputDim.y");break;case"gpu_outputZ":t.push("uOutputDim.z");break;default:if(this.constants&&this.constants.hasOwnProperty(e.name))t.push("constants_"+e.name);else{var r=s.getUserParamName(e.name);null!==r?t.push("user_"+r):t.push("user_"+e.name)}}return t}},{key:"astForStatement",value:function(e,t,s){if("ForStatement"!==e.type)throw this.astErrorOutput("Invalid for statment",e,s);if(e.test&&"BinaryExpression"===e.test.type){if("Identifier"===e.test.right.type&&"<"===e.test.operator&&!1===this.isIdentifierConstant(e.test.right.name)){if(this.loopMaxIterations||(console.warn("Warning: loopMaxIterations is not set! Using default of 1000 which may result in unintended behavior."),console.warn("Set loopMaxIterations or use a for loop of fixed length to silence this message.")),t.push("for ("),this.astGeneric(e.init,t,s),this.astGeneric(e.test.left,t,s),t.push(e.test.operator),t.push("LOOP_MAX"),t.push(";"),this.astGeneric(e.update,t,s),t.push(")"),t.push("{\n"),t.push("if ("),this.astGeneric(e.test.left,t,s),t.push(e.test.operator),this.astGeneric(e.test.right,t,s),t.push(") {\n"),"BlockStatement"===e.body.type)for(var r=0;r<e.body.body.length;r++)this.astGeneric(e.body.body[r],t,s);else this.astGeneric(e.body,t,s);return t.push("} else {\n"),t.push("break;\n"),t.push("}\n"),t.push("}\n"),t}var n=JSON.parse(JSON.stringify(e.init.declarations)),i=e.update.argument;if(!Array.isArray(n)||n.length<1)throw console.log(this.jsFunctionString),new Error("Error: Incompatible for loop declaration");if(n.length>1){for(var a=null,u=0;u<n.length;u++){var o=n[u];o.id.name===i.name?(a=o,n.splice(u,1)):(t.push("float "),this.astGeneric(o,t,s),t.push(";"))}t.push("for (float "),this.astGeneric(a,t,s),t.push(";")}else t.push("for ("),this.astGeneric(e.init,t,s);return this.astGeneric(e.test,t,s),t.push(";"),this.astGeneric(e.update,t,s),t.push(")"),this.astGeneric(e.body,t,s),t}throw this.astErrorOutput("Invalid for statement",e,s)}},{key:"astWhileStatement",value:function(e,t,s){if("WhileStatement"!==e.type)throw this.astErrorOutput("Invalid while statment",e,s);return t.push("for (float i = 0.0; i < LOOP_MAX; i++) {"),t.push("if ("),this.astGeneric(e.test,t,s),t.push(") {\n"),this.astGeneric(e.body,t,s),t.push("} else {\n"),t.push("break;\n"),t.push("}\n"),t.push("}\n"),t}},{key:"astAssignmentExpression",value:function(e,t,s){if("%="!==e.operator)return this.astGeneric(e.left,t,s),t.push(e.operator),this.astGeneric(e.right,t,s),t;this.astGeneric(e.left,t,s),t.push("="),t.push("mod("),this.astGeneric(e.left,t,s),t.push(","),this.astGeneric(e.right,t,s),t.push(")")}},{key:"astEmptyStatement",value:function(e,t,s){return t}},{key:"astBlockStatement",value:function(e,t,s){t.push("{\n");for(var r=0;r<e.body.length;r++)this.astGeneric(e.body[r],t,s);return t.push("}\n"),t}},{key:"astExpressionStatement",value:function(e,t,s){return this.astGeneric(e.expression,t,s),t.push(";\n"),t}},{key:"astVariableDeclaration",value:function(e,t,s){t.push("float ");for(var r=0;r<e.declarations.length;r++)r>0&&t.push(","),this.astGeneric(e.declarations[r],t,s);return t.push(";"),t}},{key:"astVariableDeclarator",value:function(e,t,s){return this.astGeneric(e.id,t,s),null!==e.init&&(t.push("="),this.astGeneric(e.init,t,s)),t}},{key:"astIfStatement",value:function(e,t,s){return t.push("if ("),this.astGeneric(e.test,t,s),t.push(")"),"BlockStatement"===e.consequent.type?this.astGeneric(e.consequent,t,s):(t.push(" {\n"),this.astGeneric(e.consequent,t,s),t.push("\n}\n")),e.alternate&&(t.push("else "),"BlockStatement"===e.alternate.type?this.astGeneric(e.alternate,t,s):(t.push(" {\n"),this.astGeneric(e.alternate,t,s),t.push("\n}\n"))),t}},{key:"astBreakStatement",value:function(e,t,s){return t.push("break;\n"),t}},{key:"astContinueStatement",value:function(e,t,s){return t.push("continue;\n"),t}},{key:"astLogicalExpression",value:function(e,t,s){return t.push("("),this.astGeneric(e.left,t,s),t.push(e.operator),this.astGeneric(e.right,t,s),t.push(")"),t}},{key:"astUpdateExpression",value:function(e,t,s){return e.prefix?(t.push(e.operator),this.astGeneric(e.argument,t,s)):(this.astGeneric(e.argument,t,s),t.push(e.operator)),t}},{key:"astUnaryExpression",value:function(e,t,s){return e.prefix?(t.push(e.operator),this.astGeneric(e.argument,t,s)):(this.astGeneric(e.argument,t,s),t.push(e.operator)),t}},{key:"astThisExpression",value:function(e,t,s){return t.push("this"),t}},{key:"astMemberExpression",value:function(e,t,s){if(e.computed)if("Identifier"===e.object.type){var r=e.object.name,n=(s.functionName,!1);if(s.paramNames){var i=s.paramNames.indexOf(r);i>=0&&"float"===s.paramTypes[i]&&(n=!0)}n?(this.astGeneric(e.object,t,s),t.push("[int("),this.astGeneric(e.property,t,s),t.push(")]")):(t.push("get("),this.astGeneric(e.object,t,s),t.push(", vec2("),this.astGeneric(e.object,t,s),t.push("Size[0],"),this.astGeneric(e.object,t,s),t.push("Size[1]), vec3("),this.astGeneric(e.object,t,s),t.push("Dim[0],"),this.astGeneric(e.object,t,s),t.push("Dim[1],"),this.astGeneric(e.object,t,s),t.push("Dim[2]"),t.push("), "),this.astGeneric(e.property,t,s),t.push(")"))}else{this.astGeneric(e.object,t,s);var a=t.pop();t.push(","),this.astGeneric(e.property,t,s),t.push(a)}else{var u=this.astMemberExpressionUnroll(e),o=u.toLowerCase();switch(0===u.indexOf(constantsPrefix)&&(u="constants_"+u.slice(constantsPrefix.length)),o){case"this.thread.x":t.push("threadId.x");break;case"this.thread.y":t.push("threadId.y");break;case"this.thread.z":t.push("threadId.z");break;case"this.output.x":t.push(this.output[0]+".0");break;case"this.output.y":t.push(this.output[1]+".0");break;case"this.output.z":t.push(this.output[2]+".0");break;default:t.push(u)}}return t}},{key:"astSequenceExpression",value:function(e,t,s){for(var r=0;r<e.expressions.length;r++)r>0&&t.push(","),this.astGeneric(e.expressions,t,s);return t}},{key:"astCallExpression",value:function(e,t,s){if(e.callee){var r=this.astMemberExpressionUnroll(e.callee);0===r.indexOf(jsMathPrefix)&&(r=r.slice(jsMathPrefix.length)),0===r.indexOf(localPrefix)&&(r=r.slice(localPrefix.length)),s.calledFunctions.indexOf(r)<0&&s.calledFunctions.push(r),s.hasOwnProperty("funcName")||(s.calledFunctionsArguments[r]=[]);var n=[];s.calledFunctionsArguments[r].push(n),t.push(r),t.push("(");for(var i=0;i<e.arguments.length;++i){var a=e.arguments[i];if(i>0&&t.push(", "),this.astGeneric(a,t,s),"Identifier"===a.type){var u=s.paramNames.indexOf(a.name);-1===u?n.push(null):n.push({name:a.name,type:s.paramTypes[u]})}else n.push(null)}return t.push(")"),t}throw this.astErrorOutput("Unknown CallExpression",e,s)}},{key:"astArrayExpression",value:function(e,t,s){var r=e.elements.length;t.push("float["+r+"](");for(var n=0;n<r;++n){n>0&&t.push(", ");var i=e.elements[n];this.astGeneric(i,t,s)}return t.push(")"),t}},{key:"getFunctionPrototypeString",value:function(){return this.webGlFunctionPrototypeString?this.webGlFunctionPrototypeString:this.webGlFunctionPrototypeString=this.generate()}},{key:"build",value:function(){return this.getFunctionPrototypeString().length>0}}],[{key:"astFunctionPrototype",value:function(e,t,s){if(s.isRootKernel||s.isSubKernel)return t;t.push(s.returnType),t.push(" "),t.push(s.functionName),t.push("(");for(var r=0;r<s.paramNames.length;++r)r>0&&t.push(", "),t.push(s.paramTypes[r]),t.push(" "),t.push("user_"),t.push(s.paramNames[r]);return t.push(");\n"),t}}]),t}(FunctionNodeBase);
},{"../../core/utils":75,"../function-node-base":57}],63:[function(require,module,exports){
"use strict";var utils=require("../../core/utils"),kernelRunShortcut=require("../kernel-run-shortcut");module.exports=function(t,n){return"() => {\n "+kernelRunShortcut.toString()+";\n const utils = {\n allPropertiesOf: function "+utils.allPropertiesOf.toString()+",\n clone: function "+utils.clone.toString()+",\n splitArray: function "+utils.splitArray.toString()+",\n getArgumentType: function "+utils.getArgumentType.toString()+",\n getDimensions: function "+utils.getDimensions.toString()+",\n dimToTexSize: function "+utils.dimToTexSize.toString()+",\n copyFlatten: function "+utils.copyFlatten.toString()+",\n flatten: function "+utils.flatten.toString()+",\n systemEndianness: '"+utils.systemEndianness()+"',\n initWebGl: function "+utils.initWebGl.toString()+",\n isArray: function "+utils.isArray.toString()+"\n };\n class "+(n||"Kernel")+" {\n constructor() {\n this.argumentsLength = 0;\n this._canvas = null;\n this._webGl = null;\n this.built = false;\n this.program = null;\n this.paramNames = "+JSON.stringify(t.paramNames)+";\n this.paramTypes = "+JSON.stringify(t.paramTypes)+";\n this.texSize = "+JSON.stringify(t.texSize)+";\n this.output = "+JSON.stringify(t.output)+";\n this.compiledFragShaderString = `"+t.compiledFragShaderString+"`;\n\t\t this.compiledVertShaderString = `"+t.compiledVertShaderString+"`;\n\t\t this.programUniformLocationCache = {};\n\t\t this.textureCache = {};\n\t\t this.subKernelOutputTextures = null;\n }\n "+t._getFragShaderString.toString()+"\n "+t._getVertShaderString.toString()+"\n validateOptions() {}\n setupParams() {}\n setCanvas(canvas) { this._canvas = canvas; return this; }\n setWebGl(webGl) { this._webGl = webGl; return this; }\n "+t.getUniformLocation.toString()+"\n "+t.setupParams.toString()+"\n "+t.build.toString()+"\n\t\t "+t.run.toString()+"\n\t\t "+t._addArgument.toString()+"\n\t\t "+t.getArgumentTexture.toString()+"\n\t\t "+t.getTextureCache.toString()+"\n\t\t "+t.getOutputTexture.toString()+"\n\t\t "+t.renderOutput.toString()+"\n };\n return kernelRunShortcut(new Kernel());\n };"};
},{"../../core/utils":75,"../kernel-run-shortcut":59}],64:[function(require,module,exports){
"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),KernelBase=require("../kernel-base"),utils=require("../../core/utils"),Texture=require("../../core/texture"),fragShaderString=require("./shader-frag"),vertShaderString=require("./shader-vert"),kernelString=require("./kernel-string"),canvases=[],maxTexSizes={};module.exports=function(e){function t(e,r){_classCallCheck(this,t);var i=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,r));return i.textureCache={},i.threadDim={},i.programUniformLocationCache={},i.framebuffer=null,i.buffer=null,i.program=null,i.outputToTexture=r.outputToTexture,i.endianness=utils.systemEndianness(),i.subKernelOutputTextures=null,i.subKernelOutputVariableNames=null,i.argumentsLength=0,i.ext=null,i.compiledFragShaderString=null,i.compiledVertShaderString=null,i.extDrawBuffersMap=null,i.outputTexture=null,i.maxTexSize=null,i._webGl||(i._webGl=utils.initWebGl(i.getCanvas())),i}return _inherits(t,e),_createClass(t,[{key:"validateOptions",value:function(){var e=utils.isFloatReadPixelsSupported();if(!0===this.floatTextures&&!utils.OES_texture_float)throw new Error("Float textures are not supported on this browser");if(!0===this.floatOutput&&!0!==this.floatOutputForce&&!e)throw new Error("Float texture outputs are not supported on this browser");if(void 0===this.floatTextures&&utils.OES_texture_float&&(this.floatTextures=!0,this.floatOutput=e),!this.output||0===this.output.length){if(1!==arguments.length)throw new Error("Auto output only supported for kernels with only one input");var t=utils.getArgumentType(arguments[0]);if("Array"===t)this.output=utils.getDimensions(t);else{if("Texture"!==t)throw new Error("Auto output not supported for input type: "+t);this.output=arguments[0].output}}if(this.texSize=utils.dimToTexSize({floatTextures:this.floatTextures,floatOutput:this.floatOutput},this.output,!0),this.graphical){if(2!==this.output.length)throw new Error("Output must have 2 dimensions on graphical mode");this.floatOutput&&(this.floatOutput=!1,console.warn("Cannot use graphical mode and float output at the same time")),this.texSize=utils.clone(this.output)}else void 0===this.floatOutput&&utils.OES_texture_float&&(this.floatOutput=!0)}},{key:"updateMaxTexSize",value:function(){var e=this.texSize,t=this._canvas;if(null===this.maxTexSize){var r=canvases.indexOf(t);-1===r&&(r=canvases.length,canvases.push(t),maxTexSizes[r]=[e[0],e[1]]),this.maxTexSize=maxTexSizes[r]}this.maxTexSize[0]<e[0]&&(this.maxTexSize[0]=e[0]),this.maxTexSize[1]<e[1]&&(this.maxTexSize[1]=e[1])}},{key:"build",value:function(){this.validateOptions(),this.setupParams(arguments),this.updateMaxTexSize();var e=this.texSize,t=this._webGl,r=this._canvas;t.enable(t.SCISSOR_TEST),t.viewport(0,0,this.maxTexSize[0],this.maxTexSize[1]),r.width=this.maxTexSize[0],r.height=this.maxTexSize[1];for(var i=this.threadDim=utils.clone(this.output);i.length<3;)i.push(1);this.functionBuilder&&this._addKernels();var n=this._getVertShaderString(arguments),u=t.createShader(t.VERTEX_SHADER);t.shaderSource(u,n),t.compileShader(u);var s=this._getFragShaderString(arguments),a=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(a,s),t.compileShader(a),!t.getShaderParameter(u,t.COMPILE_STATUS))throw console.log(n),console.error("An error occurred compiling the shaders: "+t.getShaderInfoLog(u)),new Error("Error compiling vertex shader");if(!t.getShaderParameter(a,t.COMPILE_STATUS))throw console.log(s),console.error("An error occurred compiling the shaders: "+t.getShaderInfoLog(a)),new Error("Error compiling fragment shader");this.debug&&(console.log("Options:"),console.dir(this),console.log("GLSL Shader Output:"),console.log(s));var o=this.program=t.createProgram();t.attachShader(o,u),t.attachShader(o,a),t.linkProgram(o),this.framebuffer=t.createFramebuffer(),this.framebuffer.width=e[0],this.framebuffer.height=e[1];var h=new Float32Array([-1,-1,1,-1,-1,1,1,1]),l=new Float32Array([0,0,1,0,0,1,1,1]),T=h.byteLength,f=this.buffer;f?t.bindBuffer(t.ARRAY_BUFFER,f):(f=this.buffer=t.createBuffer(),t.bindBuffer(t.ARRAY_BUFFER,f),t.bufferData(t.ARRAY_BUFFER,h.byteLength+l.byteLength,t.STATIC_DRAW)),t.bufferSubData(t.ARRAY_BUFFER,0,h),t.bufferSubData(t.ARRAY_BUFFER,T,l);var p=t.getAttribLocation(this.program,"aPos");t.enableVertexAttribArray(p),t.vertexAttribPointer(p,2,t.FLOAT,t.FALSE,0,0);var g=t.getAttribLocation(this.program,"aTexCoord");if(t.enableVertexAttribArray(g),t.vertexAttribPointer(g,2,t.FLOAT,t.FALSE,0,T),this.setupOutputTexture(),null!==this.subKernelOutputTextures)for(var c=this.extDrawBuffersMap=[t.COLOR_ATTACHMENT0],E=0;E<this.subKernelOutputTextures.length;E++){var _=this.subKernelOutputTextures[E];c.push(t.COLOR_ATTACHMENT0+E+1),t.activeTexture(t.TEXTURE0+arguments.length+E),t.bindTexture(t.TEXTURE_2D,_),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),this.floatOutput?t.texImage2D(t.TEXTURE_2D,0,t.RGBA,e[0],e[1],0,t.RGBA,t.FLOAT,null):t.texImage2D(t.TEXTURE_2D,0,t.RGBA,e[0],e[1],0,t.RGBA,t.UNSIGNED_BYTE,null)}}},{key:"run",value:function(){null===this.program&&this.build.apply(this,arguments);var e=this.paramNames,t=this.paramTypes,r=this.texSize,i=this._webGl;if(i.useProgram(this.program),i.scissor(0,0,r[0],r[1]),!this.hardcodeConstants){var n=this.getUniformLocation("uOutputDim");i.uniform3fv(n,this.threadDim);var u=this.getUniformLocation("uTexSize");i.uniform2fv(u,r)}var s=this.getUniformLocation("ratio");i.uniform2f(s,r[0]/this.maxTexSize[0],r[1]/this.maxTexSize[1]),this.argumentsLength=0;for(var a=0;a<e.length;a++)this._addArgument(arguments[a],t[a],e[a]);if(this.graphical)return i.bindRenderbuffer(i.RENDERBUFFER,null),i.bindFramebuffer(i.FRAMEBUFFER,null),void i.drawArrays(i.TRIANGLE_STRIP,0,4);i.bindFramebuffer(i.FRAMEBUFFER,this.framebuffer);var o=this.outputTexture;if(i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,o,0),null!==this.subKernelOutputTextures){for(var h=0;h<this.subKernelOutputTextures.length;h++){var l=this.subKernelOutputTextures[h];i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+h+1,i.TEXTURE_2D,l,0)}this.ext.drawBuffersWEBGL(this.extDrawBuffersMap)}if(i.drawArrays(i.TRIANGLE_STRIP,0,4),null!==this.subKernelOutputTextures){if(null!==this.subKernels){var T=[];T.result=this.renderOutput(o);for(var f=0;f<this.subKernels.length;f++)T.push(new Texture(this.subKernelOutputTextures[f],r,this.output,this._webGl));return T}if(null!==this.subKernelProperties){var p={result:this.renderOutput(o)},g=0;for(var c in this.subKernelProperties)this.subKernelProperties.hasOwnProperty(c)&&(p[c]=new Texture(this.subKernelOutputTextures[g],r,this.output,this._webGl),g++);return p}}return this.renderOutput(o)}},{key:"renderOutput",value:function(e){var t=this.texSize,r=this._webGl,i=this.threadDim,n=this.output;if(this.outputToTexture)return new Texture(e,t,n,this._webGl);var u=void 0;if(this.floatOutput)u=new Float32Array(t[0]*t[1]*4),r.readPixels(0,0,t[0],t[1],r.RGBA,r.FLOAT,u);else{var s=new Uint8Array(t[0]*t[1]*4);r.readPixels(0,0,t[0],t[1],r.RGBA,r.UNSIGNED_BYTE,s),u=new Float32Array(s.buffer)}if(u=u.subarray(0,i[0]*i[1]*i[2]),1===n.length)return u;if(2===n.length)return utils.splitArray(u,n[0]);if(3===n.length){return utils.splitArray(u,n[0]*n[1]).map(function(e){return utils.splitArray(e,n[0])})}}},{key:"getOutputTexture",value:function(){return this.getTextureCache("OUTPUT")}},{key:"detachOutputTexture",value:function(){this.detachTextureCache("OUTPUT")}},{key:"setupOutputTexture",value:function(){var e=this._webGl,t=this.texSize;this.detachOutputTexture(),this.outputTexture=this.getOutputTexture(),e.activeTexture(e.TEXTURE0+this.paramNames.length),e.bindTexture(e.TEXTURE_2D,this.outputTexture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),this.floatOutput?e.texImage2D(e.TEXTURE_2D,0,e.RGBA,t[0],t[1],0,e.RGBA,e.FLOAT,null):e.texImage2D(e.TEXTURE_2D,0,e.RGBA,t[0],t[1],0,e.RGBA,e.UNSIGNED_BYTE,null)}},{key:"getArgumentTexture",value:function(e){return this.getTextureCache("ARGUMENT_"+e)}},{key:"getSubKernelTexture",value:function(e){return this.getTextureCache("SUB_KERNEL_"+e)}},{key:"getTextureCache",value:function(e){return this.outputToTexture?this._webGl.createTexture():this.textureCache.hasOwnProperty(e)?this.textureCache[e]:this.textureCache[e]=this._webGl.createTexture()}},{key:"detachTextureCache",value:function(e){delete this.textureCache[e]}},{key:"getUniformLocation",value:function(e){var t=this.programUniformLocationCache[e];return t||(t=this._webGl.getUniformLocation(this.program,e),this.programUniformLocationCache[e]=t),t}},{key:"_getFragShaderArtifactMap",value:function(e){return{HEADER:this._getHeaderString(),LOOP_MAX:this._getLoopMaxString(),CONSTANTS:this._getConstantsString(),DECODE32_ENDIANNESS:this._getDecode32EndiannessString(),ENCODE32_ENDIANNESS:this._getEncode32EndiannessString(),GET_WRAPAROUND:this._getGetWraparoundString(),GET_TEXTURE_CHANNEL:this._getGetTextureChannelString(),GET_TEXTURE_INDEX:this._getGetTextureIndexString(),GET_RESULT:this._getGetResultString(),MAIN_PARAMS:this._getMainParamsString(e),MAIN_CONSTANTS:this._getMainConstantsString(),KERNEL:this._getKernelString(),MAIN_RESULT:this._getMainResultString()}}},{key:"_addArgument",value:function(e,t,r){var i=this._webGl,n=this.getArgumentTexture(r);switch(e instanceof Texture&&(t="Texture"),t){case"Array":var u=utils.getDimensions(e,!0),s=utils.dimToTexSize({floatTextures:this.floatTextures,floatOutput:this.floatOutput},u);i.activeTexture(i.TEXTURE0+this.argumentsLength),i.bindTexture(i.TEXTURE_2D,n),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.NEAREST);var a=s[0]*s[1];this.floatTextures&&(a*=4);var o=new Float32Array(a);utils.flattenTo(e,o);var h=void 0;this.floatTextures?i.texImage2D(i.TEXTURE_2D,0,i.RGBA,s[0],s[1],0,i.RGBA,i.FLOAT,o):(h=new Uint8Array(o.buffer),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,s[0],s[1],0,i.RGBA,i.UNSIGNED_BYTE,h));var l=this.getUniformLocation("user_"+r),T=this.getUniformLocation("user_"+r+"Size"),f=this.getUniformLocation("user_"+r+"Dim");this.hardcodeConstants||(i.uniform3fv(f,u),i.uniform2fv(T,s)),i.uniform1i(l,this.argumentsLength);break;case"Number":var p=this.getUniformLocation("user_"+r);i.uniform1f(p,e);break;case"Input":var g=e,c=g.size,E=utils.dimToTexSize({floatTextures:this.floatTextures,floatOutput:this.floatOutput},c);i.activeTexture(i.TEXTURE0+this.argumentsLength),i.bindTexture(i.TEXTURE_2D,n),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.NEAREST);var _=E[0]*E[1],x=void 0;if(this.floatTextures?(_*=4,x=new Float32Array(_),x.set(g.value)):x=g.value,this.floatTextures)i.texImage2D(i.TEXTURE_2D,0,i.RGBA,E[0],E[1],0,i.RGBA,i.FLOAT,x);else{var d=new Uint8Array(x.buffer);i.texImage2D(i.TEXTURE_2D,0,i.RGBA,E[0],E[1],0,i.RGBA,i.UNSIGNED_BYTE,d)}var m=this.getUniformLocation("user_"+r),S=this.getUniformLocation("user_"+r+"Size"),b=this.getUniformLocation("user_"+r+"Dim");this.hardcodeConstants||(i.uniform3fv(b,c),i.uniform2fv(S,E)),i.uniform1i(m,this.argumentsLength);break;case"Texture":var v=e,R=utils.getDimensions(v,!0),A=v.size;v.texture===this.outputTexture&&this.setupOutputTexture(),i.activeTexture(i.TEXTURE0+this.argumentsLength),i.bindTexture(i.TEXTURE_2D,v.texture);var O=this.getUniformLocation("user_"+r),D=this.getUniformLocation("user_"+r+"Size"),U=this.getUniformLocation("user_"+r+"Dim");i.uniform3fv(U,R),i.uniform2fv(D,A),i.uniform1i(O,this.argumentsLength);break;default:throw new Error("Input type not supported (WebGL): "+e)}this.argumentsLength++}},{key:"_getHeaderString",value:function(){return null!==this.subKernels||null!==this.subKernelProperties?"#extension GL_EXT_draw_buffers : require\n":""}},{key:"_getLoopMaxString",value:function(){return this.loopMaxIterations?" "+parseInt(this.loopMaxIterations)+".0;\n":" 1000.0;\n"}},{key:"_getConstantsString",value:function(){var e=[],t=this.threadDim,r=this.texSize;return this.hardcodeConstants?e.push("highp vec3 uOutputDim = vec3("+t[0]+","+t[1]+", "+t[2]+")","highp vec2 uTexSize = vec2("+r[0]+", "+r[1]+")"):e.push("uniform highp vec3 uOutputDim","uniform highp vec2 uTexSize"),this._linesToString(e)}},{key:"_getTextureCoordinate",value:function(){var e=this.subKernelOutputVariableNames;return null===e||e.length<1?"varying highp vec2 vTexCoord;\n":"out highp vec2 vTexCoord;\n"}},{key:"_getDecode32EndiannessString",value:function(){return"LE"===this.endianness?"":" rgba.rgba = rgba.abgr;\n"}},{key:"_getEncode32EndiannessString",value:function(){return"LE"===this.endianness?"":" rgba.rgba = rgba.abgr;\n"}},{key:"_getGetWraparoundString",value:function(){return this.wraparound?" xyz = mod(xyz, texDim);\n":""}},{key:"_getGetTextureChannelString",value:function(){return this.floatTextures?this._linesToString([" int channel = int(integerMod(index, 4.0))"," index = float(int(index) / 4)"]):""}},{key:"_getGetTextureIndexString",value:function(){return this.floatTextures?" index = float(int(index)/4);\n":""}},{key:"_getGetResultString",value:function(){return this.floatTextures?this._linesToString([" if (channel == 0) return texel.r"," if (channel == 1) return texel.g"," if (channel == 2) return texel.b"," if (channel == 3) return texel.a"]):" return decode32(texel);\n"}},{key:"_getMainParamsString",value:function(e){for(var t=[],r=this.paramTypes,i=this.paramNames,n=0;n<i.length;n++){var u=e[n],s=i[n],a=r[n];if(this.hardcodeConstants)if("Array"===a||"Texture"===a){var o=utils.getDimensions(u,!0),h=utils.dimToTexSize({floatTextures:this.floatTextures,floatOutput:this.floatOutput},o);t.push("uniform highp sampler2D user_"+s,"highp vec2 user_"+s+"Size = vec2("+h[0]+".0, "+h[1]+".0)","highp vec3 user_"+s+"Dim = vec3("+o[0]+".0, "+o[1]+".0, "+o[2]+".0)")}else"Number"===a&&Number.isInteger(u)?t.push("highp float user_"+s+" = "+u+".0"):"Number"===a&&t.push("highp float user_"+s+" = "+u);else"Array"===a||"Texture"===a||"Input"===a?t.push("uniform highp sampler2D user_"+s,"uniform highp vec2 user_"+s+"Size","uniform highp vec3 user_"+s+"Dim"):"Number"===a&&t.push("uniform highp float user_"+s)}return this._linesToString(t)}},{key:"_getMainConstantsString",value:function(){var e=[];if(this.constants)for(var t in this.constants)if(this.constants.hasOwnProperty(t)){var r=parseFloat(this.constants[t]);Number.isInteger(r)?e.push("const float constants_"+t+" = "+parseInt(r)+".0"):e.push("const float constants_"+t+" = "+parseFloat(r))}return this._linesToString(e)}},{key:"_getKernelString",value:function(){var e=[],t=this.subKernelOutputVariableNames;if(null!==t){e.push("highp float kernelResult = 0.0");for(var r=0;r<t.length;r++)e.push("highp float "+t[r]+" = 0.0")}else e.push("highp float kernelResult = 0.0");return this._linesToString(e)+this.functionBuilder.getPrototypeString("kernel")}},{key:"_getMainResultString",value:function(){var e=this.subKernelOutputVariableNames,t=[];if(this.floatOutput&&t.push(" index *= 4.0"),this.graphical)t.push(" threadId = indexTo3D(index, uOutputDim)"," kernel()"," gl_FragColor = actualColor");else if(this.floatOutput)for(var r=["r","g","b","a"],i=0;i<r.length;++i){if(t.push(" threadId = indexTo3D(index, uOutputDim)"),t.push(" kernel()"),e){t.push(" gl_FragData[0]."+r[i]+" = kernelResult");for(var n=0;n<e.length;++n)t.push(" gl_FragData["+(n+1)+"]."+r[i]+" = "+e[n])}else t.push(" gl_FragColor."+r[i]+" = kernelResult");i<r.length-1&&t.push(" index += 1.0")}else if(null!==e){t.push(" threadId = indexTo3D(index, uOutputDim)"),t.push(" kernel()"),t.push(" gl_FragData[0] = encode32(kernelResult)");for(var u=0;u<e.length;u++)t.push(" gl_FragData["+(u+1)+"] = encode32("+e[u]+")")}else t.push(" threadId = indexTo3D(index, uOutputDim)"," kernel()"," gl_FragColor = encode32(kernelResult)");return this._linesToString(t)}},{key:"_linesToString",value:function(e){return e.length>0?e.join(";\n")+";\n":"\n"}},{key:"_replaceArtifacts",value:function(e,t){return e.replace(/[ ]*__([A-Z]+[0-9]*([_]?[A-Z])*)__;\n/g,function(e,r){if(t.hasOwnProperty(r))return t[r];throw"unhandled artifact "+r})}},{key:"_addKernels",value:function(){var e=this.functionBuilder,t=this._webGl;if(e.addFunctions(this.functions,{constants:this.constants,output:this.output}),e.addNativeFunctions(this.nativeFunctions),e.addKernel(this.fnString,{prototypeOnly:!1,constants:this.constants,output:this.output,debug:this.debug,loopMaxIterations:this.loopMaxIterations},this.paramNames,this.paramTypes),null!==this.subKernels){if(!(this.ext=t.getExtension("WEBGL_draw_buffers")))throw new Error("could not instantiate draw buffers extension");this.subKernelOutputTextures=[],this.subKernelOutputVariableNames=[];for(var r=0;r<this.subKernels.length;r++){var i=this.subKernels[r];e.addSubKernel(i,{prototypeOnly:!1,constants:this.constants,output:this.output,debug:this.debug,loopMaxIterations:this.loopMaxIterations}),this.subKernelOutputTextures.push(this.getSubKernelTexture(r)),this.subKernelOutputVariableNames.push(i.name+"Result")}}else if(null!==this.subKernelProperties){var n=this.ext=t.getExtension("WEBGL_draw_buffers");if(!n)throw new Error("could not instantiate draw buffers extension");this.subKernelOutputTextures=[],this.subKernelOutputVariableNames=[];var u=0;for(var s in this.subKernelProperties)if(this.subKernelProperties.hasOwnProperty(s)){var a=this.subKernelProperties[s];e.addSubKernel(a,{prototypeOnly:!1,constants:this.constants,output:this.output,debug:this.debug,loopMaxIterations:this.loopMaxIterations}),this.subKernelOutputTextures.push(this.getSubKernelTexture(s)),this.subKernelOutputVariableNames.push(a.name+"Result"),u++}}}},{key:"_getFragShaderString",value:function(e){return null!==this.compiledFragShaderString?this.compiledFragShaderString:this.compiledFragShaderString=this._replaceArtifacts(fragShaderString,this._getFragShaderArtifactMap(e))}},{key:"_getVertShaderString",value:function(e){return null!==this.compiledVertShaderString?this.compiledVertShaderString:this.compiledVertShaderString=vertShaderString}},{key:"toString",value:function(){return kernelString(this)}},{key:"addFunction",value:function(e){this.functionBuilder.addFunction(null,e)}}]),t}(KernelBase);
},{"../../core/texture":73,"../../core/utils":75,"../kernel-base":58,"./kernel-string":63,"./shader-frag":66,"./shader-vert":67}],65:[function(require,module,exports){
"use strict";function _classCallCheck(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,r){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!r||"object"!=typeof r&&"function"!=typeof r?e:r}function _inherits(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function, not "+typeof r);e.prototype=Object.create(r&&r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),r&&(Object.setPrototypeOf?Object.setPrototypeOf(e,r):e.__proto__=r)}var _createClass=function(){function e(e,r){for(var t=0;t<r.length;t++){var n=r[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(r,t,n){return t&&e(r.prototype,t),n&&e(r,n),r}}(),RunnerBase=require("../runner-base"),WebGLKernel=require("./kernel"),utils=require("../../core/utils"),WebGLFunctionBuilder=require("./function-builder");module.exports=function(e){function r(e){_classCallCheck(this,r);var t=_possibleConstructorReturn(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,new WebGLFunctionBuilder,e));return t.Kernel=WebGLKernel,t.kernel=null,t}return _inherits(r,e),_createClass(r,[{key:"getMode",value:function(){return"gpu"}}]),r}(RunnerBase);
},{"../../core/utils":75,"../runner-base":60,"./function-builder":61,"./kernel":64}],66:[function(require,module,exports){
"use strict";module.exports="__HEADER__;\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nconst float LOOP_MAX = __LOOP_MAX__;\n#define EPSILON 0.0000001;\n\n__CONSTANTS__;\n\nvarying highp vec2 vTexCoord;\n\nvec4 round(vec4 x) {\n return floor(x + 0.5);\n}\n\nhighp float round(highp float x) {\n return floor(x + 0.5);\n}\n\nvec2 integerMod(vec2 x, float y) {\n vec2 res = floor(mod(x, y));\n return res * step(1.0 - floor(y), -res);\n}\n\nvec3 integerMod(vec3 x, float y) {\n vec3 res = floor(mod(x, y));\n return res * step(1.0 - floor(y), -res);\n}\n\nvec4 integerMod(vec4 x, vec4 y) {\n vec4 res = floor(mod(x, y));\n return res * step(1.0 - floor(y), -res);\n}\n\nhighp float integerMod(highp float x, highp float y) {\n highp float res = floor(mod(x, y));\n return res * (res > floor(y) - 1.0 ? 0.0 : 1.0);\n}\n\nhighp int integerMod(highp int x, highp int y) {\n return int(integerMod(float(x), float(y)));\n}\n\n// Here be dragons!\n// DO NOT OPTIMIZE THIS CODE\n// YOU WILL BREAK SOMETHING ON SOMEBODY'S MACHINE\n// LEAVE IT AS IT IS, LEST YOU WASTE YOUR OWN TIME\nconst vec2 MAGIC_VEC = vec2(1.0, -256.0);\nconst vec4 SCALE_FACTOR = vec4(1.0, 256.0, 65536.0, 0.0);\nconst vec4 SCALE_FACTOR_INV = vec4(1.0, 0.00390625, 0.0000152587890625, 0.0); // 1, 1/256, 1/65536\nhighp float decode32(highp vec4 rgba) {\n __DECODE32_ENDIANNESS__;\n rgba *= 255.0;\n vec2 gte128;\n gte128.x = rgba.b >= 128.0 ? 1.0 : 0.0;\n gte128.y = rgba.a >= 128.0 ? 1.0 : 0.0;\n float exponent = 2.0 * rgba.a - 127.0 + dot(gte128, MAGIC_VEC);\n float res = exp2(round(exponent));\n rgba.b = rgba.b - 128.0 * gte128.x;\n res = dot(rgba, SCALE_FACTOR) * exp2(round(exponent-23.0)) + res;\n res *= gte128.y * -2.0 + 1.0;\n return res;\n}\n\nhighp vec4 encode32(highp float f) {\n highp float F = abs(f);\n highp float sign = f < 0.0 ? 1.0 : 0.0;\n highp float exponent = floor(log2(F));\n highp float mantissa = (exp2(-exponent) * F);\n // exponent += floor(log2(mantissa));\n vec4 rgba = vec4(F * exp2(23.0-exponent)) * SCALE_FACTOR_INV;\n rgba.rg = integerMod(rgba.rg, 256.0);\n rgba.b = integerMod(rgba.b, 128.0);\n rgba.a = exponent*0.5 + 63.5;\n rgba.ba += vec2(integerMod(exponent+127.0, 2.0), sign) * 128.0;\n rgba = floor(rgba);\n rgba *= 0.003921569; // 1/255\n __ENCODE32_ENDIANNESS__;\n return rgba;\n}\n// Dragons end here\n\nhighp float index;\nhighp vec3 threadId;\n\nhighp vec3 indexTo3D(highp float idx, highp vec3 texDim) {\n highp float z = floor(idx / (texDim.x * texDim.y));\n idx -= z * texDim.x * texDim.y;\n highp float y = floor(idx / texDim.x);\n highp float x = integerMod(idx, texDim.x);\n return vec3(x, y, z);\n}\n\nhighp float get(highp sampler2D tex, highp vec2 texSize, highp vec3 texDim, highp float z, highp float y, highp float x) {\n highp vec3 xyz = vec3(x, y, z);\n xyz = floor(xyz + 0.5);\n __GET_WRAPAROUND__;\n highp float index = round(xyz.x + texDim.x * (xyz.y + texDim.y * xyz.z));\n __GET_TEXTURE_CHANNEL__;\n highp float w = round(texSize.x);\n vec2 st = vec2(integerMod(index, w), float(int(index) / int(w))) + 0.5;\n __GET_TEXTURE_INDEX__;\n highp vec4 texel = texture2D(tex, st / texSize);\n __GET_RESULT__;\n}\n\nhighp float get(highp sampler2D tex, highp vec2 texSize, highp vec3 texDim, highp float y, highp float x) {\n return get(tex, texSize, texDim, 0.0, y, x);\n}\n\nhighp float get(highp sampler2D tex, highp vec2 texSize, highp vec3 texDim, highp float x) {\n return get(tex, texSize, texDim, 0.0, 0.0, x);\n}\n\nhighp vec4 actualColor;\nvoid color(float r, float g, float b, float a) {\n actualColor = vec4(r,g,b,a);\n}\n\nvoid color(float r, float g, float b) {\n color(r,g,b,1.0);\n}\n\n__MAIN_PARAMS__;\n__MAIN_CONSTANTS__;\n__KERNEL__;\n\nvoid main(void) {\n index = floor(vTexCoord.s * float(uTexSize.x)) + floor(vTexCoord.t * float(uTexSize.y)) * uTexSize.x;\n __MAIN_RESULT__;\n}";
},{}],67:[function(require,module,exports){
"use strict";module.exports="precision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nattribute highp vec2 aPos;\nattribute highp vec2 aTexCoord;\n\nvarying highp vec2 vTexCoord;\nuniform vec2 ratio;\n\nvoid main(void) {\n gl_Position = vec4((aPos + vec2(1)) * ratio + vec2(-1), 0, 1);\n vTexCoord = aTexCoord;\n}";
},{}],68:[function(require,module,exports){
"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),WebGLKernel=require("./kernel"),utils=require("../../core/utils");module.exports=function(e){function t(){return _classCallCheck(this,t),_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return _inherits(t,e),_createClass(t,[{key:"validateOptions",value:function(){this.texSize=utils.dimToTexSize({floatTextures:this.floatTextures,floatOutput:this.floatOutput},this.output,!0)}}]),t}(WebGLKernel);
},{"../../core/utils":75,"./kernel":64}],69:[function(require,module,exports){
"use strict";var utils=require("./utils");module.exports=function(t,r){var n=r.toString();return new Function("return function "+t+" ("+utils.getParamNamesFromString(n).join(", ")+") {"+utils.getFunctionBodyFromString(n)+"}")()};
},{"./utils":75}],70:[function(require,module,exports){
"use strict";function _classCallCheck(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function e(e,r){for(var n=0;n<r.length;n++){var t=r[n];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,t.key,t)}}return function(r,n,t){return n&&e(r.prototype,n),t&&e(r,t),r}}(),UtilsCore=require("./utils-core");module.exports=function(){function e(){_classCallCheck(this,e)}return _createClass(e,null,[{key:"validateKernelObj",value:function(e){if(null===e)throw"KernelObj being validated is NULL";if("string"==typeof e){try{e=JSON.parse(e)}catch(e){throw console.error(e),"Failed to convert KernelObj from JSON string"}if(null===e)throw"Invalid (NULL) KernelObj JSON string representation"}if(!0!==e.isKernelObj)throw"Failed missing isKernelObj flag check";return e}},{key:"loadKernelObj",value:function(e,r){e=validateKernelObj(e)}}]),e}();
},{"./utils-core":74}],71:[function(require,module,exports){
"use strict";function _classCallCheck(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,r){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!r||"object"!=typeof r&&"function"!=typeof r?e:r}function _inherits(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function, not "+typeof r);e.prototype=Object.create(r&&r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),r&&(Object.setPrototypeOf?Object.setPrototypeOf(e,r):e.__proto__=r)}var _createClass=function(){function e(e,r){for(var n=0;n<r.length;n++){var t=r[n];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,t.key,t)}}return function(r,n,t){return n&&e(r.prototype,n),t&&e(r,t),r}}(),utils=require("./utils"),WebGLRunner=require("../backend/web-gl/runner"),CPURunner=require("../backend/cpu/runner"),WebGLValidatorKernel=require("../backend/web-gl/validator-kernel"),GPUCore=require("./gpu-core"),GPU=function(e){function r(e){_classCallCheck(this,r);var n=_possibleConstructorReturn(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e));e=e||{},n._canvas=e.canvas||null,n._webGl=e.webGl||null;var t=e.mode,u=void 0;if(utils.isWebGlSupported())u=t||"gpu";else{if(t&&"cpu"!==t)throw new Error('A requested mode of "'+t+'" and is not supported');console.warn("Warning: gpu not supported, falling back to cpu support"),u="cpu"}n.kernels=[];var a={canvas:n._canvas,webGl:n._webGl};switch(u){case"cpu":n._runner=new CPURunner(a);break;case"webgl":case"gpu":n._runner=new WebGLRunner(a);break;case"webgl-validator":n._runner=new WebGLRunner(a),n._runner.Kernel=WebGLValidatorKernel;break;default:throw new Error('"'+t+'" mode is not defined')}return n}return _inherits(r,e),_createClass(r,[{key:"createKernel",value:function(e,r){if(void 0===e)throw"Missing fn parameter";if(!utils.isFunction(e)&&"string"!=typeof e)throw"fn parameter not a function";var n=this._runner.buildKernel(e,r||{});return this._canvas||(this._canvas=n.getCanvas()),this._runner.canvas||(this._runner.canvas=n.getCanvas()),this.kernels.push(n),n}},{key:"createKernelMap",value:function(){var e=void 0,r=void 0;"function"==typeof arguments[arguments.length-2]?(e=arguments[arguments.length-2],r=arguments[arguments.length-1]):e=arguments[arguments.length-1],utils.isWebGlDrawBuffersSupported()||(this._runner=new CPURunner(r));var n=this.createKernel(e,r);if(Array.isArray(arguments[0]))for(var t=arguments[0],u=0;u<t.length;u++)n.addSubKernel(t[u]);else{var a=arguments[0];for(var i in a)a.hasOwnProperty(i)&&n.addSubKernelProperty(i,a[i])}return n}},{key:"combineKernels",value:function(){var e=arguments[arguments.length-2],r=arguments[arguments.length-1];if("cpu"===this.getMode())return r;for(var n=arguments[0].getCanvas(),t=arguments[0].getWebGl(),u=0;u<arguments.length-1;u++)arguments[u].setCanvas(n).setWebGl(t).setOutputToTexture(!0);return function(){r.apply(null,arguments);var n=e.texSize,t=e.getWebGl(),u=e.threadDim,a=void 0;if(e.floatOutput)a=new Float32Array(n[0]*n[1]*4),t.readPixels(0,0,n[0],n[1],t.RGBA,t.FLOAT,a);else{var i=new Uint8Array(n[0]*n[1]*4);t.readPixels(0,0,n[0],n[1],t.RGBA,t.UNSIGNED_BYTE,i),a=new Float32Array(i.buffer)}if(a=a.subarray(0,u[0]*u[1]*u[2]),1===e.output.length)return a;if(2===e.output.length)return utils.splitArray(a,e.output[0]);if(3===e.output.length){return utils.splitArray(a,e.output[0]*e.output[1]).map(function(r){return utils.splitArray(r,e.output[0])})}}}},{key:"addFunction",value:function(e,r,n){return this._runner.functionBuilder.addFunction(null,e,r,n),this}},{key:"addNativeFunction",value:function(e,r){return this._runner.functionBuilder.addNativeFunction(e,r),this}},{key:"getMode",value:function(){return this._runner.getMode()}},{key:"isWebGlSupported",value:function(){return utils.isWebGlSupported()}},{key:"getCanvas",value:function(){return this._canvas}},{key:"getWebGl",value:function(){return this._webGl}}]),r}(GPUCore);Object.assign(GPU,GPUCore),module.exports=GPU;
},{"../backend/cpu/runner":55,"../backend/web-gl/runner":65,"../backend/web-gl/validator-kernel":68,"./gpu-core":70,"./utils":75}],72:[function(require,module,exports){
"use strict";function _classCallCheck(s,i){if(!(s instanceof i))throw new TypeError("Cannot call a class as a function")}module.exports=function s(i,e){if(_classCallCheck(this,s),this.value=i,Array.isArray(e)){this.size=[];for(var t=0;t<e.length;t++)this.size[t]=e[t];for(;this.size.length<3;)this.size.push(1)}else e.z?this.size=[e.x,e.y,e.z]:e.y?this.size=[e.x,e.y,1]:this.size=[e.x,1,1]};
},{}],73:[function(require,module,exports){
"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),gpu=null;module.exports=function(){function e(t,r,n,i){_classCallCheck(this,e),this.texture=t,this.size=r,this.output=n,this.webGl=i,this.kernel=null}return _createClass(e,[{key:"toArray",value:function(e){if(!e)throw new Error("You need to pass the GPU object for toArray to work.");return this.kernel?this.kernel(this):(this.kernel=e.createKernel(function(e){return e[this.thread.z][this.thread.y][this.thread.x]}).setOutput(this.output),this.kernel(this))}},{key:"delete",value:function(){return this.webGl.deleteTexture(this.texture)}}]),e}();
},{}],74:[function(require,module,exports){
"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),UtilsCore=function(){function e(){_classCallCheck(this,e)}return _createClass(e,null,[{key:"isCanvas",value:function(e){return null!==e&&e.nodeName&&e.getContext&&"CANVAS"===e.nodeName.toUpperCase()}},{key:"isCanvasSupported",value:function(){return _isCanvasSupported}},{key:"initCanvas",value:function(){if(!_isCanvasSupported)return null;var e=document.createElement("canvas");return e.width=2,e.height=2,e}},{key:"isWebGl",value:function(e){return e&&"function"==typeof e.getExtension}},{key:"isWebGlSupported",value:function(){return _isWebGlSupported}},{key:"isWebGlDrawBuffersSupported",value:function(){return _isWebGlDrawBuffersSupported}},{key:"initWebGlDefaultOptions",value:function(){return{alpha:!1,depth:!1,antialias:!1}}},{key:"initWebGl",value:function(t){if((void 0!==_isCanvasSupported||null===t)&&!_isCanvasSupported)return null;if(!e.isCanvas(t))throw new Error("Invalid canvas object - "+t);var n=t.getContext("experimental-webgl",e.initWebGlDefaultOptions())||t.getContext("webgl",e.initWebGlDefaultOptions());return n&&(n.OES_texture_float=n.getExtension("OES_texture_float"),n.OES_texture_float_linear=n.getExtension("OES_texture_float_linear"),n.OES_element_index_uint=n.getExtension("OES_element_index_uint")),n}}]),e}(),_isCanvasSupported="undefined"!=typeof document&&UtilsCore.isCanvas(document.createElement("canvas")),_testingWebGl=UtilsCore.initWebGl(UtilsCore.initCanvas()),_isWebGlSupported=UtilsCore.isWebGl(_testingWebGl),_isWebGlDrawBuffersSupported=_isWebGlSupported&&Boolean(_testingWebGl.getExtension("WEBGL_draw_buffers"));_isWebGlSupported?(UtilsCore.OES_texture_float=_testingWebGl.OES_texture_float,UtilsCore.OES_texture_float_linear=_testingWebGl.OES_texture_float_linear,UtilsCore.OES_element_index_uint=_testingWebGl.OES_element_index_uint):(UtilsCore.OES_texture_float=!1,UtilsCore.OES_texture_float_linear=!1,UtilsCore.OES_element_index_uint=!1),module.exports=UtilsCore;
},{}],75:[function(require,module,exports){
"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_createClass=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),UtilsCore=require("./utils-core"),Input=require("./input"),Texture=require("./texture"),FUNCTION_NAME=/function ([^(]*)/,STRIP_COMMENTS=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,ARGUMENT_NAMES=/([^\s,]+)/g,_systemEndianness=function(){var e=new ArrayBuffer(4),t=new Uint32Array(e),n=new Uint8Array(e);if(t[0]=3735928559,239===n[0])return"LE";if(222===n[0])return"BE";throw new Error("unknown endianness")}(),_isFloatReadPixelsSupported=null,_isMixedIdentifiersSupported=function(){try{return new Function("let i = 1; const j = 1;")(),!0}catch(e){return!1}}(),Utils=function(e){function t(){return _classCallCheck(this,t),_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return _inherits(t,e),_createClass(t,null,[{key:"systemEndianness",value:function(){return _systemEndianness}},{key:"isFunction",value:function(e){return"function"==typeof e}},{key:"isFunctionString",value:function(e){return null!==e&&"function"===e.toString().slice(0,"function".length).toLowerCase()}},{key:"getFunctionNameFromString",value:function(e){return FUNCTION_NAME.exec(e)[1]}},{key:"getFunctionBodyFromString",value:function(e){return e.substring(e.indexOf("{")+1,e.lastIndexOf("}"))}},{key:"getParamNamesFromString",value:function(e){var t=e.toString().replace(STRIP_COMMENTS,""),n=t.slice(t.indexOf("(")+1,t.indexOf(")")).match(ARGUMENT_NAMES);return null===n&&(n=[]),n}},{key:"clone",value:function(e){if(null===e||"object"!==(void 0===e?"undefined":_typeof(e))||e.hasOwnProperty("isActiveClone"))return e;var n=e.constructor();for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e.isActiveClone=null,n[r]=t.clone(e[r]),delete e.isActiveClone);return n}},{key:"newPromise",value:function(e){var t=Promise||small_promise;if(null===t)throw TypeError("Browser is missing Promise implementation. Consider adding small_promise.js polyfill");return new t(e)}},{key:"functionBinder",value:function(e,t){return e.bind?e.bind(t):function(){var n=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);return e.apply(t,n)}}},{key:"isArray",value:function(e){return!isNaN(e.length)}},{key:"getArgumentType",value:function(e){return t.isArray(e)?"Array":"number"==typeof e?"Number":e instanceof Texture?"Texture":e instanceof Input?"Input":"Unknown"}},{key:"isFloatReadPixelsSupported",value:function(){if(null!==_isFloatReadPixelsSupported)return _isFloatReadPixelsSupported;var e=require("../index"),t=new e({mode:"webgl-validator"}).createKernel(function(){return 1},{output:[2],floatTextures:!0,floatOutput:!0,floatOutputForce:!0})();return _isFloatReadPixelsSupported=1===t[0]}},{key:"isMixedIdentifiersSupported",value:function(){return _isMixedIdentifiersSupported}},{key:"dimToTexSize",value:function(e,t,n){for(var r=t[0],o=1;o<t.length;o++)r*=t[o];!e.floatTextures||n&&!e.floatOutput||(r=Math.ceil(r/4));var i=Math.ceil(Math.sqrt(r));return[i,i]}},{key:"getDimensions",value:function(e,n){var r=void 0;if(t.isArray(e)){for(var o=[],i=e;t.isArray(i);)o.push(i.length),i=i[0];r=o.reverse()}else if(e instanceof Texture)r=e.output;else{if(!(e instanceof Input))throw"Unknown dimensions of "+e;r=e.size}if(n)for(r=t.clone(r);r.length<3;)r.push(1);return r}},{key:"pad",value:function(e,t){function n(e){return Array.apply(null,new Array(e)).map(Number.prototype.valueOf,0)}for(var r=e.length+2*t,o=e.map(function(e){return[].concat(n(t),e,n(t))}),i=0;i<t;i++)o=[].concat([n(r)],o,[n(r)]);return o}},{key:"flatten2dArrayTo",value:function(e,t){for(var n=0,r=0;r<e.length;r++)t.set(e[r],n),n+=e[r].length}},{key:"flatten3dArrayTo",value:function(e,t){for(var n=0,r=0;r<e.length;r++)for(var o=0;o<e[r].length;o++)t.set(e[r][o],n),n+=e[r][o].length}},{key:"flattenTo",value:function(e,n){t.isArray(e[0])?t.isArray(e[0][0])?t.flatten3dArrayTo(e,n):t.flatten2dArrayTo(e,n):n.set(e)}},{key:"splitArray",value:function(e,t){for(var n=[],r=0;r<e.length;r+=t)n.push(Array.prototype.slice.call(e,r,r+t));return n}},{key:"getAstString",value:function(e,t){var n=Array.isArray(e)?e:e.split(/\r?\n/g),r=t.loc.start,o=t.loc.end,i=[];i.push(n[r.line-1].slice(r.column));for(var u=r.line;u<o.line-1;u++)i.push(n[u]);return i.push(n[o.line-1].slice(0,o.column)),i.join("\n")}},{key:"allPropertiesOf",value:function(e){var t=[];do{t.push.apply(t,Object.getOwnPropertyNames(e))}while(e=Object.getPrototypeOf(e));return t}}]),t}(UtilsCore);Object.assign(Utils,UtilsCore),module.exports=Utils;
},{"../index":76,"./input":72,"./texture":73,"./utils-core":74}],76:[function(require,module,exports){
"use strict";var GPU=require("./core/gpu"),alias=require("./core/alias"),utils=require("./core/utils"),Input=require("./core/input"),Texture=require("./core/texture"),CPUFunctionBuilder=require("./backend/cpu/function-builder"),CPUFunctionNode=require("./backend/cpu/function-node"),CPUKernel=require("./backend/cpu/kernel"),CPURunner=require("./backend/cpu/runner"),WebGLFunctionBuilder=require("./backend/web-gl/function-builder"),WebGLFunctionNode=require("./backend/web-gl/function-node"),WebGLKernel=require("./backend/web-gl/kernel"),WebGLRunner=require("./backend/web-gl/runner");GPU.alias=alias,GPU.utils=utils,GPU.Texture=Texture,GPU.Input=Input,GPU.input=function(e,n){return new Input(e,n)},GPU.CPUFunctionBuilder=CPUFunctionBuilder,GPU.CPUFunctionNode=CPUFunctionNode,GPU.CPUKernel=CPUKernel,GPU.CPURunner=CPURunner,GPU.WebGLFunctionBuilder=WebGLFunctionBuilder,GPU.WebGLFunctionNode=WebGLFunctionNode,GPU.WebGLKernel=WebGLKernel,GPU.WebGLRunner=WebGLRunner,"undefined"!=typeof module&&(module.exports=GPU),"undefined"!=typeof window&&(window.GPU=GPU);
},{"./backend/cpu/function-builder":51,"./backend/cpu/function-node":52,"./backend/cpu/kernel":54,"./backend/cpu/runner":55,"./backend/web-gl/function-builder":61,"./backend/web-gl/function-node":62,"./backend/web-gl/kernel":64,"./backend/web-gl/runner":65,"./core/alias":69,"./core/gpu":71,"./core/input":72,"./core/texture":73,"./core/utils":75}],77:[function(require,module,exports){
exports.read=function(a,o,t,r,h){var M,p,w=8*h-r-1,f=(1<<w)-1,e=f>>1,i=-7,N=t?h-1:0,n=t?-1:1,s=a[o+N];for(N+=n,M=s&(1<<-i)-1,s>>=-i,i+=w;i>0;M=256*M+a[o+N],N+=n,i-=8);for(p=M&(1<<-i)-1,M>>=-i,i+=r;i>0;p=256*p+a[o+N],N+=n,i-=8);if(0===M)M=1-e;else{if(M===f)return p?NaN:1/0*(s?-1:1);p+=Math.pow(2,r),M-=e}return(s?-1:1)*p*Math.pow(2,M-r)},exports.write=function(a,o,t,r,h,M){var p,w,f,e=8*M-h-1,i=(1<<e)-1,N=i>>1,n=23===h?Math.pow(2,-24)-Math.pow(2,-77):0,s=r?0:M-1,u=r?1:-1,l=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(w=isNaN(o)?1:0,p=i):(p=Math.floor(Math.log(o)/Math.LN2),o*(f=Math.pow(2,-p))<1&&(p--,f*=2),o+=p+N>=1?n/f:n*Math.pow(2,1-N),o*f>=2&&(p++,f/=2),p+N>=i?(w=0,p=i):p+N>=1?(w=(o*f-1)*Math.pow(2,h),p+=N):(w=o*Math.pow(2,N-1)*Math.pow(2,h),p=0));h>=8;a[t+s]=255&w,s+=u,w/=256,h-=8);for(p=p<<h|w,e+=h;e>0;a[t+s]=255&p,s+=u,p/=256,e-=8);a[t+s-u]|=128*l};
},{}],78:[function(require,module,exports){
"function"==typeof Object.create?module.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:module.exports=function(t,e){t.super_=e;var o=function(){};o.prototype=e.prototype,t.prototype=new o,t.prototype.constructor=t};
},{}],79:[function(require,module,exports){
function isBuffer(f){return!!f.constructor&&"function"==typeof f.constructor.isBuffer&&f.constructor.isBuffer(f)}function isSlowBuffer(f){return"function"==typeof f.readFloatLE&&"function"==typeof f.slice&&isBuffer(f.slice(0,0))}module.exports=function(f){return null!=f&&(isBuffer(f)||isSlowBuffer(f)||!!f._isBuffer)};
},{}],80:[function(require,module,exports){
var toString={}.toString;module.exports=Array.isArray||function(r){return"[object Array]"==toString.call(r)};
},{}],81:[function(require,module,exports){
(function (process){
"use strict";function nextTick(e,n,c,r){if("function"!=typeof e)throw new TypeError('"callback" argument must be a function');var s,t,o=arguments.length;switch(o){case 0:case 1:return process.nextTick(e);case 2:return process.nextTick(function(){e.call(null,n)});case 3:return process.nextTick(function(){e.call(null,n,c)});case 4:return process.nextTick(function(){e.call(null,n,c,r)});default:for(s=new Array(o-1),t=0;t<s.length;)s[t++]=arguments[t];return process.nextTick(function(){e.apply(null,s)})}}!process.version||0===process.version.indexOf("v0.")||0===process.version.indexOf("v1.")&&0!==process.version.indexOf("v1.8.")?module.exports={nextTick:nextTick}:module.exports=process;
}).call(this,require('_process'))
},{"_process":82}],82:[function(require,module,exports){
function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}function runTimeout(e){if(cachedSetTimeout===setTimeout)return setTimeout(e,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(e,0);try{return cachedSetTimeout(e,0)}catch(t){try{return cachedSetTimeout.call(null,e,0)}catch(t){return cachedSetTimeout.call(this,e,0)}}}function runClearTimeout(e){if(cachedClearTimeout===clearTimeout)return clearTimeout(e);if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout)return cachedClearTimeout=clearTimeout,clearTimeout(e);try{return cachedClearTimeout(e)}catch(t){try{return cachedClearTimeout.call(null,e)}catch(t){return cachedClearTimeout.call(this,e)}}}function cleanUpNextTick(){draining&¤tQueue&&(draining=!1,currentQueue.length?queue=currentQueue.concat(queue):queueIndex=-1,queue.length&&drainQueue())}function drainQueue(){if(!draining){var e=runTimeout(cleanUpNextTick);draining=!0;for(var t=queue.length;t;){for(currentQueue=queue,queue=[];++queueIndex<t;)currentQueue&¤tQueue[queueIndex].run();queueIndex=-1,t=queue.length}currentQueue=null,draining=!1,runClearTimeout(e)}}function Item(e,t){this.fun=e,this.array=t}function noop(){}var process=module.exports={},cachedSetTimeout,cachedClearTimeout;!function(){try{cachedSetTimeout="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(e){cachedSetTimeout=defaultSetTimout}try{cachedClearTimeout="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(e){cachedClearTimeout=defaultClearTimeout}}();var queue=[],draining=!1,currentQueue,queueIndex=-1;process.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];queue.push(new Item(e,t)),1!==queue.length||draining||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},process.title="browser",process.browser=!0,process.env={},process.argv=[],process.version="",process.versions={},process.on=noop,process.addListener=noop,process.once=noop,process.off=noop,process.removeListener=noop,process.removeAllListeners=noop,process.emit=noop,process.prependListener=noop,process.prependOnceListener=noop,process.listeners=function(e){return[]},process.binding=function(e){throw new Error("process.binding is not supported")},process.cwd=function(){return"/"},process.chdir=function(e){throw new Error("process.chdir is not supported")},process.umask=function(){return 0};
},{}],83:[function(require,module,exports){
module.exports=require("./lib/_stream_duplex.js");
},{"./lib/_stream_duplex.js":84}],84:[function(require,module,exports){
"use strict";function Duplex(e){if(!(this instanceof Duplex))return new Duplex(e);Readable.call(this,e),Writable.call(this,e),e&&!1===e.readable&&(this.readable=!1),e&&!1===e.writable&&(this.writable=!1),this.allowHalfOpen=!0,e&&!1===e.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",onend)}function onend(){this.allowHalfOpen||this._writableState.ended||processNextTick(onEndNT,this)}function onEndNT(e){e.end()}function forEach(e,t){for(var r=0,i=e.length;r<i;r++)t(e[r],r)}var processNextTick=require("process-nextick-args").nextTick,objectKeys=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};module.exports=Duplex;var util=require("core-util-is");util.inherits=require("inherits");var Readable=require("./_stream_readable"),Writable=require("./_stream_writable");util.inherits(Duplex,Readable);for(var keys=objectKeys(Writable.prototype),v=0;v<keys.length;v++){var method=keys[v];Duplex.prototype[method]||(Duplex.prototype[method]=Writable.prototype[method])}Object.defineProperty(Duplex.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}}),Duplex.prototype._destroy=function(e,t){this.push(null),this.end(),processNextTick(t,e)};
},{"./_stream_readable":86,"./_stream_writable":88,"core-util-is":49,"inherits":78,"process-nextick-args":81}],85:[function(require,module,exports){
"use strict";function PassThrough(r){if(!(this instanceof PassThrough))return new PassThrough(r);Transform.call(this,r)}module.exports=PassThrough;var Transform=require("./_stream_transform"),util=require("core-util-is");util.inherits=require("inherits"),util.inherits(PassThrough,Transform),PassThrough.prototype._transform=function(r,s,i){i(null,r)};
},{"./_stream_transform":87,"core-util-is":49,"inherits":78}],86:[function(require,module,exports){
(function (process,global){
"use strict";function _uint8ArrayToBuffer(e){return Buffer.from(e)}function _isUint8Array(e){return Buffer.isBuffer(e)||e instanceof OurUint8Array}function prependListener(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}function ReadableState(e,t){Duplex=Duplex||require("./_stream_duplex"),e=e||{};var r=t instanceof Duplex;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var n=e.highWaterMark,a=e.readableHighWaterMark,i=this.objectMode?16:16384;this.highWaterMark=n||0===n?n:r&&(a||0===a)?a:i,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new BufferList,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(StringDecoder||(StringDecoder=require("string_decoder/").StringDecoder),this.decoder=new StringDecoder(e.encoding),this.encoding=e.encoding)}function Readable(e){if(Duplex=Duplex||require("./_stream_duplex"),!(this instanceof Readable))return new Readable(e);this._readableState=new ReadableState(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),Stream.call(this)}function readableAddChunk(e,t,r,n,a){var i=e._readableState;if(null===t)i.reading=!1,onEofChunk(e,i);else{var d;a||(d=chunkInvalid(i,t)),d?e.emit("error",d):i.objectMode||t&&t.length>0?("string"==typeof t||i.objectMode||Object.getPrototypeOf(t)===Buffer.prototype||(t=_uint8ArrayToBuffer(t)),n?i.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):addChunk(e,i,t,!0):i.ended?e.emit("error",new Error("stream.push() after EOF")):(i.reading=!1,i.decoder&&!r?(t=i.decoder.write(t),i.objectMode||0!==t.length?addChunk(e,i,t,!1):maybeReadMore(e,i)):addChunk(e,i,t,!1))):n||(i.reading=!1)}return needMoreData(i)}function addChunk(e,t,r,n){t.flowing&&0===t.length&&!t.sync?(e.emit("data",r),e.read(0)):(t.length+=t.objectMode?1:r.length,n?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&emitReadable(e)),maybeReadMore(e,t)}function chunkInvalid(e,t){var r;return _isUint8Array(t)||"string"==typeof t||void 0===t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk")),r}function needMoreData(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||0===e.length)}function computeNewHighWaterMark(e){return e>=MAX_HWM?e=MAX_HWM:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function howMuchToRead(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=computeNewHighWaterMark(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function onEofChunk(e,t){if(!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,emitReadable(e)}}function emitReadable(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(debug("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?processNextTick(emitReadable_,e):emitReadable_(e))}function emitReadable_(e){debug("emit readable"),e.emit("readable"),flow(e)}function maybeReadMore(e,t){t.readingMore||(t.readingMore=!0,processNextTick(maybeReadMore_,e,t))}function maybeReadMore_(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(debug("maybeReadMore read 0"),e.read(0),r!==t.length);)r=t.length;t.readingMore=!1}function pipeOnDrain(e){return function(){var t=e._readableState;debug("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&EElistenerCount(e,"data")&&(t.flowing=!0,flow(e))}}function nReadingNextTick(e){debug("readable nexttick read 0"),e.read(0)}function resume(e,t){t.resumeScheduled||(t.resumeScheduled=!0,processNextTick(resume_,e,t))}function resume_(e,t){t.reading||(debug("resume read 0"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit("resume"),flow(e),t.flowing&&!t.reading&&e.read(0)}function flow(e){var t=e._readableState;for(debug("flow",t.flowing);t.flowing&&null!==e.read(););}function fromList(e,t){if(0===t.length)return null;var r;return t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=fromListPartial(e,t.buffer,t.decoder),r}function fromListPartial(e,t,r){var n;return e<t.head.data.length?(n=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):n=e===t.head.data.length?t.shift():r?copyFromBufferString(e,t):copyFromBuffer(e,t),n}function copyFromBufferString(e,t){var r=t.head,n=1,a=r.data;for(e-=a.length;r=r.next;){var i=r.data,d=e>i.length?i.length:e;if(d===i.length?a+=i:a+=i.slice(0,e),0===(e-=d)){d===i.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(d));break}++n}return t.length-=n,a}function copyFromBuffer(e,t){var r=Buffer.allocUnsafe(e),n=t.head,a=1;for(n.data.copy(r),e-=n.data.length;n=n.next;){var i=n.data,d=e>i.length?i.length:e;if(i.copy(r,r.length-e,0,d),0===(e-=d)){d===i.length?(++a,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=i.slice(d));break}++a}return t.length-=a,r}function endReadable(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,processNextTick(endReadableNT,t,e))}function endReadableNT(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function forEach(e,t){for(var r=0,n=e.length;r<n;r++)t(e[r],r)}function indexOf(e,t){for(var r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1}var processNextTick=require("process-nextick-args").nextTick;module.exports=Readable;var isArray=require("isarray"),Duplex;Readable.ReadableState=ReadableState;var EE=require("events").EventEmitter,EElistenerCount=function(e,t){return e.listeners(t).length},Stream=require("./internal/streams/stream"),Buffer=require("safe-buffer").Buffer,OurUint8Array=global.Uint8Array||function(){},util=require("core-util-is");util.inherits=require("inherits");var debugUtil=require("util"),debug=void 0;debug=debugUtil&&debugUtil.debuglog?debugUtil.debuglog("stream"):function(){};var BufferList=require("./internal/streams/BufferList"),destroyImpl=require("./internal/streams/destroy"),StringDecoder;util.inherits(Readable,Stream);var kProxyEvents=["error","close","destroy","pause","resume"];Object.defineProperty(Readable.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),Readable.prototype.destroy=destroyImpl.destroy,Readable.prototype._undestroy=destroyImpl.undestroy,Readable.prototype._destroy=function(e,t){this.push(null),t(e)},Readable.prototype.push=function(e,t){var r,n=this._readableState;return n.objectMode?r=!0:"string"==typeof e&&(t=t||n.defaultEncoding,t!==n.encoding&&(e=Buffer.from(e,t),t=""),r=!0),readableAddChunk(this,e,t,!1,r)},Readable.prototype.unshift=function(e){return readableAddChunk(this,e,null,!0,!1)},Readable.prototype.isPaused=function(){return!1===this._readableState.flowing},Readable.prototype.setEncoding=function(e){return StringDecoder||(StringDecoder=require("string_decoder/").StringDecoder),this._readableState.decoder=new StringDecoder(e),this._readableState.encoding=e,this};var MAX_HWM=8388608;Readable.prototype.read=function(e){debug("read",e),e=parseInt(e,10);var t=this._readableState,r=e;if(0!==e&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return debug("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?endReadable(this):emitReadable(this),null;if(0===(e=howMuchToRead(e,t))&&t.ended)return 0===t.length&&endReadable(this),null;var n=t.needReadable;debug("need readable",n),(0===t.length||t.length-e<t.highWaterMark)&&(n=!0,debug("length less than watermark",n)),t.ended||t.reading?(n=!1,debug("reading or ended",n)):n&&(debug("do read"),t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=howMuchToRead(r,t)));var a;return a=e>0?fromList(e,t):null,null===a?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&endReadable(this)),null!==a&&this.emit("data",a),a},Readable.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},Readable.prototype.pipe=function(e,t){function r(e,t){debug("onunpipe"),e===l&&t&&!1===t.hasUnpiped&&(t.hasUnpiped=!0,a())}function n(){debug("onend"),e.end()}function a(){debug("cleanup"),e.removeListener("close",o),e.removeListener("finish",s),e.removeListener("drain",c),e.removeListener("error",d),e.removeListener("unpipe",r),l.removeListener("end",n),l.removeListener("end",u),l.removeListener("data",i),b=!0,!h.awaitDrain||e._writableState&&!e._writableState.needDrain||c()}function i(t){debug("ondata"),g=!1,!1!==e.write(t)||g||((1===h.pipesCount&&h.pipes===e||h.pipesCount>1&&-1!==indexOf(h.pipes,e))&&!b&&(debug("false write response, pause",l._readableState.awaitDrain),l._readableState.awaitDrain++,g=!0),l.pause())}function d(t){debug("onerror",t),u(),e.removeListener("error",d),0===EElistenerCount(e,"error")&&e.emit("error",t)}function o(){e.removeListener("finish",s),u()}function s(){debug("onfinish"),e.removeListener("close",o),u()}function u(){debug("unpipe"),l.unpipe(e)}var l=this,h=this._readableState;switch(h.pipesCount){case 0:h.pipes=e;break;case 1:h.pipes=[h.pipes,e];break;default:h.pipes.push(e)}h.pipesCount+=1,debug("pipe count=%d opts=%j",h.pipesCount,t);var f=(!t||!1!==t.end)&&e!==process.stdout&&e!==process.stderr,p=f?n:u;h.endEmitted?processNextTick(p):l.once("end",p),e.on("unpipe",r);var c=pipeOnDrain(l);e.on("drain",c);var b=!1,g=!1;return l.on("data",i),prependListener(e,"error",d),e.once("close",o),e.once("finish",s),e.emit("pipe",l),h.flowing||(debug("pipe resume"),l.resume()),e},Readable.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var n=t.pipes,a=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i<a;i++)n[i].emit("unpipe",this,r);return this}var d=indexOf(t.pipes,e);return-1===d?this:(t.pipes.splice(d,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this,r),this)},Readable.prototype.on=function(e,t){var r=Stream.prototype.on.call(this,e,t);if("data"===e)!1!==this._readableState.flowing&&this.resume();else if("readable"===e){var n=this._readableState;n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.emittedReadable=!1,n.reading?n.length&&emitReadable(this):processNextTick(nReadingNextTick,this))}return r},Readable.prototype.addListener=Readable.prototype.on,Readable.prototype.resume=function(){var e=this._readableState;return e.flowing||(debug("resume"),e.flowing=!0,resume(this,e)),this},Readable.prototype.pause=function(){return debug("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(debug("pause"),this._readableState.flowing=!1,this.emit("pause")),this},Readable.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;e.on("end",function(){if(debug("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)}),e.on("data",function(a){if(debug("wrapped data"),r.decoder&&(a=r.decoder.write(a)),(!r.objectMode||null!==a&&void 0!==a)&&(r.objectMode||a&&a.length)){t.push(a)||(n=!0,e.pause())}});for(var a in e)void 0===this[a]&&"function"==typeof e[a]&&(this[a]=function(t){return function(){return e[t].apply(e,arguments)}}(a));for(var i=0;i<kProxyEvents.length;i++)e.on(kProxyEvents[i],this.emit.bind(this,kProxyEvents[i]));return this._read=function(t){debug("wrapped _read",t),n&&(n=!1,e.resume())},this},Readable._fromList=fromList;
}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{"./_stream_duplex":84,"./internal/streams/BufferList":89,"./internal/streams/destroy":90,"./internal/streams/stream":91,"_process":82,"core-util-is":49,"events":50,"inherits":78,"isarray":80,"process-nextick-args":81,"safe-buffer":97,"string_decoder/":92,"util":47}],87:[function(require,module,exports){
"use strict";function afterTransform(r,t){var n=this._transformState;n.transforming=!1;var e=n.writecb;if(!e)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=t&&this.push(t),e(r);var i=this._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}function Transform(r){if(!(this instanceof Transform))return new Transform(r);Duplex.call(this,r),this._transformState={afterTransform:afterTransform.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,r&&("function"==typeof r.transform&&(this._transform=r.transform),"function"==typeof r.flush&&(this._flush=r.flush)),this.on("prefinish",prefinish)}function prefinish(){var r=this;"function"==typeof this._flush?this._flush(function(t,n){done(r,t,n)}):done(this,null,null)}function done(r,t,n){if(t)return r.emit("error",t);if(null!=n&&r.push(n),r._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(r._transformState.transforming)throw new Error("Calling transform done when still transforming");return r.push(null)}module.exports=Transform;var Duplex=require("./_stream_duplex"),util=require("core-util-is");util.inherits=require("inherits"),util.inherits(Transform,Duplex),Transform.prototype.push=function(r,t){return this._transformState.needTransform=!1,Duplex.prototype.push.call(this,r,t)},Transform.prototype._transform=function(r,t,n){throw new Error("_transform() is not implemented")},Transform.prototype._write=function(r,t,n){var e=this._transformState;if(e.writecb=n,e.writechunk=r,e.writeencoding=t,!e.transforming){var i=this._readableState;(e.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},Transform.prototype._read=function(r){var t=this._transformState;null!==t.writechunk&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0},Transform.prototype._destroy=function(r,t){var n=this;Duplex.prototype._destroy.call(this,r,function(r){t(r),n.emit("close")})};
},{"./_stream_duplex":84,"core-util-is":49,"inherits":78}],88:[function(require,module,exports){
(function (process,global){
"use strict";function WriteReq(e,t,r){this.chunk=e,this.encoding=t,this.callback=r,this.next=null}function CorkedRequest(e){var t=this;this.next=null,this.entry=null,this.finish=function(){onCorkedFinish(t,e)}}function _uint8ArrayToBuffer(e){return Buffer.from(e)}function _isUint8Array(e){return Buffer.isBuffer(e)||e instanceof OurUint8Array}function nop(){}function WritableState(e,t){Duplex=Duplex||require("./_stream_duplex"),e=e||{};var r=t instanceof Duplex;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,n=e.writableHighWaterMark,o=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(n||0===n)?n:o,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=!1===e.decodeStrings;this.decodeStrings=!s,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){onwrite(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new CorkedRequest(this)}function Writable(e){if(Duplex=Duplex||require("./_stream_duplex"),!(realHasInstance.call(Writable,this)||this instanceof Duplex))return new Writable(e);this._writableState=new WritableState(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),Stream.call(this)}function writeAfterEnd(e,t){var r=new Error("write after end");e.emit("error",r),processNextTick(t,r)}function validChunk(e,t,r,i){var n=!0,o=!1;return null===r?o=new TypeError("May not write null values to stream"):"string"==typeof r||void 0===r||t.objectMode||(o=new TypeError("Invalid non-string/buffer chunk")),o&&(e.emit("error",o),processNextTick(i,o),n=!1),n}function decodeChunk(e,t,r){return e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=Buffer.from(t,r)),t}function writeOrBuffer(e,t,r,i,n,o){if(!r){var s=decodeChunk(t,i,n);i!==s&&(r=!0,n="buffer",i=s)}var a=t.objectMode?1:i.length;t.length+=a;var f=t.length<t.highWaterMark;if(f||(t.needDrain=!0),t.writing||t.corked){var u=t.lastBufferedRequest;t.lastBufferedRequest={chunk:i,encoding:n,isBuf:r,callback:o,next:null},u?u.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else doWrite(e,t,!1,a,i,n,o);return f}function doWrite(e,t,r,i,n,o,s){t.writelen=i,t.writecb=s,t.writing=!0,t.sync=!0,r?e._writev(n,t.onwrite):e._write(n,o,t.onwrite),t.sync=!1}function onwriteError(e,t,r,i,n){--t.pendingcb,r?(processNextTick(n,i),processNextTick(finishMaybe,e,t),e._writableState.errorEmitted=!0,e.emit("error",i)):(n(i),e._writableState.errorEmitted=!0,e.emit("error",i),finishMaybe(e,t))}function onwriteStateUpdate(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}function onwrite(e,t){var r=e._writableState,i=r.sync,n=r.writecb;if(onwriteStateUpdate(r),t)onwriteError(e,r,i,t,n);else{var o=needFinish(r);o||r.corked||r.bufferProcessing||!r.bufferedRequest||clearBuffer(e,r),i?asyncWrite(afterWrite,e,r,o,n):afterWrite(e,r,o,n)}}function afterWrite(e,t,r,i){r||onwriteDrain(e,t),t.pendingcb--,i(),finishMaybe(e,t)}function onwriteDrain(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}function clearBuffer(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var i=t.bufferedRequestCount,n=new Array(i),o=t.corkedRequestsFree;o.entry=r;for(var s=0,a=!0;r;)n[s]=r,r.isBuf||(a=!1),r=r.next,s+=1;n.allBuffers=a,doWrite(e,t,!0,t.length,n,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new CorkedRequest(t),t.bufferedRequestCount=0}else{for(;r;){var f=r.chunk,u=r.encoding,l=r.callback;if(doWrite(e,t,!1,t.objectMode?1:f.length,f,u,l),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function needFinish(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function callFinal(e,t){e._final(function(r){t.pendingcb--,r&&e.emit("error",r),t.prefinished=!0,e.emit("prefinish"),finishMaybe(e,t)})}function prefinish(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,processNextTick(callFinal,e,t)):(t.prefinished=!0,e.emit("prefinish")))}function finishMaybe(e,t){var r=needFinish(t);return r&&(prefinish(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),r}function endWritable(e,t,r){t.ending=!0,finishMaybe(e,t),r&&(t.finished?processNextTick(r):e.once("finish",r)),t.ended=!0,e.writable=!1}function onCorkedFinish(e,t,r){var i=e.entry;for(e.entry=null;i;){var n=i.callback;t.pendingcb--,n(r),i=i.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}var processNextTick=require("process-nextick-args").nextTick;module.exports=Writable;var asyncWrite=!process.browser&&["v0.10","v0.9."].indexOf(process.version.slice(0,5))>-1?setImmediate:processNextTick,Duplex;Writable.WritableState=WritableState;var util=require("core-util-is");util.inherits=require("inherits");var internalUtil={deprecate:require("util-deprecate")},Stream=require("./internal/streams/stream"),Buffer=require("safe-buffer").Buffer,OurUint8Array=global.Uint8Array||function(){},destroyImpl=require("./internal/streams/destroy");util.inherits(Writable,Stream),WritableState.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:internalUtil.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}();var realHasInstance;"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(realHasInstance=Function.prototype[Symbol.hasInstance],Object.defineProperty(Writable,Symbol.hasInstance,{value:function(e){return!!realHasInstance.call(this,e)||this===Writable&&(e&&e._writableState instanceof WritableState)}})):realHasInstance=function(e){return e instanceof this},Writable.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},Writable.prototype.write=function(e,t,r){var i=this._writableState,n=!1,o=!i.objectMode&&_isUint8Array(e);return o&&!Buffer.isBuffer(e)&&(e=_uint8ArrayToBuffer(e)),"function"==typeof t&&(r=t,t=null),o?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof r&&(r=nop),i.ended?writeAfterEnd(this,r):(o||validChunk(this,i,e,r))&&(i.pendingcb++,n=writeOrBuffer(this,i,o,e,t,r)),n},Writable.prototype.cork=function(){this._writableState.corked++},Writable.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.finished||e.bufferProcessing||!e.bufferedRequest||clearBuffer(this,e))},Writable.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Writable.prototype._write=function(e,t,r){r(new Error("_write() is not implemented"))},Writable.prototype._writev=null,Writable.prototype.end=function(e,t,r){var i=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!==e&&void 0!==e&&this.write(e,t),i.corked&&(i.corked=1,this.uncork()),i.ending||i.finished||endWritable(this,i,r)},Object.defineProperty(Writable.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),Writable.prototype.destroy=destroyImpl.destroy,Writable.prototype._undestroy=destroyImpl.undestroy,Writable.prototype._destroy=function(e,t){this.end(),t(e)};
}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{"./_stream_duplex":84,"./internal/streams/destroy":90,"./internal/streams/stream":91,"_process":82,"core-util-is":49,"inherits":78,"process-nextick-args":81,"safe-buffer":97,"util-deprecate":102}],89:[function(require,module,exports){
"use strict";function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function copyBuffer(t,e,i){t.copy(e,i)}var Buffer=require("safe-buffer").Buffer,util=require("util");module.exports=function(){function t(){_classCallCheck(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,i=""+e.data;e=e.next;)i+=t+e.data;return i},t.prototype.concat=function(t){if(0===this.length)return Buffer.alloc(0);if(1===this.length)return this.head.data;for(var e=Buffer.allocUnsafe(t>>>0),i=this.head,n=0;i;)copyBuffer(i.data,e,n),n+=i.data.length,i=i.next;return e},t}(),util&&util.inspect&&util.inspect.custom&&(module.exports.prototype[util.inspect.custom]=function(){var t=util.inspect({length:this.length});return this.constructor.name+" "+t});
},{"safe-buffer":97,"util":47}],90:[function(require,module,exports){
"use strict";function destroy(t,e){var r=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(e?e(t):!t||this._writableState&&this._writableState.errorEmitted||processNextTick(emitErrorNT,this,t),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?(processNextTick(emitErrorNT,r,t),r._writableState&&(r._writableState.errorEmitted=!0)):e&&e(t)}),this)}function undestroy(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function emitErrorNT(t,e){t.emit("error",e)}var processNextTick=require("process-nextick-args").nextTick;module.exports={destroy:destroy,undestroy:undestroy};
},{"process-nextick-args":81}],91:[function(require,module,exports){
module.exports=require("events").EventEmitter;
},{"events":50}],92:[function(require,module,exports){
"use strict";function _normalizeEncoding(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function normalizeEncoding(t){var e=_normalizeEncoding(t);if("string"!=typeof e&&(Buffer.isEncoding===isEncoding||!isEncoding(t)))throw new Error("Unknown encoding: "+t);return e||t}function StringDecoder(t){this.encoding=normalizeEncoding(t);var e;switch(this.encoding){case"utf16le":this.text=utf16Text,this.end=utf16End,e=4;break;case"utf8":this.fillLast=utf8FillLast,e=4;break;case"base64":this.text=base64Text,this.end=base64End,e=3;break;default:return this.write=simpleWrite,void(this.end=simpleEnd)}this.lastNeed=0,this.lastTotal=0,this.lastChar=Buffer.allocUnsafe(e)}function utf8CheckByte(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:-1}function utf8CheckIncomplete(t,e,s){var i=e.length-1;if(i<s)return 0;var a=utf8CheckByte(e[i]);return a>=0?(a>0&&(t.lastNeed=a-1),a):--i<s?0:(a=utf8CheckByte(e[i]))>=0?(a>0&&(t.lastNeed=a-2),a):--i<s?0:(a=utf8CheckByte(e[i]),a>=0?(a>0&&(2===a?a=0:t.lastNeed=a-3),a):0)}function utf8CheckExtraBytes(t,e,s){if(128!=(192&e[0]))return t.lastNeed=0,"�".repeat(s);if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�".repeat(s+1);if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�".repeat(s+2)}}function utf8FillLast(t){var e=this.lastTotal-this.lastNeed,s=utf8CheckExtraBytes(this,t,e);return void 0!==s?s:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function utf8Text(t,e){var s=utf8CheckIncomplete(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=s;var i=t.length-(s-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)}function utf8End(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�".repeat(this.lastTotal-this.lastNeed):e}function utf16Text(t,e){if((t.length-e)%2==0){var s=t.toString("utf16le",e);if(s){var i=s.charCodeAt(s.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],s.slice(0,-1)}return s}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function utf16End(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var s=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,s)}return e}function base64Text(t,e){var s=(t.length-e)%3;return 0===s?t.toString("base64",e):(this.lastNeed=3-s,this.lastTotal=3,1===s?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-s))}function base64End(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function simpleWrite(t){return t.toString(this.encoding)}function simpleEnd(t){return t&&t.length?this.write(t):""}var Buffer=require("safe-buffer").Buffer,isEncoding=Buffer.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};exports.StringDecoder=StringDecoder,StringDecoder.prototype.write=function(t){if(0===t.length)return"";var e,s;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";s=this.lastNeed,this.lastNeed=0}else s=0;return s<t.length?e?e+this.text(t,s):this.text(t,s):e||""},StringDecoder.prototype.end=utf8End,StringDecoder.prototype.text=utf8Text,StringDecoder.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length};
},{"safe-buffer":97}],93:[function(require,module,exports){
module.exports=require("./readable").PassThrough;
},{"./readable":94}],94:[function(require,module,exports){
exports=module.exports=require("./lib/_stream_readable.js"),exports.Stream=exports,exports.Readable=exports,exports.Writable=require("./lib/_stream_writable.js"),exports.Duplex=require("./lib/_stream_duplex.js"),exports.Transform=require("./lib/_stream_transform.js"),exports.PassThrough=require("./lib/_stream_passthrough.js");
},{"./lib/_stream_duplex.js":84,"./lib/_stream_passthrough.js":85,"./lib/_stream_readable.js":86,"./lib/_stream_transform.js":87,"./lib/_stream_writable.js":88}],95:[function(require,module,exports){
module.exports=require("./readable").Transform;
},{"./readable":94}],96:[function(require,module,exports){
module.exports=require("./lib/_stream_writable.js");
},{"./lib/_stream_writable.js":88}],97:[function(require,module,exports){
function copyProps(f,r){for(var e in f)r[e]=f[e]}function SafeBuffer(f,r,e){return Buffer(f,r,e)}var buffer=require("buffer"),Buffer=buffer.Buffer;Buffer.from&&Buffer.alloc&&Buffer.allocUnsafe&&Buffer.allocUnsafeSlow?module.exports=buffer:(copyProps(buffer,exports),exports.Buffer=SafeBuffer),copyProps(Buffer,SafeBuffer),SafeBuffer.from=function(f,r,e){if("number"==typeof f)throw new TypeError("Argument must not be a number");return Buffer(f,r,e)},SafeBuffer.alloc=function(f,r,e){if("number"!=typeof f)throw new TypeError("Argument must be a number");var u=Buffer(f);return void 0!==r?"string"==typeof e?u.fill(r,e):u.fill(r):u.fill(0),u},SafeBuffer.allocUnsafe=function(f){if("number"!=typeof f)throw new TypeError("Argument must be a number");return Buffer(f)},SafeBuffer.allocUnsafeSlow=function(f){if("number"!=typeof f)throw new TypeError("Argument must be a number");return buffer.SlowBuffer(f)};
},{"buffer":48}],98:[function(require,module,exports){
function Stream(){EE.call(this)}module.exports=Stream;var EE=require("events").EventEmitter,inherits=require("inherits");inherits(Stream,EE),Stream.Readable=require("readable-stream/readable.js"),Stream.Writable=require("readable-stream/writable.js"),Stream.Duplex=require("readable-stream/duplex.js"),Stream.Transform=require("readable-stream/transform.js"),Stream.PassThrough=require("readable-stream/passthrough.js"),Stream.Stream=Stream,Stream.prototype.pipe=function(e,r){function t(r){e.writable&&!1===e.write(r)&&m.pause&&m.pause()}function n(){m.readable&&m.resume&&m.resume()}function a(){u||(u=!0,e.end())}function o(){u||(u=!0,"function"==typeof e.destroy&&e.destroy())}function i(e){if(s(),0===EE.listenerCount(this,"error"))throw e}function s(){m.removeListener("data",t),e.removeListener("drain",n),m.removeListener("end",a),m.removeListener("close",o),m.removeListener("error",i),e.removeListener("error",i),m.removeListener("end",s),m.removeListener("close",s),e.removeListener("close",s)}var m=this;m.on("data",t),e.on("drain",n),e._isStdio||r&&!1===r.end||(m.on("end",a),m.on("close",o));var u=!1;return m.on("error",i),e.on("error",i),m.on("end",s),m.on("close",s),e.on("close",s),e.emit("pipe",m),e};
},{"events":50,"inherits":78,"readable-stream/duplex.js":83,"readable-stream/passthrough.js":93,"readable-stream/readable.js":94,"readable-stream/transform.js":95,"readable-stream/writable.js":96}],99:[function(require,module,exports){
"use strict";function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),_=require("./"),_2=_interopRequireDefault(_),Block=function(){function t(e,n){_classCallCheck(this,t),this.index=0,this.thaws=[],this.count=n||200,this.options=e}return _createClass(t,[{key:"add",value:function(t){return this._next().add(t),this}},{key:"addArray",value:function(t){return this._next().addArray(t),this}},{key:"insert",value:function(t){return this._next().insert(t),this}},{key:"insertArray",value:function(t){return this._next().insertArray(t),this}},{key:"stop",value:function(){for(var t=0;t<this.thaws.length;t++)this.thaws[t].stop();return this}},{key:"_next",value:function(){var t=null,e=this.thaws;return e.length<this.count?e.push(t=new _2.default([],this.options)):t=e[this.index],this.index++,this.index>=this.count&&(this.index=0),t}}]),t}();exports.default=Block;
},{"./":100}],100:[function(require,module,exports){
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.Block=void 0;var _thaw=require("./thaw"),_thaw2=_interopRequireDefault(_thaw),_block=require("./block"),_block2=_interopRequireDefault(_block);exports.default=_thaw2.default,exports.Block=_block2.default,"undefined"!=typeof window&&(window.Thaw=_thaw2.default,window.Thaw.Block=_block2.default);
},{"./block":99,"./thaw":101}],101:[function(require,module,exports){
"use strict";function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function thaw(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Thaw(t,e)}Object.defineProperty(exports,"__esModule",{value:!0});var _extends=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t},_createClass=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}();exports.thaw=thaw;var thawing=!1,thaws=[],Thaw=function(){function t(e){var i=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,t);var s=_extends({},this.constructor.defaultSettings,n),a=s.each,r=s.done;this.items=e,this.i=0,this.options=n;var h=this.tick=function(){if(!(i.i<0||(i.timeout=setTimeout(h,0),thawing))){var t=e[i.i];if(i.i>=e.length)return null!==r&&(thawing=!0,r(t,i.i),thawing=!1),i.i=-1,void clearTimeout(i.timeout);null!==a?(thawing=!0,a(t,i.i),thawing=!1):void 0!==t&&t(),i.i++}};thaws.push(this),n.delay||h()}return _createClass(t,null,[{key:"stopAll",value:function(){for(var t=0;t<thaws.length;t++)thaws[t].stop()}},{key:"defaultSettings",get:function(){return{each:null,done:null}}},{key:"isThawing",get:function(){return thawing}}]),_createClass(t,[{key:"makeReady",value:function(){return this.i<0&&(this.i=this.items.length,!0)}},{key:"add",value:function(t){var e=this.makeReady();return this.items.push(t),e&&this.tick(),this}},{key:"insert",value:function(t){var e=this.makeReady();return this.items.splice(this.i,0,t),e&&this.tick(),this}},{key:"addArray",value:function(t){var e=this.makeReady();return this.items=this.items.concat(t),e&&this.tick(),this}},{key:"insertArray",value:function(t){var e=this.makeReady(),i=this.items,n=t,s=this.items.splice(this.i,this.items.length-this.i+1);return this.items=i.concat(n,s),e&&this.tick(),this}},{key:"stop",value:function(){return this.i=-1,clearTimeout(this.timeout),this.options.done&&this.options.done(),this}}]),t}();exports.default=Thaw;
},{}],102:[function(require,module,exports){
(function (global){
function deprecate(r,e){function o(){if(!t){if(config("throwDeprecation"))throw new Error(e);config("traceDeprecation")?console.trace(e):console.warn(e),t=!0}return r.apply(this,arguments)}if(config("noDeprecation"))return r;var t=!1;return o}function config(r){try{if(!global.localStorage)return!1}catch(r){return!1}var e=global.localStorage[r];return null!=e&&"true"===String(e).toLowerCase()}module.exports=deprecate;
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{}]},{},[44])(44)
});