diff --git a/src/blocks/scratch3.js b/src/blocks/scratch3.js index 259c4eb42..8d1095ef4 100644 --- a/src/blocks/scratch3.js +++ b/src/blocks/scratch3.js @@ -1,4 +1,3 @@ - function Scratch3Blocks(runtime) { /** * The runtime instantiating this block package. @@ -31,8 +30,12 @@ Scratch3Blocks.prototype.forever = function() { console.log('Running: control_forever'); }; -Scratch3Blocks.prototype.wait = function() { +Scratch3Blocks.prototype.wait = function(argValues, util) { console.log('Running: control_wait'); + util.yield(); + util.timeout(function() { + util.done(); + }, 500); }; Scratch3Blocks.prototype.stop = function() { diff --git a/src/engine/runtime.js b/src/engine/runtime.js index 88cc2989e..e3072a9ed 100644 --- a/src/engine/runtime.js +++ b/src/engine/runtime.js @@ -312,6 +312,19 @@ Runtime.prototype._step = function () { } }; +/** + * Emit feedback for block glowing (used in the sequencer). + * @param {?string} blockId ID for the block to update glow + * @param {boolean} isGlowing True to turn on glow; false to turn off. + */ +Runtime.prototype.glowBlock = function (blockId, isGlowing) { + if (isGlowing) { + this.emit(Runtime.BLOCK_GLOW_ON, blockId); + } else { + this.emit(Runtime.BLOCK_GLOW_OFF, blockId); + } +}; + /** * Set up timers to repeatedly step in a browser */ diff --git a/src/engine/sequencer.js b/src/engine/sequencer.js index 800ad136c..f7d78352d 100644 --- a/src/engine/sequencer.js +++ b/src/engine/sequencer.js @@ -1,4 +1,6 @@ var Timer = require('../util/timer'); +var Thread = require('./thread'); +var YieldTimers = require('../util/yieldtimers.js'); function Sequencer (runtime) { /** @@ -31,20 +33,37 @@ Sequencer.prototype.stepThreads = function (threads) { this.timer.start(); // List of threads which have been killed by this step. var inactiveThreads = []; + // If all of the threads are yielding, we should yield. + var numYieldingThreads = 0; // While there are still threads to run and we are within WORK_TIME, // continue executing threads. while (threads.length > 0 && + threads.length > numYieldingThreads && this.timer.timeElapsed() < Sequencer.WORK_TIME) { // New threads at the end of the iteration. var newThreads = []; // Attempt to run each thread one time for (var i = 0; i < threads.length; i++) { var activeThread = threads[i]; - this.stepThread(activeThread); - if (activeThread.nextBlock !== null) { - newThreads.push(activeThread); - } else { + if (activeThread.status === Thread.STATUS_RUNNING) { + // Normal-mode thread: step. + this.stepThread(activeThread); + } else if (activeThread.status === Thread.STATUS_YIELD) { + // Yield-mode thread: check if the time has passed. + YieldTimers.resolve(activeThread.yieldTimerId); + numYieldingThreads++; + } else if (activeThread.status === Thread.STATUS_DONE) { + // Moved to a done state - finish up + activeThread.status = Thread.STATUS_RUNNING; + // @todo Deal with the return value + } + if (activeThread.nextBlock === null && + activeThread.status === Thread.STATUS_DONE) { + // Finished with this thread - tell the runtime to clean it up. inactiveThreads.push(activeThread); + } else { + // Keep this thead in the loop. + newThreads.push(activeThread); } } // Effectively filters out threads that have stopped. @@ -58,14 +77,42 @@ Sequencer.prototype.stepThreads = function (threads) { * @param {!Thread} thread Thread object to step */ Sequencer.prototype.stepThread = function (thread) { + // Save the yield timer ID, in case a primitive makes a new one + // @todo hack - perhaps patch this to allow more than one timer per + // primitive, for example... + var oldYieldTimerId = YieldTimers.timerId; + // Save the current block and set the nextBlock. // If the primitive would like to do control flow, // it can overwrite nextBlock. var currentBlock = thread.nextBlock; - thread.nextBlock = this.runtime._getNextBlock(thread.nextBlock); + thread.nextBlock = this.runtime._getNextBlock(currentBlock); var opcode = this.runtime._getOpcode(currentBlock); + /** + * A callback for the primitive to indicate its thread should yield. + * @type {Function} + */ + var threadYieldCallback = function () { + thread.status = Thread.STATUS_YIELD; + }; + + /** + * A callback for the primitive to indicate its thread is finished + * @type {Function} + */ + var instance = this; + var threadDoneCallback = function () { + thread.status = Thread.STATUS_DONE; + // Refresh nextBlock in case it has changed during the yield. + thread.nextBlock = instance.runtime._getNextBlock(currentBlock); + instance.runtime.glowBlock(currentBlock, false); + }; + + // @todo + var argValues = []; + if (!opcode) { console.warn('Could not get opcode for block: ' + currentBlock); } @@ -76,11 +123,28 @@ Sequencer.prototype.stepThread = function (thread) { } else { try { - blockFunction(); + this.runtime.glowBlock(currentBlock, true); + // @todo deal with the return value + blockFunction(argValues, { + yield: threadYieldCallback, + done: threadDoneCallback, + timeout: YieldTimers.timeout + }); } catch(e) { console.error('Exception calling block function', {opcode: opcode, exception: e}); + } finally { + // Update if the thread has set a yield timer ID + // @todo hack + if (YieldTimers.timerId > oldYieldTimerId) { + thread.yieldTimerId = YieldTimers.timerId; + } + if (thread.status === Thread.STATUS_RUNNING) { + // Thread executed without yielding - move to done + thread.status = Thread.STATUS_DONE; + this.runtime.glowBlock(currentBlock, false); + } } } } diff --git a/src/engine/thread.js b/src/engine/thread.js index ceb643ea0..938aa5c1a 100644 --- a/src/engine/thread.js +++ b/src/engine/thread.js @@ -20,6 +20,40 @@ function Thread (firstBlock) { * @type {Array.} */ this.stack = []; + + /** + * Status of the thread, one of three states (below) + * @type {number} + */ + this.status = 0; /* Thread.STATUS_RUNNING */ + + /** + * Yield timer ID (for checking when the thread should unyield). + * @type {number} + */ + this.yieldTimerId = -1; } +/** + * Thread status for initialized or running thread. + * Threads are in this state when the primitive is called for the first time. + * @const + */ +Thread.STATUS_RUNNING = 0; + +/** + * Thread status for a yielded thread. + * Threads are in this state when a primitive has yielded. + * @const + */ +Thread.STATUS_YIELD = 1; + +/** + * Thread status for a finished/done thread. + * Thread is moved to this state when the interpreter + * can proceed with execution. + * @const + */ +Thread.STATUS_DONE = 2; + module.exports = Thread; diff --git a/src/util/yieldtimers.js b/src/util/yieldtimers.js new file mode 100644 index 000000000..febf87658 --- /dev/null +++ b/src/util/yieldtimers.js @@ -0,0 +1,91 @@ +/** + * @fileoverview Timers that are synchronized with the Scratch sequencer. + */ +var Timer = require('./timer'); + +function YieldTimers () {} + +/** + * Shared collection of timers. + * Each timer is a [Function, number] with the callback + * and absolute time for it to run. + * @type {Object.} + */ +YieldTimers.timers = {}; + +/** + * Monotonically increasing timer ID. + * @type {number} + */ +YieldTimers.timerId = 0; + +/** + * Utility for measuring time. + * @type {!Timer} + */ +YieldTimers.globalTimer = new Timer(); + +/** + * The timeout function is passed to primitives and is intended + * as a convenient replacement for window.setTimeout. + * The sequencer will attempt to resolve the timer every time + * the yielded thread would have been stepped. + * @param {!Function} callback To be called when the timer is done. + * @param {number} timeDelta Time to wait, in ms. + * @return {number} Timer ID to be used with other methods. + */ +YieldTimers.timeout = function (callback, timeDelta) { + var id = ++YieldTimers.timerId; + YieldTimers.timers[id] = [ + callback, + YieldTimers.globalTimer.time() + timeDelta + ]; + return id; +}; + +/** + * Attempt to resolve a timeout. + * If the time has passed, call the callback. + * Otherwise, do nothing. + * @param {number} id Timer ID to resolve. + * @return {boolean} True if the timer has resolved. + */ +YieldTimers.resolve = function (id) { + var timer = YieldTimers.timers[id]; + if (!timer) { + // No such timer. + return false; + } + var callback = timer[0]; + var time = timer[1]; + if (YieldTimers.globalTimer.time() < time) { + // Not done yet. + return false; + } + // Execute the callback and remove the timer. + callback(); + delete YieldTimers.timers[id]; + return true; +}; + +/** + * Reject a timer so the callback never executes. + * @param {number} id Timer ID to reject. + */ +YieldTimers.reject = function (id) { + if (YieldTimers.timers[id]) { + delete YieldTimers.timers[id]; + } +}; + +/** + * Reject all timers currently stored. + * Especially useful for a Scratch "stop." + */ +YieldTimers.rejectAll = function () { + YieldTimers.timers = {}; + YieldTimers.timerId = 0; +}; + +window.YieldTimers = YieldTimers; +module.exports = YieldTimers; diff --git a/vm.js b/vm.js index e11118227..0153a8543 100644 --- a/vm.js +++ b/vm.js @@ -48,7 +48,7 @@ var util = __webpack_require__(2); var Runtime = __webpack_require__(6); - var adapter = __webpack_require__(12); + var adapter = __webpack_require__(13); /** * Handles connections between blocks, stage, and extensions. @@ -1182,8 +1182,8 @@ var util = __webpack_require__(2); var defaultBlockPackages = { - 'scratch3': __webpack_require__(10), - 'wedo2': __webpack_require__(11) + 'scratch3': __webpack_require__(11), + 'wedo2': __webpack_require__(12) }; /** @@ -1490,6 +1490,19 @@ } }; + /** + * Emit feedback for block glowing (used in the sequencer). + * @param {?string} blockId ID for the block to update glow + * @param {boolean} isGlowing True to turn on glow; false to turn off. + */ + Runtime.prototype.glowBlock = function (blockId, isGlowing) { + if (isGlowing) { + this.emit(Runtime.BLOCK_GLOW_ON, blockId); + } else { + this.emit(Runtime.BLOCK_GLOW_OFF, blockId); + } + }; + /** * Set up timers to repeatedly step in a browser */ @@ -1550,6 +1563,8 @@ /***/ function(module, exports, __webpack_require__) { var Timer = __webpack_require__(8); + var Thread = __webpack_require__(9); + var YieldTimers = __webpack_require__(10); function Sequencer (runtime) { /** @@ -1582,20 +1597,37 @@ this.timer.start(); // List of threads which have been killed by this step. var inactiveThreads = []; + // If all of the threads are yielding, we should yield. + var numYieldingThreads = 0; // While there are still threads to run and we are within WORK_TIME, // continue executing threads. while (threads.length > 0 && + threads.length > numYieldingThreads && this.timer.timeElapsed() < Sequencer.WORK_TIME) { // New threads at the end of the iteration. var newThreads = []; // Attempt to run each thread one time for (var i = 0; i < threads.length; i++) { var activeThread = threads[i]; - this.stepThread(activeThread); - if (activeThread.nextBlock !== null) { - newThreads.push(activeThread); - } else { + if (activeThread.status === Thread.STATUS_RUNNING) { + // Normal-mode thread: step. + this.stepThread(activeThread); + } else if (activeThread.status === Thread.STATUS_YIELD) { + // Yield-mode thread: check if the time has passed. + YieldTimers.resolve(activeThread.yieldTimerId); + numYieldingThreads++; + } else if (activeThread.status === Thread.STATUS_DONE) { + // Moved to a done state - finish up + activeThread.status = Thread.STATUS_RUNNING; + // @todo Deal with the return value + } + if (activeThread.nextBlock === null && + activeThread.status === Thread.STATUS_DONE) { + // Finished with this thread - tell the runtime to clean it up. inactiveThreads.push(activeThread); + } else { + // Keep this thead in the loop. + newThreads.push(activeThread); } } // Effectively filters out threads that have stopped. @@ -1609,10 +1641,44 @@ * @param {!Thread} thread Thread object to step */ Sequencer.prototype.stepThread = function (thread) { - var opcode = this.runtime._getOpcode(thread.nextBlock); + // Save the yield timer ID, in case a primitive makes a new one + // @todo hack - perhaps patch this to allow more than one timer per + // primitive, for example... + var oldYieldTimerId = YieldTimers.timerId; + + // Save the current block and set the nextBlock. + // If the primitive would like to do control flow, + // it can overwrite nextBlock. + var currentBlock = thread.nextBlock; + thread.nextBlock = this.runtime._getNextBlock(currentBlock); + + var opcode = this.runtime._getOpcode(currentBlock); + + /** + * A callback for the primitive to indicate its thread should yield. + * @type {Function} + */ + var threadYieldCallback = function () { + thread.status = Thread.STATUS_YIELD; + }; + + /** + * A callback for the primitive to indicate its thread is finished + * @type {Function} + */ + var instance = this; + var threadDoneCallback = function () { + thread.status = Thread.STATUS_DONE; + // Refresh nextBlock in case it has changed during the yield. + thread.nextBlock = instance.runtime._getNextBlock(currentBlock); + instance.runtime.glowBlock(currentBlock, false); + }; + + // @todo + var argValues = []; if (!opcode) { - console.warn('Could not get opcode for block: ' + thread.nextBlock); + console.warn('Could not get opcode for block: ' + currentBlock); } else { var blockFunction = this.runtime.getOpcodeFunction(opcode); @@ -1621,16 +1687,32 @@ } else { try { - blockFunction(); + this.runtime.glowBlock(currentBlock, true); + // @todo deal with the return value + blockFunction(argValues, { + yield: threadYieldCallback, + done: threadDoneCallback, + timeout: YieldTimers.timeout + }); } catch(e) { console.error('Exception calling block function', {opcode: opcode, exception: e}); + } finally { + // Update if the thread has set a yield timer ID + // @todo hack + if (YieldTimers.timerId > oldYieldTimerId) { + thread.yieldTimerId = YieldTimers.timerId; + } + if (thread.status === Thread.STATUS_RUNNING) { + // Thread executed without yielding - move to done + thread.status = Thread.STATUS_DONE; + this.runtime.glowBlock(currentBlock, false); + } } } } - thread.nextBlock = this.runtime._getNextBlock(thread.nextBlock); }; module.exports = Sequencer; @@ -1688,16 +1770,146 @@ * @type {Array.} */ this.stack = []; + + /** + * Status of the thread, one of three states (below) + * @type {number} + */ + this.status = 0; /* Thread.STATUS_RUNNING */ + + /** + * Yield timer ID (for checking when the thread should unyield). + * @type {number} + */ + this.yieldTimerId = -1; } + /** + * Thread status for initialized or running thread. + * Threads are in this state when the primitive is called for the first time. + * @const + */ + Thread.STATUS_RUNNING = 0; + + /** + * Thread status for a yielded thread. + * Threads are in this state when a primitive has yielded. + * @const + */ + Thread.STATUS_YIELD = 1; + + /** + * Thread status for a finished/done thread. + * Thread is moved to this state when the interpreter + * can proceed with execution. + * @const + */ + Thread.STATUS_DONE = 2; + module.exports = Thread; /***/ }, /* 10 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @fileoverview Timers that are synchronized with the Scratch sequencer. + */ + var Timer = __webpack_require__(8); + + function YieldTimers () {} + + /** + * Shared collection of timers. + * Each timer is a [Function, number] with the callback + * and absolute time for it to run. + * @type {Object.} + */ + YieldTimers.timers = {}; + + /** + * Monotonically increasing timer ID. + * @type {number} + */ + YieldTimers.timerId = 0; + + /** + * Utility for measuring time. + * @type {!Timer} + */ + YieldTimers.globalTimer = new Timer(); + + /** + * The timeout function is passed to primitives and is intended + * as a convenient replacement for window.setTimeout. + * The sequencer will attempt to resolve the timer every time + * the yielded thread would have been stepped. + * @param {!Function} callback To be called when the timer is done. + * @param {number} timeDelta Time to wait, in ms. + * @return {number} Timer ID to be used with other methods. + */ + YieldTimers.timeout = function (callback, timeDelta) { + var id = ++YieldTimers.timerId; + YieldTimers.timers[id] = [ + callback, + YieldTimers.globalTimer.time() + timeDelta + ]; + return id; + }; + + /** + * Attempt to resolve a timeout. + * If the time has passed, call the callback. + * Otherwise, do nothing. + * @param {number} id Timer ID to resolve. + * @return {boolean} True if the timer has resolved. + */ + YieldTimers.resolve = function (id) { + var timer = YieldTimers.timers[id]; + if (!timer) { + // No such timer. + return false; + } + var callback = timer[0]; + var time = timer[1]; + if (YieldTimers.globalTimer.time() < time) { + // Not done yet. + return false; + } + // Execute the callback and remove the timer. + callback(); + delete YieldTimers.timers[id]; + return true; + }; + + /** + * Reject a timer so the callback never executes. + * @param {number} id Timer ID to reject. + */ + YieldTimers.reject = function (id) { + if (YieldTimers.timers[id]) { + delete YieldTimers.timers[id]; + } + }; + + /** + * Reject all timers currently stored. + * Especially useful for a Scratch "stop." + */ + YieldTimers.rejectAll = function () { + YieldTimers.timers = {}; + YieldTimers.timerId = 0; + }; + + window.YieldTimers = YieldTimers; + module.exports = YieldTimers; + + +/***/ }, +/* 11 */ /***/ function(module, exports) { - function Scratch3Blocks(runtime) { /** * The runtime instantiating this block package. @@ -1730,8 +1942,12 @@ console.log('Running: control_forever'); }; - Scratch3Blocks.prototype.wait = function() { + Scratch3Blocks.prototype.wait = function(argValues, util) { console.log('Running: control_wait'); + util.yield(); + util.timeout(function() { + util.done(); + }, 500); }; Scratch3Blocks.prototype.stop = function() { @@ -1754,7 +1970,7 @@ /***/ }, -/* 11 */ +/* 12 */ /***/ function(module, exports) { @@ -1809,11 +2025,11 @@ /***/ }, -/* 12 */ +/* 13 */ /***/ function(module, exports, __webpack_require__) { - var html = __webpack_require__(13); - var memoize = __webpack_require__(62); + var html = __webpack_require__(14); + var memoize = __webpack_require__(63); var parseDOM = memoize(html.parseDOM, { length: 1, resolvers: [String], @@ -1902,11 +2118,11 @@ /***/ }, -/* 13 */ +/* 14 */ /***/ function(module, exports, __webpack_require__) { - var Parser = __webpack_require__(14), - DomHandler = __webpack_require__(21); + var Parser = __webpack_require__(15), + DomHandler = __webpack_require__(22); function defineProp(name, value){ delete module.exports[name]; @@ -1916,26 +2132,26 @@ module.exports = { Parser: Parser, - Tokenizer: __webpack_require__(15), - ElementType: __webpack_require__(22), + Tokenizer: __webpack_require__(16), + ElementType: __webpack_require__(23), DomHandler: DomHandler, get FeedHandler(){ - return defineProp("FeedHandler", __webpack_require__(25)); + return defineProp("FeedHandler", __webpack_require__(26)); }, get Stream(){ - return defineProp("Stream", __webpack_require__(26)); + return defineProp("Stream", __webpack_require__(27)); }, get WritableStream(){ - return defineProp("WritableStream", __webpack_require__(27)); + return defineProp("WritableStream", __webpack_require__(28)); }, get ProxyHandler(){ - return defineProp("ProxyHandler", __webpack_require__(48)); + return defineProp("ProxyHandler", __webpack_require__(49)); }, get DomUtils(){ - return defineProp("DomUtils", __webpack_require__(49)); + return defineProp("DomUtils", __webpack_require__(50)); }, get CollectingHandler(){ - return defineProp("CollectingHandler", __webpack_require__(61)); + return defineProp("CollectingHandler", __webpack_require__(62)); }, // For legacy support DefaultHandler: DomHandler, @@ -1976,10 +2192,10 @@ /***/ }, -/* 14 */ +/* 15 */ /***/ function(module, exports, __webpack_require__) { - var Tokenizer = __webpack_require__(15); + var Tokenizer = __webpack_require__(16); /* Options: @@ -2334,15 +2550,15 @@ /***/ }, -/* 15 */ +/* 16 */ /***/ function(module, exports, __webpack_require__) { module.exports = Tokenizer; - var decodeCodePoint = __webpack_require__(16), - entityMap = __webpack_require__(18), - legacyMap = __webpack_require__(19), - xmlMap = __webpack_require__(20), + var decodeCodePoint = __webpack_require__(17), + entityMap = __webpack_require__(19), + legacyMap = __webpack_require__(20), + xmlMap = __webpack_require__(21), i = 0, @@ -3246,10 +3462,10 @@ /***/ }, -/* 16 */ +/* 17 */ /***/ function(module, exports, __webpack_require__) { - var decodeMap = __webpack_require__(17); + var decodeMap = __webpack_require__(18); module.exports = decodeCodePoint; @@ -3278,7 +3494,7 @@ /***/ }, -/* 17 */ +/* 18 */ /***/ function(module, exports) { module.exports = { @@ -3313,7 +3529,7 @@ }; /***/ }, -/* 18 */ +/* 19 */ /***/ function(module, exports) { module.exports = { @@ -5445,7 +5661,7 @@ }; /***/ }, -/* 19 */ +/* 20 */ /***/ function(module, exports) { module.exports = { @@ -5558,7 +5774,7 @@ }; /***/ }, -/* 20 */ +/* 21 */ /***/ function(module, exports) { module.exports = { @@ -5570,14 +5786,14 @@ }; /***/ }, -/* 21 */ +/* 22 */ /***/ function(module, exports, __webpack_require__) { - var ElementType = __webpack_require__(22); + var ElementType = __webpack_require__(23); var re_whitespace = /\s+/g; - var NodePrototype = __webpack_require__(23); - var ElementPrototype = __webpack_require__(24); + var NodePrototype = __webpack_require__(24); + var ElementPrototype = __webpack_require__(25); function DomHandler(callback, options, elementCB){ if(typeof callback === "object"){ @@ -5758,7 +5974,7 @@ /***/ }, -/* 22 */ +/* 23 */ /***/ function(module, exports) { //Types of elements found in the DOM @@ -5779,7 +5995,7 @@ /***/ }, -/* 23 */ +/* 24 */ /***/ function(module, exports) { // This object will be used as the prototype for Nodes when creating a @@ -5829,11 +6045,11 @@ /***/ }, -/* 24 */ +/* 25 */ /***/ function(module, exports, __webpack_require__) { // DOM-Level-1-compliant structure - var NodePrototype = __webpack_require__(23); + var NodePrototype = __webpack_require__(24); var ElementPrototype = module.exports = Object.create(NodePrototype); var domLvl1 = { @@ -5855,10 +6071,10 @@ /***/ }, -/* 25 */ +/* 26 */ /***/ function(module, exports, __webpack_require__) { - var index = __webpack_require__(13), + var index = __webpack_require__(14), DomHandler = index.DomHandler, DomUtils = index.DomUtils; @@ -5956,12 +6172,12 @@ /***/ }, -/* 26 */ +/* 27 */ /***/ function(module, exports, __webpack_require__) { module.exports = Stream; - var Parser = __webpack_require__(27); + var Parser = __webpack_require__(28); function Stream(options){ Parser.call(this, new Cbs(this), options); @@ -5975,7 +6191,7 @@ this.scope = scope; } - var EVENTS = __webpack_require__(13).EVENTS; + var EVENTS = __webpack_require__(14).EVENTS; Object.keys(EVENTS).forEach(function(name){ if(EVENTS[name] === 0){ @@ -5996,13 +6212,13 @@ }); /***/ }, -/* 27 */ +/* 28 */ /***/ function(module, exports, __webpack_require__) { module.exports = Stream; - var Parser = __webpack_require__(14), - WritableStream = __webpack_require__(28).Writable || __webpack_require__(47).Writable; + var Parser = __webpack_require__(15), + WritableStream = __webpack_require__(29).Writable || __webpack_require__(48).Writable; function Stream(cbs, options){ var parser = this._parser = new Parser(cbs, options); @@ -6022,7 +6238,7 @@ }; /***/ }, -/* 28 */ +/* 29 */ /***/ function(module, exports, __webpack_require__) { // Copyright Joyent, Inc. and other Node contributors. @@ -6052,11 +6268,11 @@ var inherits = __webpack_require__(5); inherits(Stream, EE); - Stream.Readable = __webpack_require__(29); - Stream.Writable = __webpack_require__(43); - Stream.Duplex = __webpack_require__(44); - Stream.Transform = __webpack_require__(45); - Stream.PassThrough = __webpack_require__(46); + Stream.Readable = __webpack_require__(30); + Stream.Writable = __webpack_require__(44); + Stream.Duplex = __webpack_require__(45); + Stream.Transform = __webpack_require__(46); + Stream.PassThrough = __webpack_require__(47); // Backwards-compat with node 0.4.x Stream.Stream = Stream; @@ -6155,24 +6371,24 @@ /***/ }, -/* 29 */ +/* 30 */ /***/ function(module, exports, __webpack_require__) { - /* WEBPACK VAR INJECTION */(function(process) {exports = module.exports = __webpack_require__(30); - exports.Stream = __webpack_require__(28); + /* WEBPACK VAR INJECTION */(function(process) {exports = module.exports = __webpack_require__(31); + exports.Stream = __webpack_require__(29); exports.Readable = exports; - exports.Writable = __webpack_require__(39); - exports.Duplex = __webpack_require__(38); - exports.Transform = __webpack_require__(41); - exports.PassThrough = __webpack_require__(42); + exports.Writable = __webpack_require__(40); + exports.Duplex = __webpack_require__(39); + exports.Transform = __webpack_require__(42); + exports.PassThrough = __webpack_require__(43); if (!process.browser && process.env.READABLE_STREAM === 'disable') { - module.exports = __webpack_require__(28); + module.exports = __webpack_require__(29); } /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3))) /***/ }, -/* 30 */ +/* 31 */ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors. @@ -6199,12 +6415,12 @@ module.exports = Readable; /**/ - var isArray = __webpack_require__(31); + var isArray = __webpack_require__(32); /**/ /**/ - var Buffer = __webpack_require__(32).Buffer; + var Buffer = __webpack_require__(33).Buffer; /**/ Readable.ReadableState = ReadableState; @@ -6217,10 +6433,10 @@ }; /**/ - var Stream = __webpack_require__(28); + var Stream = __webpack_require__(29); /**/ - var util = __webpack_require__(36); + var util = __webpack_require__(37); util.inherits = __webpack_require__(5); /**/ @@ -6228,7 +6444,7 @@ /**/ - var debug = __webpack_require__(37); + var debug = __webpack_require__(38); if (debug && debug.debuglog) { debug = debug.debuglog('stream'); } else { @@ -6240,7 +6456,7 @@ util.inherits(Readable, Stream); function ReadableState(options, stream) { - var Duplex = __webpack_require__(38); + var Duplex = __webpack_require__(39); options = options || {}; @@ -6301,14 +6517,14 @@ this.encoding = null; if (options.encoding) { if (!StringDecoder) - StringDecoder = __webpack_require__(40).StringDecoder; + StringDecoder = __webpack_require__(41).StringDecoder; this.decoder = new StringDecoder(options.encoding); this.encoding = options.encoding; } } function Readable(options) { - var Duplex = __webpack_require__(38); + var Duplex = __webpack_require__(39); if (!(this instanceof Readable)) return new Readable(options); @@ -6411,7 +6627,7 @@ // backwards compatibility. Readable.prototype.setEncoding = function(enc) { if (!StringDecoder) - StringDecoder = __webpack_require__(40).StringDecoder; + StringDecoder = __webpack_require__(41).StringDecoder; this._readableState.decoder = new StringDecoder(enc); this._readableState.encoding = enc; return this; @@ -7130,7 +7346,7 @@ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3))) /***/ }, -/* 31 */ +/* 32 */ /***/ function(module, exports) { module.exports = Array.isArray || function (arr) { @@ -7139,7 +7355,7 @@ /***/ }, -/* 32 */ +/* 33 */ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(Buffer, global) {/*! @@ -7152,9 +7368,9 @@ 'use strict' - var base64 = __webpack_require__(33) - var ieee754 = __webpack_require__(34) - var isArray = __webpack_require__(35) + var base64 = __webpack_require__(34) + var ieee754 = __webpack_require__(35) + var isArray = __webpack_require__(36) exports.Buffer = Buffer exports.SlowBuffer = SlowBuffer @@ -8691,10 +8907,10 @@ return i } - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(32).Buffer, (function() { return this; }()))) + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(33).Buffer, (function() { return this; }()))) /***/ }, -/* 33 */ +/* 34 */ /***/ function(module, exports, __webpack_require__) { var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; @@ -8824,7 +9040,7 @@ /***/ }, -/* 34 */ +/* 35 */ /***/ function(module, exports) { exports.read = function (buffer, offset, isLE, mLen, nBytes) { @@ -8914,7 +9130,7 @@ /***/ }, -/* 35 */ +/* 36 */ /***/ function(module, exports) { var toString = {}.toString; @@ -8925,7 +9141,7 @@ /***/ }, -/* 36 */ +/* 37 */ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors. @@ -9036,16 +9252,16 @@ return Object.prototype.toString.call(o); } - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(32).Buffer)) + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(33).Buffer)) /***/ }, -/* 37 */ +/* 38 */ /***/ function(module, exports) { /* (ignored) */ /***/ }, -/* 38 */ +/* 39 */ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors. @@ -9086,12 +9302,12 @@ /**/ - var util = __webpack_require__(36); + var util = __webpack_require__(37); util.inherits = __webpack_require__(5); /**/ - var Readable = __webpack_require__(30); - var Writable = __webpack_require__(39); + var Readable = __webpack_require__(31); + var Writable = __webpack_require__(40); util.inherits(Duplex, Readable); @@ -9141,7 +9357,7 @@ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3))) /***/ }, -/* 39 */ +/* 40 */ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors. @@ -9172,18 +9388,18 @@ module.exports = Writable; /**/ - var Buffer = __webpack_require__(32).Buffer; + var Buffer = __webpack_require__(33).Buffer; /**/ Writable.WritableState = WritableState; /**/ - var util = __webpack_require__(36); + var util = __webpack_require__(37); util.inherits = __webpack_require__(5); /**/ - var Stream = __webpack_require__(28); + var Stream = __webpack_require__(29); util.inherits(Writable, Stream); @@ -9194,7 +9410,7 @@ } function WritableState(options, stream) { - var Duplex = __webpack_require__(38); + var Duplex = __webpack_require__(39); options = options || {}; @@ -9282,7 +9498,7 @@ } function Writable(options) { - var Duplex = __webpack_require__(38); + var Duplex = __webpack_require__(39); // Writable ctor is applied to Duplexes, though they're not // instanceof Writable, they're instanceof Readable. @@ -9625,7 +9841,7 @@ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3))) /***/ }, -/* 40 */ +/* 41 */ /***/ function(module, exports, __webpack_require__) { // Copyright Joyent, Inc. and other Node contributors. @@ -9649,7 +9865,7 @@ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. - var Buffer = __webpack_require__(32).Buffer; + var Buffer = __webpack_require__(33).Buffer; var isBufferEncoding = Buffer.isEncoding || function(encoding) { @@ -9852,7 +10068,7 @@ /***/ }, -/* 41 */ +/* 42 */ /***/ function(module, exports, __webpack_require__) { // Copyright Joyent, Inc. and other Node contributors. @@ -9921,10 +10137,10 @@ module.exports = Transform; - var Duplex = __webpack_require__(38); + var Duplex = __webpack_require__(39); /**/ - var util = __webpack_require__(36); + var util = __webpack_require__(37); util.inherits = __webpack_require__(5); /**/ @@ -10067,7 +10283,7 @@ /***/ }, -/* 42 */ +/* 43 */ /***/ function(module, exports, __webpack_require__) { // Copyright Joyent, Inc. and other Node contributors. @@ -10097,10 +10313,10 @@ module.exports = PassThrough; - var Transform = __webpack_require__(41); + var Transform = __webpack_require__(42); /**/ - var util = __webpack_require__(36); + var util = __webpack_require__(37); util.inherits = __webpack_require__(5); /**/ @@ -10118,25 +10334,18 @@ }; -/***/ }, -/* 43 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = __webpack_require__(39) - - /***/ }, /* 44 */ /***/ function(module, exports, __webpack_require__) { - module.exports = __webpack_require__(38) + module.exports = __webpack_require__(40) /***/ }, /* 45 */ /***/ function(module, exports, __webpack_require__) { - module.exports = __webpack_require__(41) + module.exports = __webpack_require__(39) /***/ }, @@ -10148,12 +10357,19 @@ /***/ }, /* 47 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = __webpack_require__(43) + + +/***/ }, +/* 48 */ /***/ function(module, exports) { /* (ignored) */ /***/ }, -/* 48 */ +/* 49 */ /***/ function(module, exports, __webpack_require__) { module.exports = ProxyHandler; @@ -10162,7 +10378,7 @@ this._cbs = cbs || {}; } - var EVENTS = __webpack_require__(13).EVENTS; + var EVENTS = __webpack_require__(14).EVENTS; Object.keys(EVENTS).forEach(function(name){ if(EVENTS[name] === 0){ name = "on" + name; @@ -10185,18 +10401,18 @@ }); /***/ }, -/* 49 */ +/* 50 */ /***/ function(module, exports, __webpack_require__) { var DomUtils = module.exports; [ - __webpack_require__(50), - __webpack_require__(56), + __webpack_require__(51), __webpack_require__(57), __webpack_require__(58), __webpack_require__(59), - __webpack_require__(60) + __webpack_require__(60), + __webpack_require__(61) ].forEach(function(ext){ Object.keys(ext).forEach(function(key){ DomUtils[key] = ext[key].bind(DomUtils); @@ -10205,11 +10421,11 @@ /***/ }, -/* 50 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { - var ElementType = __webpack_require__(22), - getOuterHTML = __webpack_require__(51), + var ElementType = __webpack_require__(23), + getOuterHTML = __webpack_require__(52), isTag = ElementType.isTag; module.exports = { @@ -10233,14 +10449,14 @@ /***/ }, -/* 51 */ +/* 52 */ /***/ function(module, exports, __webpack_require__) { /* Module dependencies */ - var ElementType = __webpack_require__(52); - var entities = __webpack_require__(53); + var ElementType = __webpack_require__(53); + var entities = __webpack_require__(54); /* Boolean Attributes @@ -10417,7 +10633,7 @@ /***/ }, -/* 52 */ +/* 53 */ /***/ function(module, exports) { //Types of elements found in the DOM @@ -10436,11 +10652,11 @@ }; /***/ }, -/* 53 */ +/* 54 */ /***/ function(module, exports, __webpack_require__) { - var encode = __webpack_require__(54), - decode = __webpack_require__(55); + var encode = __webpack_require__(55), + decode = __webpack_require__(56); exports.decode = function(data, level){ return (!level || level <= 0 ? decode.XML : decode.HTML)(data); @@ -10475,15 +10691,15 @@ /***/ }, -/* 54 */ +/* 55 */ /***/ function(module, exports, __webpack_require__) { - var inverseXML = getInverseObj(__webpack_require__(20)), + var inverseXML = getInverseObj(__webpack_require__(21)), xmlReplacer = getInverseReplacer(inverseXML); exports.XML = getInverse(inverseXML, xmlReplacer); - var inverseHTML = getInverseObj(__webpack_require__(18)), + var inverseHTML = getInverseObj(__webpack_require__(19)), htmlReplacer = getInverseReplacer(inverseHTML); exports.HTML = getInverse(inverseHTML, htmlReplacer); @@ -10554,13 +10770,13 @@ /***/ }, -/* 55 */ +/* 56 */ /***/ function(module, exports, __webpack_require__) { - var entityMap = __webpack_require__(18), - legacyMap = __webpack_require__(19), - xmlMap = __webpack_require__(20), - decodeCodePoint = __webpack_require__(16); + var entityMap = __webpack_require__(19), + legacyMap = __webpack_require__(20), + xmlMap = __webpack_require__(21), + decodeCodePoint = __webpack_require__(17); var decodeXMLStrict = getStrictDecoder(xmlMap), decodeHTMLStrict = getStrictDecoder(entityMap); @@ -10631,7 +10847,7 @@ }; /***/ }, -/* 56 */ +/* 57 */ /***/ function(module, exports) { var getChildren = exports.getChildren = function(elem){ @@ -10661,7 +10877,7 @@ /***/ }, -/* 57 */ +/* 58 */ /***/ function(module, exports) { exports.removeElement = function(elem){ @@ -10744,10 +10960,10 @@ /***/ }, -/* 58 */ +/* 59 */ /***/ function(module, exports, __webpack_require__) { - var isTag = __webpack_require__(22).isTag; + var isTag = __webpack_require__(23).isTag; module.exports = { filter: filter, @@ -10844,10 +11060,10 @@ /***/ }, -/* 59 */ +/* 60 */ /***/ function(module, exports, __webpack_require__) { - var ElementType = __webpack_require__(22); + var ElementType = __webpack_require__(23); var isTag = exports.isTag = ElementType.isTag; exports.testElement = function(options, element){ @@ -10937,7 +11153,7 @@ /***/ }, -/* 60 */ +/* 61 */ /***/ function(module, exports) { // removeSubsets @@ -11084,7 +11300,7 @@ /***/ }, -/* 61 */ +/* 62 */ /***/ function(module, exports, __webpack_require__) { module.exports = CollectingHandler; @@ -11094,7 +11310,7 @@ this.events = []; } - var EVENTS = __webpack_require__(13).EVENTS; + var EVENTS = __webpack_require__(14).EVENTS; Object.keys(EVENTS).forEach(function(name){ if(EVENTS[name] === 0){ name = "on" + name; @@ -11145,14 +11361,14 @@ /***/ }, -/* 62 */ +/* 63 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var normalizeOpts = __webpack_require__(63) - , resolveLength = __webpack_require__(64) - , plain = __webpack_require__(70); + var normalizeOpts = __webpack_require__(64) + , resolveLength = __webpack_require__(65) + , plain = __webpack_require__(71); module.exports = function (fn/*, options*/) { var options = normalizeOpts(arguments[1]), length; @@ -11162,31 +11378,31 @@ if (length !== 0) { if (options.primitive) { if (length === false) { - options.normalizer = __webpack_require__(107); + options.normalizer = __webpack_require__(108); } else if (length > 1) { - options.normalizer = __webpack_require__(108)(length); + options.normalizer = __webpack_require__(109)(length); } } else { - if (length === false) options.normalizer = __webpack_require__(109)(); - else if (length === 1) options.normalizer = __webpack_require__(111)(); - else options.normalizer = __webpack_require__(112)(length); + if (length === false) options.normalizer = __webpack_require__(110)(); + else if (length === 1) options.normalizer = __webpack_require__(112)(); + else options.normalizer = __webpack_require__(113)(length); } } } // Assure extensions - if (options.async) __webpack_require__(113); - if (options.dispose) __webpack_require__(116); - if (options.maxAge) __webpack_require__(117); - if (options.max) __webpack_require__(120); - if (options.refCounter) __webpack_require__(122); + if (options.async) __webpack_require__(114); + if (options.dispose) __webpack_require__(117); + if (options.maxAge) __webpack_require__(118); + if (options.max) __webpack_require__(121); + if (options.refCounter) __webpack_require__(123); return plain(fn, options); }; /***/ }, -/* 63 */ +/* 64 */ /***/ function(module, exports) { 'use strict'; @@ -11209,12 +11425,12 @@ /***/ }, -/* 64 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var toPosInt = __webpack_require__(65); + var toPosInt = __webpack_require__(66); module.exports = function (optsLength, fnLength, isAsync) { var length; @@ -11230,12 +11446,12 @@ /***/ }, -/* 65 */ +/* 66 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var toInteger = __webpack_require__(66) + var toInteger = __webpack_require__(67) , max = Math.max; @@ -11243,12 +11459,12 @@ /***/ }, -/* 66 */ +/* 67 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var sign = __webpack_require__(67) + var sign = __webpack_require__(68) , abs = Math.abs, floor = Math.floor; @@ -11261,18 +11477,18 @@ /***/ }, -/* 67 */ +/* 68 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - module.exports = __webpack_require__(68)() + module.exports = __webpack_require__(69)() ? Math.sign - : __webpack_require__(69); + : __webpack_require__(70); /***/ }, -/* 68 */ +/* 69 */ /***/ function(module, exports) { 'use strict'; @@ -11285,7 +11501,7 @@ /***/ }, -/* 69 */ +/* 70 */ /***/ function(module, exports) { 'use strict'; @@ -11298,16 +11514,16 @@ /***/ }, -/* 70 */ +/* 71 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var callable = __webpack_require__(71) - , forEach = __webpack_require__(72) - , extensions = __webpack_require__(75) - , configure = __webpack_require__(76) - , resolveLength = __webpack_require__(64) + var callable = __webpack_require__(72) + , forEach = __webpack_require__(73) + , extensions = __webpack_require__(76) + , configure = __webpack_require__(77) + , resolveLength = __webpack_require__(65) , hasOwnProperty = Object.prototype.hasOwnProperty; @@ -11339,7 +11555,7 @@ /***/ }, -/* 71 */ +/* 72 */ /***/ function(module, exports) { 'use strict'; @@ -11351,16 +11567,16 @@ /***/ }, -/* 72 */ +/* 73 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - module.exports = __webpack_require__(73)('forEach'); + module.exports = __webpack_require__(74)('forEach'); /***/ }, -/* 73 */ +/* 74 */ /***/ function(module, exports, __webpack_require__) { // Internal method, used by iteration functions. @@ -11369,8 +11585,8 @@ 'use strict'; - var callable = __webpack_require__(71) - , value = __webpack_require__(74) + var callable = __webpack_require__(72) + , value = __webpack_require__(75) , bind = Function.prototype.bind, call = Function.prototype.call, keys = Object.keys , propertyIsEnumerable = Object.prototype.propertyIsEnumerable; @@ -11395,7 +11611,7 @@ /***/ }, -/* 74 */ +/* 75 */ /***/ function(module, exports) { 'use strict'; @@ -11407,24 +11623,24 @@ /***/ }, -/* 75 */ +/* 76 */ /***/ function(module, exports) { 'use strict'; /***/ }, -/* 76 */ +/* 77 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var customError = __webpack_require__(77) - , defineLength = __webpack_require__(84) - , d = __webpack_require__(86) - , ee = __webpack_require__(91).methods - , resolveResolve = __webpack_require__(92) - , resolveNormalize = __webpack_require__(106) + var customError = __webpack_require__(78) + , defineLength = __webpack_require__(85) + , d = __webpack_require__(87) + , ee = __webpack_require__(92).methods + , resolveResolve = __webpack_require__(93) + , resolveNormalize = __webpack_require__(107) , apply = Function.prototype.apply, call = Function.prototype.call , create = Object.create, hasOwnProperty = Object.prototype.hasOwnProperty @@ -11564,12 +11780,12 @@ /***/ }, -/* 77 */ +/* 78 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var assign = __webpack_require__(78) + var assign = __webpack_require__(79) , captureStackTrace = Error.captureStackTrace; @@ -11590,18 +11806,18 @@ /***/ }, -/* 78 */ +/* 79 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - module.exports = __webpack_require__(79)() + module.exports = __webpack_require__(80)() ? Object.assign - : __webpack_require__(80); + : __webpack_require__(81); /***/ }, -/* 79 */ +/* 80 */ /***/ function(module, exports) { 'use strict'; @@ -11616,13 +11832,13 @@ /***/ }, -/* 80 */ +/* 81 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var keys = __webpack_require__(81) - , value = __webpack_require__(74) + var keys = __webpack_require__(82) + , value = __webpack_require__(75) , max = Math.max; @@ -11644,18 +11860,18 @@ /***/ }, -/* 81 */ +/* 82 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - module.exports = __webpack_require__(82)() + module.exports = __webpack_require__(83)() ? Object.keys - : __webpack_require__(83); + : __webpack_require__(84); /***/ }, -/* 82 */ +/* 83 */ /***/ function(module, exports) { 'use strict'; @@ -11669,7 +11885,7 @@ /***/ }, -/* 83 */ +/* 84 */ /***/ function(module, exports) { 'use strict'; @@ -11682,12 +11898,12 @@ /***/ }, -/* 84 */ +/* 85 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var toPosInt = __webpack_require__(65) + var toPosInt = __webpack_require__(66) , test = function (a, b) {}, desc, defineProperty , generate, mixin; @@ -11708,7 +11924,7 @@ return defineProperty(fn, 'length', desc); }; } else { - mixin = __webpack_require__(85); + mixin = __webpack_require__(86); generate = (function () { var cache = []; return function (l) { @@ -11732,12 +11948,12 @@ /***/ }, -/* 85 */ +/* 86 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var value = __webpack_require__(74) + var value = __webpack_require__(75) , defineProperty = Object.defineProperty , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor @@ -11757,15 +11973,15 @@ /***/ }, -/* 86 */ +/* 87 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var assign = __webpack_require__(78) - , normalizeOpts = __webpack_require__(63) - , isCallable = __webpack_require__(87) - , contains = __webpack_require__(88) + var assign = __webpack_require__(79) + , normalizeOpts = __webpack_require__(64) + , isCallable = __webpack_require__(88) + , contains = __webpack_require__(89) , d; @@ -11826,7 +12042,7 @@ /***/ }, -/* 87 */ +/* 88 */ /***/ function(module, exports) { // Deprecated @@ -11837,18 +12053,18 @@ /***/ }, -/* 88 */ +/* 89 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - module.exports = __webpack_require__(89)() + module.exports = __webpack_require__(90)() ? String.prototype.contains - : __webpack_require__(90); + : __webpack_require__(91); /***/ }, -/* 89 */ +/* 90 */ /***/ function(module, exports) { 'use strict'; @@ -11862,7 +12078,7 @@ /***/ }, -/* 90 */ +/* 91 */ /***/ function(module, exports) { 'use strict'; @@ -11875,13 +12091,13 @@ /***/ }, -/* 91 */ +/* 92 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var d = __webpack_require__(86) - , callable = __webpack_require__(71) + var d = __webpack_require__(87) + , callable = __webpack_require__(72) , apply = Function.prototype.apply, call = Function.prototype.call , create = Object.create, defineProperty = Object.defineProperty @@ -12013,13 +12229,13 @@ /***/ }, -/* 92 */ +/* 93 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var toArray = __webpack_require__(93) - , callable = __webpack_require__(71) + var toArray = __webpack_require__(94) + , callable = __webpack_require__(72) , slice = Array.prototype.slice , resolveArgs; @@ -12040,12 +12256,12 @@ /***/ }, -/* 93 */ +/* 94 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var from = __webpack_require__(94) + var from = __webpack_require__(95) , isArray = Array.isArray; @@ -12055,18 +12271,18 @@ /***/ }, -/* 94 */ +/* 95 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - module.exports = __webpack_require__(95)() + module.exports = __webpack_require__(96)() ? Array.from - : __webpack_require__(96); + : __webpack_require__(97); /***/ }, -/* 95 */ +/* 96 */ /***/ function(module, exports) { 'use strict'; @@ -12081,18 +12297,18 @@ /***/ }, -/* 96 */ +/* 97 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var iteratorSymbol = __webpack_require__(97).iterator - , isArguments = __webpack_require__(102) - , isFunction = __webpack_require__(103) - , toPosInt = __webpack_require__(65) - , callable = __webpack_require__(71) - , validValue = __webpack_require__(74) - , isString = __webpack_require__(105) + var iteratorSymbol = __webpack_require__(98).iterator + , isArguments = __webpack_require__(103) + , isFunction = __webpack_require__(104) + , toPosInt = __webpack_require__(66) + , callable = __webpack_require__(72) + , validValue = __webpack_require__(75) + , isString = __webpack_require__(106) , isArray = Array.isArray, call = Function.prototype.call , desc = { configurable: true, enumerable: true, writable: true, value: null } @@ -12193,16 +12409,16 @@ /***/ }, -/* 97 */ +/* 98 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - module.exports = __webpack_require__(98)() ? Symbol : __webpack_require__(99); + module.exports = __webpack_require__(99)() ? Symbol : __webpack_require__(100); /***/ }, -/* 98 */ +/* 99 */ /***/ function(module, exports) { 'use strict'; @@ -12226,15 +12442,15 @@ /***/ }, -/* 99 */ +/* 100 */ /***/ function(module, exports, __webpack_require__) { // ES2015 Symbol polyfill for environments that do not support it (or partially support it_ 'use strict'; - var d = __webpack_require__(86) - , validateSymbol = __webpack_require__(100) + var d = __webpack_require__(87) + , validateSymbol = __webpack_require__(101) , create = Object.create, defineProperties = Object.defineProperties , defineProperty = Object.defineProperty, objPrototype = Object.prototype @@ -12339,12 +12555,12 @@ /***/ }, -/* 100 */ +/* 101 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var isSymbol = __webpack_require__(101); + var isSymbol = __webpack_require__(102); module.exports = function (value) { if (!isSymbol(value)) throw new TypeError(value + " is not a symbol"); @@ -12353,7 +12569,7 @@ /***/ }, -/* 101 */ +/* 102 */ /***/ function(module, exports) { 'use strict'; @@ -12364,7 +12580,7 @@ /***/ }, -/* 102 */ +/* 103 */ /***/ function(module, exports) { 'use strict'; @@ -12377,14 +12593,14 @@ /***/ }, -/* 103 */ +/* 104 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var toString = Object.prototype.toString - , id = toString.call(__webpack_require__(104)); + , id = toString.call(__webpack_require__(105)); module.exports = function (f) { return (typeof f === "function") && (toString.call(f) === id); @@ -12392,7 +12608,7 @@ /***/ }, -/* 104 */ +/* 105 */ /***/ function(module, exports) { 'use strict'; @@ -12401,7 +12617,7 @@ /***/ }, -/* 105 */ +/* 106 */ /***/ function(module, exports) { 'use strict'; @@ -12417,12 +12633,12 @@ /***/ }, -/* 106 */ +/* 107 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var callable = __webpack_require__(71); + var callable = __webpack_require__(72); module.exports = function (userNormalizer) { var normalizer; @@ -12440,7 +12656,7 @@ /***/ }, -/* 107 */ +/* 108 */ /***/ function(module, exports) { 'use strict'; @@ -12455,7 +12671,7 @@ /***/ }, -/* 108 */ +/* 109 */ /***/ function(module, exports) { 'use strict'; @@ -12473,12 +12689,12 @@ /***/ }, -/* 109 */ +/* 110 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var indexOf = __webpack_require__(110) + var indexOf = __webpack_require__(111) , create = Object.create; module.exports = function () { @@ -12567,13 +12783,13 @@ /***/ }, -/* 110 */ +/* 111 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var toPosInt = __webpack_require__(65) - , value = __webpack_require__(74) + var toPosInt = __webpack_require__(66) + , value = __webpack_require__(75) , indexOf = Array.prototype.indexOf , hasOwnProperty = Object.prototype.hasOwnProperty @@ -12602,12 +12818,12 @@ /***/ }, -/* 111 */ +/* 112 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var indexOf = __webpack_require__(110); + var indexOf = __webpack_require__(111); module.exports = function () { var lastId = 0, argsMap = [], cache = []; @@ -12637,12 +12853,12 @@ /***/ }, -/* 112 */ +/* 113 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var indexOf = __webpack_require__(110) + var indexOf = __webpack_require__(111) , create = Object.create; module.exports = function (length) { @@ -12714,23 +12930,23 @@ /***/ }, -/* 113 */ +/* 114 */ /***/ function(module, exports, __webpack_require__) { // Support for asynchronous functions 'use strict'; - var aFrom = __webpack_require__(94) - , mixin = __webpack_require__(85) - , defineLength = __webpack_require__(84) - , nextTick = __webpack_require__(114) + var aFrom = __webpack_require__(95) + , mixin = __webpack_require__(86) + , defineLength = __webpack_require__(85) + , nextTick = __webpack_require__(115) , slice = Array.prototype.slice , apply = Function.prototype.apply, create = Object.create , hasOwnProperty = Object.prototype.hasOwnProperty; - __webpack_require__(75).async = function (tbi, conf) { + __webpack_require__(76).async = function (tbi, conf) { var waiting = create(null), cache = create(null) , base = conf.memoized, original = conf.original , currentCallback, currentContext, currentArgs; @@ -12866,7 +13082,7 @@ /***/ }, -/* 114 */ +/* 115 */ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(process, setImmediate) {'use strict'; @@ -12934,10 +13150,10 @@ return null; }()); - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3), __webpack_require__(115).setImmediate)) + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3), __webpack_require__(116).setImmediate)) /***/ }, -/* 115 */ +/* 116 */ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(setImmediate, clearImmediate) {var nextTick = __webpack_require__(3).nextTick; @@ -13016,19 +13232,19 @@ exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) { delete immediateIds[id]; }; - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(115).setImmediate, __webpack_require__(115).clearImmediate)) + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(116).setImmediate, __webpack_require__(116).clearImmediate)) /***/ }, -/* 116 */ +/* 117 */ /***/ function(module, exports, __webpack_require__) { // Call dispose callback on each cache purge 'use strict'; - var callable = __webpack_require__(71) - , forEach = __webpack_require__(72) - , extensions = __webpack_require__(75) + var callable = __webpack_require__(72) + , forEach = __webpack_require__(73) + , extensions = __webpack_require__(76) , slice = Array.prototype.slice, apply = Function.prototype.apply; @@ -13052,18 +13268,18 @@ /***/ }, -/* 117 */ +/* 118 */ /***/ function(module, exports, __webpack_require__) { // Timeout cached values 'use strict'; - var aFrom = __webpack_require__(94) - , noop = __webpack_require__(104) - , forEach = __webpack_require__(72) - , timeout = __webpack_require__(118) - , extensions = __webpack_require__(75) + var aFrom = __webpack_require__(95) + , noop = __webpack_require__(105) + , forEach = __webpack_require__(73) + , timeout = __webpack_require__(119) + , extensions = __webpack_require__(76) , max = Math.max, min = Math.min, create = Object.create; @@ -13128,13 +13344,13 @@ /***/ }, -/* 118 */ +/* 119 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var toPosInt = __webpack_require__(65) - , maxTimeout = __webpack_require__(119); + var toPosInt = __webpack_require__(66) + , maxTimeout = __webpack_require__(120); module.exports = function (value) { value = toPosInt(value); @@ -13144,7 +13360,7 @@ /***/ }, -/* 119 */ +/* 120 */ /***/ function(module, exports) { 'use strict'; @@ -13153,16 +13369,16 @@ /***/ }, -/* 120 */ +/* 121 */ /***/ function(module, exports, __webpack_require__) { // Limit cache size, LRU (least recently used) algorithm. 'use strict'; - var toPosInteger = __webpack_require__(65) - , lruQueue = __webpack_require__(121) - , extensions = __webpack_require__(75); + var toPosInteger = __webpack_require__(66) + , lruQueue = __webpack_require__(122) + , extensions = __webpack_require__(76); extensions.max = function (max, conf, options) { var postfix, queue, hit; @@ -13185,12 +13401,12 @@ /***/ }, -/* 121 */ +/* 122 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; - var toPosInt = __webpack_require__(65) + var toPosInt = __webpack_require__(66) , create = Object.create, hasOwnProperty = Object.prototype.hasOwnProperty; @@ -13239,15 +13455,15 @@ /***/ }, -/* 122 */ +/* 123 */ /***/ function(module, exports, __webpack_require__) { // Reference counter, useful for garbage collector like functionality 'use strict'; - var d = __webpack_require__(86) - , extensions = __webpack_require__(75) + var d = __webpack_require__(87) + , extensions = __webpack_require__(76) , create = Object.create, defineProperties = Object.defineProperties;